rusoto_medialive/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::param::{Params, ServiceParams};
23use rusoto_core::proto;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27use serde_json;
28/// <p>Aac Settings</p>
29#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
30pub struct AacSettings {
31    /// <p>Average bitrate in bits/second. Valid values depend on rate control mode and profile.</p>
32    #[serde(rename = "Bitrate")]
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub bitrate: Option<f64>,
35    /// <p>Mono, Stereo, or 5.1 channel layout. Valid values depend on rate control mode and profile. The adReceiverMix setting receives a stereo description plus control track and emits a mono AAC encode of the description track, with control data emitted in the PES header as per ETSI TS 101 154 Annex E.</p>
36    #[serde(rename = "CodingMode")]
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub coding_mode: Option<String>,
39    /// <p>Set to &quot;broadcasterMixedAd&quot; when input contains pre-mixed main audio + AD (narration) as a stereo pair.  The Audio Type field (audioType) will be set to 3, which signals to downstream systems that this stream contains &quot;broadcaster mixed AD&quot;. Note that the input received by the encoder must contain pre-mixed audio; the encoder does not perform the mixing. The values in audioTypeControl and audioType (in AudioDescription) are ignored when set to broadcasterMixedAd.</p>
40    ///
41    /// <p>Leave set to &quot;normal&quot; when input does not contain pre-mixed audio + AD.</p>
42    #[serde(rename = "InputType")]
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub input_type: Option<String>,
45    /// <p>AAC Profile.</p>
46    #[serde(rename = "Profile")]
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub profile: Option<String>,
49    /// <p>Rate Control Mode.</p>
50    #[serde(rename = "RateControlMode")]
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub rate_control_mode: Option<String>,
53    /// <p>Sets LATM / LOAS AAC output for raw containers.</p>
54    #[serde(rename = "RawFormat")]
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub raw_format: Option<String>,
57    /// <p>Sample rate in Hz. Valid values depend on rate control mode and profile.</p>
58    #[serde(rename = "SampleRate")]
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub sample_rate: Option<f64>,
61    /// <p>Use MPEG-2 AAC audio instead of MPEG-4 AAC audio for raw or MPEG-2 Transport Stream containers.</p>
62    #[serde(rename = "Spec")]
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub spec: Option<String>,
65    /// <p>VBR Quality Level - Only used if rateControlMode is VBR.</p>
66    #[serde(rename = "VbrQuality")]
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub vbr_quality: Option<String>,
69}
70
71/// <p>Ac3 Settings</p>
72#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
73pub struct Ac3Settings {
74    /// <p>Average bitrate in bits/second. Valid bitrates depend on the coding mode.</p>
75    #[serde(rename = "Bitrate")]
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub bitrate: Option<f64>,
78    /// <p>Specifies the bitstream mode (bsmod) for the emitted AC-3 stream. See ATSC A/52-2012 for background on these values.</p>
79    #[serde(rename = "BitstreamMode")]
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub bitstream_mode: Option<String>,
82    /// <p>Dolby Digital coding mode. Determines number of channels.</p>
83    #[serde(rename = "CodingMode")]
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub coding_mode: Option<String>,
86    /// <p>Sets the dialnorm for the output. If excluded and input audio is Dolby Digital, dialnorm will be passed through.</p>
87    #[serde(rename = "Dialnorm")]
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub dialnorm: Option<i64>,
90    /// <p>If set to filmStandard, adds dynamic range compression signaling to the output bitstream as defined in the Dolby Digital specification.</p>
91    #[serde(rename = "DrcProfile")]
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub drc_profile: Option<String>,
94    /// <p>When set to enabled, applies a 120Hz lowpass filter to the LFE channel prior to encoding. Only valid in codingMode32Lfe mode.</p>
95    #[serde(rename = "LfeFilter")]
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub lfe_filter: Option<String>,
98    /// <p>When set to &quot;followInput&quot;, encoder metadata will be sourced from the DD, DD+, or DolbyE decoder that supplied this audio data. If audio was not supplied from one of these streams, then the static metadata settings will be used.</p>
99    #[serde(rename = "MetadataControl")]
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub metadata_control: Option<String>,
102}
103
104/// <p>Archive Container Settings</p>
105#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
106pub struct ArchiveContainerSettings {
107    #[serde(rename = "M2tsSettings")]
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub m_2ts_settings: Option<M2tsSettings>,
110}
111
112/// <p>Archive Group Settings</p>
113#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
114pub struct ArchiveGroupSettings {
115    /// <p>A directory and base filename where archive files should be written.</p>
116    #[serde(rename = "Destination")]
117    pub destination: OutputLocationRef,
118    /// <p>Number of seconds to write to archive file before closing and starting a new one.</p>
119    #[serde(rename = "RolloverInterval")]
120    #[serde(skip_serializing_if = "Option::is_none")]
121    pub rollover_interval: Option<i64>,
122}
123
124/// <p>Archive Output Settings</p>
125#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
126pub struct ArchiveOutputSettings {
127    /// <p>Settings specific to the container type of the file.</p>
128    #[serde(rename = "ContainerSettings")]
129    pub container_settings: ArchiveContainerSettings,
130    /// <p>Output file extension. If excluded, this will be auto-selected from the container type.</p>
131    #[serde(rename = "Extension")]
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub extension: Option<String>,
134    /// <p>String concatenated to the end of the destination filename.  Required for multiple outputs of the same type.</p>
135    #[serde(rename = "NameModifier")]
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub name_modifier: Option<String>,
138}
139
140/// <p>Arib Destination Settings</p>
141#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
142pub struct AribDestinationSettings {}
143
144/// <p>Arib Source Settings</p>
145#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
146pub struct AribSourceSettings {}
147
148/// <p>Audio Channel Mapping</p>
149#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
150pub struct AudioChannelMapping {
151    /// <p>Indices and gain values for each input channel that should be remixed into this output channel.</p>
152    #[serde(rename = "InputChannelLevels")]
153    pub input_channel_levels: Vec<InputChannelLevel>,
154    /// <p>The index of the output channel being produced.</p>
155    #[serde(rename = "OutputChannel")]
156    pub output_channel: i64,
157}
158
159/// <p>Audio Codec Settings</p>
160#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
161pub struct AudioCodecSettings {
162    #[serde(rename = "AacSettings")]
163    #[serde(skip_serializing_if = "Option::is_none")]
164    pub aac_settings: Option<AacSettings>,
165    #[serde(rename = "Ac3Settings")]
166    #[serde(skip_serializing_if = "Option::is_none")]
167    pub ac_3_settings: Option<Ac3Settings>,
168    #[serde(rename = "Eac3Settings")]
169    #[serde(skip_serializing_if = "Option::is_none")]
170    pub eac_3_settings: Option<Eac3Settings>,
171    #[serde(rename = "Mp2Settings")]
172    #[serde(skip_serializing_if = "Option::is_none")]
173    pub mp_2_settings: Option<Mp2Settings>,
174    #[serde(rename = "PassThroughSettings")]
175    #[serde(skip_serializing_if = "Option::is_none")]
176    pub pass_through_settings: Option<PassThroughSettings>,
177}
178
179/// <p>Audio Description</p>
180#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
181pub struct AudioDescription {
182    /// <p>Advanced audio normalization settings.</p>
183    #[serde(rename = "AudioNormalizationSettings")]
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub audio_normalization_settings: Option<AudioNormalizationSettings>,
186    /// <p>The name of the AudioSelector used as the source for this AudioDescription.</p>
187    #[serde(rename = "AudioSelectorName")]
188    pub audio_selector_name: String,
189    /// <p>Applies only if audioTypeControl is useConfigured. The values for audioType are defined in ISO-IEC 13818-1.</p>
190    #[serde(rename = "AudioType")]
191    #[serde(skip_serializing_if = "Option::is_none")]
192    pub audio_type: Option<String>,
193    /// <p>Determines how audio type is determined.
194    /// followInput: If the input contains an ISO 639 audioType, then that value is passed through to the output. If the input contains no ISO 639 audioType, the value in Audio Type is included in the output.
195    /// useConfigured: The value in Audio Type is included in the output.
196    /// Note that this field and audioType are both ignored if inputType is broadcasterMixedAd.</p>
197    #[serde(rename = "AudioTypeControl")]
198    #[serde(skip_serializing_if = "Option::is_none")]
199    pub audio_type_control: Option<String>,
200    /// <p>Audio codec settings.</p>
201    #[serde(rename = "CodecSettings")]
202    #[serde(skip_serializing_if = "Option::is_none")]
203    pub codec_settings: Option<AudioCodecSettings>,
204    /// <p>Indicates the language of the audio output track. Only used if languageControlMode is useConfigured, or there is no ISO 639 language code specified in the input.</p>
205    #[serde(rename = "LanguageCode")]
206    #[serde(skip_serializing_if = "Option::is_none")]
207    pub language_code: Option<String>,
208    /// <p>Choosing followInput will cause the ISO 639 language code of the output to follow the ISO 639 language code of the input. The languageCode will be used when useConfigured is set, or when followInput is selected but there is no ISO 639 language code specified by the input.</p>
209    #[serde(rename = "LanguageCodeControl")]
210    #[serde(skip_serializing_if = "Option::is_none")]
211    pub language_code_control: Option<String>,
212    /// <p>The name of this AudioDescription. Outputs will use this name to uniquely identify this AudioDescription.  Description names should be unique within this Live Event.</p>
213    #[serde(rename = "Name")]
214    pub name: String,
215    /// <p>Settings that control how input audio channels are remixed into the output audio channels.</p>
216    #[serde(rename = "RemixSettings")]
217    #[serde(skip_serializing_if = "Option::is_none")]
218    pub remix_settings: Option<RemixSettings>,
219    /// <p>Used for MS Smooth and Apple HLS outputs. Indicates the name displayed by the player (eg. English, or Director Commentary).</p>
220    #[serde(rename = "StreamName")]
221    #[serde(skip_serializing_if = "Option::is_none")]
222    pub stream_name: Option<String>,
223}
224
225/// <p>Audio Language Selection</p>
226#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
227pub struct AudioLanguageSelection {
228    /// <p>Selects a specific three-letter language code from within an audio source.</p>
229    #[serde(rename = "LanguageCode")]
230    pub language_code: String,
231    /// <p>When set to &quot;strict&quot;, the transport stream demux strictly identifies audio streams by their language descriptor. If a PMT update occurs such that an audio stream matching the initially selected language is no longer present then mute will be encoded until the language returns. If &quot;loose&quot;, then on a PMT update the demux will choose another audio stream in the program with the same stream type if it can&#39;t find one with the same language.</p>
232    #[serde(rename = "LanguageSelectionPolicy")]
233    #[serde(skip_serializing_if = "Option::is_none")]
234    pub language_selection_policy: Option<String>,
235}
236
237/// <p>Audio Normalization Settings</p>
238#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
239pub struct AudioNormalizationSettings {
240    /// <p>Audio normalization algorithm to use. itu17701 conforms to the CALM Act specification, itu17702 conforms to the EBU R-128 specification.</p>
241    #[serde(rename = "Algorithm")]
242    #[serde(skip_serializing_if = "Option::is_none")]
243    pub algorithm: Option<String>,
244    /// <p>When set to correctAudio the output audio is corrected using the chosen algorithm. If set to measureOnly, the audio will be measured but not adjusted.</p>
245    #[serde(rename = "AlgorithmControl")]
246    #[serde(skip_serializing_if = "Option::is_none")]
247    pub algorithm_control: Option<String>,
248    /// <p>Target LKFS(loudness) to adjust volume to. If no value is entered, a default value will be used according to the chosen algorithm.  The CALM Act (1770-1) recommends a target of -24 LKFS. The EBU R-128 specification (1770-2) recommends a target of -23 LKFS.</p>
249    #[serde(rename = "TargetLkfs")]
250    #[serde(skip_serializing_if = "Option::is_none")]
251    pub target_lkfs: Option<f64>,
252}
253
254/// <p>Audio Only Hls Settings</p>
255#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
256pub struct AudioOnlyHlsSettings {
257    /// <p>Specifies the group to which the audio Rendition belongs.</p>
258    #[serde(rename = "AudioGroupId")]
259    #[serde(skip_serializing_if = "Option::is_none")]
260    pub audio_group_id: Option<String>,
261    /// <p>Optional. Specifies the .jpg or .png image to use as the cover art for an audio-only output. We recommend a low bit-size file because the image increases the output audio bandwidth.</p>
262    ///
263    /// <p>The image is attached to the audio as an ID3 tag, frame type APIC, picture type 0x10, as per the &quot;ID3 tag version 2.4.0 - Native Frames&quot; standard.</p>
264    #[serde(rename = "AudioOnlyImage")]
265    #[serde(skip_serializing_if = "Option::is_none")]
266    pub audio_only_image: Option<InputLocation>,
267    /// <p>Four types of audio-only tracks are supported:</p>
268    ///
269    /// <p>Audio-Only Variant Stream
270    /// The client can play back this audio-only stream instead of video in low-bandwidth scenarios. Represented as an EXT-X-STREAM-INF in the HLS manifest.</p>
271    ///
272    /// <p>Alternate Audio, Auto Select, Default
273    /// Alternate rendition that the client should try to play back by default. Represented as an EXT-X-MEDIA in the HLS manifest with DEFAULT=YES, AUTOSELECT=YES</p>
274    ///
275    /// <p>Alternate Audio, Auto Select, Not Default
276    /// Alternate rendition that the client may try to play back by default. Represented as an EXT-X-MEDIA in the HLS manifest with DEFAULT=NO, AUTOSELECT=YES</p>
277    ///
278    /// <p>Alternate Audio, not Auto Select
279    /// Alternate rendition that the client will not try to play back by default. Represented as an EXT-X-MEDIA in the HLS manifest with DEFAULT=NO, AUTOSELECT=NO</p>
280    #[serde(rename = "AudioTrackType")]
281    #[serde(skip_serializing_if = "Option::is_none")]
282    pub audio_track_type: Option<String>,
283    /// <p>Specifies the segment type.</p>
284    #[serde(rename = "SegmentType")]
285    #[serde(skip_serializing_if = "Option::is_none")]
286    pub segment_type: Option<String>,
287}
288
289/// <p>Audio Pid Selection</p>
290#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
291pub struct AudioPidSelection {
292    /// <p>Selects a specific PID from within a source.</p>
293    #[serde(rename = "Pid")]
294    pub pid: i64,
295}
296
297/// <p>Audio Selector</p>
298#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
299pub struct AudioSelector {
300    /// <p>The name of this AudioSelector. AudioDescriptions will use this name to uniquely identify this Selector.  Selector names should be unique per input.</p>
301    #[serde(rename = "Name")]
302    pub name: String,
303    /// <p>The audio selector settings.</p>
304    #[serde(rename = "SelectorSettings")]
305    #[serde(skip_serializing_if = "Option::is_none")]
306    pub selector_settings: Option<AudioSelectorSettings>,
307}
308
309/// <p>Audio Selector Settings</p>
310#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
311pub struct AudioSelectorSettings {
312    #[serde(rename = "AudioLanguageSelection")]
313    #[serde(skip_serializing_if = "Option::is_none")]
314    pub audio_language_selection: Option<AudioLanguageSelection>,
315    #[serde(rename = "AudioPidSelection")]
316    #[serde(skip_serializing_if = "Option::is_none")]
317    pub audio_pid_selection: Option<AudioPidSelection>,
318    #[serde(rename = "AudioTrackSelection")]
319    #[serde(skip_serializing_if = "Option::is_none")]
320    pub audio_track_selection: Option<AudioTrackSelection>,
321}
322
323/// <p>Audio Track</p>
324#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
325pub struct AudioTrack {
326    /// <p>1-based integer value that maps to a specific audio track</p>
327    #[serde(rename = "Track")]
328    pub track: i64,
329}
330
331/// <p>Audio Track Selection</p>
332#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
333pub struct AudioTrackSelection {
334    /// <p>Selects one or more unique audio tracks from within an mp4 source.</p>
335    #[serde(rename = "Tracks")]
336    pub tracks: Vec<AudioTrack>,
337}
338
339/// <p>The settings for Automatic Input Failover.</p>
340#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
341pub struct AutomaticInputFailoverSettings {
342    /// <p>Input preference when deciding which input to make active when a previously failed input has recovered.</p>
343    #[serde(rename = "InputPreference")]
344    #[serde(skip_serializing_if = "Option::is_none")]
345    pub input_preference: Option<String>,
346    /// <p>The input ID of the secondary input in the automatic input failover pair.</p>
347    #[serde(rename = "SecondaryInputId")]
348    pub secondary_input_id: String,
349}
350
351/// <p>Avail Blanking</p>
352#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
353pub struct AvailBlanking {
354    /// <p>Blanking image to be used. Leave empty for solid black. Only bmp and png images are supported.</p>
355    #[serde(rename = "AvailBlankingImage")]
356    #[serde(skip_serializing_if = "Option::is_none")]
357    pub avail_blanking_image: Option<InputLocation>,
358    /// <p>When set to enabled, causes video, audio and captions to be blanked when insertion metadata is added.</p>
359    #[serde(rename = "State")]
360    #[serde(skip_serializing_if = "Option::is_none")]
361    pub state: Option<String>,
362}
363
364/// <p>Avail Configuration</p>
365#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
366pub struct AvailConfiguration {
367    /// <p>Ad avail settings.</p>
368    #[serde(rename = "AvailSettings")]
369    #[serde(skip_serializing_if = "Option::is_none")]
370    pub avail_settings: Option<AvailSettings>,
371}
372
373/// <p>Avail Settings</p>
374#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
375pub struct AvailSettings {
376    #[serde(rename = "Scte35SpliceInsert")]
377    #[serde(skip_serializing_if = "Option::is_none")]
378    pub scte_35_splice_insert: Option<Scte35SpliceInsert>,
379    #[serde(rename = "Scte35TimeSignalApos")]
380    #[serde(skip_serializing_if = "Option::is_none")]
381    pub scte_35_time_signal_apos: Option<Scte35TimeSignalApos>,
382}
383
384/// <p>A list of schedule actions to create (in a request) or that have been created (in a response).</p>
385#[derive(Clone, Debug, Default, PartialEq, Serialize)]
386#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
387pub struct BatchScheduleActionCreateRequest {
388    /// <p>A list of schedule actions to create.</p>
389    #[serde(rename = "ScheduleActions")]
390    pub schedule_actions: Vec<ScheduleAction>,
391}
392
393/// <p>List of actions that have been created in the schedule.</p>
394#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
395#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
396pub struct BatchScheduleActionCreateResult {
397    /// <p>List of actions that have been created in the schedule.</p>
398    #[serde(rename = "ScheduleActions")]
399    pub schedule_actions: Vec<ScheduleAction>,
400}
401
402/// <p>A list of schedule actions to delete.</p>
403#[derive(Clone, Debug, Default, PartialEq, Serialize)]
404#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
405pub struct BatchScheduleActionDeleteRequest {
406    /// <p>A list of schedule actions to delete.</p>
407    #[serde(rename = "ActionNames")]
408    pub action_names: Vec<String>,
409}
410
411/// <p>List of actions that have been deleted from the schedule.</p>
412#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
413#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
414pub struct BatchScheduleActionDeleteResult {
415    /// <p>List of actions that have been deleted from the schedule.</p>
416    #[serde(rename = "ScheduleActions")]
417    pub schedule_actions: Vec<ScheduleAction>,
418}
419
420/// <p>List of actions to create and list of actions to delete.</p>
421#[derive(Clone, Debug, Default, PartialEq, Serialize)]
422#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
423pub struct BatchUpdateScheduleRequest {
424    /// <p>Id of the channel whose schedule is being updated.</p>
425    #[serde(rename = "ChannelId")]
426    pub channel_id: String,
427    /// <p>Schedule actions to create in the schedule.</p>
428    #[serde(rename = "Creates")]
429    #[serde(skip_serializing_if = "Option::is_none")]
430    pub creates: Option<BatchScheduleActionCreateRequest>,
431    /// <p>Schedule actions to delete from the schedule.</p>
432    #[serde(rename = "Deletes")]
433    #[serde(skip_serializing_if = "Option::is_none")]
434    pub deletes: Option<BatchScheduleActionDeleteRequest>,
435}
436
437/// <p>Placeholder documentation for BatchUpdateScheduleResponse</p>
438#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
439#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
440pub struct BatchUpdateScheduleResponse {
441    /// <p>Schedule actions created in the schedule.</p>
442    #[serde(rename = "Creates")]
443    #[serde(skip_serializing_if = "Option::is_none")]
444    pub creates: Option<BatchScheduleActionCreateResult>,
445    /// <p>Schedule actions deleted from the schedule.</p>
446    #[serde(rename = "Deletes")]
447    #[serde(skip_serializing_if = "Option::is_none")]
448    pub deletes: Option<BatchScheduleActionDeleteResult>,
449}
450
451/// <p>Blackout Slate</p>
452#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
453pub struct BlackoutSlate {
454    /// <p>Blackout slate image to be used. Leave empty for solid black. Only bmp and png images are supported.</p>
455    #[serde(rename = "BlackoutSlateImage")]
456    #[serde(skip_serializing_if = "Option::is_none")]
457    pub blackout_slate_image: Option<InputLocation>,
458    /// <p>Setting to enabled causes the encoder to blackout the video, audio, and captions, and raise the &quot;Network Blackout Image&quot; slate when an SCTE104/35 Network End Segmentation Descriptor is encountered. The blackout will be lifted when the Network Start Segmentation Descriptor is encountered. The Network End and Network Start descriptors must contain a network ID that matches the value entered in &quot;Network ID&quot;.</p>
459    #[serde(rename = "NetworkEndBlackout")]
460    #[serde(skip_serializing_if = "Option::is_none")]
461    pub network_end_blackout: Option<String>,
462    /// <p>Path to local file to use as Network End Blackout image. Image will be scaled to fill the entire output raster.</p>
463    #[serde(rename = "NetworkEndBlackoutImage")]
464    #[serde(skip_serializing_if = "Option::is_none")]
465    pub network_end_blackout_image: Option<InputLocation>,
466    /// <p>Provides Network ID that matches EIDR ID format (e.g., &quot;10.XXXX/XXXX-XXXX-XXXX-XXXX-XXXX-C&quot;).</p>
467    #[serde(rename = "NetworkId")]
468    #[serde(skip_serializing_if = "Option::is_none")]
469    pub network_id: Option<String>,
470    /// <p>When set to enabled, causes video, audio and captions to be blanked when indicated by program metadata.</p>
471    #[serde(rename = "State")]
472    #[serde(skip_serializing_if = "Option::is_none")]
473    pub state: Option<String>,
474}
475
476/// <p>Burn In Destination Settings</p>
477#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
478pub struct BurnInDestinationSettings {
479    /// <p>If no explicit xPosition or yPosition is provided, setting alignment to centered will place the captions at the bottom center of the output. Similarly, setting a left alignment will align captions to the bottom left of the output. If x and y positions are given in conjunction with the alignment parameter, the font will be justified (either left or centered) relative to those coordinates. Selecting &quot;smart&quot; justification will left-justify live subtitles and center-justify pre-recorded subtitles.  All burn-in and DVB-Sub font settings must match.</p>
480    #[serde(rename = "Alignment")]
481    #[serde(skip_serializing_if = "Option::is_none")]
482    pub alignment: Option<String>,
483    /// <p>Specifies the color of the rectangle behind the captions.  All burn-in and DVB-Sub font settings must match.</p>
484    #[serde(rename = "BackgroundColor")]
485    #[serde(skip_serializing_if = "Option::is_none")]
486    pub background_color: Option<String>,
487    /// <p>Specifies the opacity of the background rectangle. 255 is opaque; 0 is transparent. Leaving this parameter out is equivalent to setting it to 0 (transparent).  All burn-in and DVB-Sub font settings must match.</p>
488    #[serde(rename = "BackgroundOpacity")]
489    #[serde(skip_serializing_if = "Option::is_none")]
490    pub background_opacity: Option<i64>,
491    /// <p>External font file used for caption burn-in. File extension must be &#39;ttf&#39; or &#39;tte&#39;.  Although the user can select output fonts for many different types of input captions,  embedded, STL and teletext sources use a strict grid system. Using external fonts with these caption sources could cause unexpected display of proportional fonts.  All burn-in and DVB-Sub font settings must match.</p>
492    #[serde(rename = "Font")]
493    #[serde(skip_serializing_if = "Option::is_none")]
494    pub font: Option<InputLocation>,
495    /// <p>Specifies the color of the burned-in captions.  This option is not valid for source captions that are STL, 608/embedded or teletext.  These source settings are already pre-defined by the caption stream.  All burn-in and DVB-Sub font settings must match.</p>
496    #[serde(rename = "FontColor")]
497    #[serde(skip_serializing_if = "Option::is_none")]
498    pub font_color: Option<String>,
499    /// <p>Specifies the opacity of the burned-in captions. 255 is opaque; 0 is transparent.  All burn-in and DVB-Sub font settings must match.</p>
500    #[serde(rename = "FontOpacity")]
501    #[serde(skip_serializing_if = "Option::is_none")]
502    pub font_opacity: Option<i64>,
503    /// <p>Font resolution in DPI (dots per inch); default is 96 dpi.  All burn-in and DVB-Sub font settings must match.</p>
504    #[serde(rename = "FontResolution")]
505    #[serde(skip_serializing_if = "Option::is_none")]
506    pub font_resolution: Option<i64>,
507    /// <p>When set to &#39;auto&#39; fontSize will scale depending on the size of the output.  Giving a positive integer will specify the exact font size in points.  All burn-in and DVB-Sub font settings must match.</p>
508    #[serde(rename = "FontSize")]
509    #[serde(skip_serializing_if = "Option::is_none")]
510    pub font_size: Option<String>,
511    /// <p>Specifies font outline color. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.</p>
512    #[serde(rename = "OutlineColor")]
513    #[serde(skip_serializing_if = "Option::is_none")]
514    pub outline_color: Option<String>,
515    /// <p>Specifies font outline size in pixels. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.</p>
516    #[serde(rename = "OutlineSize")]
517    #[serde(skip_serializing_if = "Option::is_none")]
518    pub outline_size: Option<i64>,
519    /// <p>Specifies the color of the shadow cast by the captions.  All burn-in and DVB-Sub font settings must match.</p>
520    #[serde(rename = "ShadowColor")]
521    #[serde(skip_serializing_if = "Option::is_none")]
522    pub shadow_color: Option<String>,
523    /// <p>Specifies the opacity of the shadow. 255 is opaque; 0 is transparent. Leaving this parameter out is equivalent to setting it to 0 (transparent).  All burn-in and DVB-Sub font settings must match.</p>
524    #[serde(rename = "ShadowOpacity")]
525    #[serde(skip_serializing_if = "Option::is_none")]
526    pub shadow_opacity: Option<i64>,
527    /// <p>Specifies the horizontal offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels to the left.  All burn-in and DVB-Sub font settings must match.</p>
528    #[serde(rename = "ShadowXOffset")]
529    #[serde(skip_serializing_if = "Option::is_none")]
530    pub shadow_x_offset: Option<i64>,
531    /// <p>Specifies the vertical offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels above the text.  All burn-in and DVB-Sub font settings must match.</p>
532    #[serde(rename = "ShadowYOffset")]
533    #[serde(skip_serializing_if = "Option::is_none")]
534    pub shadow_y_offset: Option<i64>,
535    /// <p>Controls whether a fixed grid size will be used to generate the output subtitles bitmap. Only applicable for Teletext inputs and DVB-Sub/Burn-in outputs.</p>
536    #[serde(rename = "TeletextGridControl")]
537    #[serde(skip_serializing_if = "Option::is_none")]
538    pub teletext_grid_control: Option<String>,
539    /// <p>Specifies the horizontal position of the caption relative to the left side of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the left of the output. If no explicit xPosition is provided, the horizontal caption position will be determined by the alignment parameter.  All burn-in and DVB-Sub font settings must match.</p>
540    #[serde(rename = "XPosition")]
541    #[serde(skip_serializing_if = "Option::is_none")]
542    pub x_position: Option<i64>,
543    /// <p>Specifies the vertical position of the caption relative to the top of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the top of the output. If no explicit yPosition is provided, the caption will be positioned towards the bottom of the output.  All burn-in and DVB-Sub font settings must match.</p>
544    #[serde(rename = "YPosition")]
545    #[serde(skip_serializing_if = "Option::is_none")]
546    pub y_position: Option<i64>,
547}
548
549/// <p>Caption Description</p>
550#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
551pub struct CaptionDescription {
552    /// <p>Specifies which input caption selector to use as a caption source when generating output captions. This field should match a captionSelector name.</p>
553    #[serde(rename = "CaptionSelectorName")]
554    pub caption_selector_name: String,
555    /// <p>Additional settings for captions destination that depend on the destination type.</p>
556    #[serde(rename = "DestinationSettings")]
557    #[serde(skip_serializing_if = "Option::is_none")]
558    pub destination_settings: Option<CaptionDestinationSettings>,
559    /// <p>ISO 639-2 three-digit code: http://www.loc.gov/standards/iso639-2/</p>
560    #[serde(rename = "LanguageCode")]
561    #[serde(skip_serializing_if = "Option::is_none")]
562    pub language_code: Option<String>,
563    /// <p>Human readable information to indicate captions available for players (eg. English, or Spanish).</p>
564    #[serde(rename = "LanguageDescription")]
565    #[serde(skip_serializing_if = "Option::is_none")]
566    pub language_description: Option<String>,
567    /// <p>Name of the caption description.  Used to associate a caption description with an output.  Names must be unique within an event.</p>
568    #[serde(rename = "Name")]
569    pub name: String,
570}
571
572/// <p>Caption Destination Settings</p>
573#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
574pub struct CaptionDestinationSettings {
575    #[serde(rename = "AribDestinationSettings")]
576    #[serde(skip_serializing_if = "Option::is_none")]
577    pub arib_destination_settings: Option<AribDestinationSettings>,
578    #[serde(rename = "BurnInDestinationSettings")]
579    #[serde(skip_serializing_if = "Option::is_none")]
580    pub burn_in_destination_settings: Option<BurnInDestinationSettings>,
581    #[serde(rename = "DvbSubDestinationSettings")]
582    #[serde(skip_serializing_if = "Option::is_none")]
583    pub dvb_sub_destination_settings: Option<DvbSubDestinationSettings>,
584    #[serde(rename = "EmbeddedDestinationSettings")]
585    #[serde(skip_serializing_if = "Option::is_none")]
586    pub embedded_destination_settings: Option<EmbeddedDestinationSettings>,
587    #[serde(rename = "EmbeddedPlusScte20DestinationSettings")]
588    #[serde(skip_serializing_if = "Option::is_none")]
589    pub embedded_plus_scte_20_destination_settings: Option<EmbeddedPlusScte20DestinationSettings>,
590    #[serde(rename = "RtmpCaptionInfoDestinationSettings")]
591    #[serde(skip_serializing_if = "Option::is_none")]
592    pub rtmp_caption_info_destination_settings: Option<RtmpCaptionInfoDestinationSettings>,
593    #[serde(rename = "Scte20PlusEmbeddedDestinationSettings")]
594    #[serde(skip_serializing_if = "Option::is_none")]
595    pub scte_20_plus_embedded_destination_settings: Option<Scte20PlusEmbeddedDestinationSettings>,
596    #[serde(rename = "Scte27DestinationSettings")]
597    #[serde(skip_serializing_if = "Option::is_none")]
598    pub scte_27_destination_settings: Option<Scte27DestinationSettings>,
599    #[serde(rename = "SmpteTtDestinationSettings")]
600    #[serde(skip_serializing_if = "Option::is_none")]
601    pub smpte_tt_destination_settings: Option<SmpteTtDestinationSettings>,
602    #[serde(rename = "TeletextDestinationSettings")]
603    #[serde(skip_serializing_if = "Option::is_none")]
604    pub teletext_destination_settings: Option<TeletextDestinationSettings>,
605    #[serde(rename = "TtmlDestinationSettings")]
606    #[serde(skip_serializing_if = "Option::is_none")]
607    pub ttml_destination_settings: Option<TtmlDestinationSettings>,
608    #[serde(rename = "WebvttDestinationSettings")]
609    #[serde(skip_serializing_if = "Option::is_none")]
610    pub webvtt_destination_settings: Option<WebvttDestinationSettings>,
611}
612
613/// <p>Maps a caption channel to an ISO 693-2 language code (http://www.loc.gov/standards/iso639-2), with an optional description.</p>
614#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
615pub struct CaptionLanguageMapping {
616    /// <p>The closed caption channel being described by this CaptionLanguageMapping.  Each channel mapping must have a unique channel number (maximum of 4)</p>
617    #[serde(rename = "CaptionChannel")]
618    pub caption_channel: i64,
619    /// <p>Three character ISO 639-2 language code (see http://www.loc.gov/standards/iso639-2)</p>
620    #[serde(rename = "LanguageCode")]
621    pub language_code: String,
622    /// <p>Textual description of language</p>
623    #[serde(rename = "LanguageDescription")]
624    pub language_description: String,
625}
626
627/// <p>Output groups for this Live Event. Output groups contain information about where streams should be distributed.</p>
628#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
629pub struct CaptionSelector {
630    /// <p>When specified this field indicates the three letter language code of the caption track to extract from the source.</p>
631    #[serde(rename = "LanguageCode")]
632    #[serde(skip_serializing_if = "Option::is_none")]
633    pub language_code: Option<String>,
634    /// <p>Name identifier for a caption selector.  This name is used to associate this caption selector with one or more caption descriptions.  Names must be unique within an event.</p>
635    #[serde(rename = "Name")]
636    pub name: String,
637    /// <p>Caption selector settings.</p>
638    #[serde(rename = "SelectorSettings")]
639    #[serde(skip_serializing_if = "Option::is_none")]
640    pub selector_settings: Option<CaptionSelectorSettings>,
641}
642
643/// <p>Caption Selector Settings</p>
644#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
645pub struct CaptionSelectorSettings {
646    #[serde(rename = "AribSourceSettings")]
647    #[serde(skip_serializing_if = "Option::is_none")]
648    pub arib_source_settings: Option<AribSourceSettings>,
649    #[serde(rename = "DvbSubSourceSettings")]
650    #[serde(skip_serializing_if = "Option::is_none")]
651    pub dvb_sub_source_settings: Option<DvbSubSourceSettings>,
652    #[serde(rename = "EmbeddedSourceSettings")]
653    #[serde(skip_serializing_if = "Option::is_none")]
654    pub embedded_source_settings: Option<EmbeddedSourceSettings>,
655    #[serde(rename = "Scte20SourceSettings")]
656    #[serde(skip_serializing_if = "Option::is_none")]
657    pub scte_20_source_settings: Option<Scte20SourceSettings>,
658    #[serde(rename = "Scte27SourceSettings")]
659    #[serde(skip_serializing_if = "Option::is_none")]
660    pub scte_27_source_settings: Option<Scte27SourceSettings>,
661    #[serde(rename = "TeletextSourceSettings")]
662    #[serde(skip_serializing_if = "Option::is_none")]
663    pub teletext_source_settings: Option<TeletextSourceSettings>,
664}
665
666/// <p>Placeholder documentation for Channel</p>
667#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
668#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
669pub struct Channel {
670    /// <p>The unique arn of the channel.</p>
671    #[serde(rename = "Arn")]
672    #[serde(skip_serializing_if = "Option::is_none")]
673    pub arn: Option<String>,
674    /// <p>The class for this channel. STANDARD for a channel with two pipelines or SINGLE_PIPELINE for a channel with one pipeline.</p>
675    #[serde(rename = "ChannelClass")]
676    #[serde(skip_serializing_if = "Option::is_none")]
677    pub channel_class: Option<String>,
678    /// <p>A list of destinations of the channel. For UDP outputs, there is one
679    /// destination per output. For other types (HLS, for example), there is
680    /// one destination per packager.</p>
681    #[serde(rename = "Destinations")]
682    #[serde(skip_serializing_if = "Option::is_none")]
683    pub destinations: Option<Vec<OutputDestination>>,
684    /// <p>The endpoints where outgoing connections initiate from</p>
685    #[serde(rename = "EgressEndpoints")]
686    #[serde(skip_serializing_if = "Option::is_none")]
687    pub egress_endpoints: Option<Vec<ChannelEgressEndpoint>>,
688    #[serde(rename = "EncoderSettings")]
689    #[serde(skip_serializing_if = "Option::is_none")]
690    pub encoder_settings: Option<EncoderSettings>,
691    /// <p>The unique id of the channel.</p>
692    #[serde(rename = "Id")]
693    #[serde(skip_serializing_if = "Option::is_none")]
694    pub id: Option<String>,
695    /// <p>List of input attachments for channel.</p>
696    #[serde(rename = "InputAttachments")]
697    #[serde(skip_serializing_if = "Option::is_none")]
698    pub input_attachments: Option<Vec<InputAttachment>>,
699    #[serde(rename = "InputSpecification")]
700    #[serde(skip_serializing_if = "Option::is_none")]
701    pub input_specification: Option<InputSpecification>,
702    /// <p>The log level being written to CloudWatch Logs.</p>
703    #[serde(rename = "LogLevel")]
704    #[serde(skip_serializing_if = "Option::is_none")]
705    pub log_level: Option<String>,
706    /// <p>The name of the channel. (user-mutable)</p>
707    #[serde(rename = "Name")]
708    #[serde(skip_serializing_if = "Option::is_none")]
709    pub name: Option<String>,
710    /// <p>Runtime details for the pipelines of a running channel.</p>
711    #[serde(rename = "PipelineDetails")]
712    #[serde(skip_serializing_if = "Option::is_none")]
713    pub pipeline_details: Option<Vec<PipelineDetail>>,
714    /// <p>The number of currently healthy pipelines.</p>
715    #[serde(rename = "PipelinesRunningCount")]
716    #[serde(skip_serializing_if = "Option::is_none")]
717    pub pipelines_running_count: Option<i64>,
718    /// <p>The Amazon Resource Name (ARN) of the role assumed when running the Channel.</p>
719    #[serde(rename = "RoleArn")]
720    #[serde(skip_serializing_if = "Option::is_none")]
721    pub role_arn: Option<String>,
722    #[serde(rename = "State")]
723    #[serde(skip_serializing_if = "Option::is_none")]
724    pub state: Option<String>,
725    /// <p>A collection of key-value pairs.</p>
726    #[serde(rename = "Tags")]
727    #[serde(skip_serializing_if = "Option::is_none")]
728    pub tags: Option<::std::collections::HashMap<String, String>>,
729}
730
731/// <p>Placeholder documentation for ChannelEgressEndpoint</p>
732#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
733#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
734pub struct ChannelEgressEndpoint {
735    /// <p>Public IP of where a channel&#39;s output comes from</p>
736    #[serde(rename = "SourceIp")]
737    #[serde(skip_serializing_if = "Option::is_none")]
738    pub source_ip: Option<String>,
739}
740
741/// <p>Placeholder documentation for ChannelSummary</p>
742#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
743#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
744pub struct ChannelSummary {
745    /// <p>The unique arn of the channel.</p>
746    #[serde(rename = "Arn")]
747    #[serde(skip_serializing_if = "Option::is_none")]
748    pub arn: Option<String>,
749    /// <p>The class for this channel. STANDARD for a channel with two pipelines or SINGLE_PIPELINE for a channel with one pipeline.</p>
750    #[serde(rename = "ChannelClass")]
751    #[serde(skip_serializing_if = "Option::is_none")]
752    pub channel_class: Option<String>,
753    /// <p>A list of destinations of the channel. For UDP outputs, there is one
754    /// destination per output. For other types (HLS, for example), there is
755    /// one destination per packager.</p>
756    #[serde(rename = "Destinations")]
757    #[serde(skip_serializing_if = "Option::is_none")]
758    pub destinations: Option<Vec<OutputDestination>>,
759    /// <p>The endpoints where outgoing connections initiate from</p>
760    #[serde(rename = "EgressEndpoints")]
761    #[serde(skip_serializing_if = "Option::is_none")]
762    pub egress_endpoints: Option<Vec<ChannelEgressEndpoint>>,
763    /// <p>The unique id of the channel.</p>
764    #[serde(rename = "Id")]
765    #[serde(skip_serializing_if = "Option::is_none")]
766    pub id: Option<String>,
767    /// <p>List of input attachments for channel.</p>
768    #[serde(rename = "InputAttachments")]
769    #[serde(skip_serializing_if = "Option::is_none")]
770    pub input_attachments: Option<Vec<InputAttachment>>,
771    #[serde(rename = "InputSpecification")]
772    #[serde(skip_serializing_if = "Option::is_none")]
773    pub input_specification: Option<InputSpecification>,
774    /// <p>The log level being written to CloudWatch Logs.</p>
775    #[serde(rename = "LogLevel")]
776    #[serde(skip_serializing_if = "Option::is_none")]
777    pub log_level: Option<String>,
778    /// <p>The name of the channel. (user-mutable)</p>
779    #[serde(rename = "Name")]
780    #[serde(skip_serializing_if = "Option::is_none")]
781    pub name: Option<String>,
782    /// <p>The number of currently healthy pipelines.</p>
783    #[serde(rename = "PipelinesRunningCount")]
784    #[serde(skip_serializing_if = "Option::is_none")]
785    pub pipelines_running_count: Option<i64>,
786    /// <p>The Amazon Resource Name (ARN) of the role assumed when running the Channel.</p>
787    #[serde(rename = "RoleArn")]
788    #[serde(skip_serializing_if = "Option::is_none")]
789    pub role_arn: Option<String>,
790    #[serde(rename = "State")]
791    #[serde(skip_serializing_if = "Option::is_none")]
792    pub state: Option<String>,
793    /// <p>A collection of key-value pairs.</p>
794    #[serde(rename = "Tags")]
795    #[serde(skip_serializing_if = "Option::is_none")]
796    pub tags: Option<::std::collections::HashMap<String, String>>,
797}
798
799/// <p>Passthrough applies no color space conversion to the output</p>
800#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
801pub struct ColorSpacePassthroughSettings {}
802
803/// <p>A request to create a channel</p>
804#[derive(Clone, Debug, Default, PartialEq, Serialize)]
805#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
806pub struct CreateChannelRequest {
807    /// <p>The class for this channel. STANDARD for a channel with two pipelines or SINGLE_PIPELINE for a channel with one pipeline.</p>
808    #[serde(rename = "ChannelClass")]
809    #[serde(skip_serializing_if = "Option::is_none")]
810    pub channel_class: Option<String>,
811    #[serde(rename = "Destinations")]
812    #[serde(skip_serializing_if = "Option::is_none")]
813    pub destinations: Option<Vec<OutputDestination>>,
814    #[serde(rename = "EncoderSettings")]
815    #[serde(skip_serializing_if = "Option::is_none")]
816    pub encoder_settings: Option<EncoderSettings>,
817    /// <p>List of input attachments for channel.</p>
818    #[serde(rename = "InputAttachments")]
819    #[serde(skip_serializing_if = "Option::is_none")]
820    pub input_attachments: Option<Vec<InputAttachment>>,
821    /// <p>Specification of input for this channel (max. bitrate, resolution, codec, etc.)</p>
822    #[serde(rename = "InputSpecification")]
823    #[serde(skip_serializing_if = "Option::is_none")]
824    pub input_specification: Option<InputSpecification>,
825    /// <p>The log level to write to CloudWatch Logs.</p>
826    #[serde(rename = "LogLevel")]
827    #[serde(skip_serializing_if = "Option::is_none")]
828    pub log_level: Option<String>,
829    /// <p>Name of channel.</p>
830    #[serde(rename = "Name")]
831    #[serde(skip_serializing_if = "Option::is_none")]
832    pub name: Option<String>,
833    /// <p>Unique request ID to be specified. This is needed to prevent retries from
834    /// creating multiple resources.</p>
835    #[serde(rename = "RequestId")]
836    #[serde(skip_serializing_if = "Option::is_none")]
837    pub request_id: Option<String>,
838    /// <p>An optional Amazon Resource Name (ARN) of the role to assume when running the Channel.</p>
839    #[serde(rename = "RoleArn")]
840    #[serde(skip_serializing_if = "Option::is_none")]
841    pub role_arn: Option<String>,
842    /// <p>A collection of key-value pairs.</p>
843    #[serde(rename = "Tags")]
844    #[serde(skip_serializing_if = "Option::is_none")]
845    pub tags: Option<::std::collections::HashMap<String, String>>,
846}
847
848/// <p>Placeholder documentation for CreateChannelResponse</p>
849#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
850#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
851pub struct CreateChannelResponse {
852    #[serde(rename = "Channel")]
853    #[serde(skip_serializing_if = "Option::is_none")]
854    pub channel: Option<Channel>,
855}
856
857/// <p>The name of the input</p>
858#[derive(Clone, Debug, Default, PartialEq, Serialize)]
859#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
860pub struct CreateInputRequest {
861    /// <p>Destination settings for PUSH type inputs.</p>
862    #[serde(rename = "Destinations")]
863    #[serde(skip_serializing_if = "Option::is_none")]
864    pub destinations: Option<Vec<InputDestinationRequest>>,
865    /// <p>Settings for the devices.</p>
866    #[serde(rename = "InputDevices")]
867    #[serde(skip_serializing_if = "Option::is_none")]
868    pub input_devices: Option<Vec<InputDeviceSettings>>,
869    /// <p>A list of security groups referenced by IDs to attach to the input.</p>
870    #[serde(rename = "InputSecurityGroups")]
871    #[serde(skip_serializing_if = "Option::is_none")]
872    pub input_security_groups: Option<Vec<String>>,
873    /// <p>A list of the MediaConnect Flows that you want to use in this input. You can specify as few as one
874    /// Flow and presently, as many as two. The only requirement is when you have more than one is that each Flow is in a
875    /// separate Availability Zone as this ensures your EML input is redundant to AZ issues.</p>
876    #[serde(rename = "MediaConnectFlows")]
877    #[serde(skip_serializing_if = "Option::is_none")]
878    pub media_connect_flows: Option<Vec<MediaConnectFlowRequest>>,
879    /// <p>Name of the input.</p>
880    #[serde(rename = "Name")]
881    #[serde(skip_serializing_if = "Option::is_none")]
882    pub name: Option<String>,
883    /// <p>Unique identifier of the request to ensure the request is handled
884    /// exactly once in case of retries.</p>
885    #[serde(rename = "RequestId")]
886    #[serde(skip_serializing_if = "Option::is_none")]
887    pub request_id: Option<String>,
888    /// <p>The Amazon Resource Name (ARN) of the role this input assumes during and after creation.</p>
889    #[serde(rename = "RoleArn")]
890    #[serde(skip_serializing_if = "Option::is_none")]
891    pub role_arn: Option<String>,
892    /// <p>The source URLs for a PULL-type input. Every PULL type input needs
893    /// exactly two source URLs for redundancy.
894    /// Only specify sources for PULL type Inputs. Leave Destinations empty.</p>
895    #[serde(rename = "Sources")]
896    #[serde(skip_serializing_if = "Option::is_none")]
897    pub sources: Option<Vec<InputSourceRequest>>,
898    /// <p>A collection of key-value pairs.</p>
899    #[serde(rename = "Tags")]
900    #[serde(skip_serializing_if = "Option::is_none")]
901    pub tags: Option<::std::collections::HashMap<String, String>>,
902    #[serde(rename = "Type")]
903    #[serde(skip_serializing_if = "Option::is_none")]
904    pub type_: Option<String>,
905    #[serde(rename = "Vpc")]
906    #[serde(skip_serializing_if = "Option::is_none")]
907    pub vpc: Option<InputVpcRequest>,
908}
909
910/// <p>Placeholder documentation for CreateInputResponse</p>
911#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
912#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
913pub struct CreateInputResponse {
914    #[serde(rename = "Input")]
915    #[serde(skip_serializing_if = "Option::is_none")]
916    pub input: Option<Input>,
917}
918
919/// <p>The IPv4 CIDRs to whitelist for this Input Security Group</p>
920#[derive(Clone, Debug, Default, PartialEq, Serialize)]
921#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
922pub struct CreateInputSecurityGroupRequest {
923    /// <p>A collection of key-value pairs.</p>
924    #[serde(rename = "Tags")]
925    #[serde(skip_serializing_if = "Option::is_none")]
926    pub tags: Option<::std::collections::HashMap<String, String>>,
927    /// <p>List of IPv4 CIDR addresses to whitelist</p>
928    #[serde(rename = "WhitelistRules")]
929    #[serde(skip_serializing_if = "Option::is_none")]
930    pub whitelist_rules: Option<Vec<InputWhitelistRuleCidr>>,
931}
932
933/// <p>Placeholder documentation for CreateInputSecurityGroupResponse</p>
934#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
935#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
936pub struct CreateInputSecurityGroupResponse {
937    #[serde(rename = "SecurityGroup")]
938    #[serde(skip_serializing_if = "Option::is_none")]
939    pub security_group: Option<InputSecurityGroup>,
940}
941
942/// <p>A request to create a program in a multiplex.</p>
943#[derive(Clone, Debug, Default, PartialEq, Serialize)]
944#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
945pub struct CreateMultiplexProgramRequest {
946    /// <p>ID of the multiplex where the program is to be created.</p>
947    #[serde(rename = "MultiplexId")]
948    pub multiplex_id: String,
949    /// <p>The settings for this multiplex program.</p>
950    #[serde(rename = "MultiplexProgramSettings")]
951    pub multiplex_program_settings: MultiplexProgramSettings,
952    /// <p>Name of multiplex program.</p>
953    #[serde(rename = "ProgramName")]
954    pub program_name: String,
955    /// <p>Unique request ID. This prevents retries from creating multiple
956    /// resources.</p>
957    #[serde(rename = "RequestId")]
958    pub request_id: String,
959}
960
961/// <p>Placeholder documentation for CreateMultiplexProgramResponse</p>
962#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
963#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
964pub struct CreateMultiplexProgramResponse {
965    /// <p>The newly created multiplex program.</p>
966    #[serde(rename = "MultiplexProgram")]
967    #[serde(skip_serializing_if = "Option::is_none")]
968    pub multiplex_program: Option<MultiplexProgram>,
969}
970
971/// <p>A request to create a multiplex.</p>
972#[derive(Clone, Debug, Default, PartialEq, Serialize)]
973#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
974pub struct CreateMultiplexRequest {
975    /// <p>A list of availability zones for the multiplex. You must specify exactly two.</p>
976    #[serde(rename = "AvailabilityZones")]
977    pub availability_zones: Vec<String>,
978    /// <p>Configuration for a multiplex event.</p>
979    #[serde(rename = "MultiplexSettings")]
980    pub multiplex_settings: MultiplexSettings,
981    /// <p>Name of multiplex.</p>
982    #[serde(rename = "Name")]
983    pub name: String,
984    /// <p>Unique request ID. This prevents retries from creating multiple
985    /// resources.</p>
986    #[serde(rename = "RequestId")]
987    pub request_id: String,
988    /// <p>A collection of key-value pairs.</p>
989    #[serde(rename = "Tags")]
990    #[serde(skip_serializing_if = "Option::is_none")]
991    pub tags: Option<::std::collections::HashMap<String, String>>,
992}
993
994/// <p>Placeholder documentation for CreateMultiplexResponse</p>
995#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
996#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
997pub struct CreateMultiplexResponse {
998    /// <p>The newly created multiplex.</p>
999    #[serde(rename = "Multiplex")]
1000    #[serde(skip_serializing_if = "Option::is_none")]
1001    pub multiplex: Option<Multiplex>,
1002}
1003
1004/// <p>Placeholder documentation for CreateTagsRequest</p>
1005#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1006#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1007pub struct CreateTagsRequest {
1008    #[serde(rename = "ResourceArn")]
1009    pub resource_arn: String,
1010    #[serde(rename = "Tags")]
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub tags: Option<::std::collections::HashMap<String, String>>,
1013}
1014
1015/// <p>Placeholder documentation for DeleteChannelRequest</p>
1016#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1017#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1018pub struct DeleteChannelRequest {
1019    /// <p>Unique ID of the channel.</p>
1020    #[serde(rename = "ChannelId")]
1021    pub channel_id: String,
1022}
1023
1024/// <p>Placeholder documentation for DeleteChannelResponse</p>
1025#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1026#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1027pub struct DeleteChannelResponse {
1028    /// <p>The unique arn of the channel.</p>
1029    #[serde(rename = "Arn")]
1030    #[serde(skip_serializing_if = "Option::is_none")]
1031    pub arn: Option<String>,
1032    /// <p>The class for this channel. STANDARD for a channel with two pipelines or SINGLE_PIPELINE for a channel with one pipeline.</p>
1033    #[serde(rename = "ChannelClass")]
1034    #[serde(skip_serializing_if = "Option::is_none")]
1035    pub channel_class: Option<String>,
1036    /// <p>A list of destinations of the channel. For UDP outputs, there is one
1037    /// destination per output. For other types (HLS, for example), there is
1038    /// one destination per packager.</p>
1039    #[serde(rename = "Destinations")]
1040    #[serde(skip_serializing_if = "Option::is_none")]
1041    pub destinations: Option<Vec<OutputDestination>>,
1042    /// <p>The endpoints where outgoing connections initiate from</p>
1043    #[serde(rename = "EgressEndpoints")]
1044    #[serde(skip_serializing_if = "Option::is_none")]
1045    pub egress_endpoints: Option<Vec<ChannelEgressEndpoint>>,
1046    #[serde(rename = "EncoderSettings")]
1047    #[serde(skip_serializing_if = "Option::is_none")]
1048    pub encoder_settings: Option<EncoderSettings>,
1049    /// <p>The unique id of the channel.</p>
1050    #[serde(rename = "Id")]
1051    #[serde(skip_serializing_if = "Option::is_none")]
1052    pub id: Option<String>,
1053    /// <p>List of input attachments for channel.</p>
1054    #[serde(rename = "InputAttachments")]
1055    #[serde(skip_serializing_if = "Option::is_none")]
1056    pub input_attachments: Option<Vec<InputAttachment>>,
1057    #[serde(rename = "InputSpecification")]
1058    #[serde(skip_serializing_if = "Option::is_none")]
1059    pub input_specification: Option<InputSpecification>,
1060    /// <p>The log level being written to CloudWatch Logs.</p>
1061    #[serde(rename = "LogLevel")]
1062    #[serde(skip_serializing_if = "Option::is_none")]
1063    pub log_level: Option<String>,
1064    /// <p>The name of the channel. (user-mutable)</p>
1065    #[serde(rename = "Name")]
1066    #[serde(skip_serializing_if = "Option::is_none")]
1067    pub name: Option<String>,
1068    /// <p>Runtime details for the pipelines of a running channel.</p>
1069    #[serde(rename = "PipelineDetails")]
1070    #[serde(skip_serializing_if = "Option::is_none")]
1071    pub pipeline_details: Option<Vec<PipelineDetail>>,
1072    /// <p>The number of currently healthy pipelines.</p>
1073    #[serde(rename = "PipelinesRunningCount")]
1074    #[serde(skip_serializing_if = "Option::is_none")]
1075    pub pipelines_running_count: Option<i64>,
1076    /// <p>The Amazon Resource Name (ARN) of the role assumed when running the Channel.</p>
1077    #[serde(rename = "RoleArn")]
1078    #[serde(skip_serializing_if = "Option::is_none")]
1079    pub role_arn: Option<String>,
1080    #[serde(rename = "State")]
1081    #[serde(skip_serializing_if = "Option::is_none")]
1082    pub state: Option<String>,
1083    /// <p>A collection of key-value pairs.</p>
1084    #[serde(rename = "Tags")]
1085    #[serde(skip_serializing_if = "Option::is_none")]
1086    pub tags: Option<::std::collections::HashMap<String, String>>,
1087}
1088
1089/// <p>Placeholder documentation for DeleteInputRequest</p>
1090#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1091#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1092pub struct DeleteInputRequest {
1093    /// <p>Unique ID of the input</p>
1094    #[serde(rename = "InputId")]
1095    pub input_id: String,
1096}
1097
1098/// <p>Placeholder documentation for DeleteInputResponse</p>
1099#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1100#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1101pub struct DeleteInputResponse {}
1102
1103/// <p>Placeholder documentation for DeleteInputSecurityGroupRequest</p>
1104#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1105#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1106pub struct DeleteInputSecurityGroupRequest {
1107    /// <p>The Input Security Group to delete</p>
1108    #[serde(rename = "InputSecurityGroupId")]
1109    pub input_security_group_id: String,
1110}
1111
1112/// <p>Placeholder documentation for DeleteInputSecurityGroupResponse</p>
1113#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1114#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1115pub struct DeleteInputSecurityGroupResponse {}
1116
1117/// <p>Placeholder documentation for DeleteMultiplexProgramRequest</p>
1118#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1119#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1120pub struct DeleteMultiplexProgramRequest {
1121    /// <p>The ID of the multiplex that the program belongs to.</p>
1122    #[serde(rename = "MultiplexId")]
1123    pub multiplex_id: String,
1124    /// <p>The multiplex program name.</p>
1125    #[serde(rename = "ProgramName")]
1126    pub program_name: String,
1127}
1128
1129/// <p>Placeholder documentation for DeleteMultiplexProgramResponse</p>
1130#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1131#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1132pub struct DeleteMultiplexProgramResponse {
1133    /// <p>The MediaLive channel associated with the program.</p>
1134    #[serde(rename = "ChannelId")]
1135    #[serde(skip_serializing_if = "Option::is_none")]
1136    pub channel_id: Option<String>,
1137    /// <p>The settings for this multiplex program.</p>
1138    #[serde(rename = "MultiplexProgramSettings")]
1139    #[serde(skip_serializing_if = "Option::is_none")]
1140    pub multiplex_program_settings: Option<MultiplexProgramSettings>,
1141    /// <p>The packet identifier map for this multiplex program.</p>
1142    #[serde(rename = "PacketIdentifiersMap")]
1143    #[serde(skip_serializing_if = "Option::is_none")]
1144    pub packet_identifiers_map: Option<MultiplexProgramPacketIdentifiersMap>,
1145    /// <p>The name of the multiplex program.</p>
1146    #[serde(rename = "ProgramName")]
1147    #[serde(skip_serializing_if = "Option::is_none")]
1148    pub program_name: Option<String>,
1149}
1150
1151/// <p>Placeholder documentation for DeleteMultiplexRequest</p>
1152#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1153#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1154pub struct DeleteMultiplexRequest {
1155    /// <p>The ID of the multiplex.</p>
1156    #[serde(rename = "MultiplexId")]
1157    pub multiplex_id: String,
1158}
1159
1160/// <p>Placeholder documentation for DeleteMultiplexResponse</p>
1161#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1162#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1163pub struct DeleteMultiplexResponse {
1164    /// <p>The unique arn of the multiplex.</p>
1165    #[serde(rename = "Arn")]
1166    #[serde(skip_serializing_if = "Option::is_none")]
1167    pub arn: Option<String>,
1168    /// <p>A list of availability zones for the multiplex.</p>
1169    #[serde(rename = "AvailabilityZones")]
1170    #[serde(skip_serializing_if = "Option::is_none")]
1171    pub availability_zones: Option<Vec<String>>,
1172    /// <p>A list of the multiplex output destinations.</p>
1173    #[serde(rename = "Destinations")]
1174    #[serde(skip_serializing_if = "Option::is_none")]
1175    pub destinations: Option<Vec<MultiplexOutputDestination>>,
1176    /// <p>The unique id of the multiplex.</p>
1177    #[serde(rename = "Id")]
1178    #[serde(skip_serializing_if = "Option::is_none")]
1179    pub id: Option<String>,
1180    /// <p>Configuration for a multiplex event.</p>
1181    #[serde(rename = "MultiplexSettings")]
1182    #[serde(skip_serializing_if = "Option::is_none")]
1183    pub multiplex_settings: Option<MultiplexSettings>,
1184    /// <p>The name of the multiplex.</p>
1185    #[serde(rename = "Name")]
1186    #[serde(skip_serializing_if = "Option::is_none")]
1187    pub name: Option<String>,
1188    /// <p>The number of currently healthy pipelines.</p>
1189    #[serde(rename = "PipelinesRunningCount")]
1190    #[serde(skip_serializing_if = "Option::is_none")]
1191    pub pipelines_running_count: Option<i64>,
1192    /// <p>The number of programs in the multiplex.</p>
1193    #[serde(rename = "ProgramCount")]
1194    #[serde(skip_serializing_if = "Option::is_none")]
1195    pub program_count: Option<i64>,
1196    /// <p>The current state of the multiplex.</p>
1197    #[serde(rename = "State")]
1198    #[serde(skip_serializing_if = "Option::is_none")]
1199    pub state: Option<String>,
1200    /// <p>A collection of key-value pairs.</p>
1201    #[serde(rename = "Tags")]
1202    #[serde(skip_serializing_if = "Option::is_none")]
1203    pub tags: Option<::std::collections::HashMap<String, String>>,
1204}
1205
1206/// <p>Placeholder documentation for DeleteReservationRequest</p>
1207#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1208#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1209pub struct DeleteReservationRequest {
1210    /// <p>Unique reservation ID, e.g. &#39;1234567&#39;</p>
1211    #[serde(rename = "ReservationId")]
1212    pub reservation_id: String,
1213}
1214
1215/// <p>Placeholder documentation for DeleteReservationResponse</p>
1216#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1217#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1218pub struct DeleteReservationResponse {
1219    /// <p>Unique reservation ARN, e.g. &#39;arn:aws:medialive:us-west-2:123456789012:reservation:1234567&#39;</p>
1220    #[serde(rename = "Arn")]
1221    #[serde(skip_serializing_if = "Option::is_none")]
1222    pub arn: Option<String>,
1223    /// <p>Number of reserved resources</p>
1224    #[serde(rename = "Count")]
1225    #[serde(skip_serializing_if = "Option::is_none")]
1226    pub count: Option<i64>,
1227    /// <p>Currency code for usagePrice and fixedPrice in ISO-4217 format, e.g. &#39;USD&#39;</p>
1228    #[serde(rename = "CurrencyCode")]
1229    #[serde(skip_serializing_if = "Option::is_none")]
1230    pub currency_code: Option<String>,
1231    /// <p>Lease duration, e.g. &#39;12&#39;</p>
1232    #[serde(rename = "Duration")]
1233    #[serde(skip_serializing_if = "Option::is_none")]
1234    pub duration: Option<i64>,
1235    /// <p>Units for duration, e.g. &#39;MONTHS&#39;</p>
1236    #[serde(rename = "DurationUnits")]
1237    #[serde(skip_serializing_if = "Option::is_none")]
1238    pub duration_units: Option<String>,
1239    /// <p>Reservation UTC end date and time in ISO-8601 format, e.g. &#39;2019-03-01T00:00:00&#39;</p>
1240    #[serde(rename = "End")]
1241    #[serde(skip_serializing_if = "Option::is_none")]
1242    pub end: Option<String>,
1243    /// <p>One-time charge for each reserved resource, e.g. &#39;0.0&#39; for a NO_UPFRONT offering</p>
1244    #[serde(rename = "FixedPrice")]
1245    #[serde(skip_serializing_if = "Option::is_none")]
1246    pub fixed_price: Option<f64>,
1247    /// <p>User specified reservation name</p>
1248    #[serde(rename = "Name")]
1249    #[serde(skip_serializing_if = "Option::is_none")]
1250    pub name: Option<String>,
1251    /// <p>Offering description, e.g. &#39;HD AVC output at 10-20 Mbps, 30 fps, and standard VQ in US West (Oregon)&#39;</p>
1252    #[serde(rename = "OfferingDescription")]
1253    #[serde(skip_serializing_if = "Option::is_none")]
1254    pub offering_description: Option<String>,
1255    /// <p>Unique offering ID, e.g. &#39;87654321&#39;</p>
1256    #[serde(rename = "OfferingId")]
1257    #[serde(skip_serializing_if = "Option::is_none")]
1258    pub offering_id: Option<String>,
1259    /// <p>Offering type, e.g. &#39;NO_UPFRONT&#39;</p>
1260    #[serde(rename = "OfferingType")]
1261    #[serde(skip_serializing_if = "Option::is_none")]
1262    pub offering_type: Option<String>,
1263    /// <p>AWS region, e.g. &#39;us-west-2&#39;</p>
1264    #[serde(rename = "Region")]
1265    #[serde(skip_serializing_if = "Option::is_none")]
1266    pub region: Option<String>,
1267    /// <p>Unique reservation ID, e.g. &#39;1234567&#39;</p>
1268    #[serde(rename = "ReservationId")]
1269    #[serde(skip_serializing_if = "Option::is_none")]
1270    pub reservation_id: Option<String>,
1271    /// <p>Resource configuration details</p>
1272    #[serde(rename = "ResourceSpecification")]
1273    #[serde(skip_serializing_if = "Option::is_none")]
1274    pub resource_specification: Option<ReservationResourceSpecification>,
1275    /// <p>Reservation UTC start date and time in ISO-8601 format, e.g. &#39;2018-03-01T00:00:00&#39;</p>
1276    #[serde(rename = "Start")]
1277    #[serde(skip_serializing_if = "Option::is_none")]
1278    pub start: Option<String>,
1279    /// <p>Current state of reservation, e.g. &#39;ACTIVE&#39;</p>
1280    #[serde(rename = "State")]
1281    #[serde(skip_serializing_if = "Option::is_none")]
1282    pub state: Option<String>,
1283    /// <p>A collection of key-value pairs</p>
1284    #[serde(rename = "Tags")]
1285    #[serde(skip_serializing_if = "Option::is_none")]
1286    pub tags: Option<::std::collections::HashMap<String, String>>,
1287    /// <p>Recurring usage charge for each reserved resource, e.g. &#39;157.0&#39;</p>
1288    #[serde(rename = "UsagePrice")]
1289    #[serde(skip_serializing_if = "Option::is_none")]
1290    pub usage_price: Option<f64>,
1291}
1292
1293/// <p>Placeholder documentation for DeleteScheduleRequest</p>
1294#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1295#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1296pub struct DeleteScheduleRequest {
1297    /// <p>Id of the channel whose schedule is being deleted.</p>
1298    #[serde(rename = "ChannelId")]
1299    pub channel_id: String,
1300}
1301
1302/// <p>Placeholder documentation for DeleteScheduleResponse</p>
1303#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1304#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1305pub struct DeleteScheduleResponse {}
1306
1307/// <p>Placeholder documentation for DeleteTagsRequest</p>
1308#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1309#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1310pub struct DeleteTagsRequest {
1311    #[serde(rename = "ResourceArn")]
1312    pub resource_arn: String,
1313    /// <p>An array of tag keys to delete</p>
1314    #[serde(rename = "TagKeys")]
1315    pub tag_keys: Vec<String>,
1316}
1317
1318/// <p>Placeholder documentation for DescribeChannelRequest</p>
1319#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1320#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1321pub struct DescribeChannelRequest {
1322    /// <p>channel ID</p>
1323    #[serde(rename = "ChannelId")]
1324    pub channel_id: String,
1325}
1326
1327/// <p>Placeholder documentation for DescribeChannelResponse</p>
1328#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1329#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1330pub struct DescribeChannelResponse {
1331    /// <p>The unique arn of the channel.</p>
1332    #[serde(rename = "Arn")]
1333    #[serde(skip_serializing_if = "Option::is_none")]
1334    pub arn: Option<String>,
1335    /// <p>The class for this channel. STANDARD for a channel with two pipelines or SINGLE_PIPELINE for a channel with one pipeline.</p>
1336    #[serde(rename = "ChannelClass")]
1337    #[serde(skip_serializing_if = "Option::is_none")]
1338    pub channel_class: Option<String>,
1339    /// <p>A list of destinations of the channel. For UDP outputs, there is one
1340    /// destination per output. For other types (HLS, for example), there is
1341    /// one destination per packager.</p>
1342    #[serde(rename = "Destinations")]
1343    #[serde(skip_serializing_if = "Option::is_none")]
1344    pub destinations: Option<Vec<OutputDestination>>,
1345    /// <p>The endpoints where outgoing connections initiate from</p>
1346    #[serde(rename = "EgressEndpoints")]
1347    #[serde(skip_serializing_if = "Option::is_none")]
1348    pub egress_endpoints: Option<Vec<ChannelEgressEndpoint>>,
1349    #[serde(rename = "EncoderSettings")]
1350    #[serde(skip_serializing_if = "Option::is_none")]
1351    pub encoder_settings: Option<EncoderSettings>,
1352    /// <p>The unique id of the channel.</p>
1353    #[serde(rename = "Id")]
1354    #[serde(skip_serializing_if = "Option::is_none")]
1355    pub id: Option<String>,
1356    /// <p>List of input attachments for channel.</p>
1357    #[serde(rename = "InputAttachments")]
1358    #[serde(skip_serializing_if = "Option::is_none")]
1359    pub input_attachments: Option<Vec<InputAttachment>>,
1360    #[serde(rename = "InputSpecification")]
1361    #[serde(skip_serializing_if = "Option::is_none")]
1362    pub input_specification: Option<InputSpecification>,
1363    /// <p>The log level being written to CloudWatch Logs.</p>
1364    #[serde(rename = "LogLevel")]
1365    #[serde(skip_serializing_if = "Option::is_none")]
1366    pub log_level: Option<String>,
1367    /// <p>The name of the channel. (user-mutable)</p>
1368    #[serde(rename = "Name")]
1369    #[serde(skip_serializing_if = "Option::is_none")]
1370    pub name: Option<String>,
1371    /// <p>Runtime details for the pipelines of a running channel.</p>
1372    #[serde(rename = "PipelineDetails")]
1373    #[serde(skip_serializing_if = "Option::is_none")]
1374    pub pipeline_details: Option<Vec<PipelineDetail>>,
1375    /// <p>The number of currently healthy pipelines.</p>
1376    #[serde(rename = "PipelinesRunningCount")]
1377    #[serde(skip_serializing_if = "Option::is_none")]
1378    pub pipelines_running_count: Option<i64>,
1379    /// <p>The Amazon Resource Name (ARN) of the role assumed when running the Channel.</p>
1380    #[serde(rename = "RoleArn")]
1381    #[serde(skip_serializing_if = "Option::is_none")]
1382    pub role_arn: Option<String>,
1383    #[serde(rename = "State")]
1384    #[serde(skip_serializing_if = "Option::is_none")]
1385    pub state: Option<String>,
1386    /// <p>A collection of key-value pairs.</p>
1387    #[serde(rename = "Tags")]
1388    #[serde(skip_serializing_if = "Option::is_none")]
1389    pub tags: Option<::std::collections::HashMap<String, String>>,
1390}
1391
1392/// <p>Placeholder documentation for DescribeInputDeviceRequest</p>
1393#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1394#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1395pub struct DescribeInputDeviceRequest {
1396    /// <p>The unique ID of this input device. For example, hd-123456789abcdef.</p>
1397    #[serde(rename = "InputDeviceId")]
1398    pub input_device_id: String,
1399}
1400
1401/// <p>Placeholder documentation for DescribeInputDeviceResponse</p>
1402#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1403#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1404pub struct DescribeInputDeviceResponse {
1405    /// <p>The unique ARN of the input device.</p>
1406    #[serde(rename = "Arn")]
1407    #[serde(skip_serializing_if = "Option::is_none")]
1408    pub arn: Option<String>,
1409    /// <p>The state of the connection between the input device and AWS.</p>
1410    #[serde(rename = "ConnectionState")]
1411    #[serde(skip_serializing_if = "Option::is_none")]
1412    pub connection_state: Option<String>,
1413    /// <p>The status of the action to synchronize the device configuration. If you change the configuration of the input device (for example, the maximum bitrate), MediaLive sends the new data to the device. The device might not update itself immediately. SYNCED means the device has updated its configuration. SYNCING means that it has not updated its configuration.</p>
1414    #[serde(rename = "DeviceSettingsSyncState")]
1415    #[serde(skip_serializing_if = "Option::is_none")]
1416    pub device_settings_sync_state: Option<String>,
1417    /// <p>Settings that describe an input device that is type HD.</p>
1418    #[serde(rename = "HdDeviceSettings")]
1419    #[serde(skip_serializing_if = "Option::is_none")]
1420    pub hd_device_settings: Option<InputDeviceHdSettings>,
1421    /// <p>The unique ID of the input device.</p>
1422    #[serde(rename = "Id")]
1423    #[serde(skip_serializing_if = "Option::is_none")]
1424    pub id: Option<String>,
1425    /// <p>The network MAC address of the input device.</p>
1426    #[serde(rename = "MacAddress")]
1427    #[serde(skip_serializing_if = "Option::is_none")]
1428    pub mac_address: Option<String>,
1429    /// <p>A name that you specify for the input device.</p>
1430    #[serde(rename = "Name")]
1431    #[serde(skip_serializing_if = "Option::is_none")]
1432    pub name: Option<String>,
1433    /// <p>The network settings for the input device.</p>
1434    #[serde(rename = "NetworkSettings")]
1435    #[serde(skip_serializing_if = "Option::is_none")]
1436    pub network_settings: Option<InputDeviceNetworkSettings>,
1437    /// <p>The unique serial number of the input device.</p>
1438    #[serde(rename = "SerialNumber")]
1439    #[serde(skip_serializing_if = "Option::is_none")]
1440    pub serial_number: Option<String>,
1441    /// <p>The type of the input device.</p>
1442    #[serde(rename = "Type")]
1443    #[serde(skip_serializing_if = "Option::is_none")]
1444    pub type_: Option<String>,
1445}
1446
1447/// <p>Placeholder documentation for DescribeInputRequest</p>
1448#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1449#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1450pub struct DescribeInputRequest {
1451    /// <p>Unique ID of the input</p>
1452    #[serde(rename = "InputId")]
1453    pub input_id: String,
1454}
1455
1456/// <p>Placeholder documentation for DescribeInputResponse</p>
1457#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1458#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1459pub struct DescribeInputResponse {
1460    /// <p>The Unique ARN of the input (generated, immutable).</p>
1461    #[serde(rename = "Arn")]
1462    #[serde(skip_serializing_if = "Option::is_none")]
1463    pub arn: Option<String>,
1464    /// <p>A list of channel IDs that that input is attached to (currently an input can only be attached to one channel).</p>
1465    #[serde(rename = "AttachedChannels")]
1466    #[serde(skip_serializing_if = "Option::is_none")]
1467    pub attached_channels: Option<Vec<String>>,
1468    /// <p>A list of the destinations of the input (PUSH-type).</p>
1469    #[serde(rename = "Destinations")]
1470    #[serde(skip_serializing_if = "Option::is_none")]
1471    pub destinations: Option<Vec<InputDestination>>,
1472    /// <p>The generated ID of the input (unique for user account, immutable).</p>
1473    #[serde(rename = "Id")]
1474    #[serde(skip_serializing_if = "Option::is_none")]
1475    pub id: Option<String>,
1476    /// <p>STANDARD - MediaLive expects two sources to be connected to this input. If the channel is also STANDARD, both sources will be ingested. If the channel is SINGLE<em>PIPELINE, only the first source will be ingested; the second source will always be ignored, even if the first source fails.
1477    /// SINGLE</em>PIPELINE - You can connect only one source to this input. If the ChannelClass is also  SINGLE_PIPELINE, this value is valid. If the ChannelClass is STANDARD, this value is not valid because the channel requires two sources in the input.</p>
1478    #[serde(rename = "InputClass")]
1479    #[serde(skip_serializing_if = "Option::is_none")]
1480    pub input_class: Option<String>,
1481    /// <p>Settings for the input devices.</p>
1482    #[serde(rename = "InputDevices")]
1483    #[serde(skip_serializing_if = "Option::is_none")]
1484    pub input_devices: Option<Vec<InputDeviceSettings>>,
1485    /// <p>Certain pull input sources can be dynamic, meaning that they can have their URL&#39;s dynamically changes
1486    /// during input switch actions. Presently, this functionality only works with MP4_FILE inputs.</p>
1487    #[serde(rename = "InputSourceType")]
1488    #[serde(skip_serializing_if = "Option::is_none")]
1489    pub input_source_type: Option<String>,
1490    /// <p>A list of MediaConnect Flows for this input.</p>
1491    #[serde(rename = "MediaConnectFlows")]
1492    #[serde(skip_serializing_if = "Option::is_none")]
1493    pub media_connect_flows: Option<Vec<MediaConnectFlow>>,
1494    /// <p>The user-assigned name (This is a mutable value).</p>
1495    #[serde(rename = "Name")]
1496    #[serde(skip_serializing_if = "Option::is_none")]
1497    pub name: Option<String>,
1498    /// <p>The Amazon Resource Name (ARN) of the role this input assumes during and after creation.</p>
1499    #[serde(rename = "RoleArn")]
1500    #[serde(skip_serializing_if = "Option::is_none")]
1501    pub role_arn: Option<String>,
1502    /// <p>A list of IDs for all the Input Security Groups attached to the input.</p>
1503    #[serde(rename = "SecurityGroups")]
1504    #[serde(skip_serializing_if = "Option::is_none")]
1505    pub security_groups: Option<Vec<String>>,
1506    /// <p>A list of the sources of the input (PULL-type).</p>
1507    #[serde(rename = "Sources")]
1508    #[serde(skip_serializing_if = "Option::is_none")]
1509    pub sources: Option<Vec<InputSource>>,
1510    #[serde(rename = "State")]
1511    #[serde(skip_serializing_if = "Option::is_none")]
1512    pub state: Option<String>,
1513    /// <p>A collection of key-value pairs.</p>
1514    #[serde(rename = "Tags")]
1515    #[serde(skip_serializing_if = "Option::is_none")]
1516    pub tags: Option<::std::collections::HashMap<String, String>>,
1517    #[serde(rename = "Type")]
1518    #[serde(skip_serializing_if = "Option::is_none")]
1519    pub type_: Option<String>,
1520}
1521
1522/// <p>Placeholder documentation for DescribeInputSecurityGroupRequest</p>
1523#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1524#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1525pub struct DescribeInputSecurityGroupRequest {
1526    /// <p>The id of the Input Security Group to describe</p>
1527    #[serde(rename = "InputSecurityGroupId")]
1528    pub input_security_group_id: String,
1529}
1530
1531/// <p>Placeholder documentation for DescribeInputSecurityGroupResponse</p>
1532#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1533#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1534pub struct DescribeInputSecurityGroupResponse {
1535    /// <p>Unique ARN of Input Security Group</p>
1536    #[serde(rename = "Arn")]
1537    #[serde(skip_serializing_if = "Option::is_none")]
1538    pub arn: Option<String>,
1539    /// <p>The Id of the Input Security Group</p>
1540    #[serde(rename = "Id")]
1541    #[serde(skip_serializing_if = "Option::is_none")]
1542    pub id: Option<String>,
1543    /// <p>The list of inputs currently using this Input Security Group.</p>
1544    #[serde(rename = "Inputs")]
1545    #[serde(skip_serializing_if = "Option::is_none")]
1546    pub inputs: Option<Vec<String>>,
1547    /// <p>The current state of the Input Security Group.</p>
1548    #[serde(rename = "State")]
1549    #[serde(skip_serializing_if = "Option::is_none")]
1550    pub state: Option<String>,
1551    /// <p>A collection of key-value pairs.</p>
1552    #[serde(rename = "Tags")]
1553    #[serde(skip_serializing_if = "Option::is_none")]
1554    pub tags: Option<::std::collections::HashMap<String, String>>,
1555    /// <p>Whitelist rules and their sync status</p>
1556    #[serde(rename = "WhitelistRules")]
1557    #[serde(skip_serializing_if = "Option::is_none")]
1558    pub whitelist_rules: Option<Vec<InputWhitelistRule>>,
1559}
1560
1561/// <p>Placeholder documentation for DescribeMultiplexProgramRequest</p>
1562#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1563#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1564pub struct DescribeMultiplexProgramRequest {
1565    /// <p>The ID of the multiplex that the program belongs to.</p>
1566    #[serde(rename = "MultiplexId")]
1567    pub multiplex_id: String,
1568    /// <p>The name of the program.</p>
1569    #[serde(rename = "ProgramName")]
1570    pub program_name: String,
1571}
1572
1573/// <p>Placeholder documentation for DescribeMultiplexProgramResponse</p>
1574#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1575#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1576pub struct DescribeMultiplexProgramResponse {
1577    /// <p>The MediaLive channel associated with the program.</p>
1578    #[serde(rename = "ChannelId")]
1579    #[serde(skip_serializing_if = "Option::is_none")]
1580    pub channel_id: Option<String>,
1581    /// <p>The settings for this multiplex program.</p>
1582    #[serde(rename = "MultiplexProgramSettings")]
1583    #[serde(skip_serializing_if = "Option::is_none")]
1584    pub multiplex_program_settings: Option<MultiplexProgramSettings>,
1585    /// <p>The packet identifier map for this multiplex program.</p>
1586    #[serde(rename = "PacketIdentifiersMap")]
1587    #[serde(skip_serializing_if = "Option::is_none")]
1588    pub packet_identifiers_map: Option<MultiplexProgramPacketIdentifiersMap>,
1589    /// <p>The name of the multiplex program.</p>
1590    #[serde(rename = "ProgramName")]
1591    #[serde(skip_serializing_if = "Option::is_none")]
1592    pub program_name: Option<String>,
1593}
1594
1595/// <p>Placeholder documentation for DescribeMultiplexRequest</p>
1596#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1597#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1598pub struct DescribeMultiplexRequest {
1599    /// <p>The ID of the multiplex.</p>
1600    #[serde(rename = "MultiplexId")]
1601    pub multiplex_id: String,
1602}
1603
1604/// <p>Placeholder documentation for DescribeMultiplexResponse</p>
1605#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1606#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1607pub struct DescribeMultiplexResponse {
1608    /// <p>The unique arn of the multiplex.</p>
1609    #[serde(rename = "Arn")]
1610    #[serde(skip_serializing_if = "Option::is_none")]
1611    pub arn: Option<String>,
1612    /// <p>A list of availability zones for the multiplex.</p>
1613    #[serde(rename = "AvailabilityZones")]
1614    #[serde(skip_serializing_if = "Option::is_none")]
1615    pub availability_zones: Option<Vec<String>>,
1616    /// <p>A list of the multiplex output destinations.</p>
1617    #[serde(rename = "Destinations")]
1618    #[serde(skip_serializing_if = "Option::is_none")]
1619    pub destinations: Option<Vec<MultiplexOutputDestination>>,
1620    /// <p>The unique id of the multiplex.</p>
1621    #[serde(rename = "Id")]
1622    #[serde(skip_serializing_if = "Option::is_none")]
1623    pub id: Option<String>,
1624    /// <p>Configuration for a multiplex event.</p>
1625    #[serde(rename = "MultiplexSettings")]
1626    #[serde(skip_serializing_if = "Option::is_none")]
1627    pub multiplex_settings: Option<MultiplexSettings>,
1628    /// <p>The name of the multiplex.</p>
1629    #[serde(rename = "Name")]
1630    #[serde(skip_serializing_if = "Option::is_none")]
1631    pub name: Option<String>,
1632    /// <p>The number of currently healthy pipelines.</p>
1633    #[serde(rename = "PipelinesRunningCount")]
1634    #[serde(skip_serializing_if = "Option::is_none")]
1635    pub pipelines_running_count: Option<i64>,
1636    /// <p>The number of programs in the multiplex.</p>
1637    #[serde(rename = "ProgramCount")]
1638    #[serde(skip_serializing_if = "Option::is_none")]
1639    pub program_count: Option<i64>,
1640    /// <p>The current state of the multiplex.</p>
1641    #[serde(rename = "State")]
1642    #[serde(skip_serializing_if = "Option::is_none")]
1643    pub state: Option<String>,
1644    /// <p>A collection of key-value pairs.</p>
1645    #[serde(rename = "Tags")]
1646    #[serde(skip_serializing_if = "Option::is_none")]
1647    pub tags: Option<::std::collections::HashMap<String, String>>,
1648}
1649
1650/// <p>Placeholder documentation for DescribeOfferingRequest</p>
1651#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1652#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1653pub struct DescribeOfferingRequest {
1654    /// <p>Unique offering ID, e.g. &#39;87654321&#39;</p>
1655    #[serde(rename = "OfferingId")]
1656    pub offering_id: String,
1657}
1658
1659/// <p>Placeholder documentation for DescribeOfferingResponse</p>
1660#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1661#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1662pub struct DescribeOfferingResponse {
1663    /// <p>Unique offering ARN, e.g. &#39;arn:aws:medialive:us-west-2:123456789012:offering:87654321&#39;</p>
1664    #[serde(rename = "Arn")]
1665    #[serde(skip_serializing_if = "Option::is_none")]
1666    pub arn: Option<String>,
1667    /// <p>Currency code for usagePrice and fixedPrice in ISO-4217 format, e.g. &#39;USD&#39;</p>
1668    #[serde(rename = "CurrencyCode")]
1669    #[serde(skip_serializing_if = "Option::is_none")]
1670    pub currency_code: Option<String>,
1671    /// <p>Lease duration, e.g. &#39;12&#39;</p>
1672    #[serde(rename = "Duration")]
1673    #[serde(skip_serializing_if = "Option::is_none")]
1674    pub duration: Option<i64>,
1675    /// <p>Units for duration, e.g. &#39;MONTHS&#39;</p>
1676    #[serde(rename = "DurationUnits")]
1677    #[serde(skip_serializing_if = "Option::is_none")]
1678    pub duration_units: Option<String>,
1679    /// <p>One-time charge for each reserved resource, e.g. &#39;0.0&#39; for a NO_UPFRONT offering</p>
1680    #[serde(rename = "FixedPrice")]
1681    #[serde(skip_serializing_if = "Option::is_none")]
1682    pub fixed_price: Option<f64>,
1683    /// <p>Offering description, e.g. &#39;HD AVC output at 10-20 Mbps, 30 fps, and standard VQ in US West (Oregon)&#39;</p>
1684    #[serde(rename = "OfferingDescription")]
1685    #[serde(skip_serializing_if = "Option::is_none")]
1686    pub offering_description: Option<String>,
1687    /// <p>Unique offering ID, e.g. &#39;87654321&#39;</p>
1688    #[serde(rename = "OfferingId")]
1689    #[serde(skip_serializing_if = "Option::is_none")]
1690    pub offering_id: Option<String>,
1691    /// <p>Offering type, e.g. &#39;NO_UPFRONT&#39;</p>
1692    #[serde(rename = "OfferingType")]
1693    #[serde(skip_serializing_if = "Option::is_none")]
1694    pub offering_type: Option<String>,
1695    /// <p>AWS region, e.g. &#39;us-west-2&#39;</p>
1696    #[serde(rename = "Region")]
1697    #[serde(skip_serializing_if = "Option::is_none")]
1698    pub region: Option<String>,
1699    /// <p>Resource configuration details</p>
1700    #[serde(rename = "ResourceSpecification")]
1701    #[serde(skip_serializing_if = "Option::is_none")]
1702    pub resource_specification: Option<ReservationResourceSpecification>,
1703    /// <p>Recurring usage charge for each reserved resource, e.g. &#39;157.0&#39;</p>
1704    #[serde(rename = "UsagePrice")]
1705    #[serde(skip_serializing_if = "Option::is_none")]
1706    pub usage_price: Option<f64>,
1707}
1708
1709/// <p>Placeholder documentation for DescribeReservationRequest</p>
1710#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1711#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1712pub struct DescribeReservationRequest {
1713    /// <p>Unique reservation ID, e.g. &#39;1234567&#39;</p>
1714    #[serde(rename = "ReservationId")]
1715    pub reservation_id: String,
1716}
1717
1718/// <p>Placeholder documentation for DescribeReservationResponse</p>
1719#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1720#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1721pub struct DescribeReservationResponse {
1722    /// <p>Unique reservation ARN, e.g. &#39;arn:aws:medialive:us-west-2:123456789012:reservation:1234567&#39;</p>
1723    #[serde(rename = "Arn")]
1724    #[serde(skip_serializing_if = "Option::is_none")]
1725    pub arn: Option<String>,
1726    /// <p>Number of reserved resources</p>
1727    #[serde(rename = "Count")]
1728    #[serde(skip_serializing_if = "Option::is_none")]
1729    pub count: Option<i64>,
1730    /// <p>Currency code for usagePrice and fixedPrice in ISO-4217 format, e.g. &#39;USD&#39;</p>
1731    #[serde(rename = "CurrencyCode")]
1732    #[serde(skip_serializing_if = "Option::is_none")]
1733    pub currency_code: Option<String>,
1734    /// <p>Lease duration, e.g. &#39;12&#39;</p>
1735    #[serde(rename = "Duration")]
1736    #[serde(skip_serializing_if = "Option::is_none")]
1737    pub duration: Option<i64>,
1738    /// <p>Units for duration, e.g. &#39;MONTHS&#39;</p>
1739    #[serde(rename = "DurationUnits")]
1740    #[serde(skip_serializing_if = "Option::is_none")]
1741    pub duration_units: Option<String>,
1742    /// <p>Reservation UTC end date and time in ISO-8601 format, e.g. &#39;2019-03-01T00:00:00&#39;</p>
1743    #[serde(rename = "End")]
1744    #[serde(skip_serializing_if = "Option::is_none")]
1745    pub end: Option<String>,
1746    /// <p>One-time charge for each reserved resource, e.g. &#39;0.0&#39; for a NO_UPFRONT offering</p>
1747    #[serde(rename = "FixedPrice")]
1748    #[serde(skip_serializing_if = "Option::is_none")]
1749    pub fixed_price: Option<f64>,
1750    /// <p>User specified reservation name</p>
1751    #[serde(rename = "Name")]
1752    #[serde(skip_serializing_if = "Option::is_none")]
1753    pub name: Option<String>,
1754    /// <p>Offering description, e.g. &#39;HD AVC output at 10-20 Mbps, 30 fps, and standard VQ in US West (Oregon)&#39;</p>
1755    #[serde(rename = "OfferingDescription")]
1756    #[serde(skip_serializing_if = "Option::is_none")]
1757    pub offering_description: Option<String>,
1758    /// <p>Unique offering ID, e.g. &#39;87654321&#39;</p>
1759    #[serde(rename = "OfferingId")]
1760    #[serde(skip_serializing_if = "Option::is_none")]
1761    pub offering_id: Option<String>,
1762    /// <p>Offering type, e.g. &#39;NO_UPFRONT&#39;</p>
1763    #[serde(rename = "OfferingType")]
1764    #[serde(skip_serializing_if = "Option::is_none")]
1765    pub offering_type: Option<String>,
1766    /// <p>AWS region, e.g. &#39;us-west-2&#39;</p>
1767    #[serde(rename = "Region")]
1768    #[serde(skip_serializing_if = "Option::is_none")]
1769    pub region: Option<String>,
1770    /// <p>Unique reservation ID, e.g. &#39;1234567&#39;</p>
1771    #[serde(rename = "ReservationId")]
1772    #[serde(skip_serializing_if = "Option::is_none")]
1773    pub reservation_id: Option<String>,
1774    /// <p>Resource configuration details</p>
1775    #[serde(rename = "ResourceSpecification")]
1776    #[serde(skip_serializing_if = "Option::is_none")]
1777    pub resource_specification: Option<ReservationResourceSpecification>,
1778    /// <p>Reservation UTC start date and time in ISO-8601 format, e.g. &#39;2018-03-01T00:00:00&#39;</p>
1779    #[serde(rename = "Start")]
1780    #[serde(skip_serializing_if = "Option::is_none")]
1781    pub start: Option<String>,
1782    /// <p>Current state of reservation, e.g. &#39;ACTIVE&#39;</p>
1783    #[serde(rename = "State")]
1784    #[serde(skip_serializing_if = "Option::is_none")]
1785    pub state: Option<String>,
1786    /// <p>A collection of key-value pairs</p>
1787    #[serde(rename = "Tags")]
1788    #[serde(skip_serializing_if = "Option::is_none")]
1789    pub tags: Option<::std::collections::HashMap<String, String>>,
1790    /// <p>Recurring usage charge for each reserved resource, e.g. &#39;157.0&#39;</p>
1791    #[serde(rename = "UsagePrice")]
1792    #[serde(skip_serializing_if = "Option::is_none")]
1793    pub usage_price: Option<f64>,
1794}
1795
1796/// <p>Placeholder documentation for DescribeScheduleRequest</p>
1797#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1798#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1799pub struct DescribeScheduleRequest {
1800    /// <p>Id of the channel whose schedule is being updated.</p>
1801    #[serde(rename = "ChannelId")]
1802    pub channel_id: String,
1803    #[serde(rename = "MaxResults")]
1804    #[serde(skip_serializing_if = "Option::is_none")]
1805    pub max_results: Option<i64>,
1806    #[serde(rename = "NextToken")]
1807    #[serde(skip_serializing_if = "Option::is_none")]
1808    pub next_token: Option<String>,
1809}
1810
1811/// <p>Placeholder documentation for DescribeScheduleResponse</p>
1812#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1813#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1814pub struct DescribeScheduleResponse {
1815    /// <p>The next token; for use in pagination.</p>
1816    #[serde(rename = "NextToken")]
1817    #[serde(skip_serializing_if = "Option::is_none")]
1818    pub next_token: Option<String>,
1819    /// <p>The list of actions in the schedule.</p>
1820    #[serde(rename = "ScheduleActions")]
1821    #[serde(skip_serializing_if = "Option::is_none")]
1822    pub schedule_actions: Option<Vec<ScheduleAction>>,
1823}
1824
1825/// <p>DVB Network Information Table (NIT)</p>
1826#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1827pub struct DvbNitSettings {
1828    /// <p>The numeric value placed in the Network Information Table (NIT).</p>
1829    #[serde(rename = "NetworkId")]
1830    pub network_id: i64,
1831    /// <p>The network name text placed in the networkNameDescriptor inside the Network Information Table. Maximum length is 256 characters.</p>
1832    #[serde(rename = "NetworkName")]
1833    pub network_name: String,
1834    /// <p>The number of milliseconds between instances of this table in the output transport stream.</p>
1835    #[serde(rename = "RepInterval")]
1836    #[serde(skip_serializing_if = "Option::is_none")]
1837    pub rep_interval: Option<i64>,
1838}
1839
1840/// <p>DVB Service Description Table (SDT)</p>
1841#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1842pub struct DvbSdtSettings {
1843    /// <p>Selects method of inserting SDT information into output stream. The sdtFollow setting copies SDT information from input stream to output stream. The sdtFollowIfPresent setting copies SDT information from input stream to output stream if SDT information is present in the input, otherwise it will fall back on the user-defined values. The sdtManual setting means user will enter the SDT information. The sdtNone setting means output stream will not contain SDT information.</p>
1844    #[serde(rename = "OutputSdt")]
1845    #[serde(skip_serializing_if = "Option::is_none")]
1846    pub output_sdt: Option<String>,
1847    /// <p>The number of milliseconds between instances of this table in the output transport stream.</p>
1848    #[serde(rename = "RepInterval")]
1849    #[serde(skip_serializing_if = "Option::is_none")]
1850    pub rep_interval: Option<i64>,
1851    /// <p>The service name placed in the serviceDescriptor in the Service Description Table. Maximum length is 256 characters.</p>
1852    #[serde(rename = "ServiceName")]
1853    #[serde(skip_serializing_if = "Option::is_none")]
1854    pub service_name: Option<String>,
1855    /// <p>The service provider name placed in the serviceDescriptor in the Service Description Table. Maximum length is 256 characters.</p>
1856    #[serde(rename = "ServiceProviderName")]
1857    #[serde(skip_serializing_if = "Option::is_none")]
1858    pub service_provider_name: Option<String>,
1859}
1860
1861/// <p>Dvb Sub Destination Settings</p>
1862#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1863pub struct DvbSubDestinationSettings {
1864    /// <p>If no explicit xPosition or yPosition is provided, setting alignment to centered will place the captions at the bottom center of the output. Similarly, setting a left alignment will align captions to the bottom left of the output. If x and y positions are given in conjunction with the alignment parameter, the font will be justified (either left or centered) relative to those coordinates. Selecting &quot;smart&quot; justification will left-justify live subtitles and center-justify pre-recorded subtitles.  This option is not valid for source captions that are STL or 608/embedded.  These source settings are already pre-defined by the caption stream.  All burn-in and DVB-Sub font settings must match.</p>
1865    #[serde(rename = "Alignment")]
1866    #[serde(skip_serializing_if = "Option::is_none")]
1867    pub alignment: Option<String>,
1868    /// <p>Specifies the color of the rectangle behind the captions.  All burn-in and DVB-Sub font settings must match.</p>
1869    #[serde(rename = "BackgroundColor")]
1870    #[serde(skip_serializing_if = "Option::is_none")]
1871    pub background_color: Option<String>,
1872    /// <p>Specifies the opacity of the background rectangle. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent).  All burn-in and DVB-Sub font settings must match.</p>
1873    #[serde(rename = "BackgroundOpacity")]
1874    #[serde(skip_serializing_if = "Option::is_none")]
1875    pub background_opacity: Option<i64>,
1876    /// <p>External font file used for caption burn-in. File extension must be &#39;ttf&#39; or &#39;tte&#39;.  Although the user can select output fonts for many different types of input captions, embedded, STL and teletext sources use a strict grid system. Using external fonts with these caption sources could cause unexpected display of proportional fonts.  All burn-in and DVB-Sub font settings must match.</p>
1877    #[serde(rename = "Font")]
1878    #[serde(skip_serializing_if = "Option::is_none")]
1879    pub font: Option<InputLocation>,
1880    /// <p>Specifies the color of the burned-in captions.  This option is not valid for source captions that are STL, 608/embedded or teletext.  These source settings are already pre-defined by the caption stream.  All burn-in and DVB-Sub font settings must match.</p>
1881    #[serde(rename = "FontColor")]
1882    #[serde(skip_serializing_if = "Option::is_none")]
1883    pub font_color: Option<String>,
1884    /// <p>Specifies the opacity of the burned-in captions. 255 is opaque; 0 is transparent.  All burn-in and DVB-Sub font settings must match.</p>
1885    #[serde(rename = "FontOpacity")]
1886    #[serde(skip_serializing_if = "Option::is_none")]
1887    pub font_opacity: Option<i64>,
1888    /// <p>Font resolution in DPI (dots per inch); default is 96 dpi.  All burn-in and DVB-Sub font settings must match.</p>
1889    #[serde(rename = "FontResolution")]
1890    #[serde(skip_serializing_if = "Option::is_none")]
1891    pub font_resolution: Option<i64>,
1892    /// <p>When set to auto fontSize will scale depending on the size of the output.  Giving a positive integer will specify the exact font size in points.  All burn-in and DVB-Sub font settings must match.</p>
1893    #[serde(rename = "FontSize")]
1894    #[serde(skip_serializing_if = "Option::is_none")]
1895    pub font_size: Option<String>,
1896    /// <p>Specifies font outline color. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.</p>
1897    #[serde(rename = "OutlineColor")]
1898    #[serde(skip_serializing_if = "Option::is_none")]
1899    pub outline_color: Option<String>,
1900    /// <p>Specifies font outline size in pixels. This option is not valid for source captions that are either 608/embedded or teletext. These source settings are already pre-defined by the caption stream. All burn-in and DVB-Sub font settings must match.</p>
1901    #[serde(rename = "OutlineSize")]
1902    #[serde(skip_serializing_if = "Option::is_none")]
1903    pub outline_size: Option<i64>,
1904    /// <p>Specifies the color of the shadow cast by the captions.  All burn-in and DVB-Sub font settings must match.</p>
1905    #[serde(rename = "ShadowColor")]
1906    #[serde(skip_serializing_if = "Option::is_none")]
1907    pub shadow_color: Option<String>,
1908    /// <p>Specifies the opacity of the shadow. 255 is opaque; 0 is transparent. Leaving this parameter blank is equivalent to setting it to 0 (transparent).  All burn-in and DVB-Sub font settings must match.</p>
1909    #[serde(rename = "ShadowOpacity")]
1910    #[serde(skip_serializing_if = "Option::is_none")]
1911    pub shadow_opacity: Option<i64>,
1912    /// <p>Specifies the horizontal offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels to the left.  All burn-in and DVB-Sub font settings must match.</p>
1913    #[serde(rename = "ShadowXOffset")]
1914    #[serde(skip_serializing_if = "Option::is_none")]
1915    pub shadow_x_offset: Option<i64>,
1916    /// <p>Specifies the vertical offset of the shadow relative to the captions in pixels. A value of -2 would result in a shadow offset 2 pixels above the text.  All burn-in and DVB-Sub font settings must match.</p>
1917    #[serde(rename = "ShadowYOffset")]
1918    #[serde(skip_serializing_if = "Option::is_none")]
1919    pub shadow_y_offset: Option<i64>,
1920    /// <p>Controls whether a fixed grid size will be used to generate the output subtitles bitmap. Only applicable for Teletext inputs and DVB-Sub/Burn-in outputs.</p>
1921    #[serde(rename = "TeletextGridControl")]
1922    #[serde(skip_serializing_if = "Option::is_none")]
1923    pub teletext_grid_control: Option<String>,
1924    /// <p>Specifies the horizontal position of the caption relative to the left side of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the left of the output. If no explicit xPosition is provided, the horizontal caption position will be determined by the alignment parameter.  This option is not valid for source captions that are STL, 608/embedded or teletext. These source settings are already pre-defined by the caption stream.  All burn-in and DVB-Sub font settings must match.</p>
1925    #[serde(rename = "XPosition")]
1926    #[serde(skip_serializing_if = "Option::is_none")]
1927    pub x_position: Option<i64>,
1928    /// <p>Specifies the vertical position of the caption relative to the top of the output in pixels. A value of 10 would result in the captions starting 10 pixels from the top of the output. If no explicit yPosition is provided, the caption will be positioned towards the bottom of the output.  This option is not valid for source captions that are STL, 608/embedded or teletext.  These source settings are already pre-defined by the caption stream.  All burn-in and DVB-Sub font settings must match.</p>
1929    #[serde(rename = "YPosition")]
1930    #[serde(skip_serializing_if = "Option::is_none")]
1931    pub y_position: Option<i64>,
1932}
1933
1934/// <p>Dvb Sub Source Settings</p>
1935#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1936pub struct DvbSubSourceSettings {
1937    /// <p>When using DVB-Sub with Burn-In or SMPTE-TT, use this PID for the source content. Unused for DVB-Sub passthrough. All DVB-Sub content is passed through, regardless of selectors.</p>
1938    #[serde(rename = "Pid")]
1939    #[serde(skip_serializing_if = "Option::is_none")]
1940    pub pid: Option<i64>,
1941}
1942
1943/// <p>DVB Time and Date Table (SDT)</p>
1944#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1945pub struct DvbTdtSettings {
1946    /// <p>The number of milliseconds between instances of this table in the output transport stream.</p>
1947    #[serde(rename = "RepInterval")]
1948    #[serde(skip_serializing_if = "Option::is_none")]
1949    pub rep_interval: Option<i64>,
1950}
1951
1952/// <p>Eac3 Settings</p>
1953#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1954pub struct Eac3Settings {
1955    /// <p>When set to attenuate3Db, applies a 3 dB attenuation to the surround channels. Only used for 3/2 coding mode.</p>
1956    #[serde(rename = "AttenuationControl")]
1957    #[serde(skip_serializing_if = "Option::is_none")]
1958    pub attenuation_control: Option<String>,
1959    /// <p>Average bitrate in bits/second. Valid bitrates depend on the coding mode.</p>
1960    #[serde(rename = "Bitrate")]
1961    #[serde(skip_serializing_if = "Option::is_none")]
1962    pub bitrate: Option<f64>,
1963    /// <p>Specifies the bitstream mode (bsmod) for the emitted E-AC-3 stream. See ATSC A/52-2012 (Annex E) for background on these values.</p>
1964    #[serde(rename = "BitstreamMode")]
1965    #[serde(skip_serializing_if = "Option::is_none")]
1966    pub bitstream_mode: Option<String>,
1967    /// <p>Dolby Digital Plus coding mode. Determines number of channels.</p>
1968    #[serde(rename = "CodingMode")]
1969    #[serde(skip_serializing_if = "Option::is_none")]
1970    pub coding_mode: Option<String>,
1971    /// <p>When set to enabled, activates a DC highpass filter for all input channels.</p>
1972    #[serde(rename = "DcFilter")]
1973    #[serde(skip_serializing_if = "Option::is_none")]
1974    pub dc_filter: Option<String>,
1975    /// <p>Sets the dialnorm for the output. If blank and input audio is Dolby Digital Plus, dialnorm will be passed through.</p>
1976    #[serde(rename = "Dialnorm")]
1977    #[serde(skip_serializing_if = "Option::is_none")]
1978    pub dialnorm: Option<i64>,
1979    /// <p>Sets the Dolby dynamic range compression profile.</p>
1980    #[serde(rename = "DrcLine")]
1981    #[serde(skip_serializing_if = "Option::is_none")]
1982    pub drc_line: Option<String>,
1983    /// <p>Sets the profile for heavy Dolby dynamic range compression, ensures that the instantaneous signal peaks do not exceed specified levels.</p>
1984    #[serde(rename = "DrcRf")]
1985    #[serde(skip_serializing_if = "Option::is_none")]
1986    pub drc_rf: Option<String>,
1987    /// <p>When encoding 3/2 audio, setting to lfe enables the LFE channel</p>
1988    #[serde(rename = "LfeControl")]
1989    #[serde(skip_serializing_if = "Option::is_none")]
1990    pub lfe_control: Option<String>,
1991    /// <p>When set to enabled, applies a 120Hz lowpass filter to the LFE channel prior to encoding. Only valid with codingMode32 coding mode.</p>
1992    #[serde(rename = "LfeFilter")]
1993    #[serde(skip_serializing_if = "Option::is_none")]
1994    pub lfe_filter: Option<String>,
1995    /// <p>Left only/Right only center mix level. Only used for 3/2 coding mode.</p>
1996    #[serde(rename = "LoRoCenterMixLevel")]
1997    #[serde(skip_serializing_if = "Option::is_none")]
1998    pub lo_ro_center_mix_level: Option<f64>,
1999    /// <p>Left only/Right only surround mix level. Only used for 3/2 coding mode.</p>
2000    #[serde(rename = "LoRoSurroundMixLevel")]
2001    #[serde(skip_serializing_if = "Option::is_none")]
2002    pub lo_ro_surround_mix_level: Option<f64>,
2003    /// <p>Left total/Right total center mix level. Only used for 3/2 coding mode.</p>
2004    #[serde(rename = "LtRtCenterMixLevel")]
2005    #[serde(skip_serializing_if = "Option::is_none")]
2006    pub lt_rt_center_mix_level: Option<f64>,
2007    /// <p>Left total/Right total surround mix level. Only used for 3/2 coding mode.</p>
2008    #[serde(rename = "LtRtSurroundMixLevel")]
2009    #[serde(skip_serializing_if = "Option::is_none")]
2010    pub lt_rt_surround_mix_level: Option<f64>,
2011    /// <p>When set to followInput, encoder metadata will be sourced from the DD, DD+, or DolbyE decoder that supplied this audio data. If audio was not supplied from one of these streams, then the static metadata settings will be used.</p>
2012    #[serde(rename = "MetadataControl")]
2013    #[serde(skip_serializing_if = "Option::is_none")]
2014    pub metadata_control: Option<String>,
2015    /// <p>When set to whenPossible, input DD+ audio will be passed through if it is present on the input. This detection is dynamic over the life of the transcode. Inputs that alternate between DD+ and non-DD+ content will have a consistent DD+ output as the system alternates between passthrough and encoding.</p>
2016    #[serde(rename = "PassthroughControl")]
2017    #[serde(skip_serializing_if = "Option::is_none")]
2018    pub passthrough_control: Option<String>,
2019    /// <p>When set to shift90Degrees, applies a 90-degree phase shift to the surround channels. Only used for 3/2 coding mode.</p>
2020    #[serde(rename = "PhaseControl")]
2021    #[serde(skip_serializing_if = "Option::is_none")]
2022    pub phase_control: Option<String>,
2023    /// <p>Stereo downmix preference. Only used for 3/2 coding mode.</p>
2024    #[serde(rename = "StereoDownmix")]
2025    #[serde(skip_serializing_if = "Option::is_none")]
2026    pub stereo_downmix: Option<String>,
2027    /// <p>When encoding 3/2 audio, sets whether an extra center back surround channel is matrix encoded into the left and right surround channels.</p>
2028    #[serde(rename = "SurroundExMode")]
2029    #[serde(skip_serializing_if = "Option::is_none")]
2030    pub surround_ex_mode: Option<String>,
2031    /// <p>When encoding 2/0 audio, sets whether Dolby Surround is matrix encoded into the two channels.</p>
2032    #[serde(rename = "SurroundMode")]
2033    #[serde(skip_serializing_if = "Option::is_none")]
2034    pub surround_mode: Option<String>,
2035}
2036
2037/// <p>Embedded Destination Settings</p>
2038#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2039pub struct EmbeddedDestinationSettings {}
2040
2041/// <p>Embedded Plus Scte20 Destination Settings</p>
2042#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2043pub struct EmbeddedPlusScte20DestinationSettings {}
2044
2045/// <p>Embedded Source Settings</p>
2046#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2047pub struct EmbeddedSourceSettings {
2048    /// <p>If upconvert, 608 data is both passed through via the &quot;608 compatibility bytes&quot; fields of the 708 wrapper as well as translated into 708. 708 data present in the source content will be discarded.</p>
2049    #[serde(rename = "Convert608To708")]
2050    #[serde(skip_serializing_if = "Option::is_none")]
2051    pub convert_608_to_708: Option<String>,
2052    /// <p>Set to &quot;auto&quot; to handle streams with intermittent and/or non-aligned SCTE-20 and Embedded captions.</p>
2053    #[serde(rename = "Scte20Detection")]
2054    #[serde(skip_serializing_if = "Option::is_none")]
2055    pub scte_20_detection: Option<String>,
2056    /// <p>Specifies the 608/708 channel number within the video track from which to extract captions. Unused for passthrough.</p>
2057    #[serde(rename = "Source608ChannelNumber")]
2058    #[serde(skip_serializing_if = "Option::is_none")]
2059    pub source_608_channel_number: Option<i64>,
2060    /// <p>This field is unused and deprecated.</p>
2061    #[serde(rename = "Source608TrackNumber")]
2062    #[serde(skip_serializing_if = "Option::is_none")]
2063    pub source_608_track_number: Option<i64>,
2064}
2065
2066/// <p>Encoder Settings</p>
2067#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2068pub struct EncoderSettings {
2069    #[serde(rename = "AudioDescriptions")]
2070    pub audio_descriptions: Vec<AudioDescription>,
2071    /// <p>Settings for ad avail blanking.</p>
2072    #[serde(rename = "AvailBlanking")]
2073    #[serde(skip_serializing_if = "Option::is_none")]
2074    pub avail_blanking: Option<AvailBlanking>,
2075    /// <p>Event-wide configuration settings for ad avail insertion.</p>
2076    #[serde(rename = "AvailConfiguration")]
2077    #[serde(skip_serializing_if = "Option::is_none")]
2078    pub avail_configuration: Option<AvailConfiguration>,
2079    /// <p>Settings for blackout slate.</p>
2080    #[serde(rename = "BlackoutSlate")]
2081    #[serde(skip_serializing_if = "Option::is_none")]
2082    pub blackout_slate: Option<BlackoutSlate>,
2083    /// <p>Settings for caption decriptions</p>
2084    #[serde(rename = "CaptionDescriptions")]
2085    #[serde(skip_serializing_if = "Option::is_none")]
2086    pub caption_descriptions: Option<Vec<CaptionDescription>>,
2087    /// <p>Feature Activations</p>
2088    #[serde(rename = "FeatureActivations")]
2089    #[serde(skip_serializing_if = "Option::is_none")]
2090    pub feature_activations: Option<FeatureActivations>,
2091    /// <p>Configuration settings that apply to the event as a whole.</p>
2092    #[serde(rename = "GlobalConfiguration")]
2093    #[serde(skip_serializing_if = "Option::is_none")]
2094    pub global_configuration: Option<GlobalConfiguration>,
2095    /// <p>Nielsen configuration settings.</p>
2096    #[serde(rename = "NielsenConfiguration")]
2097    #[serde(skip_serializing_if = "Option::is_none")]
2098    pub nielsen_configuration: Option<NielsenConfiguration>,
2099    #[serde(rename = "OutputGroups")]
2100    pub output_groups: Vec<OutputGroup>,
2101    /// <p>Contains settings used to acquire and adjust timecode information from inputs.</p>
2102    #[serde(rename = "TimecodeConfig")]
2103    pub timecode_config: TimecodeConfig,
2104    #[serde(rename = "VideoDescriptions")]
2105    pub video_descriptions: Vec<VideoDescription>,
2106}
2107
2108/// <p>Feature Activations</p>
2109#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2110pub struct FeatureActivations {
2111    /// <p>Enables the Input Prepare feature. You can create Input Prepare actions in the schedule only if this feature is enabled.
2112    /// If you disable the feature on an existing schedule, make sure that you first delete all input prepare actions from the schedule.</p>
2113    #[serde(rename = "InputPrepareScheduleActions")]
2114    #[serde(skip_serializing_if = "Option::is_none")]
2115    pub input_prepare_schedule_actions: Option<String>,
2116}
2117
2118/// <p>Fec Output Settings</p>
2119#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2120pub struct FecOutputSettings {
2121    /// <p>Parameter D from SMPTE 2022-1. The height of the FEC protection matrix.  The number of transport stream packets per column error correction packet. Must be between 4 and 20, inclusive.</p>
2122    #[serde(rename = "ColumnDepth")]
2123    #[serde(skip_serializing_if = "Option::is_none")]
2124    pub column_depth: Option<i64>,
2125    /// <p>Enables column only or column and row based FEC</p>
2126    #[serde(rename = "IncludeFec")]
2127    #[serde(skip_serializing_if = "Option::is_none")]
2128    pub include_fec: Option<String>,
2129    /// <p>Parameter L from SMPTE 2022-1. The width of the FEC protection matrix.  Must be between 1 and 20, inclusive. If only Column FEC is used, then larger values increase robustness.  If Row FEC is used, then this is the number of transport stream packets per row error correction packet, and the value must be between 4 and 20, inclusive, if includeFec is columnAndRow. If includeFec is column, this value must be 1 to 20, inclusive.</p>
2130    #[serde(rename = "RowLength")]
2131    #[serde(skip_serializing_if = "Option::is_none")]
2132    pub row_length: Option<i64>,
2133}
2134
2135/// <p>Start time for the action.</p>
2136#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2137pub struct FixedModeScheduleActionStartSettings {
2138    /// <p>Start time for the action to start in the channel. (Not the time for the action to be added to the schedule: actions are always added to the schedule immediately.) UTC format: yyyy-mm-ddThh:mm:ss.nnnZ. All the letters are digits (for example, mm might be 01) except for the two constants &quot;T&quot; for time and &quot;Z&quot; for &quot;UTC format&quot;.</p>
2139    #[serde(rename = "Time")]
2140    pub time: String,
2141}
2142
2143/// <p>Fmp4 Hls Settings</p>
2144#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2145pub struct Fmp4HlsSettings {
2146    /// <p>List all the audio groups that are used with the video output stream. Input all the audio GROUP-IDs that are associated to the video, separate by &#39;,&#39;.</p>
2147    #[serde(rename = "AudioRenditionSets")]
2148    #[serde(skip_serializing_if = "Option::is_none")]
2149    pub audio_rendition_sets: Option<String>,
2150    /// <p>If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an equivalent ID3 tag will be inserted in the output.</p>
2151    #[serde(rename = "NielsenId3Behavior")]
2152    #[serde(skip_serializing_if = "Option::is_none")]
2153    pub nielsen_id_3_behavior: Option<String>,
2154    /// <p>When set to passthrough, timed metadata is passed through from input to output.</p>
2155    #[serde(rename = "TimedMetadataBehavior")]
2156    #[serde(skip_serializing_if = "Option::is_none")]
2157    pub timed_metadata_behavior: Option<String>,
2158}
2159
2160/// <p>Settings to specify if an action follows another.</p>
2161#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2162pub struct FollowModeScheduleActionStartSettings {
2163    /// <p>Identifies whether this action starts relative to the start or relative to the end of the reference action.</p>
2164    #[serde(rename = "FollowPoint")]
2165    pub follow_point: String,
2166    /// <p>The action name of another action that this one refers to.</p>
2167    #[serde(rename = "ReferenceActionName")]
2168    pub reference_action_name: String,
2169}
2170
2171/// <p>Frame Capture Group Settings</p>
2172#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2173pub struct FrameCaptureGroupSettings {
2174    /// <p>The destination for the frame capture files. Either the URI for an Amazon S3 bucket and object, plus a file name prefix (for example, s3ssl://sportsDelivery/highlights/20180820/curling<em>) or the URI for a MediaStore container, plus a file name prefix (for example, mediastoressl://sportsDelivery/20180820/curling</em>). The final file names consist of the prefix from the destination field (for example, &quot;curling_&quot;) + name modifier + the counter (5 digits, starting from 00001) + extension (which is always .jpg).  For example, curlingLow.00001.jpg</p>
2175    #[serde(rename = "Destination")]
2176    pub destination: OutputLocationRef,
2177}
2178
2179/// <p>Frame Capture Output Settings</p>
2180#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2181pub struct FrameCaptureOutputSettings {
2182    /// <p>Required if the output group contains more than one output. This modifier forms part of the output file name.</p>
2183    #[serde(rename = "NameModifier")]
2184    #[serde(skip_serializing_if = "Option::is_none")]
2185    pub name_modifier: Option<String>,
2186}
2187
2188/// <p>Frame Capture Settings</p>
2189#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2190pub struct FrameCaptureSettings {
2191    /// <p>The frequency at which to capture frames for inclusion in the output. May be specified in either seconds or milliseconds, as specified by captureIntervalUnits.</p>
2192    #[serde(rename = "CaptureInterval")]
2193    pub capture_interval: i64,
2194    /// <p>Unit for the frame capture interval.</p>
2195    #[serde(rename = "CaptureIntervalUnits")]
2196    #[serde(skip_serializing_if = "Option::is_none")]
2197    pub capture_interval_units: Option<String>,
2198}
2199
2200/// <p>Global Configuration</p>
2201#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2202pub struct GlobalConfiguration {
2203    /// <p>Value to set the initial audio gain for the Live Event.</p>
2204    #[serde(rename = "InitialAudioGain")]
2205    #[serde(skip_serializing_if = "Option::is_none")]
2206    pub initial_audio_gain: Option<i64>,
2207    /// <p>Indicates the action to take when the current input completes (e.g. end-of-file). When switchAndLoopInputs is configured the encoder will restart at the beginning of the first input.  When &quot;none&quot; is configured the encoder will transcode either black, a solid color, or a user specified slate images per the &quot;Input Loss Behavior&quot; configuration until the next input switch occurs (which is controlled through the Channel Schedule API).</p>
2208    #[serde(rename = "InputEndAction")]
2209    #[serde(skip_serializing_if = "Option::is_none")]
2210    pub input_end_action: Option<String>,
2211    /// <p>Settings for system actions when input is lost.</p>
2212    #[serde(rename = "InputLossBehavior")]
2213    #[serde(skip_serializing_if = "Option::is_none")]
2214    pub input_loss_behavior: Option<InputLossBehavior>,
2215    /// <p>Indicates how MediaLive pipelines are synchronized.</p>
2216    ///
2217    /// <p>PIPELINE<em>LOCKING - MediaLive will attempt to synchronize the output of each pipeline to the other.
2218    /// EPOCH</em>LOCKING - MediaLive will attempt to synchronize the output of each pipeline to the Unix epoch.</p>
2219    #[serde(rename = "OutputLockingMode")]
2220    #[serde(skip_serializing_if = "Option::is_none")]
2221    pub output_locking_mode: Option<String>,
2222    /// <p>Indicates whether the rate of frames emitted by the Live encoder should be paced by its system clock (which optionally may be locked to another source via NTP) or should be locked to the clock of the source that is providing the input stream.</p>
2223    #[serde(rename = "OutputTimingSource")]
2224    #[serde(skip_serializing_if = "Option::is_none")]
2225    pub output_timing_source: Option<String>,
2226    /// <p>Adjusts video input buffer for streams with very low video framerates. This is commonly set to enabled for music channels with less than one video frame per second.</p>
2227    #[serde(rename = "SupportLowFramerateInputs")]
2228    #[serde(skip_serializing_if = "Option::is_none")]
2229    pub support_low_framerate_inputs: Option<String>,
2230}
2231
2232/// <p>H264 Color Space Settings</p>
2233#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2234pub struct H264ColorSpaceSettings {
2235    #[serde(rename = "ColorSpacePassthroughSettings")]
2236    #[serde(skip_serializing_if = "Option::is_none")]
2237    pub color_space_passthrough_settings: Option<ColorSpacePassthroughSettings>,
2238    #[serde(rename = "Rec601Settings")]
2239    #[serde(skip_serializing_if = "Option::is_none")]
2240    pub rec_601_settings: Option<Rec601Settings>,
2241    #[serde(rename = "Rec709Settings")]
2242    #[serde(skip_serializing_if = "Option::is_none")]
2243    pub rec_709_settings: Option<Rec709Settings>,
2244}
2245
2246/// <p>H264 Filter Settings</p>
2247#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2248pub struct H264FilterSettings {
2249    #[serde(rename = "TemporalFilterSettings")]
2250    #[serde(skip_serializing_if = "Option::is_none")]
2251    pub temporal_filter_settings: Option<TemporalFilterSettings>,
2252}
2253
2254/// <p>H264 Settings</p>
2255#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2256pub struct H264Settings {
2257    /// <p>Adaptive quantization. Allows intra-frame quantizers to vary to improve visual quality.</p>
2258    #[serde(rename = "AdaptiveQuantization")]
2259    #[serde(skip_serializing_if = "Option::is_none")]
2260    pub adaptive_quantization: Option<String>,
2261    /// <p>Indicates that AFD values will be written into the output stream.  If afdSignaling is &quot;auto&quot;, the system will try to preserve the input AFD value (in cases where multiple AFD values are valid). If set to &quot;fixed&quot;, the AFD value will be the value configured in the fixedAfd parameter.</p>
2262    #[serde(rename = "AfdSignaling")]
2263    #[serde(skip_serializing_if = "Option::is_none")]
2264    pub afd_signaling: Option<String>,
2265    /// <p>Average bitrate in bits/second. Required when the rate control mode is VBR or CBR. Not used for QVBR. In an MS Smooth output group, each output must have a unique value when its bitrate is rounded down to the nearest multiple of 1000.</p>
2266    #[serde(rename = "Bitrate")]
2267    #[serde(skip_serializing_if = "Option::is_none")]
2268    pub bitrate: Option<i64>,
2269    /// <p>Percentage of the buffer that should initially be filled (HRD buffer model).</p>
2270    #[serde(rename = "BufFillPct")]
2271    #[serde(skip_serializing_if = "Option::is_none")]
2272    pub buf_fill_pct: Option<i64>,
2273    /// <p>Size of buffer (HRD buffer model) in bits.</p>
2274    #[serde(rename = "BufSize")]
2275    #[serde(skip_serializing_if = "Option::is_none")]
2276    pub buf_size: Option<i64>,
2277    /// <p>Includes colorspace metadata in the output.</p>
2278    #[serde(rename = "ColorMetadata")]
2279    #[serde(skip_serializing_if = "Option::is_none")]
2280    pub color_metadata: Option<String>,
2281    /// <p>Color Space settings</p>
2282    #[serde(rename = "ColorSpaceSettings")]
2283    #[serde(skip_serializing_if = "Option::is_none")]
2284    pub color_space_settings: Option<H264ColorSpaceSettings>,
2285    /// <p>Entropy encoding mode.  Use cabac (must be in Main or High profile) or cavlc.</p>
2286    #[serde(rename = "EntropyEncoding")]
2287    #[serde(skip_serializing_if = "Option::is_none")]
2288    pub entropy_encoding: Option<String>,
2289    /// <p>Optional filters that you can apply to an encode.</p>
2290    #[serde(rename = "FilterSettings")]
2291    #[serde(skip_serializing_if = "Option::is_none")]
2292    pub filter_settings: Option<H264FilterSettings>,
2293    /// <p>Four bit AFD value to write on all frames of video in the output stream. Only valid when afdSignaling is set to &#39;Fixed&#39;.</p>
2294    #[serde(rename = "FixedAfd")]
2295    #[serde(skip_serializing_if = "Option::is_none")]
2296    pub fixed_afd: Option<String>,
2297    /// <p>If set to enabled, adjust quantization within each frame to reduce flicker or &#39;pop&#39; on I-frames.</p>
2298    #[serde(rename = "FlickerAq")]
2299    #[serde(skip_serializing_if = "Option::is_none")]
2300    pub flicker_aq: Option<String>,
2301    /// <p>This setting applies only when scan type is &quot;interlaced.&quot; It controls whether coding is performed on a field basis or on a frame basis. (When the video is progressive, the coding is always performed on a frame basis.)
2302    /// enabled: Force MediaLive to code on a field basis, so that odd and even sets of fields are coded separately.
2303    /// disabled: Code the two sets of fields separately (on a field basis) or together (on a frame basis using PAFF), depending on what is most appropriate for the content.</p>
2304    #[serde(rename = "ForceFieldPictures")]
2305    #[serde(skip_serializing_if = "Option::is_none")]
2306    pub force_field_pictures: Option<String>,
2307    /// <p>This field indicates how the output video frame rate is specified.  If &quot;specified&quot; is selected then the output video frame rate is determined by framerateNumerator and framerateDenominator, else if &quot;initializeFromSource&quot; is selected then the output video frame rate will be set equal to the input video frame rate of the first input.</p>
2308    #[serde(rename = "FramerateControl")]
2309    #[serde(skip_serializing_if = "Option::is_none")]
2310    pub framerate_control: Option<String>,
2311    /// <p>Framerate denominator.</p>
2312    #[serde(rename = "FramerateDenominator")]
2313    #[serde(skip_serializing_if = "Option::is_none")]
2314    pub framerate_denominator: Option<i64>,
2315    /// <p>Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.</p>
2316    #[serde(rename = "FramerateNumerator")]
2317    #[serde(skip_serializing_if = "Option::is_none")]
2318    pub framerate_numerator: Option<i64>,
2319    /// <p>Documentation update needed</p>
2320    #[serde(rename = "GopBReference")]
2321    #[serde(skip_serializing_if = "Option::is_none")]
2322    pub gop_b_reference: Option<String>,
2323    /// <p>Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.</p>
2324    #[serde(rename = "GopClosedCadence")]
2325    #[serde(skip_serializing_if = "Option::is_none")]
2326    pub gop_closed_cadence: Option<i64>,
2327    /// <p>Number of B-frames between reference frames.</p>
2328    #[serde(rename = "GopNumBFrames")]
2329    #[serde(skip_serializing_if = "Option::is_none")]
2330    pub gop_num_b_frames: Option<i64>,
2331    /// <p>GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits.
2332    /// If gopSizeUnits is frames, gopSize must be an integer and must be greater than or equal to 1.
2333    /// If gopSizeUnits is seconds, gopSize must be greater than 0, but need not be an integer.</p>
2334    #[serde(rename = "GopSize")]
2335    #[serde(skip_serializing_if = "Option::is_none")]
2336    pub gop_size: Option<f64>,
2337    /// <p>Indicates if the gopSize is specified in frames or seconds. If seconds the system will convert the gopSize into a frame count at run time.</p>
2338    #[serde(rename = "GopSizeUnits")]
2339    #[serde(skip_serializing_if = "Option::is_none")]
2340    pub gop_size_units: Option<String>,
2341    /// <p>H.264 Level.</p>
2342    #[serde(rename = "Level")]
2343    #[serde(skip_serializing_if = "Option::is_none")]
2344    pub level: Option<String>,
2345    /// <p>Amount of lookahead. A value of low can decrease latency and memory usage, while high can produce better quality for certain content.</p>
2346    #[serde(rename = "LookAheadRateControl")]
2347    #[serde(skip_serializing_if = "Option::is_none")]
2348    pub look_ahead_rate_control: Option<String>,
2349    /// <p>For QVBR: See the tooltip for Quality level</p>
2350    ///
2351    /// <p>For VBR: Set the maximum bitrate in order to accommodate expected spikes in the complexity of the video.</p>
2352    #[serde(rename = "MaxBitrate")]
2353    #[serde(skip_serializing_if = "Option::is_none")]
2354    pub max_bitrate: Option<i64>,
2355    /// <p>Only meaningful if sceneChangeDetect is set to enabled.  Defaults to 5 if multiplex rate control is used.  Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1</p>
2356    #[serde(rename = "MinIInterval")]
2357    #[serde(skip_serializing_if = "Option::is_none")]
2358    pub min_i_interval: Option<i64>,
2359    /// <p>Number of reference frames to use. The encoder may use more than requested if using B-frames and/or interlaced encoding.</p>
2360    #[serde(rename = "NumRefFrames")]
2361    #[serde(skip_serializing_if = "Option::is_none")]
2362    pub num_ref_frames: Option<i64>,
2363    /// <p>This field indicates how the output pixel aspect ratio is specified.  If &quot;specified&quot; is selected then the output video pixel aspect ratio is determined by parNumerator and parDenominator, else if &quot;initializeFromSource&quot; is selected then the output pixsel aspect ratio will be set equal to the input video pixel aspect ratio of the first input.</p>
2364    #[serde(rename = "ParControl")]
2365    #[serde(skip_serializing_if = "Option::is_none")]
2366    pub par_control: Option<String>,
2367    /// <p>Pixel Aspect Ratio denominator.</p>
2368    #[serde(rename = "ParDenominator")]
2369    #[serde(skip_serializing_if = "Option::is_none")]
2370    pub par_denominator: Option<i64>,
2371    /// <p>Pixel Aspect Ratio numerator.</p>
2372    #[serde(rename = "ParNumerator")]
2373    #[serde(skip_serializing_if = "Option::is_none")]
2374    pub par_numerator: Option<i64>,
2375    /// <p>H.264 Profile.</p>
2376    #[serde(rename = "Profile")]
2377    #[serde(skip_serializing_if = "Option::is_none")]
2378    pub profile: Option<String>,
2379    /// <p>Leave as STANDARD<em>QUALITY or choose a different value (which might result in additional costs to run the channel).
2380    /// - ENHANCED</em>QUALITY: Produces a slightly better video quality without an increase in the bitrate. Has an effect only when the Rate control mode is QVBR or CBR. If this channel is in a MediaLive multiplex, the value must be ENHANCED<em>QUALITY.
2381    /// - STANDARD</em>QUALITY: Valid for any Rate control mode.</p>
2382    #[serde(rename = "QualityLevel")]
2383    #[serde(skip_serializing_if = "Option::is_none")]
2384    pub quality_level: Option<String>,
2385    /// <p>Controls the target quality for the video encode. Applies only when the rate control mode is QVBR. Set values for the QVBR quality level field and Max bitrate field that suit your most important viewing devices. Recommended values are:
2386    /// - Primary screen: Quality level: 8 to 10. Max bitrate: 4M
2387    /// - PC or tablet: Quality level: 7. Max bitrate: 1.5M to 3M
2388    /// - Smartphone: Quality level: 6. Max bitrate: 1M to 1.5M</p>
2389    #[serde(rename = "QvbrQualityLevel")]
2390    #[serde(skip_serializing_if = "Option::is_none")]
2391    pub qvbr_quality_level: Option<i64>,
2392    /// <p>Rate control mode.</p>
2393    ///
2394    /// <p>QVBR: Quality will match the specified quality level except when it is constrained by the
2395    /// maximum bitrate.  Recommended if you or your viewers pay for bandwidth.</p>
2396    ///
2397    /// <p>VBR: Quality and bitrate vary, depending on the video complexity. Recommended instead of QVBR
2398    /// if you want to maintain a specific average bitrate over the duration of the channel.</p>
2399    ///
2400    /// <p>CBR: Quality varies, depending on the video complexity. Recommended only if you distribute
2401    /// your assets to devices that cannot handle variable bitrates.</p>
2402    ///
2403    /// <p>Multiplex: This rate control mode is only supported (and is required) when the video is being
2404    /// delivered to a MediaLive Multiplex in which case the rate control configuration is controlled
2405    /// by the properties within the Multiplex Program.</p>
2406    #[serde(rename = "RateControlMode")]
2407    #[serde(skip_serializing_if = "Option::is_none")]
2408    pub rate_control_mode: Option<String>,
2409    /// <p>Sets the scan type of the output to progressive or top-field-first interlaced.</p>
2410    #[serde(rename = "ScanType")]
2411    #[serde(skip_serializing_if = "Option::is_none")]
2412    pub scan_type: Option<String>,
2413    /// <p>Scene change detection.</p>
2414    ///
2415    /// <ul>
2416    /// <li>On: inserts I-frames when scene change is detected.</li>
2417    /// <li>Off: does not force an I-frame when scene change is detected.</li>
2418    /// </ul>
2419    #[serde(rename = "SceneChangeDetect")]
2420    #[serde(skip_serializing_if = "Option::is_none")]
2421    pub scene_change_detect: Option<String>,
2422    /// <p>Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures.
2423    /// This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution.</p>
2424    #[serde(rename = "Slices")]
2425    #[serde(skip_serializing_if = "Option::is_none")]
2426    pub slices: Option<i64>,
2427    /// <p>Softness. Selects quantizer matrix, larger values reduce high-frequency content in the encoded image.</p>
2428    #[serde(rename = "Softness")]
2429    #[serde(skip_serializing_if = "Option::is_none")]
2430    pub softness: Option<i64>,
2431    /// <p>If set to enabled, adjust quantization within each frame based on spatial variation of content complexity.</p>
2432    #[serde(rename = "SpatialAq")]
2433    #[serde(skip_serializing_if = "Option::is_none")]
2434    pub spatial_aq: Option<String>,
2435    /// <p>If set to fixed, use gopNumBFrames B-frames per sub-GOP. If set to dynamic, optimize the number of B-frames used for each sub-GOP to improve visual quality.</p>
2436    #[serde(rename = "SubgopLength")]
2437    #[serde(skip_serializing_if = "Option::is_none")]
2438    pub subgop_length: Option<String>,
2439    /// <p>Produces a bitstream compliant with SMPTE RP-2027.</p>
2440    #[serde(rename = "Syntax")]
2441    #[serde(skip_serializing_if = "Option::is_none")]
2442    pub syntax: Option<String>,
2443    /// <p>If set to enabled, adjust quantization within each frame based on temporal variation of content complexity.</p>
2444    #[serde(rename = "TemporalAq")]
2445    #[serde(skip_serializing_if = "Option::is_none")]
2446    pub temporal_aq: Option<String>,
2447    /// <p>Determines how timecodes should be inserted into the video elementary stream.
2448    /// - &#39;disabled&#39;: Do not include timecodes
2449    /// - &#39;picTimingSei&#39;: Pass through picture timing SEI messages from the source specified in Timecode Config</p>
2450    #[serde(rename = "TimecodeInsertion")]
2451    #[serde(skip_serializing_if = "Option::is_none")]
2452    pub timecode_insertion: Option<String>,
2453}
2454
2455/// <p>H265 Color Space Settings</p>
2456#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2457pub struct H265ColorSpaceSettings {
2458    #[serde(rename = "ColorSpacePassthroughSettings")]
2459    #[serde(skip_serializing_if = "Option::is_none")]
2460    pub color_space_passthrough_settings: Option<ColorSpacePassthroughSettings>,
2461    #[serde(rename = "Hdr10Settings")]
2462    #[serde(skip_serializing_if = "Option::is_none")]
2463    pub hdr_10_settings: Option<Hdr10Settings>,
2464    #[serde(rename = "Rec601Settings")]
2465    #[serde(skip_serializing_if = "Option::is_none")]
2466    pub rec_601_settings: Option<Rec601Settings>,
2467    #[serde(rename = "Rec709Settings")]
2468    #[serde(skip_serializing_if = "Option::is_none")]
2469    pub rec_709_settings: Option<Rec709Settings>,
2470}
2471
2472/// <p>H265 Settings</p>
2473#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2474pub struct H265Settings {
2475    /// <p>Adaptive quantization. Allows intra-frame quantizers to vary to improve visual quality.</p>
2476    #[serde(rename = "AdaptiveQuantization")]
2477    #[serde(skip_serializing_if = "Option::is_none")]
2478    pub adaptive_quantization: Option<String>,
2479    /// <p>Indicates that AFD values will be written into the output stream.  If afdSignaling is &quot;auto&quot;, the system will try to preserve the input AFD value (in cases where multiple AFD values are valid). If set to &quot;fixed&quot;, the AFD value will be the value configured in the fixedAfd parameter.</p>
2480    #[serde(rename = "AfdSignaling")]
2481    #[serde(skip_serializing_if = "Option::is_none")]
2482    pub afd_signaling: Option<String>,
2483    /// <p>Whether or not EML should insert an Alternative Transfer Function SEI message to support backwards compatibility with non-HDR decoders and displays.</p>
2484    #[serde(rename = "AlternativeTransferFunction")]
2485    #[serde(skip_serializing_if = "Option::is_none")]
2486    pub alternative_transfer_function: Option<String>,
2487    /// <p>Average bitrate in bits/second. Required when the rate control mode is VBR or CBR. Not used for QVBR. In an MS Smooth output group, each output must have a unique value when its bitrate is rounded down to the nearest multiple of 1000.</p>
2488    #[serde(rename = "Bitrate")]
2489    #[serde(skip_serializing_if = "Option::is_none")]
2490    pub bitrate: Option<i64>,
2491    /// <p>Size of buffer (HRD buffer model) in bits.</p>
2492    #[serde(rename = "BufSize")]
2493    #[serde(skip_serializing_if = "Option::is_none")]
2494    pub buf_size: Option<i64>,
2495    /// <p>Includes colorspace metadata in the output.</p>
2496    #[serde(rename = "ColorMetadata")]
2497    #[serde(skip_serializing_if = "Option::is_none")]
2498    pub color_metadata: Option<String>,
2499    /// <p>Color Space settings</p>
2500    #[serde(rename = "ColorSpaceSettings")]
2501    #[serde(skip_serializing_if = "Option::is_none")]
2502    pub color_space_settings: Option<H265ColorSpaceSettings>,
2503    /// <p>Four bit AFD value to write on all frames of video in the output stream. Only valid when afdSignaling is set to &#39;Fixed&#39;.</p>
2504    #[serde(rename = "FixedAfd")]
2505    #[serde(skip_serializing_if = "Option::is_none")]
2506    pub fixed_afd: Option<String>,
2507    /// <p>If set to enabled, adjust quantization within each frame to reduce flicker or &#39;pop&#39; on I-frames.</p>
2508    #[serde(rename = "FlickerAq")]
2509    #[serde(skip_serializing_if = "Option::is_none")]
2510    pub flicker_aq: Option<String>,
2511    /// <p>Framerate denominator.</p>
2512    #[serde(rename = "FramerateDenominator")]
2513    pub framerate_denominator: i64,
2514    /// <p>Framerate numerator - framerate is a fraction, e.g. 24000 / 1001 = 23.976 fps.</p>
2515    #[serde(rename = "FramerateNumerator")]
2516    pub framerate_numerator: i64,
2517    /// <p>Frequency of closed GOPs. In streaming applications, it is recommended that this be set to 1 so a decoder joining mid-stream will receive an IDR frame as quickly as possible. Setting this value to 0 will break output segmenting.</p>
2518    #[serde(rename = "GopClosedCadence")]
2519    #[serde(skip_serializing_if = "Option::is_none")]
2520    pub gop_closed_cadence: Option<i64>,
2521    /// <p>GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits.
2522    /// If gopSizeUnits is frames, gopSize must be an integer and must be greater than or equal to 1.
2523    /// If gopSizeUnits is seconds, gopSize must be greater than 0, but need not be an integer.</p>
2524    #[serde(rename = "GopSize")]
2525    #[serde(skip_serializing_if = "Option::is_none")]
2526    pub gop_size: Option<f64>,
2527    /// <p>Indicates if the gopSize is specified in frames or seconds. If seconds the system will convert the gopSize into a frame count at run time.</p>
2528    #[serde(rename = "GopSizeUnits")]
2529    #[serde(skip_serializing_if = "Option::is_none")]
2530    pub gop_size_units: Option<String>,
2531    /// <p>H.265 Level.</p>
2532    #[serde(rename = "Level")]
2533    #[serde(skip_serializing_if = "Option::is_none")]
2534    pub level: Option<String>,
2535    /// <p>Amount of lookahead. A value of low can decrease latency and memory usage, while high can produce better quality for certain content.</p>
2536    #[serde(rename = "LookAheadRateControl")]
2537    #[serde(skip_serializing_if = "Option::is_none")]
2538    pub look_ahead_rate_control: Option<String>,
2539    /// <p>For QVBR: See the tooltip for Quality level</p>
2540    #[serde(rename = "MaxBitrate")]
2541    #[serde(skip_serializing_if = "Option::is_none")]
2542    pub max_bitrate: Option<i64>,
2543    /// <p>Only meaningful if sceneChangeDetect is set to enabled.  Defaults to 5 if multiplex rate control is used.  Enforces separation between repeated (cadence) I-frames and I-frames inserted by Scene Change Detection. If a scene change I-frame is within I-interval frames of a cadence I-frame, the GOP is shrunk and/or stretched to the scene change I-frame. GOP stretch requires enabling lookahead as well as setting I-interval. The normal cadence resumes for the next GOP. Note: Maximum GOP stretch = GOP size + Min-I-interval - 1</p>
2544    #[serde(rename = "MinIInterval")]
2545    #[serde(skip_serializing_if = "Option::is_none")]
2546    pub min_i_interval: Option<i64>,
2547    /// <p>Pixel Aspect Ratio denominator.</p>
2548    #[serde(rename = "ParDenominator")]
2549    #[serde(skip_serializing_if = "Option::is_none")]
2550    pub par_denominator: Option<i64>,
2551    /// <p>Pixel Aspect Ratio numerator.</p>
2552    #[serde(rename = "ParNumerator")]
2553    #[serde(skip_serializing_if = "Option::is_none")]
2554    pub par_numerator: Option<i64>,
2555    /// <p>H.265 Profile.</p>
2556    #[serde(rename = "Profile")]
2557    #[serde(skip_serializing_if = "Option::is_none")]
2558    pub profile: Option<String>,
2559    /// <p>Controls the target quality for the video encode. Applies only when the rate control mode is QVBR. Set values for the QVBR quality level field and Max bitrate field that suit your most important viewing devices. Recommended values are:
2560    /// - Primary screen: Quality level: 8 to 10. Max bitrate: 4M
2561    /// - PC or tablet: Quality level: 7. Max bitrate: 1.5M to 3M
2562    /// - Smartphone: Quality level: 6. Max bitrate: 1M to 1.5M</p>
2563    #[serde(rename = "QvbrQualityLevel")]
2564    #[serde(skip_serializing_if = "Option::is_none")]
2565    pub qvbr_quality_level: Option<i64>,
2566    /// <p>Rate control mode.</p>
2567    ///
2568    /// <p>QVBR: Quality will match the specified quality level except when it is constrained by the
2569    /// maximum bitrate.  Recommended if you or your viewers pay for bandwidth.</p>
2570    ///
2571    /// <p>CBR: Quality varies, depending on the video complexity. Recommended only if you distribute
2572    /// your assets to devices that cannot handle variable bitrates.</p>
2573    #[serde(rename = "RateControlMode")]
2574    #[serde(skip_serializing_if = "Option::is_none")]
2575    pub rate_control_mode: Option<String>,
2576    /// <p>Sets the scan type of the output to progressive or top-field-first interlaced.</p>
2577    #[serde(rename = "ScanType")]
2578    #[serde(skip_serializing_if = "Option::is_none")]
2579    pub scan_type: Option<String>,
2580    /// <p>Scene change detection.</p>
2581    #[serde(rename = "SceneChangeDetect")]
2582    #[serde(skip_serializing_if = "Option::is_none")]
2583    pub scene_change_detect: Option<String>,
2584    /// <p>Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures.
2585    /// This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution.</p>
2586    #[serde(rename = "Slices")]
2587    #[serde(skip_serializing_if = "Option::is_none")]
2588    pub slices: Option<i64>,
2589    /// <p>H.265 Tier.</p>
2590    #[serde(rename = "Tier")]
2591    #[serde(skip_serializing_if = "Option::is_none")]
2592    pub tier: Option<String>,
2593    /// <p>Determines how timecodes should be inserted into the video elementary stream.
2594    /// - &#39;disabled&#39;: Do not include timecodes
2595    /// - &#39;picTimingSei&#39;: Pass through picture timing SEI messages from the source specified in Timecode Config</p>
2596    #[serde(rename = "TimecodeInsertion")]
2597    #[serde(skip_serializing_if = "Option::is_none")]
2598    pub timecode_insertion: Option<String>,
2599}
2600
2601/// <p>Hdr10 Settings</p>
2602#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2603pub struct Hdr10Settings {
2604    /// <p>Maximum Content Light Level
2605    /// An integer metadata value defining the maximum light level, in nits,
2606    /// of any single pixel within an encoded HDR video stream or file.</p>
2607    #[serde(rename = "MaxCll")]
2608    #[serde(skip_serializing_if = "Option::is_none")]
2609    pub max_cll: Option<i64>,
2610    /// <p>Maximum Frame Average Light Level
2611    /// An integer metadata value defining the maximum average light level, in nits,
2612    /// for any single frame within an encoded HDR video stream or file.</p>
2613    #[serde(rename = "MaxFall")]
2614    #[serde(skip_serializing_if = "Option::is_none")]
2615    pub max_fall: Option<i64>,
2616}
2617
2618/// <p>Hls Akamai Settings</p>
2619#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2620pub struct HlsAkamaiSettings {
2621    /// <p>Number of seconds to wait before retrying connection to the CDN if the connection is lost.</p>
2622    #[serde(rename = "ConnectionRetryInterval")]
2623    #[serde(skip_serializing_if = "Option::is_none")]
2624    pub connection_retry_interval: Option<i64>,
2625    /// <p>Size in seconds of file cache for streaming outputs.</p>
2626    #[serde(rename = "FilecacheDuration")]
2627    #[serde(skip_serializing_if = "Option::is_none")]
2628    pub filecache_duration: Option<i64>,
2629    /// <p>Specify whether or not to use chunked transfer encoding to Akamai. User should contact Akamai to enable this feature.</p>
2630    #[serde(rename = "HttpTransferMode")]
2631    #[serde(skip_serializing_if = "Option::is_none")]
2632    pub http_transfer_mode: Option<String>,
2633    /// <p>Number of retry attempts that will be made before the Live Event is put into an error state.</p>
2634    #[serde(rename = "NumRetries")]
2635    #[serde(skip_serializing_if = "Option::is_none")]
2636    pub num_retries: Option<i64>,
2637    /// <p>If a streaming output fails, number of seconds to wait until a restart is initiated. A value of 0 means never restart.</p>
2638    #[serde(rename = "RestartDelay")]
2639    #[serde(skip_serializing_if = "Option::is_none")]
2640    pub restart_delay: Option<i64>,
2641    /// <p>Salt for authenticated Akamai.</p>
2642    #[serde(rename = "Salt")]
2643    #[serde(skip_serializing_if = "Option::is_none")]
2644    pub salt: Option<String>,
2645    /// <p>Token parameter for authenticated akamai. If not specified, <em>gda</em> is used.</p>
2646    #[serde(rename = "Token")]
2647    #[serde(skip_serializing_if = "Option::is_none")]
2648    pub token: Option<String>,
2649}
2650
2651/// <p>Hls Basic Put Settings</p>
2652#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2653pub struct HlsBasicPutSettings {
2654    /// <p>Number of seconds to wait before retrying connection to the CDN if the connection is lost.</p>
2655    #[serde(rename = "ConnectionRetryInterval")]
2656    #[serde(skip_serializing_if = "Option::is_none")]
2657    pub connection_retry_interval: Option<i64>,
2658    /// <p>Size in seconds of file cache for streaming outputs.</p>
2659    #[serde(rename = "FilecacheDuration")]
2660    #[serde(skip_serializing_if = "Option::is_none")]
2661    pub filecache_duration: Option<i64>,
2662    /// <p>Number of retry attempts that will be made before the Live Event is put into an error state.</p>
2663    #[serde(rename = "NumRetries")]
2664    #[serde(skip_serializing_if = "Option::is_none")]
2665    pub num_retries: Option<i64>,
2666    /// <p>If a streaming output fails, number of seconds to wait until a restart is initiated. A value of 0 means never restart.</p>
2667    #[serde(rename = "RestartDelay")]
2668    #[serde(skip_serializing_if = "Option::is_none")]
2669    pub restart_delay: Option<i64>,
2670}
2671
2672/// <p>Hls Cdn Settings</p>
2673#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2674pub struct HlsCdnSettings {
2675    #[serde(rename = "HlsAkamaiSettings")]
2676    #[serde(skip_serializing_if = "Option::is_none")]
2677    pub hls_akamai_settings: Option<HlsAkamaiSettings>,
2678    #[serde(rename = "HlsBasicPutSettings")]
2679    #[serde(skip_serializing_if = "Option::is_none")]
2680    pub hls_basic_put_settings: Option<HlsBasicPutSettings>,
2681    #[serde(rename = "HlsMediaStoreSettings")]
2682    #[serde(skip_serializing_if = "Option::is_none")]
2683    pub hls_media_store_settings: Option<HlsMediaStoreSettings>,
2684    #[serde(rename = "HlsWebdavSettings")]
2685    #[serde(skip_serializing_if = "Option::is_none")]
2686    pub hls_webdav_settings: Option<HlsWebdavSettings>,
2687}
2688
2689/// <p>Hls Group Settings</p>
2690#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2691pub struct HlsGroupSettings {
2692    /// <p>Choose one or more ad marker types to pass SCTE35 signals through to this group of Apple HLS outputs.</p>
2693    #[serde(rename = "AdMarkers")]
2694    #[serde(skip_serializing_if = "Option::is_none")]
2695    pub ad_markers: Option<Vec<String>>,
2696    /// <p>A partial URI prefix that will be prepended to each output in the media .m3u8 file. Can be used if base manifest is delivered from a different URL than the main .m3u8 file.</p>
2697    #[serde(rename = "BaseUrlContent")]
2698    #[serde(skip_serializing_if = "Option::is_none")]
2699    pub base_url_content: Option<String>,
2700    /// <p>Optional. One value per output group.</p>
2701    ///
2702    /// <p>This field is required only if you are completing Base URL content A, and the downstream system has notified you that the media files for pipeline 1 of all outputs are in a location different from the media files for pipeline 0.</p>
2703    #[serde(rename = "BaseUrlContent1")]
2704    #[serde(skip_serializing_if = "Option::is_none")]
2705    pub base_url_content_1: Option<String>,
2706    /// <p>A partial URI prefix that will be prepended to each output in the media .m3u8 file. Can be used if base manifest is delivered from a different URL than the main .m3u8 file.</p>
2707    #[serde(rename = "BaseUrlManifest")]
2708    #[serde(skip_serializing_if = "Option::is_none")]
2709    pub base_url_manifest: Option<String>,
2710    /// <p>Optional. One value per output group.</p>
2711    ///
2712    /// <p>Complete this field only if you are completing Base URL manifest A, and the downstream system has notified you that the child manifest files for pipeline 1 of all outputs are in a location different from the child manifest files for pipeline 0.</p>
2713    #[serde(rename = "BaseUrlManifest1")]
2714    #[serde(skip_serializing_if = "Option::is_none")]
2715    pub base_url_manifest_1: Option<String>,
2716    /// <p>Mapping of up to 4 caption channels to caption languages.  Is only meaningful if captionLanguageSetting is set to &quot;insert&quot;.</p>
2717    #[serde(rename = "CaptionLanguageMappings")]
2718    #[serde(skip_serializing_if = "Option::is_none")]
2719    pub caption_language_mappings: Option<Vec<CaptionLanguageMapping>>,
2720    /// <p>Applies only to 608 Embedded output captions.
2721    /// insert: Include CLOSED-CAPTIONS lines in the manifest. Specify at least one language in the CC1 Language Code field. One CLOSED-CAPTION line is added for each Language Code you specify. Make sure to specify the languages in the order in which they appear in the original source (if the source is embedded format) or the order of the caption selectors (if the source is other than embedded). Otherwise, languages in the manifest will not match up properly with the output captions.
2722    /// none: Include CLOSED-CAPTIONS=NONE line in the manifest.
2723    /// omit: Omit any CLOSED-CAPTIONS line from the manifest.</p>
2724    #[serde(rename = "CaptionLanguageSetting")]
2725    #[serde(skip_serializing_if = "Option::is_none")]
2726    pub caption_language_setting: Option<String>,
2727    /// <p>When set to &quot;disabled&quot;, sets the #EXT-X-ALLOW-CACHE:no tag in the manifest, which prevents clients from saving media segments for later replay.</p>
2728    #[serde(rename = "ClientCache")]
2729    #[serde(skip_serializing_if = "Option::is_none")]
2730    pub client_cache: Option<String>,
2731    /// <p>Specification to use (RFC-6381 or the default RFC-4281) during m3u8 playlist generation.</p>
2732    #[serde(rename = "CodecSpecification")]
2733    #[serde(skip_serializing_if = "Option::is_none")]
2734    pub codec_specification: Option<String>,
2735    /// <p>For use with encryptionType. This is a 128-bit, 16-byte hex value represented by a 32-character text string. If ivSource is set to &quot;explicit&quot; then this parameter is required and is used as the IV for encryption.</p>
2736    #[serde(rename = "ConstantIv")]
2737    #[serde(skip_serializing_if = "Option::is_none")]
2738    pub constant_iv: Option<String>,
2739    /// <p>A directory or HTTP destination for the HLS segments, manifest files, and encryption keys (if enabled).</p>
2740    #[serde(rename = "Destination")]
2741    pub destination: OutputLocationRef,
2742    /// <p>Place segments in subdirectories.</p>
2743    #[serde(rename = "DirectoryStructure")]
2744    #[serde(skip_serializing_if = "Option::is_none")]
2745    pub directory_structure: Option<String>,
2746    /// <p>Encrypts the segments with the given encryption scheme.  Exclude this parameter if no encryption is desired.</p>
2747    #[serde(rename = "EncryptionType")]
2748    #[serde(skip_serializing_if = "Option::is_none")]
2749    pub encryption_type: Option<String>,
2750    /// <p>Parameters that control interactions with the CDN.</p>
2751    #[serde(rename = "HlsCdnSettings")]
2752    #[serde(skip_serializing_if = "Option::is_none")]
2753    pub hls_cdn_settings: Option<HlsCdnSettings>,
2754    /// <p>State of HLS ID3 Segment Tagging</p>
2755    #[serde(rename = "HlsId3SegmentTagging")]
2756    #[serde(skip_serializing_if = "Option::is_none")]
2757    pub hls_id_3_segment_tagging: Option<String>,
2758    /// <p>DISABLED: Do not create an I-frame-only manifest, but do create the master and media manifests (according to the Output Selection field).</p>
2759    ///
2760    /// <p>STANDARD: Create an I-frame-only manifest for each output that contains video, as well as the other manifests (according to the Output Selection field). The I-frame manifest contains a #EXT-X-I-FRAMES-ONLY tag to indicate it is I-frame only, and one or more #EXT-X-BYTERANGE entries identifying the I-frame position. For example, #EXT-X-BYTERANGE:160364@1461888&quot;</p>
2761    #[serde(rename = "IFrameOnlyPlaylists")]
2762    #[serde(skip_serializing_if = "Option::is_none")]
2763    pub i_frame_only_playlists: Option<String>,
2764    /// <p>Applies only if Mode field is LIVE. Specifies the maximum number of segments in the media manifest file. After this maximum, older segments are removed from the media manifest. This number must be less than or equal to the Keep Segments field.</p>
2765    #[serde(rename = "IndexNSegments")]
2766    #[serde(skip_serializing_if = "Option::is_none")]
2767    pub index_n_segments: Option<i64>,
2768    /// <p>Parameter that control output group behavior on input loss.</p>
2769    #[serde(rename = "InputLossAction")]
2770    #[serde(skip_serializing_if = "Option::is_none")]
2771    pub input_loss_action: Option<String>,
2772    /// <p>For use with encryptionType. The IV (Initialization Vector) is a 128-bit number used in conjunction with the key for encrypting blocks. If set to &quot;include&quot;, IV is listed in the manifest, otherwise the IV is not in the manifest.</p>
2773    #[serde(rename = "IvInManifest")]
2774    #[serde(skip_serializing_if = "Option::is_none")]
2775    pub iv_in_manifest: Option<String>,
2776    /// <p>For use with encryptionType. The IV (Initialization Vector) is a 128-bit number used in conjunction with the key for encrypting blocks. If this setting is &quot;followsSegmentNumber&quot;, it will cause the IV to change every segment (to match the segment number). If this is set to &quot;explicit&quot;, you must enter a constantIv value.</p>
2777    #[serde(rename = "IvSource")]
2778    #[serde(skip_serializing_if = "Option::is_none")]
2779    pub iv_source: Option<String>,
2780    /// <p>Applies only if Mode field is LIVE. Specifies the number of media segments (.ts files) to retain in the destination directory.</p>
2781    #[serde(rename = "KeepSegments")]
2782    #[serde(skip_serializing_if = "Option::is_none")]
2783    pub keep_segments: Option<i64>,
2784    /// <p>The value specifies how the key is represented in the resource identified by the URI.  If parameter is absent, an implicit value of &quot;identity&quot; is used.  A reverse DNS string can also be given.</p>
2785    #[serde(rename = "KeyFormat")]
2786    #[serde(skip_serializing_if = "Option::is_none")]
2787    pub key_format: Option<String>,
2788    /// <p>Either a single positive integer version value or a slash delimited list of version values (1/2/3).</p>
2789    #[serde(rename = "KeyFormatVersions")]
2790    #[serde(skip_serializing_if = "Option::is_none")]
2791    pub key_format_versions: Option<String>,
2792    /// <p>The key provider settings.</p>
2793    #[serde(rename = "KeyProviderSettings")]
2794    #[serde(skip_serializing_if = "Option::is_none")]
2795    pub key_provider_settings: Option<KeyProviderSettings>,
2796    /// <p>When set to gzip, compresses HLS playlist.</p>
2797    #[serde(rename = "ManifestCompression")]
2798    #[serde(skip_serializing_if = "Option::is_none")]
2799    pub manifest_compression: Option<String>,
2800    /// <p>Indicates whether the output manifest should use floating point or integer values for segment duration.</p>
2801    #[serde(rename = "ManifestDurationFormat")]
2802    #[serde(skip_serializing_if = "Option::is_none")]
2803    pub manifest_duration_format: Option<String>,
2804    /// <p>When set, minimumSegmentLength is enforced by looking ahead and back within the specified range for a nearby avail and extending the segment size if needed.</p>
2805    #[serde(rename = "MinSegmentLength")]
2806    #[serde(skip_serializing_if = "Option::is_none")]
2807    pub min_segment_length: Option<i64>,
2808    /// <p>If &quot;vod&quot;, all segments are indexed and kept permanently in the destination and manifest. If &quot;live&quot;, only the number segments specified in keepSegments and indexNSegments are kept; newer segments replace older segments, which may prevent players from rewinding all the way to the beginning of the event.</p>
2809    ///
2810    /// <p>VOD mode uses HLS EXT-X-PLAYLIST-TYPE of EVENT while the channel is running, converting it to a &quot;VOD&quot; type manifest on completion of the stream.</p>
2811    #[serde(rename = "Mode")]
2812    #[serde(skip_serializing_if = "Option::is_none")]
2813    pub mode: Option<String>,
2814    /// <p>MANIFESTS<em>AND</em>SEGMENTS: Generates manifests (master manifest, if applicable, and media manifests) for this output group.</p>
2815    ///
2816    /// <p>VARIANT<em>MANIFESTS</em>AND_SEGMENTS: Generates media manifests for this output group, but not a master manifest.</p>
2817    ///
2818    /// <p>SEGMENTS_ONLY: Does not generate any manifests for this output group.</p>
2819    #[serde(rename = "OutputSelection")]
2820    #[serde(skip_serializing_if = "Option::is_none")]
2821    pub output_selection: Option<String>,
2822    /// <p>Includes or excludes EXT-X-PROGRAM-DATE-TIME tag in .m3u8 manifest files. The value is calculated as follows: either the program date and time are initialized using the input timecode source, or the time is initialized using the input timecode source and the date is initialized using the timestampOffset.</p>
2823    #[serde(rename = "ProgramDateTime")]
2824    #[serde(skip_serializing_if = "Option::is_none")]
2825    pub program_date_time: Option<String>,
2826    /// <p>Period of insertion of EXT-X-PROGRAM-DATE-TIME entry, in seconds.</p>
2827    #[serde(rename = "ProgramDateTimePeriod")]
2828    #[serde(skip_serializing_if = "Option::is_none")]
2829    pub program_date_time_period: Option<i64>,
2830    /// <p>ENABLED: The master manifest (.m3u8 file) for each pipeline includes information about both pipelines: first its own media files, then the media files of the other pipeline. This feature allows playout device that support stale manifest detection to switch from one manifest to the other, when the current manifest seems to be stale. There are still two destinations and two master manifests, but both master manifests reference the media files from both pipelines.</p>
2831    ///
2832    /// <p>DISABLED: The master manifest (.m3u8 file) for each pipeline includes information about its own pipeline only.</p>
2833    ///
2834    /// <p>For an HLS output group with MediaPackage as the destination, the DISABLED behavior is always followed. MediaPackage regenerates the manifests it serves to players so a redundant manifest from MediaLive is irrelevant.</p>
2835    #[serde(rename = "RedundantManifest")]
2836    #[serde(skip_serializing_if = "Option::is_none")]
2837    pub redundant_manifest: Option<String>,
2838    /// <p>Length of MPEG-2 Transport Stream segments to create (in seconds). Note that segments will end on the next keyframe after this number of seconds, so actual segment length may be longer.</p>
2839    #[serde(rename = "SegmentLength")]
2840    #[serde(skip_serializing_if = "Option::is_none")]
2841    pub segment_length: Option<i64>,
2842    /// <p>useInputSegmentation has been deprecated. The configured segment size is always used.</p>
2843    #[serde(rename = "SegmentationMode")]
2844    #[serde(skip_serializing_if = "Option::is_none")]
2845    pub segmentation_mode: Option<String>,
2846    /// <p>Number of segments to write to a subdirectory before starting a new one. directoryStructure must be subdirectoryPerStream for this setting to have an effect.</p>
2847    #[serde(rename = "SegmentsPerSubdirectory")]
2848    #[serde(skip_serializing_if = "Option::is_none")]
2849    pub segments_per_subdirectory: Option<i64>,
2850    /// <p>Include or exclude RESOLUTION attribute for video in EXT-X-STREAM-INF tag of variant manifest.</p>
2851    #[serde(rename = "StreamInfResolution")]
2852    #[serde(skip_serializing_if = "Option::is_none")]
2853    pub stream_inf_resolution: Option<String>,
2854    /// <p>Indicates ID3 frame that has the timecode.</p>
2855    #[serde(rename = "TimedMetadataId3Frame")]
2856    #[serde(skip_serializing_if = "Option::is_none")]
2857    pub timed_metadata_id_3_frame: Option<String>,
2858    /// <p>Timed Metadata interval in seconds.</p>
2859    #[serde(rename = "TimedMetadataId3Period")]
2860    #[serde(skip_serializing_if = "Option::is_none")]
2861    pub timed_metadata_id_3_period: Option<i64>,
2862    /// <p>Provides an extra millisecond delta offset to fine tune the timestamps.</p>
2863    #[serde(rename = "TimestampDeltaMilliseconds")]
2864    #[serde(skip_serializing_if = "Option::is_none")]
2865    pub timestamp_delta_milliseconds: Option<i64>,
2866    /// <p>SEGMENTED_FILES: Emit the program as segments - multiple .ts media files.</p>
2867    ///
2868    /// <p>SINGLE_FILE: Applies only if Mode field is VOD. Emit the program as a single .ts media file. The media manifest includes #EXT-X-BYTERANGE tags to index segments for playback. A typical use for this value is when sending the output to AWS Elemental MediaConvert, which can accept only a single media file. Playback while the channel is running is not guaranteed due to HTTP server caching.</p>
2869    #[serde(rename = "TsFileMode")]
2870    #[serde(skip_serializing_if = "Option::is_none")]
2871    pub ts_file_mode: Option<String>,
2872}
2873
2874/// <p>Settings for the action to insert a user-defined ID3 tag in each HLS segment</p>
2875#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2876pub struct HlsId3SegmentTaggingScheduleActionSettings {
2877    /// <p>ID3 tag to insert into each segment. Supports special keyword identifiers to substitute in segment-related values.\nSupported keyword identifiers: https://docs.aws.amazon.com/medialive/latest/ug/variable-data-identifiers.html</p>
2878    #[serde(rename = "Tag")]
2879    pub tag: String,
2880}
2881
2882/// <p>Hls Input Settings</p>
2883#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2884pub struct HlsInputSettings {
2885    /// <p>When specified the HLS stream with the m3u8 BANDWIDTH that most closely matches this value will be chosen, otherwise the highest bandwidth stream in the m3u8 will be chosen.  The bitrate is specified in bits per second, as in an HLS manifest.</p>
2886    #[serde(rename = "Bandwidth")]
2887    #[serde(skip_serializing_if = "Option::is_none")]
2888    pub bandwidth: Option<i64>,
2889    /// <p>When specified, reading of the HLS input will begin this many buffer segments from the end (most recently written segment).  When not specified, the HLS input will begin with the first segment specified in the m3u8.</p>
2890    #[serde(rename = "BufferSegments")]
2891    #[serde(skip_serializing_if = "Option::is_none")]
2892    pub buffer_segments: Option<i64>,
2893    /// <p>The number of consecutive times that attempts to read a manifest or segment must fail before the input is considered unavailable.</p>
2894    #[serde(rename = "Retries")]
2895    #[serde(skip_serializing_if = "Option::is_none")]
2896    pub retries: Option<i64>,
2897    /// <p>The number of seconds between retries when an attempt to read a manifest or segment fails.</p>
2898    #[serde(rename = "RetryInterval")]
2899    #[serde(skip_serializing_if = "Option::is_none")]
2900    pub retry_interval: Option<i64>,
2901}
2902
2903/// <p>Hls Media Store Settings</p>
2904#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2905pub struct HlsMediaStoreSettings {
2906    /// <p>Number of seconds to wait before retrying connection to the CDN if the connection is lost.</p>
2907    #[serde(rename = "ConnectionRetryInterval")]
2908    #[serde(skip_serializing_if = "Option::is_none")]
2909    pub connection_retry_interval: Option<i64>,
2910    /// <p>Size in seconds of file cache for streaming outputs.</p>
2911    #[serde(rename = "FilecacheDuration")]
2912    #[serde(skip_serializing_if = "Option::is_none")]
2913    pub filecache_duration: Option<i64>,
2914    /// <p>When set to temporal, output files are stored in non-persistent memory for faster reading and writing.</p>
2915    #[serde(rename = "MediaStoreStorageClass")]
2916    #[serde(skip_serializing_if = "Option::is_none")]
2917    pub media_store_storage_class: Option<String>,
2918    /// <p>Number of retry attempts that will be made before the Live Event is put into an error state.</p>
2919    #[serde(rename = "NumRetries")]
2920    #[serde(skip_serializing_if = "Option::is_none")]
2921    pub num_retries: Option<i64>,
2922    /// <p>If a streaming output fails, number of seconds to wait until a restart is initiated. A value of 0 means never restart.</p>
2923    #[serde(rename = "RestartDelay")]
2924    #[serde(skip_serializing_if = "Option::is_none")]
2925    pub restart_delay: Option<i64>,
2926}
2927
2928/// <p>Hls Output Settings</p>
2929#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2930pub struct HlsOutputSettings {
2931    /// <p>Only applicable when this output is referencing an H.265 video description.
2932    /// Specifies whether MP4 segments should be packaged as HEV1 or HVC1.</p>
2933    #[serde(rename = "H265PackagingType")]
2934    #[serde(skip_serializing_if = "Option::is_none")]
2935    pub h265_packaging_type: Option<String>,
2936    /// <p>Settings regarding the underlying stream. These settings are different for audio-only outputs.</p>
2937    #[serde(rename = "HlsSettings")]
2938    pub hls_settings: HlsSettings,
2939    /// <p>String concatenated to the end of the destination filename. Accepts &quot;Format Identifiers&quot;:#formatIdentifierParameters.</p>
2940    #[serde(rename = "NameModifier")]
2941    #[serde(skip_serializing_if = "Option::is_none")]
2942    pub name_modifier: Option<String>,
2943    /// <p>String concatenated to end of segment filenames.</p>
2944    #[serde(rename = "SegmentModifier")]
2945    #[serde(skip_serializing_if = "Option::is_none")]
2946    pub segment_modifier: Option<String>,
2947}
2948
2949/// <p>Hls Settings</p>
2950#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2951pub struct HlsSettings {
2952    #[serde(rename = "AudioOnlyHlsSettings")]
2953    #[serde(skip_serializing_if = "Option::is_none")]
2954    pub audio_only_hls_settings: Option<AudioOnlyHlsSettings>,
2955    #[serde(rename = "Fmp4HlsSettings")]
2956    #[serde(skip_serializing_if = "Option::is_none")]
2957    pub fmp_4_hls_settings: Option<Fmp4HlsSettings>,
2958    #[serde(rename = "StandardHlsSettings")]
2959    #[serde(skip_serializing_if = "Option::is_none")]
2960    pub standard_hls_settings: Option<StandardHlsSettings>,
2961}
2962
2963/// <p>Settings for the action to emit HLS metadata</p>
2964#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2965pub struct HlsTimedMetadataScheduleActionSettings {
2966    /// <p>Base64 string formatted according to the ID3 specification: http://id3.org/id3v2.4.0-structure</p>
2967    #[serde(rename = "Id3")]
2968    pub id_3: String,
2969}
2970
2971/// <p>Hls Webdav Settings</p>
2972#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2973pub struct HlsWebdavSettings {
2974    /// <p>Number of seconds to wait before retrying connection to the CDN if the connection is lost.</p>
2975    #[serde(rename = "ConnectionRetryInterval")]
2976    #[serde(skip_serializing_if = "Option::is_none")]
2977    pub connection_retry_interval: Option<i64>,
2978    /// <p>Size in seconds of file cache for streaming outputs.</p>
2979    #[serde(rename = "FilecacheDuration")]
2980    #[serde(skip_serializing_if = "Option::is_none")]
2981    pub filecache_duration: Option<i64>,
2982    /// <p>Specify whether or not to use chunked transfer encoding to WebDAV.</p>
2983    #[serde(rename = "HttpTransferMode")]
2984    #[serde(skip_serializing_if = "Option::is_none")]
2985    pub http_transfer_mode: Option<String>,
2986    /// <p>Number of retry attempts that will be made before the Live Event is put into an error state.</p>
2987    #[serde(rename = "NumRetries")]
2988    #[serde(skip_serializing_if = "Option::is_none")]
2989    pub num_retries: Option<i64>,
2990    /// <p>If a streaming output fails, number of seconds to wait until a restart is initiated. A value of 0 means never restart.</p>
2991    #[serde(rename = "RestartDelay")]
2992    #[serde(skip_serializing_if = "Option::is_none")]
2993    pub restart_delay: Option<i64>,
2994}
2995
2996/// <p>Settings to configure an action so that it occurs as soon as possible.</p>
2997#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2998pub struct ImmediateModeScheduleActionStartSettings {}
2999
3000/// <p>Placeholder documentation for Input</p>
3001#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3002#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3003pub struct Input {
3004    /// <p>The Unique ARN of the input (generated, immutable).</p>
3005    #[serde(rename = "Arn")]
3006    #[serde(skip_serializing_if = "Option::is_none")]
3007    pub arn: Option<String>,
3008    /// <p>A list of channel IDs that that input is attached to (currently an input can only be attached to one channel).</p>
3009    #[serde(rename = "AttachedChannels")]
3010    #[serde(skip_serializing_if = "Option::is_none")]
3011    pub attached_channels: Option<Vec<String>>,
3012    /// <p>A list of the destinations of the input (PUSH-type).</p>
3013    #[serde(rename = "Destinations")]
3014    #[serde(skip_serializing_if = "Option::is_none")]
3015    pub destinations: Option<Vec<InputDestination>>,
3016    /// <p>The generated ID of the input (unique for user account, immutable).</p>
3017    #[serde(rename = "Id")]
3018    #[serde(skip_serializing_if = "Option::is_none")]
3019    pub id: Option<String>,
3020    /// <p>STANDARD - MediaLive expects two sources to be connected to this input. If the channel is also STANDARD, both sources will be ingested. If the channel is SINGLE<em>PIPELINE, only the first source will be ingested; the second source will always be ignored, even if the first source fails.
3021    /// SINGLE</em>PIPELINE - You can connect only one source to this input. If the ChannelClass is also  SINGLE_PIPELINE, this value is valid. If the ChannelClass is STANDARD, this value is not valid because the channel requires two sources in the input.</p>
3022    #[serde(rename = "InputClass")]
3023    #[serde(skip_serializing_if = "Option::is_none")]
3024    pub input_class: Option<String>,
3025    /// <p>Settings for the input devices.</p>
3026    #[serde(rename = "InputDevices")]
3027    #[serde(skip_serializing_if = "Option::is_none")]
3028    pub input_devices: Option<Vec<InputDeviceSettings>>,
3029    /// <p>Certain pull input sources can be dynamic, meaning that they can have their URL&#39;s dynamically changes
3030    /// during input switch actions. Presently, this functionality only works with MP4_FILE inputs.</p>
3031    #[serde(rename = "InputSourceType")]
3032    #[serde(skip_serializing_if = "Option::is_none")]
3033    pub input_source_type: Option<String>,
3034    /// <p>A list of MediaConnect Flows for this input.</p>
3035    #[serde(rename = "MediaConnectFlows")]
3036    #[serde(skip_serializing_if = "Option::is_none")]
3037    pub media_connect_flows: Option<Vec<MediaConnectFlow>>,
3038    /// <p>The user-assigned name (This is a mutable value).</p>
3039    #[serde(rename = "Name")]
3040    #[serde(skip_serializing_if = "Option::is_none")]
3041    pub name: Option<String>,
3042    /// <p>The Amazon Resource Name (ARN) of the role this input assumes during and after creation.</p>
3043    #[serde(rename = "RoleArn")]
3044    #[serde(skip_serializing_if = "Option::is_none")]
3045    pub role_arn: Option<String>,
3046    /// <p>A list of IDs for all the Input Security Groups attached to the input.</p>
3047    #[serde(rename = "SecurityGroups")]
3048    #[serde(skip_serializing_if = "Option::is_none")]
3049    pub security_groups: Option<Vec<String>>,
3050    /// <p>A list of the sources of the input (PULL-type).</p>
3051    #[serde(rename = "Sources")]
3052    #[serde(skip_serializing_if = "Option::is_none")]
3053    pub sources: Option<Vec<InputSource>>,
3054    #[serde(rename = "State")]
3055    #[serde(skip_serializing_if = "Option::is_none")]
3056    pub state: Option<String>,
3057    /// <p>A collection of key-value pairs.</p>
3058    #[serde(rename = "Tags")]
3059    #[serde(skip_serializing_if = "Option::is_none")]
3060    pub tags: Option<::std::collections::HashMap<String, String>>,
3061    #[serde(rename = "Type")]
3062    #[serde(skip_serializing_if = "Option::is_none")]
3063    pub type_: Option<String>,
3064}
3065
3066/// <p>Placeholder documentation for InputAttachment</p>
3067#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3068pub struct InputAttachment {
3069    /// <p>User-specified settings for defining what the conditions are for declaring the input unhealthy and failing over to a different input.</p>
3070    #[serde(rename = "AutomaticInputFailoverSettings")]
3071    #[serde(skip_serializing_if = "Option::is_none")]
3072    pub automatic_input_failover_settings: Option<AutomaticInputFailoverSettings>,
3073    /// <p>User-specified name for the attachment. This is required if the user wants to use this input in an input switch action.</p>
3074    #[serde(rename = "InputAttachmentName")]
3075    #[serde(skip_serializing_if = "Option::is_none")]
3076    pub input_attachment_name: Option<String>,
3077    /// <p>The ID of the input</p>
3078    #[serde(rename = "InputId")]
3079    #[serde(skip_serializing_if = "Option::is_none")]
3080    pub input_id: Option<String>,
3081    /// <p>Settings of an input (caption selector, etc.)</p>
3082    #[serde(rename = "InputSettings")]
3083    #[serde(skip_serializing_if = "Option::is_none")]
3084    pub input_settings: Option<InputSettings>,
3085}
3086
3087/// <p>Input Channel Level</p>
3088#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3089pub struct InputChannelLevel {
3090    /// <p>Remixing value. Units are in dB and acceptable values are within the range from -60 (mute) and 6 dB.</p>
3091    #[serde(rename = "Gain")]
3092    pub gain: i64,
3093    /// <p>The index of the input channel used as a source.</p>
3094    #[serde(rename = "InputChannel")]
3095    pub input_channel: i64,
3096}
3097
3098/// <p>Settings to let you create a clip of the file input, in order to set up the input to ingest only a portion of the file.</p>
3099#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3100pub struct InputClippingSettings {
3101    /// <p>The source of the timecodes in the source being clipped.</p>
3102    #[serde(rename = "InputTimecodeSource")]
3103    pub input_timecode_source: String,
3104    /// <p>Settings to identify the start of the clip.</p>
3105    #[serde(rename = "StartTimecode")]
3106    #[serde(skip_serializing_if = "Option::is_none")]
3107    pub start_timecode: Option<StartTimecode>,
3108    /// <p>Settings to identify the end of the clip.</p>
3109    #[serde(rename = "StopTimecode")]
3110    #[serde(skip_serializing_if = "Option::is_none")]
3111    pub stop_timecode: Option<StopTimecode>,
3112}
3113
3114/// <p>The settings for a PUSH type input.</p>
3115#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3116#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3117pub struct InputDestination {
3118    /// <p>The system-generated static IP address of endpoint.
3119    /// It remains fixed for the lifetime of the input.</p>
3120    #[serde(rename = "Ip")]
3121    #[serde(skip_serializing_if = "Option::is_none")]
3122    pub ip: Option<String>,
3123    /// <p>The port number for the input.</p>
3124    #[serde(rename = "Port")]
3125    #[serde(skip_serializing_if = "Option::is_none")]
3126    pub port: Option<String>,
3127    /// <p>This represents the endpoint that the customer stream will be
3128    /// pushed to.</p>
3129    #[serde(rename = "Url")]
3130    #[serde(skip_serializing_if = "Option::is_none")]
3131    pub url: Option<String>,
3132    #[serde(rename = "Vpc")]
3133    #[serde(skip_serializing_if = "Option::is_none")]
3134    pub vpc: Option<InputDestinationVpc>,
3135}
3136
3137/// <p>Endpoint settings for a PUSH type input.</p>
3138#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3139#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3140pub struct InputDestinationRequest {
3141    /// <p>A unique name for the location the RTMP stream is being pushed
3142    /// to.</p>
3143    #[serde(rename = "StreamName")]
3144    #[serde(skip_serializing_if = "Option::is_none")]
3145    pub stream_name: Option<String>,
3146}
3147
3148/// <p>The properties for a VPC type input destination.</p>
3149#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3150#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3151pub struct InputDestinationVpc {
3152    /// <p>The availability zone of the Input destination.</p>
3153    #[serde(rename = "AvailabilityZone")]
3154    #[serde(skip_serializing_if = "Option::is_none")]
3155    pub availability_zone: Option<String>,
3156    /// <p>The network interface ID of the Input destination in the VPC.</p>
3157    #[serde(rename = "NetworkInterfaceId")]
3158    #[serde(skip_serializing_if = "Option::is_none")]
3159    pub network_interface_id: Option<String>,
3160}
3161
3162/// <p>Configurable settings for the input device.</p>
3163#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3164#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3165pub struct InputDeviceConfigurableSettings {
3166    /// <p>The input source that you want to use. If the device has a source connected to only one of its input ports, or if you don&#39;t care which source the device sends, specify Auto. If the device has sources connected to both its input ports, and you want to use a specific source, specify the source.</p>
3167    #[serde(rename = "ConfiguredInput")]
3168    #[serde(skip_serializing_if = "Option::is_none")]
3169    pub configured_input: Option<String>,
3170    /// <p>The maximum bitrate in bits per second. Set a value here to throttle the bitrate of the source video.</p>
3171    #[serde(rename = "MaxBitrate")]
3172    #[serde(skip_serializing_if = "Option::is_none")]
3173    pub max_bitrate: Option<i64>,
3174}
3175
3176/// <p>Settings that describe the active source from the input device, and the video characteristics of that source.</p>
3177#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3178#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3179pub struct InputDeviceHdSettings {
3180    /// <p>If you specified Auto as the configured input, specifies which of the sources is currently active (SDI or HDMI).</p>
3181    #[serde(rename = "ActiveInput")]
3182    #[serde(skip_serializing_if = "Option::is_none")]
3183    pub active_input: Option<String>,
3184    /// <p>The source at the input device that is currently active. You can specify this source.</p>
3185    #[serde(rename = "ConfiguredInput")]
3186    #[serde(skip_serializing_if = "Option::is_none")]
3187    pub configured_input: Option<String>,
3188    /// <p>The state of the input device.</p>
3189    #[serde(rename = "DeviceState")]
3190    #[serde(skip_serializing_if = "Option::is_none")]
3191    pub device_state: Option<String>,
3192    /// <p>The frame rate of the video source.</p>
3193    #[serde(rename = "Framerate")]
3194    #[serde(skip_serializing_if = "Option::is_none")]
3195    pub framerate: Option<f64>,
3196    /// <p>The height of the video source, in pixels.</p>
3197    #[serde(rename = "Height")]
3198    #[serde(skip_serializing_if = "Option::is_none")]
3199    pub height: Option<i64>,
3200    /// <p>The current maximum bitrate for ingesting this source, in bits per second. You can specify this maximum.</p>
3201    #[serde(rename = "MaxBitrate")]
3202    #[serde(skip_serializing_if = "Option::is_none")]
3203    pub max_bitrate: Option<i64>,
3204    /// <p>The scan type of the video source.</p>
3205    #[serde(rename = "ScanType")]
3206    #[serde(skip_serializing_if = "Option::is_none")]
3207    pub scan_type: Option<String>,
3208    /// <p>The width of the video source, in pixels.</p>
3209    #[serde(rename = "Width")]
3210    #[serde(skip_serializing_if = "Option::is_none")]
3211    pub width: Option<i64>,
3212}
3213
3214/// <p>The network settings for the input device.</p>
3215#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3216#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3217pub struct InputDeviceNetworkSettings {
3218    /// <p>The DNS addresses of the input device.</p>
3219    #[serde(rename = "DnsAddresses")]
3220    #[serde(skip_serializing_if = "Option::is_none")]
3221    pub dns_addresses: Option<Vec<String>>,
3222    /// <p>The network gateway IP address.</p>
3223    #[serde(rename = "Gateway")]
3224    #[serde(skip_serializing_if = "Option::is_none")]
3225    pub gateway: Option<String>,
3226    /// <p>The IP address of the input device.</p>
3227    #[serde(rename = "IpAddress")]
3228    #[serde(skip_serializing_if = "Option::is_none")]
3229    pub ip_address: Option<String>,
3230    /// <p>Specifies whether the input device has been configured (outside of MediaLive) to use a dynamic IP address assignment (DHCP) or a static IP address.</p>
3231    #[serde(rename = "IpScheme")]
3232    #[serde(skip_serializing_if = "Option::is_none")]
3233    pub ip_scheme: Option<String>,
3234    /// <p>The subnet mask of the input device.</p>
3235    #[serde(rename = "SubnetMask")]
3236    #[serde(skip_serializing_if = "Option::is_none")]
3237    pub subnet_mask: Option<String>,
3238}
3239
3240/// <p>Settings for an input device.</p>
3241#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3242#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3243pub struct InputDeviceRequest {
3244    /// <p>The unique ID for the device.</p>
3245    #[serde(rename = "Id")]
3246    #[serde(skip_serializing_if = "Option::is_none")]
3247    pub id: Option<String>,
3248}
3249
3250/// <p>Settings for an input device.</p>
3251#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3252pub struct InputDeviceSettings {
3253    /// <p>The unique ID for the device.</p>
3254    #[serde(rename = "Id")]
3255    #[serde(skip_serializing_if = "Option::is_none")]
3256    pub id: Option<String>,
3257}
3258
3259/// <p>Details of the input device.</p>
3260#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3261#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3262pub struct InputDeviceSummary {
3263    /// <p>The unique ARN of the input device.</p>
3264    #[serde(rename = "Arn")]
3265    #[serde(skip_serializing_if = "Option::is_none")]
3266    pub arn: Option<String>,
3267    /// <p>The state of the connection between the input device and AWS.</p>
3268    #[serde(rename = "ConnectionState")]
3269    #[serde(skip_serializing_if = "Option::is_none")]
3270    pub connection_state: Option<String>,
3271    /// <p>The status of the action to synchronize the device configuration. If you change the configuration of the input device (for example, the maximum bitrate), MediaLive sends the new data to the device. The device might not update itself immediately. SYNCED means the device has updated its configuration. SYNCING means that it has not updated its configuration.</p>
3272    #[serde(rename = "DeviceSettingsSyncState")]
3273    #[serde(skip_serializing_if = "Option::is_none")]
3274    pub device_settings_sync_state: Option<String>,
3275    /// <p>Settings that describe an input device that is type HD.</p>
3276    #[serde(rename = "HdDeviceSettings")]
3277    #[serde(skip_serializing_if = "Option::is_none")]
3278    pub hd_device_settings: Option<InputDeviceHdSettings>,
3279    /// <p>The unique ID of the input device.</p>
3280    #[serde(rename = "Id")]
3281    #[serde(skip_serializing_if = "Option::is_none")]
3282    pub id: Option<String>,
3283    /// <p>The network MAC address of the input device.</p>
3284    #[serde(rename = "MacAddress")]
3285    #[serde(skip_serializing_if = "Option::is_none")]
3286    pub mac_address: Option<String>,
3287    /// <p>A name that you specify for the input device.</p>
3288    #[serde(rename = "Name")]
3289    #[serde(skip_serializing_if = "Option::is_none")]
3290    pub name: Option<String>,
3291    /// <p>Network settings for the input device.</p>
3292    #[serde(rename = "NetworkSettings")]
3293    #[serde(skip_serializing_if = "Option::is_none")]
3294    pub network_settings: Option<InputDeviceNetworkSettings>,
3295    /// <p>The unique serial number of the input device.</p>
3296    #[serde(rename = "SerialNumber")]
3297    #[serde(skip_serializing_if = "Option::is_none")]
3298    pub serial_number: Option<String>,
3299    /// <p>The type of the input device.</p>
3300    #[serde(rename = "Type")]
3301    #[serde(skip_serializing_if = "Option::is_none")]
3302    pub type_: Option<String>,
3303}
3304
3305/// <p>Input Location</p>
3306#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3307pub struct InputLocation {
3308    /// <p>key used to extract the password from EC2 Parameter store</p>
3309    #[serde(rename = "PasswordParam")]
3310    #[serde(skip_serializing_if = "Option::is_none")]
3311    pub password_param: Option<String>,
3312    /// <p>Uniform Resource Identifier - This should be a path to a file accessible to the Live system (eg. a http:// URI) depending on the output type. For example, a RTMP destination should have a uri simliar to: &quot;rtmp://fmsserver/live&quot;.</p>
3313    #[serde(rename = "Uri")]
3314    pub uri: String,
3315    /// <p>Documentation update needed</p>
3316    #[serde(rename = "Username")]
3317    #[serde(skip_serializing_if = "Option::is_none")]
3318    pub username: Option<String>,
3319}
3320
3321/// <p>Input Loss Behavior</p>
3322#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3323pub struct InputLossBehavior {
3324    /// <p>Documentation update needed</p>
3325    #[serde(rename = "BlackFrameMsec")]
3326    #[serde(skip_serializing_if = "Option::is_none")]
3327    pub black_frame_msec: Option<i64>,
3328    /// <p>When input loss image type is &quot;color&quot; this field specifies the color to use. Value: 6 hex characters representing the values of RGB.</p>
3329    #[serde(rename = "InputLossImageColor")]
3330    #[serde(skip_serializing_if = "Option::is_none")]
3331    pub input_loss_image_color: Option<String>,
3332    /// <p>When input loss image type is &quot;slate&quot; these fields specify the parameters for accessing the slate.</p>
3333    #[serde(rename = "InputLossImageSlate")]
3334    #[serde(skip_serializing_if = "Option::is_none")]
3335    pub input_loss_image_slate: Option<InputLocation>,
3336    /// <p>Indicates whether to substitute a solid color or a slate into the output after input loss exceeds blackFrameMsec.</p>
3337    #[serde(rename = "InputLossImageType")]
3338    #[serde(skip_serializing_if = "Option::is_none")]
3339    pub input_loss_image_type: Option<String>,
3340    /// <p>Documentation update needed</p>
3341    #[serde(rename = "RepeatFrameMsec")]
3342    #[serde(skip_serializing_if = "Option::is_none")]
3343    pub repeat_frame_msec: Option<i64>,
3344}
3345
3346/// <p>Action to prepare an input for a future immediate input switch.</p>
3347#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3348pub struct InputPrepareScheduleActionSettings {
3349    /// <p>The name of the input attachment that should be prepared by this action. If no name is provided, the action will stop the most recent prepare (if any) when activated.</p>
3350    #[serde(rename = "InputAttachmentNameReference")]
3351    pub input_attachment_name_reference: String,
3352    /// <p>Settings to let you create a clip of the file input, in order to set up the input to ingest only a portion of the file.</p>
3353    #[serde(rename = "InputClippingSettings")]
3354    #[serde(skip_serializing_if = "Option::is_none")]
3355    pub input_clipping_settings: Option<InputClippingSettings>,
3356    /// <p>The value for the variable portion of the URL for the dynamic input, for this instance of the input. Each time you use the same dynamic input in an input switch action, you can provide a different value, in order to connect the input to a different content source.</p>
3357    #[serde(rename = "UrlPath")]
3358    #[serde(skip_serializing_if = "Option::is_none")]
3359    pub url_path: Option<Vec<String>>,
3360}
3361
3362/// <p>An Input Security Group</p>
3363#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3364#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3365pub struct InputSecurityGroup {
3366    /// <p>Unique ARN of Input Security Group</p>
3367    #[serde(rename = "Arn")]
3368    #[serde(skip_serializing_if = "Option::is_none")]
3369    pub arn: Option<String>,
3370    /// <p>The Id of the Input Security Group</p>
3371    #[serde(rename = "Id")]
3372    #[serde(skip_serializing_if = "Option::is_none")]
3373    pub id: Option<String>,
3374    /// <p>The list of inputs currently using this Input Security Group.</p>
3375    #[serde(rename = "Inputs")]
3376    #[serde(skip_serializing_if = "Option::is_none")]
3377    pub inputs: Option<Vec<String>>,
3378    /// <p>The current state of the Input Security Group.</p>
3379    #[serde(rename = "State")]
3380    #[serde(skip_serializing_if = "Option::is_none")]
3381    pub state: Option<String>,
3382    /// <p>A collection of key-value pairs.</p>
3383    #[serde(rename = "Tags")]
3384    #[serde(skip_serializing_if = "Option::is_none")]
3385    pub tags: Option<::std::collections::HashMap<String, String>>,
3386    /// <p>Whitelist rules and their sync status</p>
3387    #[serde(rename = "WhitelistRules")]
3388    #[serde(skip_serializing_if = "Option::is_none")]
3389    pub whitelist_rules: Option<Vec<InputWhitelistRule>>,
3390}
3391
3392/// <p>Live Event input parameters. There can be multiple inputs in a single Live Event.</p>
3393#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3394pub struct InputSettings {
3395    /// <p>Used to select the audio stream to decode for inputs that have multiple available.</p>
3396    #[serde(rename = "AudioSelectors")]
3397    #[serde(skip_serializing_if = "Option::is_none")]
3398    pub audio_selectors: Option<Vec<AudioSelector>>,
3399    /// <p>Used to select the caption input to use for inputs that have multiple available.</p>
3400    #[serde(rename = "CaptionSelectors")]
3401    #[serde(skip_serializing_if = "Option::is_none")]
3402    pub caption_selectors: Option<Vec<CaptionSelector>>,
3403    /// <p>Enable or disable the deblock filter when filtering.</p>
3404    #[serde(rename = "DeblockFilter")]
3405    #[serde(skip_serializing_if = "Option::is_none")]
3406    pub deblock_filter: Option<String>,
3407    /// <p>Enable or disable the denoise filter when filtering.</p>
3408    #[serde(rename = "DenoiseFilter")]
3409    #[serde(skip_serializing_if = "Option::is_none")]
3410    pub denoise_filter: Option<String>,
3411    /// <p>Adjusts the magnitude of filtering from 1 (minimal) to 5 (strongest).</p>
3412    #[serde(rename = "FilterStrength")]
3413    #[serde(skip_serializing_if = "Option::is_none")]
3414    pub filter_strength: Option<i64>,
3415    /// <p>Turns on the filter for this input. MPEG-2 inputs have the deblocking filter enabled by default.
3416    /// 1) auto - filtering will be applied depending on input type/quality
3417    /// 2) disabled - no filtering will be applied to the input
3418    /// 3) forced - filtering will be applied regardless of input type</p>
3419    #[serde(rename = "InputFilter")]
3420    #[serde(skip_serializing_if = "Option::is_none")]
3421    pub input_filter: Option<String>,
3422    /// <p>Input settings.</p>
3423    #[serde(rename = "NetworkInputSettings")]
3424    #[serde(skip_serializing_if = "Option::is_none")]
3425    pub network_input_settings: Option<NetworkInputSettings>,
3426    /// <p>Specifies whether to extract applicable ancillary data from a SMPTE-2038 source in this input. Applicable data types are captions, timecode, AFD, and SCTE-104 messages.
3427    /// - PREFER: Extract from SMPTE-2038 if present in this input, otherwise extract from another source (if any).
3428    /// - IGNORE: Never extract any ancillary data from SMPTE-2038.</p>
3429    #[serde(rename = "Smpte2038DataPreference")]
3430    #[serde(skip_serializing_if = "Option::is_none")]
3431    pub smpte_2038_data_preference: Option<String>,
3432    /// <p>Loop input if it is a file. This allows a file input to be streamed indefinitely.</p>
3433    #[serde(rename = "SourceEndBehavior")]
3434    #[serde(skip_serializing_if = "Option::is_none")]
3435    pub source_end_behavior: Option<String>,
3436    /// <p>Informs which video elementary stream to decode for input types that have multiple available.</p>
3437    #[serde(rename = "VideoSelector")]
3438    #[serde(skip_serializing_if = "Option::is_none")]
3439    pub video_selector: Option<VideoSelector>,
3440}
3441
3442/// <p>The settings for a PULL type input.</p>
3443#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3444#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3445pub struct InputSource {
3446    /// <p>The key used to extract the password from EC2 Parameter store.</p>
3447    #[serde(rename = "PasswordParam")]
3448    #[serde(skip_serializing_if = "Option::is_none")]
3449    pub password_param: Option<String>,
3450    /// <p>This represents the customer&#39;s source URL where stream is
3451    /// pulled from.</p>
3452    #[serde(rename = "Url")]
3453    #[serde(skip_serializing_if = "Option::is_none")]
3454    pub url: Option<String>,
3455    /// <p>The username for the input source.</p>
3456    #[serde(rename = "Username")]
3457    #[serde(skip_serializing_if = "Option::is_none")]
3458    pub username: Option<String>,
3459}
3460
3461/// <p>Settings for for a PULL type input.</p>
3462#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3463#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3464pub struct InputSourceRequest {
3465    /// <p>The key used to extract the password from EC2 Parameter store.</p>
3466    #[serde(rename = "PasswordParam")]
3467    #[serde(skip_serializing_if = "Option::is_none")]
3468    pub password_param: Option<String>,
3469    /// <p>This represents the customer&#39;s source URL where stream is
3470    /// pulled from.</p>
3471    #[serde(rename = "Url")]
3472    #[serde(skip_serializing_if = "Option::is_none")]
3473    pub url: Option<String>,
3474    /// <p>The username for the input source.</p>
3475    #[serde(rename = "Username")]
3476    #[serde(skip_serializing_if = "Option::is_none")]
3477    pub username: Option<String>,
3478}
3479
3480/// <p>Placeholder documentation for InputSpecification</p>
3481#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3482pub struct InputSpecification {
3483    /// <p>Input codec</p>
3484    #[serde(rename = "Codec")]
3485    #[serde(skip_serializing_if = "Option::is_none")]
3486    pub codec: Option<String>,
3487    /// <p>Maximum input bitrate, categorized coarsely</p>
3488    #[serde(rename = "MaximumBitrate")]
3489    #[serde(skip_serializing_if = "Option::is_none")]
3490    pub maximum_bitrate: Option<String>,
3491    /// <p>Input resolution, categorized coarsely</p>
3492    #[serde(rename = "Resolution")]
3493    #[serde(skip_serializing_if = "Option::is_none")]
3494    pub resolution: Option<String>,
3495}
3496
3497/// <p>Settings for the &quot;switch input&quot; action: to switch from ingesting one input to ingesting another input.</p>
3498#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3499pub struct InputSwitchScheduleActionSettings {
3500    /// <p>The name of the input attachment (not the name of the input!) to switch to. The name is specified in the channel configuration.</p>
3501    #[serde(rename = "InputAttachmentNameReference")]
3502    pub input_attachment_name_reference: String,
3503    /// <p>Settings to let you create a clip of the file input, in order to set up the input to ingest only a portion of the file.</p>
3504    #[serde(rename = "InputClippingSettings")]
3505    #[serde(skip_serializing_if = "Option::is_none")]
3506    pub input_clipping_settings: Option<InputClippingSettings>,
3507    /// <p>The value for the variable portion of the URL for the dynamic input, for this instance of the input. Each time you use the same dynamic input in an input switch action, you can provide a different value, in order to connect the input to a different content source.</p>
3508    #[serde(rename = "UrlPath")]
3509    #[serde(skip_serializing_if = "Option::is_none")]
3510    pub url_path: Option<Vec<String>>,
3511}
3512
3513/// <p>Settings for a private VPC Input.
3514/// When this property is specified, the input destination addresses will be created in a VPC rather than with public Internet addresses.
3515/// This property requires setting the roleArn property on Input creation.
3516/// Not compatible with the inputSecurityGroups property.</p>
3517#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3518#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3519pub struct InputVpcRequest {
3520    /// <p>A list of up to 5 EC2 VPC security group IDs to attach to the Input VPC network interfaces.
3521    /// Requires subnetIds. If none are specified then the VPC default security group will be used.</p>
3522    #[serde(rename = "SecurityGroupIds")]
3523    #[serde(skip_serializing_if = "Option::is_none")]
3524    pub security_group_ids: Option<Vec<String>>,
3525    /// <p>A list of 2 VPC subnet IDs from the same VPC.
3526    /// Subnet IDs must be mapped to two unique availability zones (AZ).</p>
3527    #[serde(rename = "SubnetIds")]
3528    pub subnet_ids: Vec<String>,
3529}
3530
3531/// <p>Whitelist rule</p>
3532#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3533#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3534pub struct InputWhitelistRule {
3535    /// <p>The IPv4 CIDR that&#39;s whitelisted.</p>
3536    #[serde(rename = "Cidr")]
3537    #[serde(skip_serializing_if = "Option::is_none")]
3538    pub cidr: Option<String>,
3539}
3540
3541/// <p>An IPv4 CIDR to whitelist.</p>
3542#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3543#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3544pub struct InputWhitelistRuleCidr {
3545    /// <p>The IPv4 CIDR to whitelist.</p>
3546    #[serde(rename = "Cidr")]
3547    #[serde(skip_serializing_if = "Option::is_none")]
3548    pub cidr: Option<String>,
3549}
3550
3551/// <p>Key Provider Settings</p>
3552#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3553pub struct KeyProviderSettings {
3554    #[serde(rename = "StaticKeySettings")]
3555    #[serde(skip_serializing_if = "Option::is_none")]
3556    pub static_key_settings: Option<StaticKeySettings>,
3557}
3558
3559/// <p>Placeholder documentation for ListChannelsRequest</p>
3560#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3561#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3562pub struct ListChannelsRequest {
3563    #[serde(rename = "MaxResults")]
3564    #[serde(skip_serializing_if = "Option::is_none")]
3565    pub max_results: Option<i64>,
3566    #[serde(rename = "NextToken")]
3567    #[serde(skip_serializing_if = "Option::is_none")]
3568    pub next_token: Option<String>,
3569}
3570
3571/// <p>Placeholder documentation for ListChannelsResponse</p>
3572#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3573#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3574pub struct ListChannelsResponse {
3575    #[serde(rename = "Channels")]
3576    #[serde(skip_serializing_if = "Option::is_none")]
3577    pub channels: Option<Vec<ChannelSummary>>,
3578    #[serde(rename = "NextToken")]
3579    #[serde(skip_serializing_if = "Option::is_none")]
3580    pub next_token: Option<String>,
3581}
3582
3583/// <p>Placeholder documentation for ListInputDevicesRequest</p>
3584#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3585#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3586pub struct ListInputDevicesRequest {
3587    #[serde(rename = "MaxResults")]
3588    #[serde(skip_serializing_if = "Option::is_none")]
3589    pub max_results: Option<i64>,
3590    #[serde(rename = "NextToken")]
3591    #[serde(skip_serializing_if = "Option::is_none")]
3592    pub next_token: Option<String>,
3593}
3594
3595/// <p>Placeholder documentation for ListInputDevicesResponse</p>
3596#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3597#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3598pub struct ListInputDevicesResponse {
3599    /// <p>The list of input devices.</p>
3600    #[serde(rename = "InputDevices")]
3601    #[serde(skip_serializing_if = "Option::is_none")]
3602    pub input_devices: Option<Vec<InputDeviceSummary>>,
3603    /// <p>A token to get additional list results.</p>
3604    #[serde(rename = "NextToken")]
3605    #[serde(skip_serializing_if = "Option::is_none")]
3606    pub next_token: Option<String>,
3607}
3608
3609/// <p>Placeholder documentation for ListInputSecurityGroupsRequest</p>
3610#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3611#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3612pub struct ListInputSecurityGroupsRequest {
3613    #[serde(rename = "MaxResults")]
3614    #[serde(skip_serializing_if = "Option::is_none")]
3615    pub max_results: Option<i64>,
3616    #[serde(rename = "NextToken")]
3617    #[serde(skip_serializing_if = "Option::is_none")]
3618    pub next_token: Option<String>,
3619}
3620
3621/// <p>Placeholder documentation for ListInputSecurityGroupsResponse</p>
3622#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3623#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3624pub struct ListInputSecurityGroupsResponse {
3625    /// <p>List of input security groups</p>
3626    #[serde(rename = "InputSecurityGroups")]
3627    #[serde(skip_serializing_if = "Option::is_none")]
3628    pub input_security_groups: Option<Vec<InputSecurityGroup>>,
3629    #[serde(rename = "NextToken")]
3630    #[serde(skip_serializing_if = "Option::is_none")]
3631    pub next_token: Option<String>,
3632}
3633
3634/// <p>Placeholder documentation for ListInputsRequest</p>
3635#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3636#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3637pub struct ListInputsRequest {
3638    #[serde(rename = "MaxResults")]
3639    #[serde(skip_serializing_if = "Option::is_none")]
3640    pub max_results: Option<i64>,
3641    #[serde(rename = "NextToken")]
3642    #[serde(skip_serializing_if = "Option::is_none")]
3643    pub next_token: Option<String>,
3644}
3645
3646/// <p>Placeholder documentation for ListInputsResponse</p>
3647#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3648#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3649pub struct ListInputsResponse {
3650    #[serde(rename = "Inputs")]
3651    #[serde(skip_serializing_if = "Option::is_none")]
3652    pub inputs: Option<Vec<Input>>,
3653    #[serde(rename = "NextToken")]
3654    #[serde(skip_serializing_if = "Option::is_none")]
3655    pub next_token: Option<String>,
3656}
3657
3658/// <p>Placeholder documentation for ListMultiplexProgramsRequest</p>
3659#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3660#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3661pub struct ListMultiplexProgramsRequest {
3662    /// <p>The maximum number of items to return.</p>
3663    #[serde(rename = "MaxResults")]
3664    #[serde(skip_serializing_if = "Option::is_none")]
3665    pub max_results: Option<i64>,
3666    /// <p>The ID of the multiplex that the programs belong to.</p>
3667    #[serde(rename = "MultiplexId")]
3668    pub multiplex_id: String,
3669    /// <p>The token to retrieve the next page of results.</p>
3670    #[serde(rename = "NextToken")]
3671    #[serde(skip_serializing_if = "Option::is_none")]
3672    pub next_token: Option<String>,
3673}
3674
3675/// <p>Placeholder documentation for ListMultiplexProgramsResponse</p>
3676#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3677#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3678pub struct ListMultiplexProgramsResponse {
3679    /// <p>List of multiplex programs.</p>
3680    #[serde(rename = "MultiplexPrograms")]
3681    #[serde(skip_serializing_if = "Option::is_none")]
3682    pub multiplex_programs: Option<Vec<MultiplexProgramSummary>>,
3683    /// <p>Token for the next ListMultiplexProgram request.</p>
3684    #[serde(rename = "NextToken")]
3685    #[serde(skip_serializing_if = "Option::is_none")]
3686    pub next_token: Option<String>,
3687}
3688
3689/// <p>Placeholder documentation for ListMultiplexesRequest</p>
3690#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3691#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3692pub struct ListMultiplexesRequest {
3693    /// <p>The maximum number of items to return.</p>
3694    #[serde(rename = "MaxResults")]
3695    #[serde(skip_serializing_if = "Option::is_none")]
3696    pub max_results: Option<i64>,
3697    /// <p>The token to retrieve the next page of results.</p>
3698    #[serde(rename = "NextToken")]
3699    #[serde(skip_serializing_if = "Option::is_none")]
3700    pub next_token: Option<String>,
3701}
3702
3703/// <p>Placeholder documentation for ListMultiplexesResponse</p>
3704#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3705#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3706pub struct ListMultiplexesResponse {
3707    /// <p>List of multiplexes.</p>
3708    #[serde(rename = "Multiplexes")]
3709    #[serde(skip_serializing_if = "Option::is_none")]
3710    pub multiplexes: Option<Vec<MultiplexSummary>>,
3711    /// <p>Token for the next ListMultiplexes request.</p>
3712    #[serde(rename = "NextToken")]
3713    #[serde(skip_serializing_if = "Option::is_none")]
3714    pub next_token: Option<String>,
3715}
3716
3717/// <p>Placeholder documentation for ListOfferingsRequest</p>
3718#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3719#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3720pub struct ListOfferingsRequest {
3721    /// <p>Filter by channel class, &#39;STANDARD&#39; or &#39;SINGLE_PIPELINE&#39;</p>
3722    #[serde(rename = "ChannelClass")]
3723    #[serde(skip_serializing_if = "Option::is_none")]
3724    pub channel_class: Option<String>,
3725    /// <p>Filter to offerings that match the configuration of an existing channel, e.g. &#39;2345678&#39; (a channel ID)</p>
3726    #[serde(rename = "ChannelConfiguration")]
3727    #[serde(skip_serializing_if = "Option::is_none")]
3728    pub channel_configuration: Option<String>,
3729    /// <p>Filter by codec, &#39;AVC&#39;, &#39;HEVC&#39;, &#39;MPEG2&#39;, or &#39;AUDIO&#39;</p>
3730    #[serde(rename = "Codec")]
3731    #[serde(skip_serializing_if = "Option::is_none")]
3732    pub codec: Option<String>,
3733    /// <p>Filter by offering duration, e.g. &#39;12&#39;</p>
3734    #[serde(rename = "Duration")]
3735    #[serde(skip_serializing_if = "Option::is_none")]
3736    pub duration: Option<String>,
3737    #[serde(rename = "MaxResults")]
3738    #[serde(skip_serializing_if = "Option::is_none")]
3739    pub max_results: Option<i64>,
3740    /// <p>Filter by bitrate, &#39;MAX<em>10</em>MBPS&#39;, &#39;MAX<em>20</em>MBPS&#39;, or &#39;MAX<em>50</em>MBPS&#39;</p>
3741    #[serde(rename = "MaximumBitrate")]
3742    #[serde(skip_serializing_if = "Option::is_none")]
3743    pub maximum_bitrate: Option<String>,
3744    /// <p>Filter by framerate, &#39;MAX<em>30</em>FPS&#39; or &#39;MAX<em>60</em>FPS&#39;</p>
3745    #[serde(rename = "MaximumFramerate")]
3746    #[serde(skip_serializing_if = "Option::is_none")]
3747    pub maximum_framerate: Option<String>,
3748    #[serde(rename = "NextToken")]
3749    #[serde(skip_serializing_if = "Option::is_none")]
3750    pub next_token: Option<String>,
3751    /// <p>Filter by resolution, &#39;SD&#39;, &#39;HD&#39;, &#39;FHD&#39;, or &#39;UHD&#39;</p>
3752    #[serde(rename = "Resolution")]
3753    #[serde(skip_serializing_if = "Option::is_none")]
3754    pub resolution: Option<String>,
3755    /// <p>Filter by resource type, &#39;INPUT&#39;, &#39;OUTPUT&#39;, &#39;MULTIPLEX&#39;, or &#39;CHANNEL&#39;</p>
3756    #[serde(rename = "ResourceType")]
3757    #[serde(skip_serializing_if = "Option::is_none")]
3758    pub resource_type: Option<String>,
3759    /// <p>Filter by special feature, &#39;ADVANCED<em>AUDIO&#39; or &#39;AUDIO</em>NORMALIZATION&#39;</p>
3760    #[serde(rename = "SpecialFeature")]
3761    #[serde(skip_serializing_if = "Option::is_none")]
3762    pub special_feature: Option<String>,
3763    /// <p>Filter by video quality, &#39;STANDARD&#39;, &#39;ENHANCED&#39;, or &#39;PREMIUM&#39;</p>
3764    #[serde(rename = "VideoQuality")]
3765    #[serde(skip_serializing_if = "Option::is_none")]
3766    pub video_quality: Option<String>,
3767}
3768
3769/// <p>Placeholder documentation for ListOfferingsResponse</p>
3770#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3771#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3772pub struct ListOfferingsResponse {
3773    /// <p>Token to retrieve the next page of results</p>
3774    #[serde(rename = "NextToken")]
3775    #[serde(skip_serializing_if = "Option::is_none")]
3776    pub next_token: Option<String>,
3777    /// <p>List of offerings</p>
3778    #[serde(rename = "Offerings")]
3779    #[serde(skip_serializing_if = "Option::is_none")]
3780    pub offerings: Option<Vec<Offering>>,
3781}
3782
3783/// <p>Placeholder documentation for ListReservationsRequest</p>
3784#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3785#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3786pub struct ListReservationsRequest {
3787    /// <p>Filter by channel class, &#39;STANDARD&#39; or &#39;SINGLE_PIPELINE&#39;</p>
3788    #[serde(rename = "ChannelClass")]
3789    #[serde(skip_serializing_if = "Option::is_none")]
3790    pub channel_class: Option<String>,
3791    /// <p>Filter by codec, &#39;AVC&#39;, &#39;HEVC&#39;, &#39;MPEG2&#39;, or &#39;AUDIO&#39;</p>
3792    #[serde(rename = "Codec")]
3793    #[serde(skip_serializing_if = "Option::is_none")]
3794    pub codec: Option<String>,
3795    #[serde(rename = "MaxResults")]
3796    #[serde(skip_serializing_if = "Option::is_none")]
3797    pub max_results: Option<i64>,
3798    /// <p>Filter by bitrate, &#39;MAX<em>10</em>MBPS&#39;, &#39;MAX<em>20</em>MBPS&#39;, or &#39;MAX<em>50</em>MBPS&#39;</p>
3799    #[serde(rename = "MaximumBitrate")]
3800    #[serde(skip_serializing_if = "Option::is_none")]
3801    pub maximum_bitrate: Option<String>,
3802    /// <p>Filter by framerate, &#39;MAX<em>30</em>FPS&#39; or &#39;MAX<em>60</em>FPS&#39;</p>
3803    #[serde(rename = "MaximumFramerate")]
3804    #[serde(skip_serializing_if = "Option::is_none")]
3805    pub maximum_framerate: Option<String>,
3806    #[serde(rename = "NextToken")]
3807    #[serde(skip_serializing_if = "Option::is_none")]
3808    pub next_token: Option<String>,
3809    /// <p>Filter by resolution, &#39;SD&#39;, &#39;HD&#39;, &#39;FHD&#39;, or &#39;UHD&#39;</p>
3810    #[serde(rename = "Resolution")]
3811    #[serde(skip_serializing_if = "Option::is_none")]
3812    pub resolution: Option<String>,
3813    /// <p>Filter by resource type, &#39;INPUT&#39;, &#39;OUTPUT&#39;, &#39;MULTIPLEX&#39;, or &#39;CHANNEL&#39;</p>
3814    #[serde(rename = "ResourceType")]
3815    #[serde(skip_serializing_if = "Option::is_none")]
3816    pub resource_type: Option<String>,
3817    /// <p>Filter by special feature, &#39;ADVANCED<em>AUDIO&#39; or &#39;AUDIO</em>NORMALIZATION&#39;</p>
3818    #[serde(rename = "SpecialFeature")]
3819    #[serde(skip_serializing_if = "Option::is_none")]
3820    pub special_feature: Option<String>,
3821    /// <p>Filter by video quality, &#39;STANDARD&#39;, &#39;ENHANCED&#39;, or &#39;PREMIUM&#39;</p>
3822    #[serde(rename = "VideoQuality")]
3823    #[serde(skip_serializing_if = "Option::is_none")]
3824    pub video_quality: Option<String>,
3825}
3826
3827/// <p>Placeholder documentation for ListReservationsResponse</p>
3828#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3829#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3830pub struct ListReservationsResponse {
3831    /// <p>Token to retrieve the next page of results</p>
3832    #[serde(rename = "NextToken")]
3833    #[serde(skip_serializing_if = "Option::is_none")]
3834    pub next_token: Option<String>,
3835    /// <p>List of reservations</p>
3836    #[serde(rename = "Reservations")]
3837    #[serde(skip_serializing_if = "Option::is_none")]
3838    pub reservations: Option<Vec<Reservation>>,
3839}
3840
3841/// <p>Placeholder documentation for ListTagsForResourceRequest</p>
3842#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3843#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3844pub struct ListTagsForResourceRequest {
3845    #[serde(rename = "ResourceArn")]
3846    pub resource_arn: String,
3847}
3848
3849/// <p>Placeholder documentation for ListTagsForResourceResponse</p>
3850#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3851#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3852pub struct ListTagsForResourceResponse {
3853    #[serde(rename = "Tags")]
3854    #[serde(skip_serializing_if = "Option::is_none")]
3855    pub tags: Option<::std::collections::HashMap<String, String>>,
3856}
3857
3858/// <p>M2ts Settings</p>
3859#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3860pub struct M2tsSettings {
3861    /// <p>When set to drop, output audio streams will be removed from the program if the selected input audio stream is removed from the input. This allows the output audio configuration to dynamically change based on input configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when not connected to an active input stream.</p>
3862    #[serde(rename = "AbsentInputAudioBehavior")]
3863    #[serde(skip_serializing_if = "Option::is_none")]
3864    pub absent_input_audio_behavior: Option<String>,
3865    /// <p>When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.</p>
3866    #[serde(rename = "Arib")]
3867    #[serde(skip_serializing_if = "Option::is_none")]
3868    pub arib: Option<String>,
3869    /// <p>Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
3870    #[serde(rename = "AribCaptionsPid")]
3871    #[serde(skip_serializing_if = "Option::is_none")]
3872    pub arib_captions_pid: Option<String>,
3873    /// <p>If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids.  If set to useConfigured, ARIB Captions will be on the configured pid number.</p>
3874    #[serde(rename = "AribCaptionsPidControl")]
3875    #[serde(skip_serializing_if = "Option::is_none")]
3876    pub arib_captions_pid_control: Option<String>,
3877    /// <p>When set to dvb, uses DVB buffer model for Dolby Digital audio.  When set to atsc, the ATSC model is used.</p>
3878    #[serde(rename = "AudioBufferModel")]
3879    #[serde(skip_serializing_if = "Option::is_none")]
3880    pub audio_buffer_model: Option<String>,
3881    /// <p>The number of audio frames to insert for each PES packet.</p>
3882    #[serde(rename = "AudioFramesPerPes")]
3883    #[serde(skip_serializing_if = "Option::is_none")]
3884    pub audio_frames_per_pes: Option<i64>,
3885    /// <p>Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).</p>
3886    #[serde(rename = "AudioPids")]
3887    #[serde(skip_serializing_if = "Option::is_none")]
3888    pub audio_pids: Option<String>,
3889    /// <p>When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses stream type = 0x06.</p>
3890    #[serde(rename = "AudioStreamType")]
3891    #[serde(skip_serializing_if = "Option::is_none")]
3892    pub audio_stream_type: Option<String>,
3893    /// <p>The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically determine the appropriate bitrate.</p>
3894    #[serde(rename = "Bitrate")]
3895    #[serde(skip_serializing_if = "Option::is_none")]
3896    pub bitrate: Option<i64>,
3897    /// <p>If set to multiplex, use multiplex buffer model for accurate interleaving.  Setting to bufferModel to none can lead to lower latency, but low-memory devices may not be able to play back the stream without interruptions.</p>
3898    #[serde(rename = "BufferModel")]
3899    #[serde(skip_serializing_if = "Option::is_none")]
3900    pub buffer_model: Option<String>,
3901    /// <p>When set to enabled, generates captionServiceDescriptor in PMT.</p>
3902    #[serde(rename = "CcDescriptor")]
3903    #[serde(skip_serializing_if = "Option::is_none")]
3904    pub cc_descriptor: Option<String>,
3905    /// <p>Inserts DVB Network Information Table (NIT) at the specified table repetition interval.</p>
3906    #[serde(rename = "DvbNitSettings")]
3907    #[serde(skip_serializing_if = "Option::is_none")]
3908    pub dvb_nit_settings: Option<DvbNitSettings>,
3909    /// <p>Inserts DVB Service Description Table (SDT) at the specified table repetition interval.</p>
3910    #[serde(rename = "DvbSdtSettings")]
3911    #[serde(skip_serializing_if = "Option::is_none")]
3912    pub dvb_sdt_settings: Option<DvbSdtSettings>,
3913    /// <p>Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.  Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).</p>
3914    #[serde(rename = "DvbSubPids")]
3915    #[serde(skip_serializing_if = "Option::is_none")]
3916    pub dvb_sub_pids: Option<String>,
3917    /// <p>Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.</p>
3918    #[serde(rename = "DvbTdtSettings")]
3919    #[serde(skip_serializing_if = "Option::is_none")]
3920    pub dvb_tdt_settings: Option<DvbTdtSettings>,
3921    /// <p>Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
3922    #[serde(rename = "DvbTeletextPid")]
3923    #[serde(skip_serializing_if = "Option::is_none")]
3924    pub dvb_teletext_pid: Option<String>,
3925    /// <p>If set to passthrough, passes any EBIF data from the input source to this output.</p>
3926    #[serde(rename = "Ebif")]
3927    #[serde(skip_serializing_if = "Option::is_none")]
3928    pub ebif: Option<String>,
3929    /// <p>When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The interval between these additional markers will be fixed, and will be slightly shorter than the video EBP marker interval. Only available when EBP Cablelabs segmentation markers are selected.  Partitions 1 and 2 will always follow the video interval.</p>
3930    #[serde(rename = "EbpAudioInterval")]
3931    #[serde(skip_serializing_if = "Option::is_none")]
3932    pub ebp_audio_interval: Option<String>,
3933    /// <p>When set, enforces that Encoder Boundary Points do not come within the specified time interval of each other by looking ahead at input video. If another EBP is going to come in within the specified time interval, the current EBP is not emitted, and the segment is &quot;stretched&quot; to the next marker.  The lookahead value does not add latency to the system. The Live Event must be configured elsewhere to create sufficient latency to make the lookahead accurate.</p>
3934    #[serde(rename = "EbpLookaheadMs")]
3935    #[serde(skip_serializing_if = "Option::is_none")]
3936    pub ebp_lookahead_ms: Option<i64>,
3937    /// <p>Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the video PID and all audio PIDs.  If set to videoPid, EBP markers will be placed on only the video PID.</p>
3938    #[serde(rename = "EbpPlacement")]
3939    #[serde(skip_serializing_if = "Option::is_none")]
3940    pub ebp_placement: Option<String>,
3941    /// <p>This field is unused and deprecated.</p>
3942    #[serde(rename = "EcmPid")]
3943    #[serde(skip_serializing_if = "Option::is_none")]
3944    pub ecm_pid: Option<String>,
3945    /// <p>Include or exclude the ES Rate field in the PES header.</p>
3946    #[serde(rename = "EsRateInPes")]
3947    #[serde(skip_serializing_if = "Option::is_none")]
3948    pub es_rate_in_pes: Option<String>,
3949    /// <p>Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
3950    #[serde(rename = "EtvPlatformPid")]
3951    #[serde(skip_serializing_if = "Option::is_none")]
3952    pub etv_platform_pid: Option<String>,
3953    /// <p>Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
3954    #[serde(rename = "EtvSignalPid")]
3955    #[serde(skip_serializing_if = "Option::is_none")]
3956    pub etv_signal_pid: Option<String>,
3957    /// <p>The length in seconds of each fragment. Only used with EBP markers.</p>
3958    #[serde(rename = "FragmentTime")]
3959    #[serde(skip_serializing_if = "Option::is_none")]
3960    pub fragment_time: Option<f64>,
3961    /// <p>If set to passthrough, passes any KLV data from the input source to this output.</p>
3962    #[serde(rename = "Klv")]
3963    #[serde(skip_serializing_if = "Option::is_none")]
3964    pub klv: Option<String>,
3965    /// <p>Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.  Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).</p>
3966    #[serde(rename = "KlvDataPids")]
3967    #[serde(skip_serializing_if = "Option::is_none")]
3968    pub klv_data_pids: Option<String>,
3969    /// <p>If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an equivalent ID3 tag will be inserted in the output.</p>
3970    #[serde(rename = "NielsenId3Behavior")]
3971    #[serde(skip_serializing_if = "Option::is_none")]
3972    pub nielsen_id_3_behavior: Option<String>,
3973    /// <p>Value in bits per second of extra null packets to insert into the transport stream. This can be used if a downstream encryption system requires periodic null packets.</p>
3974    #[serde(rename = "NullPacketBitrate")]
3975    #[serde(skip_serializing_if = "Option::is_none")]
3976    pub null_packet_bitrate: Option<f64>,
3977    /// <p>The number of milliseconds between instances of this table in the output transport stream.  Valid values are 0, 10..1000.</p>
3978    #[serde(rename = "PatInterval")]
3979    #[serde(skip_serializing_if = "Option::is_none")]
3980    pub pat_interval: Option<i64>,
3981    /// <p>When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary Stream (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary stream.</p>
3982    #[serde(rename = "PcrControl")]
3983    #[serde(skip_serializing_if = "Option::is_none")]
3984    pub pcr_control: Option<String>,
3985    /// <p>Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream.</p>
3986    #[serde(rename = "PcrPeriod")]
3987    #[serde(skip_serializing_if = "Option::is_none")]
3988    pub pcr_period: Option<i64>,
3989    /// <p>Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
3990    #[serde(rename = "PcrPid")]
3991    #[serde(skip_serializing_if = "Option::is_none")]
3992    pub pcr_pid: Option<String>,
3993    /// <p>The number of milliseconds between instances of this table in the output transport stream. Valid values are 0, 10..1000.</p>
3994    #[serde(rename = "PmtInterval")]
3995    #[serde(skip_serializing_if = "Option::is_none")]
3996    pub pmt_interval: Option<i64>,
3997    /// <p>Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a decimal or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
3998    #[serde(rename = "PmtPid")]
3999    #[serde(skip_serializing_if = "Option::is_none")]
4000    pub pmt_pid: Option<String>,
4001    /// <p>The value of the program number field in the Program Map Table.</p>
4002    #[serde(rename = "ProgramNum")]
4003    #[serde(skip_serializing_if = "Option::is_none")]
4004    pub program_num: Option<i64>,
4005    /// <p>When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate setting acts as the maximum bitrate when vbr is set.</p>
4006    #[serde(rename = "RateMode")]
4007    #[serde(skip_serializing_if = "Option::is_none")]
4008    pub rate_mode: Option<String>,
4009    /// <p>Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.  Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).</p>
4010    #[serde(rename = "Scte27Pids")]
4011    #[serde(skip_serializing_if = "Option::is_none")]
4012    pub scte_27_pids: Option<String>,
4013    /// <p>Optionally pass SCTE-35 signals from the input source to this output.</p>
4014    #[serde(rename = "Scte35Control")]
4015    #[serde(skip_serializing_if = "Option::is_none")]
4016    pub scte_35_control: Option<String>,
4017    /// <p>Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
4018    #[serde(rename = "Scte35Pid")]
4019    #[serde(skip_serializing_if = "Option::is_none")]
4020    pub scte_35_pid: Option<String>,
4021    /// <p>Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator bit in the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data bytes. psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point information to the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds Encoder Boundary Point information to the adaptation field using a legacy proprietary format.</p>
4022    #[serde(rename = "SegmentationMarkers")]
4023    #[serde(skip_serializing_if = "Option::is_none")]
4024    pub segmentation_markers: Option<String>,
4025    /// <p>The segmentation style parameter controls how segmentation markers are inserted into the transport stream. With avails, it is possible that segments may be truncated, which can influence where future segmentation markers are inserted.</p>
4026    ///
4027    /// <p>When a segmentation style of &quot;resetCadence&quot; is selected and a segment is truncated due to an avail, we will reset the segmentation cadence. This means the subsequent segment will have a duration of $segmentationTime seconds.</p>
4028    ///
4029    /// <p>When a segmentation style of &quot;maintainCadence&quot; is selected and a segment is truncated due to an avail, we will not reset the segmentation cadence. This means the subsequent segment will likely be truncated as well. However, all segments after that will have a duration of $segmentationTime seconds. Note that EBP lookahead is a slight exception to this rule.</p>
4030    #[serde(rename = "SegmentationStyle")]
4031    #[serde(skip_serializing_if = "Option::is_none")]
4032    pub segmentation_style: Option<String>,
4033    /// <p>The length in seconds of each segment. Required unless markers is set to <em>none</em>.</p>
4034    #[serde(rename = "SegmentationTime")]
4035    #[serde(skip_serializing_if = "Option::is_none")]
4036    pub segmentation_time: Option<f64>,
4037    /// <p>When set to passthrough, timed metadata will be passed through from input to output.</p>
4038    #[serde(rename = "TimedMetadataBehavior")]
4039    #[serde(skip_serializing_if = "Option::is_none")]
4040    pub timed_metadata_behavior: Option<String>,
4041    /// <p>Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
4042    #[serde(rename = "TimedMetadataPid")]
4043    #[serde(skip_serializing_if = "Option::is_none")]
4044    pub timed_metadata_pid: Option<String>,
4045    /// <p>The value of the transport stream ID field in the Program Map Table.</p>
4046    #[serde(rename = "TransportStreamId")]
4047    #[serde(skip_serializing_if = "Option::is_none")]
4048    pub transport_stream_id: Option<i64>,
4049    /// <p>Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
4050    #[serde(rename = "VideoPid")]
4051    #[serde(skip_serializing_if = "Option::is_none")]
4052    pub video_pid: Option<String>,
4053}
4054
4055/// <p>Settings information for the .m3u8 container</p>
4056#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4057pub struct M3u8Settings {
4058    /// <p>The number of audio frames to insert for each PES packet.</p>
4059    #[serde(rename = "AudioFramesPerPes")]
4060    #[serde(skip_serializing_if = "Option::is_none")]
4061    pub audio_frames_per_pes: Option<i64>,
4062    /// <p>Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.</p>
4063    #[serde(rename = "AudioPids")]
4064    #[serde(skip_serializing_if = "Option::is_none")]
4065    pub audio_pids: Option<String>,
4066    /// <p>This parameter is unused and deprecated.</p>
4067    #[serde(rename = "EcmPid")]
4068    #[serde(skip_serializing_if = "Option::is_none")]
4069    pub ecm_pid: Option<String>,
4070    /// <p>If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an equivalent ID3 tag will be inserted in the output.</p>
4071    #[serde(rename = "NielsenId3Behavior")]
4072    #[serde(skip_serializing_if = "Option::is_none")]
4073    pub nielsen_id_3_behavior: Option<String>,
4074    /// <p>The number of milliseconds between instances of this table in the output transport stream. A value of &quot;0&quot; writes out the PMT once per segment file.</p>
4075    #[serde(rename = "PatInterval")]
4076    #[serde(skip_serializing_if = "Option::is_none")]
4077    pub pat_interval: Option<i64>,
4078    /// <p>When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary Stream (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary stream.</p>
4079    #[serde(rename = "PcrControl")]
4080    #[serde(skip_serializing_if = "Option::is_none")]
4081    pub pcr_control: Option<String>,
4082    /// <p>Maximum time in milliseconds between Program Clock References (PCRs) inserted into the transport stream.</p>
4083    #[serde(rename = "PcrPeriod")]
4084    #[serde(skip_serializing_if = "Option::is_none")]
4085    pub pcr_period: Option<i64>,
4086    /// <p>Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal value.</p>
4087    #[serde(rename = "PcrPid")]
4088    #[serde(skip_serializing_if = "Option::is_none")]
4089    pub pcr_pid: Option<String>,
4090    /// <p>The number of milliseconds between instances of this table in the output transport stream. A value of &quot;0&quot; writes out the PMT once per segment file.</p>
4091    #[serde(rename = "PmtInterval")]
4092    #[serde(skip_serializing_if = "Option::is_none")]
4093    pub pmt_interval: Option<i64>,
4094    /// <p>Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a decimal or hexadecimal value.</p>
4095    #[serde(rename = "PmtPid")]
4096    #[serde(skip_serializing_if = "Option::is_none")]
4097    pub pmt_pid: Option<String>,
4098    /// <p>The value of the program number field in the Program Map Table.</p>
4099    #[serde(rename = "ProgramNum")]
4100    #[serde(skip_serializing_if = "Option::is_none")]
4101    pub program_num: Option<i64>,
4102    /// <p>If set to passthrough, passes any SCTE-35 signals from the input source to this output.</p>
4103    #[serde(rename = "Scte35Behavior")]
4104    #[serde(skip_serializing_if = "Option::is_none")]
4105    pub scte_35_behavior: Option<String>,
4106    /// <p>Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or hexadecimal value.</p>
4107    #[serde(rename = "Scte35Pid")]
4108    #[serde(skip_serializing_if = "Option::is_none")]
4109    pub scte_35_pid: Option<String>,
4110    /// <p>When set to passthrough, timed metadata is passed through from input to output.</p>
4111    #[serde(rename = "TimedMetadataBehavior")]
4112    #[serde(skip_serializing_if = "Option::is_none")]
4113    pub timed_metadata_behavior: Option<String>,
4114    /// <p>Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal or hexadecimal value.  Valid values are 32 (or 0x20)..8182 (or 0x1ff6).</p>
4115    #[serde(rename = "TimedMetadataPid")]
4116    #[serde(skip_serializing_if = "Option::is_none")]
4117    pub timed_metadata_pid: Option<String>,
4118    /// <p>The value of the transport stream ID field in the Program Map Table.</p>
4119    #[serde(rename = "TransportStreamId")]
4120    #[serde(skip_serializing_if = "Option::is_none")]
4121    pub transport_stream_id: Option<i64>,
4122    /// <p>Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a decimal or hexadecimal value.</p>
4123    #[serde(rename = "VideoPid")]
4124    #[serde(skip_serializing_if = "Option::is_none")]
4125    pub video_pid: Option<String>,
4126}
4127
4128/// <p>The settings for a MediaConnect Flow.</p>
4129#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4130#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4131pub struct MediaConnectFlow {
4132    /// <p>The unique ARN of the MediaConnect Flow being used as a source.</p>
4133    #[serde(rename = "FlowArn")]
4134    #[serde(skip_serializing_if = "Option::is_none")]
4135    pub flow_arn: Option<String>,
4136}
4137
4138/// <p>The settings for a MediaConnect Flow.</p>
4139#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4140#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4141pub struct MediaConnectFlowRequest {
4142    /// <p>The ARN of the MediaConnect Flow that you want to use as a source.</p>
4143    #[serde(rename = "FlowArn")]
4144    #[serde(skip_serializing_if = "Option::is_none")]
4145    pub flow_arn: Option<String>,
4146}
4147
4148/// <p>Media Package Group Settings</p>
4149#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4150pub struct MediaPackageGroupSettings {
4151    /// <p>MediaPackage channel destination.</p>
4152    #[serde(rename = "Destination")]
4153    pub destination: OutputLocationRef,
4154}
4155
4156/// <p>MediaPackage Output Destination Settings</p>
4157#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4158pub struct MediaPackageOutputDestinationSettings {
4159    /// <p>ID of the channel in MediaPackage that is the destination for this output group. You do not need to specify the individual inputs in MediaPackage; MediaLive will handle the connection of the two MediaLive pipelines to the two MediaPackage inputs. The MediaPackage channel and MediaLive channel must be in the same region.</p>
4160    #[serde(rename = "ChannelId")]
4161    #[serde(skip_serializing_if = "Option::is_none")]
4162    pub channel_id: Option<String>,
4163}
4164
4165/// <p>Media Package Output Settings</p>
4166#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4167pub struct MediaPackageOutputSettings {}
4168
4169/// <p>Mp2 Settings</p>
4170#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4171pub struct Mp2Settings {
4172    /// <p>Average bitrate in bits/second.</p>
4173    #[serde(rename = "Bitrate")]
4174    #[serde(skip_serializing_if = "Option::is_none")]
4175    pub bitrate: Option<f64>,
4176    /// <p>The MPEG2 Audio coding mode.  Valid values are codingMode10 (for mono) or codingMode20 (for stereo).</p>
4177    #[serde(rename = "CodingMode")]
4178    #[serde(skip_serializing_if = "Option::is_none")]
4179    pub coding_mode: Option<String>,
4180    /// <p>Sample rate in Hz.</p>
4181    #[serde(rename = "SampleRate")]
4182    #[serde(skip_serializing_if = "Option::is_none")]
4183    pub sample_rate: Option<f64>,
4184}
4185
4186/// <p>Ms Smooth Group Settings</p>
4187#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4188pub struct MsSmoothGroupSettings {
4189    /// <p>The ID to include in each message in the sparse track. Ignored if sparseTrackType is NONE.</p>
4190    #[serde(rename = "AcquisitionPointId")]
4191    #[serde(skip_serializing_if = "Option::is_none")]
4192    pub acquisition_point_id: Option<String>,
4193    /// <p>If set to passthrough for an audio-only MS Smooth output, the fragment absolute time will be set to the current timecode. This option does not write timecodes to the audio elementary stream.</p>
4194    #[serde(rename = "AudioOnlyTimecodeControl")]
4195    #[serde(skip_serializing_if = "Option::is_none")]
4196    pub audio_only_timecode_control: Option<String>,
4197    /// <p>If set to verifyAuthenticity, verify the https certificate chain to a trusted Certificate Authority (CA).  This will cause https outputs to self-signed certificates to fail.</p>
4198    #[serde(rename = "CertificateMode")]
4199    #[serde(skip_serializing_if = "Option::is_none")]
4200    pub certificate_mode: Option<String>,
4201    /// <p>Number of seconds to wait before retrying connection to the IIS server if the connection is lost. Content will be cached during this time and the cache will be be delivered to the IIS server once the connection is re-established.</p>
4202    #[serde(rename = "ConnectionRetryInterval")]
4203    #[serde(skip_serializing_if = "Option::is_none")]
4204    pub connection_retry_interval: Option<i64>,
4205    /// <p>Smooth Streaming publish point on an IIS server. Elemental Live acts as a &quot;Push&quot; encoder to IIS.</p>
4206    #[serde(rename = "Destination")]
4207    pub destination: OutputLocationRef,
4208    /// <p>MS Smooth event ID to be sent to the IIS server.</p>
4209    ///
4210    /// <p>Should only be specified if eventIdMode is set to useConfigured.</p>
4211    #[serde(rename = "EventId")]
4212    #[serde(skip_serializing_if = "Option::is_none")]
4213    pub event_id: Option<String>,
4214    /// <p>Specifies whether or not to send an event ID to the IIS server. If no event ID is sent and the same Live Event is used without changing the publishing point, clients might see cached video from the previous run.</p>
4215    ///
4216    /// <p>Options:
4217    /// - &quot;useConfigured&quot; - use the value provided in eventId
4218    /// - &quot;useTimestamp&quot; - generate and send an event ID based on the current timestamp
4219    /// - &quot;noEventId&quot; - do not send an event ID to the IIS server.</p>
4220    #[serde(rename = "EventIdMode")]
4221    #[serde(skip_serializing_if = "Option::is_none")]
4222    pub event_id_mode: Option<String>,
4223    /// <p>When set to sendEos, send EOS signal to IIS server when stopping the event</p>
4224    #[serde(rename = "EventStopBehavior")]
4225    #[serde(skip_serializing_if = "Option::is_none")]
4226    pub event_stop_behavior: Option<String>,
4227    /// <p>Size in seconds of file cache for streaming outputs.</p>
4228    #[serde(rename = "FilecacheDuration")]
4229    #[serde(skip_serializing_if = "Option::is_none")]
4230    pub filecache_duration: Option<i64>,
4231    /// <p>Length of mp4 fragments to generate (in seconds). Fragment length must be compatible with GOP size and framerate.</p>
4232    #[serde(rename = "FragmentLength")]
4233    #[serde(skip_serializing_if = "Option::is_none")]
4234    pub fragment_length: Option<i64>,
4235    /// <p>Parameter that control output group behavior on input loss.</p>
4236    #[serde(rename = "InputLossAction")]
4237    #[serde(skip_serializing_if = "Option::is_none")]
4238    pub input_loss_action: Option<String>,
4239    /// <p>Number of retry attempts.</p>
4240    #[serde(rename = "NumRetries")]
4241    #[serde(skip_serializing_if = "Option::is_none")]
4242    pub num_retries: Option<i64>,
4243    /// <p>Number of seconds before initiating a restart due to output failure, due to exhausting the numRetries on one segment, or exceeding filecacheDuration.</p>
4244    #[serde(rename = "RestartDelay")]
4245    #[serde(skip_serializing_if = "Option::is_none")]
4246    pub restart_delay: Option<i64>,
4247    /// <p>useInputSegmentation has been deprecated. The configured segment size is always used.</p>
4248    #[serde(rename = "SegmentationMode")]
4249    #[serde(skip_serializing_if = "Option::is_none")]
4250    pub segmentation_mode: Option<String>,
4251    /// <p>Number of milliseconds to delay the output from the second pipeline.</p>
4252    #[serde(rename = "SendDelayMs")]
4253    #[serde(skip_serializing_if = "Option::is_none")]
4254    pub send_delay_ms: Option<i64>,
4255    /// <p>Identifies the type of data to place in the sparse track:
4256    /// - SCTE35: Insert SCTE-35 messages from the source content. With each message, insert an IDR frame to start a new segment.
4257    /// - SCTE35<em>WITHOUT</em>SEGMENTATION: Insert SCTE-35 messages from the source content. With each message, insert an IDR frame but don&#39;t start a new segment.
4258    /// - NONE: Don&#39;t generate a sparse track for any outputs in this output group.</p>
4259    #[serde(rename = "SparseTrackType")]
4260    #[serde(skip_serializing_if = "Option::is_none")]
4261    pub sparse_track_type: Option<String>,
4262    /// <p>When set to send, send stream manifest so publishing point doesn&#39;t start until all streams start.</p>
4263    #[serde(rename = "StreamManifestBehavior")]
4264    #[serde(skip_serializing_if = "Option::is_none")]
4265    pub stream_manifest_behavior: Option<String>,
4266    /// <p>Timestamp offset for the event.  Only used if timestampOffsetMode is set to useConfiguredOffset.</p>
4267    #[serde(rename = "TimestampOffset")]
4268    #[serde(skip_serializing_if = "Option::is_none")]
4269    pub timestamp_offset: Option<String>,
4270    /// <p>Type of timestamp date offset to use.
4271    /// - useEventStartDate: Use the date the event was started as the offset
4272    /// - useConfiguredOffset: Use an explicitly configured date as the offset</p>
4273    #[serde(rename = "TimestampOffsetMode")]
4274    #[serde(skip_serializing_if = "Option::is_none")]
4275    pub timestamp_offset_mode: Option<String>,
4276}
4277
4278/// <p>Ms Smooth Output Settings</p>
4279#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4280pub struct MsSmoothOutputSettings {
4281    /// <p>Only applicable when this output is referencing an H.265 video description.
4282    /// Specifies whether MP4 segments should be packaged as HEV1 or HVC1.</p>
4283    #[serde(rename = "H265PackagingType")]
4284    #[serde(skip_serializing_if = "Option::is_none")]
4285    pub h265_packaging_type: Option<String>,
4286    /// <p>String concatenated to the end of the destination filename.  Required for multiple outputs of the same type.</p>
4287    #[serde(rename = "NameModifier")]
4288    #[serde(skip_serializing_if = "Option::is_none")]
4289    pub name_modifier: Option<String>,
4290}
4291
4292/// <p>The multiplex object.</p>
4293#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4294#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4295pub struct Multiplex {
4296    /// <p>The unique arn of the multiplex.</p>
4297    #[serde(rename = "Arn")]
4298    #[serde(skip_serializing_if = "Option::is_none")]
4299    pub arn: Option<String>,
4300    /// <p>A list of availability zones for the multiplex.</p>
4301    #[serde(rename = "AvailabilityZones")]
4302    #[serde(skip_serializing_if = "Option::is_none")]
4303    pub availability_zones: Option<Vec<String>>,
4304    /// <p>A list of the multiplex output destinations.</p>
4305    #[serde(rename = "Destinations")]
4306    #[serde(skip_serializing_if = "Option::is_none")]
4307    pub destinations: Option<Vec<MultiplexOutputDestination>>,
4308    /// <p>The unique id of the multiplex.</p>
4309    #[serde(rename = "Id")]
4310    #[serde(skip_serializing_if = "Option::is_none")]
4311    pub id: Option<String>,
4312    /// <p>Configuration for a multiplex event.</p>
4313    #[serde(rename = "MultiplexSettings")]
4314    #[serde(skip_serializing_if = "Option::is_none")]
4315    pub multiplex_settings: Option<MultiplexSettings>,
4316    /// <p>The name of the multiplex.</p>
4317    #[serde(rename = "Name")]
4318    #[serde(skip_serializing_if = "Option::is_none")]
4319    pub name: Option<String>,
4320    /// <p>The number of currently healthy pipelines.</p>
4321    #[serde(rename = "PipelinesRunningCount")]
4322    #[serde(skip_serializing_if = "Option::is_none")]
4323    pub pipelines_running_count: Option<i64>,
4324    /// <p>The number of programs in the multiplex.</p>
4325    #[serde(rename = "ProgramCount")]
4326    #[serde(skip_serializing_if = "Option::is_none")]
4327    pub program_count: Option<i64>,
4328    /// <p>The current state of the multiplex.</p>
4329    #[serde(rename = "State")]
4330    #[serde(skip_serializing_if = "Option::is_none")]
4331    pub state: Option<String>,
4332    /// <p>A collection of key-value pairs.</p>
4333    #[serde(rename = "Tags")]
4334    #[serde(skip_serializing_if = "Option::is_none")]
4335    pub tags: Option<::std::collections::HashMap<String, String>>,
4336}
4337
4338/// <p>Multiplex Group Settings</p>
4339#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4340pub struct MultiplexGroupSettings {}
4341
4342/// <p>Multiplex MediaConnect output destination settings.</p>
4343#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4344#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4345pub struct MultiplexMediaConnectOutputDestinationSettings {
4346    /// <p>The MediaConnect entitlement ARN available as a Flow source.</p>
4347    #[serde(rename = "EntitlementArn")]
4348    #[serde(skip_serializing_if = "Option::is_none")]
4349    pub entitlement_arn: Option<String>,
4350}
4351
4352/// <p>Multiplex output destination settings</p>
4353#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4354#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4355pub struct MultiplexOutputDestination {
4356    /// <p>Multiplex MediaConnect output destination settings.</p>
4357    #[serde(rename = "MediaConnectSettings")]
4358    #[serde(skip_serializing_if = "Option::is_none")]
4359    pub media_connect_settings: Option<MultiplexMediaConnectOutputDestinationSettings>,
4360}
4361
4362/// <p>Multiplex Output Settings</p>
4363#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4364pub struct MultiplexOutputSettings {
4365    /// <p>Destination is a Multiplex.</p>
4366    #[serde(rename = "Destination")]
4367    pub destination: OutputLocationRef,
4368}
4369
4370/// <p>The multiplex program object.</p>
4371#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4372#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4373pub struct MultiplexProgram {
4374    /// <p>The MediaLive channel associated with the program.</p>
4375    #[serde(rename = "ChannelId")]
4376    #[serde(skip_serializing_if = "Option::is_none")]
4377    pub channel_id: Option<String>,
4378    /// <p>The settings for this multiplex program.</p>
4379    #[serde(rename = "MultiplexProgramSettings")]
4380    #[serde(skip_serializing_if = "Option::is_none")]
4381    pub multiplex_program_settings: Option<MultiplexProgramSettings>,
4382    /// <p>The packet identifier map for this multiplex program.</p>
4383    #[serde(rename = "PacketIdentifiersMap")]
4384    #[serde(skip_serializing_if = "Option::is_none")]
4385    pub packet_identifiers_map: Option<MultiplexProgramPacketIdentifiersMap>,
4386    /// <p>The name of the multiplex program.</p>
4387    #[serde(rename = "ProgramName")]
4388    #[serde(skip_serializing_if = "Option::is_none")]
4389    pub program_name: Option<String>,
4390}
4391
4392/// <p>Multiplex Program Input Destination Settings for outputting a Channel to a Multiplex</p>
4393#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4394pub struct MultiplexProgramChannelDestinationSettings {
4395    /// <p>The ID of the Multiplex that the encoder is providing output to. You do not need to specify the individual inputs to the Multiplex; MediaLive will handle the connection of the two MediaLive pipelines to the two Multiplex instances.
4396    /// The Multiplex must be in the same region as the Channel.</p>
4397    #[serde(rename = "MultiplexId")]
4398    #[serde(skip_serializing_if = "Option::is_none")]
4399    pub multiplex_id: Option<String>,
4400    /// <p>The program name of the Multiplex program that the encoder is providing output to.</p>
4401    #[serde(rename = "ProgramName")]
4402    #[serde(skip_serializing_if = "Option::is_none")]
4403    pub program_name: Option<String>,
4404}
4405
4406/// <p>Packet identifiers map for a given Multiplex program.</p>
4407#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4408#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4409pub struct MultiplexProgramPacketIdentifiersMap {
4410    #[serde(rename = "AudioPids")]
4411    #[serde(skip_serializing_if = "Option::is_none")]
4412    pub audio_pids: Option<Vec<i64>>,
4413    #[serde(rename = "DvbSubPids")]
4414    #[serde(skip_serializing_if = "Option::is_none")]
4415    pub dvb_sub_pids: Option<Vec<i64>>,
4416    #[serde(rename = "DvbTeletextPid")]
4417    #[serde(skip_serializing_if = "Option::is_none")]
4418    pub dvb_teletext_pid: Option<i64>,
4419    #[serde(rename = "EtvPlatformPid")]
4420    #[serde(skip_serializing_if = "Option::is_none")]
4421    pub etv_platform_pid: Option<i64>,
4422    #[serde(rename = "EtvSignalPid")]
4423    #[serde(skip_serializing_if = "Option::is_none")]
4424    pub etv_signal_pid: Option<i64>,
4425    #[serde(rename = "KlvDataPids")]
4426    #[serde(skip_serializing_if = "Option::is_none")]
4427    pub klv_data_pids: Option<Vec<i64>>,
4428    #[serde(rename = "PcrPid")]
4429    #[serde(skip_serializing_if = "Option::is_none")]
4430    pub pcr_pid: Option<i64>,
4431    #[serde(rename = "PmtPid")]
4432    #[serde(skip_serializing_if = "Option::is_none")]
4433    pub pmt_pid: Option<i64>,
4434    #[serde(rename = "PrivateMetadataPid")]
4435    #[serde(skip_serializing_if = "Option::is_none")]
4436    pub private_metadata_pid: Option<i64>,
4437    #[serde(rename = "Scte27Pids")]
4438    #[serde(skip_serializing_if = "Option::is_none")]
4439    pub scte_27_pids: Option<Vec<i64>>,
4440    #[serde(rename = "Scte35Pid")]
4441    #[serde(skip_serializing_if = "Option::is_none")]
4442    pub scte_35_pid: Option<i64>,
4443    #[serde(rename = "TimedMetadataPid")]
4444    #[serde(skip_serializing_if = "Option::is_none")]
4445    pub timed_metadata_pid: Option<i64>,
4446    #[serde(rename = "VideoPid")]
4447    #[serde(skip_serializing_if = "Option::is_none")]
4448    pub video_pid: Option<i64>,
4449}
4450
4451/// <p>Transport stream service descriptor configuration for the Multiplex program.</p>
4452#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4453pub struct MultiplexProgramServiceDescriptor {
4454    /// <p>Name of the provider.</p>
4455    #[serde(rename = "ProviderName")]
4456    pub provider_name: String,
4457    /// <p>Name of the service.</p>
4458    #[serde(rename = "ServiceName")]
4459    pub service_name: String,
4460}
4461
4462/// <p>Multiplex Program settings configuration.</p>
4463#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4464pub struct MultiplexProgramSettings {
4465    /// <p>Indicates which pipeline is preferred by the multiplex for program ingest.</p>
4466    #[serde(rename = "PreferredChannelPipeline")]
4467    #[serde(skip_serializing_if = "Option::is_none")]
4468    pub preferred_channel_pipeline: Option<String>,
4469    /// <p>Unique program number.</p>
4470    #[serde(rename = "ProgramNumber")]
4471    pub program_number: i64,
4472    /// <p>Transport stream service descriptor configuration for the Multiplex program.</p>
4473    #[serde(rename = "ServiceDescriptor")]
4474    #[serde(skip_serializing_if = "Option::is_none")]
4475    pub service_descriptor: Option<MultiplexProgramServiceDescriptor>,
4476    /// <p>Program video settings configuration.</p>
4477    #[serde(rename = "VideoSettings")]
4478    #[serde(skip_serializing_if = "Option::is_none")]
4479    pub video_settings: Option<MultiplexVideoSettings>,
4480}
4481
4482/// <p>Placeholder documentation for MultiplexProgramSummary</p>
4483#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4484#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4485pub struct MultiplexProgramSummary {
4486    /// <p>The MediaLive Channel associated with the program.</p>
4487    #[serde(rename = "ChannelId")]
4488    #[serde(skip_serializing_if = "Option::is_none")]
4489    pub channel_id: Option<String>,
4490    /// <p>The name of the multiplex program.</p>
4491    #[serde(rename = "ProgramName")]
4492    #[serde(skip_serializing_if = "Option::is_none")]
4493    pub program_name: Option<String>,
4494}
4495
4496/// <p>Contains configuration for a Multiplex event</p>
4497#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4498pub struct MultiplexSettings {
4499    /// <p>Maximum video buffer delay in milliseconds.</p>
4500    #[serde(rename = "MaximumVideoBufferDelayMilliseconds")]
4501    #[serde(skip_serializing_if = "Option::is_none")]
4502    pub maximum_video_buffer_delay_milliseconds: Option<i64>,
4503    /// <p>Transport stream bit rate.</p>
4504    #[serde(rename = "TransportStreamBitrate")]
4505    pub transport_stream_bitrate: i64,
4506    /// <p>Transport stream ID.</p>
4507    #[serde(rename = "TransportStreamId")]
4508    pub transport_stream_id: i64,
4509    /// <p>Transport stream reserved bit rate.</p>
4510    #[serde(rename = "TransportStreamReservedBitrate")]
4511    #[serde(skip_serializing_if = "Option::is_none")]
4512    pub transport_stream_reserved_bitrate: Option<i64>,
4513}
4514
4515/// <p>Contains summary configuration for a Multiplex event.</p>
4516#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4517#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4518pub struct MultiplexSettingsSummary {
4519    /// <p>Transport stream bit rate.</p>
4520    #[serde(rename = "TransportStreamBitrate")]
4521    #[serde(skip_serializing_if = "Option::is_none")]
4522    pub transport_stream_bitrate: Option<i64>,
4523}
4524
4525/// <p>Statmux rate control settings</p>
4526#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4527pub struct MultiplexStatmuxVideoSettings {
4528    /// <p>Maximum statmux bitrate.</p>
4529    #[serde(rename = "MaximumBitrate")]
4530    #[serde(skip_serializing_if = "Option::is_none")]
4531    pub maximum_bitrate: Option<i64>,
4532    /// <p>Minimum statmux bitrate.</p>
4533    #[serde(rename = "MinimumBitrate")]
4534    #[serde(skip_serializing_if = "Option::is_none")]
4535    pub minimum_bitrate: Option<i64>,
4536}
4537
4538/// <p>Placeholder documentation for MultiplexSummary</p>
4539#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4540#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4541pub struct MultiplexSummary {
4542    /// <p>The unique arn of the multiplex.</p>
4543    #[serde(rename = "Arn")]
4544    #[serde(skip_serializing_if = "Option::is_none")]
4545    pub arn: Option<String>,
4546    /// <p>A list of availability zones for the multiplex.</p>
4547    #[serde(rename = "AvailabilityZones")]
4548    #[serde(skip_serializing_if = "Option::is_none")]
4549    pub availability_zones: Option<Vec<String>>,
4550    /// <p>The unique id of the multiplex.</p>
4551    #[serde(rename = "Id")]
4552    #[serde(skip_serializing_if = "Option::is_none")]
4553    pub id: Option<String>,
4554    /// <p>Configuration for a multiplex event.</p>
4555    #[serde(rename = "MultiplexSettings")]
4556    #[serde(skip_serializing_if = "Option::is_none")]
4557    pub multiplex_settings: Option<MultiplexSettingsSummary>,
4558    /// <p>The name of the multiplex.</p>
4559    #[serde(rename = "Name")]
4560    #[serde(skip_serializing_if = "Option::is_none")]
4561    pub name: Option<String>,
4562    /// <p>The number of currently healthy pipelines.</p>
4563    #[serde(rename = "PipelinesRunningCount")]
4564    #[serde(skip_serializing_if = "Option::is_none")]
4565    pub pipelines_running_count: Option<i64>,
4566    /// <p>The number of programs in the multiplex.</p>
4567    #[serde(rename = "ProgramCount")]
4568    #[serde(skip_serializing_if = "Option::is_none")]
4569    pub program_count: Option<i64>,
4570    /// <p>The current state of the multiplex.</p>
4571    #[serde(rename = "State")]
4572    #[serde(skip_serializing_if = "Option::is_none")]
4573    pub state: Option<String>,
4574    /// <p>A collection of key-value pairs.</p>
4575    #[serde(rename = "Tags")]
4576    #[serde(skip_serializing_if = "Option::is_none")]
4577    pub tags: Option<::std::collections::HashMap<String, String>>,
4578}
4579
4580/// <p>The video configuration for each program in a multiplex.</p>
4581#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4582pub struct MultiplexVideoSettings {
4583    /// <p>The constant bitrate configuration for the video encode.
4584    /// When this field is defined, StatmuxSettings must be undefined.</p>
4585    #[serde(rename = "ConstantBitrate")]
4586    #[serde(skip_serializing_if = "Option::is_none")]
4587    pub constant_bitrate: Option<i64>,
4588    /// <p>Statmux rate control settings.
4589    /// When this field is defined, ConstantBitrate must be undefined.</p>
4590    #[serde(rename = "StatmuxSettings")]
4591    #[serde(skip_serializing_if = "Option::is_none")]
4592    pub statmux_settings: Option<MultiplexStatmuxVideoSettings>,
4593}
4594
4595/// <p>Network source to transcode. Must be accessible to the Elemental Live node that is running the live event through a network connection.</p>
4596#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4597pub struct NetworkInputSettings {
4598    /// <p>Specifies HLS input settings when the uri is for a HLS manifest.</p>
4599    #[serde(rename = "HlsInputSettings")]
4600    #[serde(skip_serializing_if = "Option::is_none")]
4601    pub hls_input_settings: Option<HlsInputSettings>,
4602    /// <p>Check HTTPS server certificates. When set to checkCryptographyOnly, cryptography in the certificate will be checked, but not the server&#39;s name. Certain subdomains (notably S3 buckets that use dots in the bucket name) do not strictly match the corresponding certificate&#39;s wildcard pattern and would otherwise cause the event to error. This setting is ignored for protocols that do not use https.</p>
4603    #[serde(rename = "ServerValidation")]
4604    #[serde(skip_serializing_if = "Option::is_none")]
4605    pub server_validation: Option<String>,
4606}
4607
4608/// <p>Nielsen Configuration</p>
4609#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4610pub struct NielsenConfiguration {
4611    /// <p>Enter the Distributor ID assigned to your organization by Nielsen.</p>
4612    #[serde(rename = "DistributorId")]
4613    #[serde(skip_serializing_if = "Option::is_none")]
4614    pub distributor_id: Option<String>,
4615    /// <p>Enables Nielsen PCM to ID3 tagging</p>
4616    #[serde(rename = "NielsenPcmToId3Tagging")]
4617    #[serde(skip_serializing_if = "Option::is_none")]
4618    pub nielsen_pcm_to_id_3_tagging: Option<String>,
4619}
4620
4621/// <p>Reserved resources available for purchase</p>
4622#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4623#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4624pub struct Offering {
4625    /// <p>Unique offering ARN, e.g. &#39;arn:aws:medialive:us-west-2:123456789012:offering:87654321&#39;</p>
4626    #[serde(rename = "Arn")]
4627    #[serde(skip_serializing_if = "Option::is_none")]
4628    pub arn: Option<String>,
4629    /// <p>Currency code for usagePrice and fixedPrice in ISO-4217 format, e.g. &#39;USD&#39;</p>
4630    #[serde(rename = "CurrencyCode")]
4631    #[serde(skip_serializing_if = "Option::is_none")]
4632    pub currency_code: Option<String>,
4633    /// <p>Lease duration, e.g. &#39;12&#39;</p>
4634    #[serde(rename = "Duration")]
4635    #[serde(skip_serializing_if = "Option::is_none")]
4636    pub duration: Option<i64>,
4637    /// <p>Units for duration, e.g. &#39;MONTHS&#39;</p>
4638    #[serde(rename = "DurationUnits")]
4639    #[serde(skip_serializing_if = "Option::is_none")]
4640    pub duration_units: Option<String>,
4641    /// <p>One-time charge for each reserved resource, e.g. &#39;0.0&#39; for a NO_UPFRONT offering</p>
4642    #[serde(rename = "FixedPrice")]
4643    #[serde(skip_serializing_if = "Option::is_none")]
4644    pub fixed_price: Option<f64>,
4645    /// <p>Offering description, e.g. &#39;HD AVC output at 10-20 Mbps, 30 fps, and standard VQ in US West (Oregon)&#39;</p>
4646    #[serde(rename = "OfferingDescription")]
4647    #[serde(skip_serializing_if = "Option::is_none")]
4648    pub offering_description: Option<String>,
4649    /// <p>Unique offering ID, e.g. &#39;87654321&#39;</p>
4650    #[serde(rename = "OfferingId")]
4651    #[serde(skip_serializing_if = "Option::is_none")]
4652    pub offering_id: Option<String>,
4653    /// <p>Offering type, e.g. &#39;NO_UPFRONT&#39;</p>
4654    #[serde(rename = "OfferingType")]
4655    #[serde(skip_serializing_if = "Option::is_none")]
4656    pub offering_type: Option<String>,
4657    /// <p>AWS region, e.g. &#39;us-west-2&#39;</p>
4658    #[serde(rename = "Region")]
4659    #[serde(skip_serializing_if = "Option::is_none")]
4660    pub region: Option<String>,
4661    /// <p>Resource configuration details</p>
4662    #[serde(rename = "ResourceSpecification")]
4663    #[serde(skip_serializing_if = "Option::is_none")]
4664    pub resource_specification: Option<ReservationResourceSpecification>,
4665    /// <p>Recurring usage charge for each reserved resource, e.g. &#39;157.0&#39;</p>
4666    #[serde(rename = "UsagePrice")]
4667    #[serde(skip_serializing_if = "Option::is_none")]
4668    pub usage_price: Option<f64>,
4669}
4670
4671/// <p>Output settings. There can be multiple outputs within a group.</p>
4672#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4673pub struct Output {
4674    /// <p>The names of the AudioDescriptions used as audio sources for this output.</p>
4675    #[serde(rename = "AudioDescriptionNames")]
4676    #[serde(skip_serializing_if = "Option::is_none")]
4677    pub audio_description_names: Option<Vec<String>>,
4678    /// <p>The names of the CaptionDescriptions used as caption sources for this output.</p>
4679    #[serde(rename = "CaptionDescriptionNames")]
4680    #[serde(skip_serializing_if = "Option::is_none")]
4681    pub caption_description_names: Option<Vec<String>>,
4682    /// <p>The name used to identify an output.</p>
4683    #[serde(rename = "OutputName")]
4684    #[serde(skip_serializing_if = "Option::is_none")]
4685    pub output_name: Option<String>,
4686    /// <p>Output type-specific settings.</p>
4687    #[serde(rename = "OutputSettings")]
4688    pub output_settings: OutputSettings,
4689    /// <p>The name of the VideoDescription used as the source for this output.</p>
4690    #[serde(rename = "VideoDescriptionName")]
4691    #[serde(skip_serializing_if = "Option::is_none")]
4692    pub video_description_name: Option<String>,
4693}
4694
4695/// <p>Placeholder documentation for OutputDestination</p>
4696#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4697pub struct OutputDestination {
4698    /// <p>User-specified id. This is used in an output group or an output.</p>
4699    #[serde(rename = "Id")]
4700    #[serde(skip_serializing_if = "Option::is_none")]
4701    pub id: Option<String>,
4702    /// <p>Destination settings for a MediaPackage output; one destination for both encoders.</p>
4703    #[serde(rename = "MediaPackageSettings")]
4704    #[serde(skip_serializing_if = "Option::is_none")]
4705    pub media_package_settings: Option<Vec<MediaPackageOutputDestinationSettings>>,
4706    /// <p>Destination settings for a Multiplex output; one destination for both encoders.</p>
4707    #[serde(rename = "MultiplexSettings")]
4708    #[serde(skip_serializing_if = "Option::is_none")]
4709    pub multiplex_settings: Option<MultiplexProgramChannelDestinationSettings>,
4710    /// <p>Destination settings for a standard output; one destination for each redundant encoder.</p>
4711    #[serde(rename = "Settings")]
4712    #[serde(skip_serializing_if = "Option::is_none")]
4713    pub settings: Option<Vec<OutputDestinationSettings>>,
4714}
4715
4716/// <p>Placeholder documentation for OutputDestinationSettings</p>
4717#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4718pub struct OutputDestinationSettings {
4719    /// <p>key used to extract the password from EC2 Parameter store</p>
4720    #[serde(rename = "PasswordParam")]
4721    #[serde(skip_serializing_if = "Option::is_none")]
4722    pub password_param: Option<String>,
4723    /// <p>Stream name for RTMP destinations (URLs of type rtmp://)</p>
4724    #[serde(rename = "StreamName")]
4725    #[serde(skip_serializing_if = "Option::is_none")]
4726    pub stream_name: Option<String>,
4727    /// <p>A URL specifying a destination</p>
4728    #[serde(rename = "Url")]
4729    #[serde(skip_serializing_if = "Option::is_none")]
4730    pub url: Option<String>,
4731    /// <p>username for destination</p>
4732    #[serde(rename = "Username")]
4733    #[serde(skip_serializing_if = "Option::is_none")]
4734    pub username: Option<String>,
4735}
4736
4737/// <p>Output groups for this Live Event. Output groups contain information about where streams should be distributed.</p>
4738#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4739pub struct OutputGroup {
4740    /// <p>Custom output group name optionally defined by the user.  Only letters, numbers, and the underscore character allowed; only 32 characters allowed.</p>
4741    #[serde(rename = "Name")]
4742    #[serde(skip_serializing_if = "Option::is_none")]
4743    pub name: Option<String>,
4744    /// <p>Settings associated with the output group.</p>
4745    #[serde(rename = "OutputGroupSettings")]
4746    pub output_group_settings: OutputGroupSettings,
4747    #[serde(rename = "Outputs")]
4748    pub outputs: Vec<Output>,
4749}
4750
4751/// <p>Output Group Settings</p>
4752#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4753pub struct OutputGroupSettings {
4754    #[serde(rename = "ArchiveGroupSettings")]
4755    #[serde(skip_serializing_if = "Option::is_none")]
4756    pub archive_group_settings: Option<ArchiveGroupSettings>,
4757    #[serde(rename = "FrameCaptureGroupSettings")]
4758    #[serde(skip_serializing_if = "Option::is_none")]
4759    pub frame_capture_group_settings: Option<FrameCaptureGroupSettings>,
4760    #[serde(rename = "HlsGroupSettings")]
4761    #[serde(skip_serializing_if = "Option::is_none")]
4762    pub hls_group_settings: Option<HlsGroupSettings>,
4763    #[serde(rename = "MediaPackageGroupSettings")]
4764    #[serde(skip_serializing_if = "Option::is_none")]
4765    pub media_package_group_settings: Option<MediaPackageGroupSettings>,
4766    #[serde(rename = "MsSmoothGroupSettings")]
4767    #[serde(skip_serializing_if = "Option::is_none")]
4768    pub ms_smooth_group_settings: Option<MsSmoothGroupSettings>,
4769    #[serde(rename = "MultiplexGroupSettings")]
4770    #[serde(skip_serializing_if = "Option::is_none")]
4771    pub multiplex_group_settings: Option<MultiplexGroupSettings>,
4772    #[serde(rename = "RtmpGroupSettings")]
4773    #[serde(skip_serializing_if = "Option::is_none")]
4774    pub rtmp_group_settings: Option<RtmpGroupSettings>,
4775    #[serde(rename = "UdpGroupSettings")]
4776    #[serde(skip_serializing_if = "Option::is_none")]
4777    pub udp_group_settings: Option<UdpGroupSettings>,
4778}
4779
4780/// <p>Reference to an OutputDestination ID defined in the channel</p>
4781#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4782pub struct OutputLocationRef {
4783    #[serde(rename = "DestinationRefId")]
4784    #[serde(skip_serializing_if = "Option::is_none")]
4785    pub destination_ref_id: Option<String>,
4786}
4787
4788/// <p>Output Settings</p>
4789#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4790pub struct OutputSettings {
4791    #[serde(rename = "ArchiveOutputSettings")]
4792    #[serde(skip_serializing_if = "Option::is_none")]
4793    pub archive_output_settings: Option<ArchiveOutputSettings>,
4794    #[serde(rename = "FrameCaptureOutputSettings")]
4795    #[serde(skip_serializing_if = "Option::is_none")]
4796    pub frame_capture_output_settings: Option<FrameCaptureOutputSettings>,
4797    #[serde(rename = "HlsOutputSettings")]
4798    #[serde(skip_serializing_if = "Option::is_none")]
4799    pub hls_output_settings: Option<HlsOutputSettings>,
4800    #[serde(rename = "MediaPackageOutputSettings")]
4801    #[serde(skip_serializing_if = "Option::is_none")]
4802    pub media_package_output_settings: Option<MediaPackageOutputSettings>,
4803    #[serde(rename = "MsSmoothOutputSettings")]
4804    #[serde(skip_serializing_if = "Option::is_none")]
4805    pub ms_smooth_output_settings: Option<MsSmoothOutputSettings>,
4806    #[serde(rename = "MultiplexOutputSettings")]
4807    #[serde(skip_serializing_if = "Option::is_none")]
4808    pub multiplex_output_settings: Option<MultiplexOutputSettings>,
4809    #[serde(rename = "RtmpOutputSettings")]
4810    #[serde(skip_serializing_if = "Option::is_none")]
4811    pub rtmp_output_settings: Option<RtmpOutputSettings>,
4812    #[serde(rename = "UdpOutputSettings")]
4813    #[serde(skip_serializing_if = "Option::is_none")]
4814    pub udp_output_settings: Option<UdpOutputSettings>,
4815}
4816
4817/// <p>Pass Through Settings</p>
4818#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4819pub struct PassThroughSettings {}
4820
4821/// <p>Settings for the action to set pause state of a channel.</p>
4822#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4823pub struct PauseStateScheduleActionSettings {
4824    #[serde(rename = "Pipelines")]
4825    #[serde(skip_serializing_if = "Option::is_none")]
4826    pub pipelines: Option<Vec<PipelinePauseStateSettings>>,
4827}
4828
4829/// <p>Runtime details of a pipeline when a channel is running.</p>
4830#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4831#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4832pub struct PipelineDetail {
4833    /// <p>The name of the active input attachment currently being ingested by this pipeline.</p>
4834    #[serde(rename = "ActiveInputAttachmentName")]
4835    #[serde(skip_serializing_if = "Option::is_none")]
4836    pub active_input_attachment_name: Option<String>,
4837    /// <p>The name of the input switch schedule action that occurred most recently and that resulted in the switch to the current input attachment for this pipeline.</p>
4838    #[serde(rename = "ActiveInputSwitchActionName")]
4839    #[serde(skip_serializing_if = "Option::is_none")]
4840    pub active_input_switch_action_name: Option<String>,
4841    /// <p>Pipeline ID</p>
4842    #[serde(rename = "PipelineId")]
4843    #[serde(skip_serializing_if = "Option::is_none")]
4844    pub pipeline_id: Option<String>,
4845}
4846
4847/// <p>Settings for pausing a pipeline.</p>
4848#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4849pub struct PipelinePauseStateSettings {
4850    /// <p>Pipeline ID to pause (&quot;PIPELINE<em>0&quot; or &quot;PIPELINE</em>1&quot;).</p>
4851    #[serde(rename = "PipelineId")]
4852    pub pipeline_id: String,
4853}
4854
4855/// <p>Placeholder documentation for PurchaseOfferingRequest</p>
4856#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4857#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4858pub struct PurchaseOfferingRequest {
4859    /// <p>Number of resources</p>
4860    #[serde(rename = "Count")]
4861    pub count: i64,
4862    /// <p>Name for the new reservation</p>
4863    #[serde(rename = "Name")]
4864    #[serde(skip_serializing_if = "Option::is_none")]
4865    pub name: Option<String>,
4866    /// <p>Offering to purchase, e.g. &#39;87654321&#39;</p>
4867    #[serde(rename = "OfferingId")]
4868    pub offering_id: String,
4869    /// <p>Unique request ID to be specified. This is needed to prevent retries from creating multiple resources.</p>
4870    #[serde(rename = "RequestId")]
4871    #[serde(skip_serializing_if = "Option::is_none")]
4872    pub request_id: Option<String>,
4873    /// <p>Requested reservation start time (UTC) in ISO-8601 format. The specified time must be between the first day of the current month and one year from now. If no value is given, the default is now.</p>
4874    #[serde(rename = "Start")]
4875    #[serde(skip_serializing_if = "Option::is_none")]
4876    pub start: Option<String>,
4877    /// <p>A collection of key-value pairs</p>
4878    #[serde(rename = "Tags")]
4879    #[serde(skip_serializing_if = "Option::is_none")]
4880    pub tags: Option<::std::collections::HashMap<String, String>>,
4881}
4882
4883/// <p>Placeholder documentation for PurchaseOfferingResponse</p>
4884#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4885#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4886pub struct PurchaseOfferingResponse {
4887    #[serde(rename = "Reservation")]
4888    #[serde(skip_serializing_if = "Option::is_none")]
4889    pub reservation: Option<Reservation>,
4890}
4891
4892/// <p>Rec601 Settings</p>
4893#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4894pub struct Rec601Settings {}
4895
4896/// <p>Rec709 Settings</p>
4897#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4898pub struct Rec709Settings {}
4899
4900/// <p>Remix Settings</p>
4901#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4902pub struct RemixSettings {
4903    /// <p>Mapping of input channels to output channels, with appropriate gain adjustments.</p>
4904    #[serde(rename = "ChannelMappings")]
4905    pub channel_mappings: Vec<AudioChannelMapping>,
4906    /// <p>Number of input channels to be used.</p>
4907    #[serde(rename = "ChannelsIn")]
4908    #[serde(skip_serializing_if = "Option::is_none")]
4909    pub channels_in: Option<i64>,
4910    /// <p>Number of output channels to be produced.
4911    /// Valid values: 1, 2, 4, 6, 8</p>
4912    #[serde(rename = "ChannelsOut")]
4913    #[serde(skip_serializing_if = "Option::is_none")]
4914    pub channels_out: Option<i64>,
4915}
4916
4917/// <p>Reserved resources available to use</p>
4918#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4919#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4920pub struct Reservation {
4921    /// <p>Unique reservation ARN, e.g. &#39;arn:aws:medialive:us-west-2:123456789012:reservation:1234567&#39;</p>
4922    #[serde(rename = "Arn")]
4923    #[serde(skip_serializing_if = "Option::is_none")]
4924    pub arn: Option<String>,
4925    /// <p>Number of reserved resources</p>
4926    #[serde(rename = "Count")]
4927    #[serde(skip_serializing_if = "Option::is_none")]
4928    pub count: Option<i64>,
4929    /// <p>Currency code for usagePrice and fixedPrice in ISO-4217 format, e.g. &#39;USD&#39;</p>
4930    #[serde(rename = "CurrencyCode")]
4931    #[serde(skip_serializing_if = "Option::is_none")]
4932    pub currency_code: Option<String>,
4933    /// <p>Lease duration, e.g. &#39;12&#39;</p>
4934    #[serde(rename = "Duration")]
4935    #[serde(skip_serializing_if = "Option::is_none")]
4936    pub duration: Option<i64>,
4937    /// <p>Units for duration, e.g. &#39;MONTHS&#39;</p>
4938    #[serde(rename = "DurationUnits")]
4939    #[serde(skip_serializing_if = "Option::is_none")]
4940    pub duration_units: Option<String>,
4941    /// <p>Reservation UTC end date and time in ISO-8601 format, e.g. &#39;2019-03-01T00:00:00&#39;</p>
4942    #[serde(rename = "End")]
4943    #[serde(skip_serializing_if = "Option::is_none")]
4944    pub end: Option<String>,
4945    /// <p>One-time charge for each reserved resource, e.g. &#39;0.0&#39; for a NO_UPFRONT offering</p>
4946    #[serde(rename = "FixedPrice")]
4947    #[serde(skip_serializing_if = "Option::is_none")]
4948    pub fixed_price: Option<f64>,
4949    /// <p>User specified reservation name</p>
4950    #[serde(rename = "Name")]
4951    #[serde(skip_serializing_if = "Option::is_none")]
4952    pub name: Option<String>,
4953    /// <p>Offering description, e.g. &#39;HD AVC output at 10-20 Mbps, 30 fps, and standard VQ in US West (Oregon)&#39;</p>
4954    #[serde(rename = "OfferingDescription")]
4955    #[serde(skip_serializing_if = "Option::is_none")]
4956    pub offering_description: Option<String>,
4957    /// <p>Unique offering ID, e.g. &#39;87654321&#39;</p>
4958    #[serde(rename = "OfferingId")]
4959    #[serde(skip_serializing_if = "Option::is_none")]
4960    pub offering_id: Option<String>,
4961    /// <p>Offering type, e.g. &#39;NO_UPFRONT&#39;</p>
4962    #[serde(rename = "OfferingType")]
4963    #[serde(skip_serializing_if = "Option::is_none")]
4964    pub offering_type: Option<String>,
4965    /// <p>AWS region, e.g. &#39;us-west-2&#39;</p>
4966    #[serde(rename = "Region")]
4967    #[serde(skip_serializing_if = "Option::is_none")]
4968    pub region: Option<String>,
4969    /// <p>Unique reservation ID, e.g. &#39;1234567&#39;</p>
4970    #[serde(rename = "ReservationId")]
4971    #[serde(skip_serializing_if = "Option::is_none")]
4972    pub reservation_id: Option<String>,
4973    /// <p>Resource configuration details</p>
4974    #[serde(rename = "ResourceSpecification")]
4975    #[serde(skip_serializing_if = "Option::is_none")]
4976    pub resource_specification: Option<ReservationResourceSpecification>,
4977    /// <p>Reservation UTC start date and time in ISO-8601 format, e.g. &#39;2018-03-01T00:00:00&#39;</p>
4978    #[serde(rename = "Start")]
4979    #[serde(skip_serializing_if = "Option::is_none")]
4980    pub start: Option<String>,
4981    /// <p>Current state of reservation, e.g. &#39;ACTIVE&#39;</p>
4982    #[serde(rename = "State")]
4983    #[serde(skip_serializing_if = "Option::is_none")]
4984    pub state: Option<String>,
4985    /// <p>A collection of key-value pairs</p>
4986    #[serde(rename = "Tags")]
4987    #[serde(skip_serializing_if = "Option::is_none")]
4988    pub tags: Option<::std::collections::HashMap<String, String>>,
4989    /// <p>Recurring usage charge for each reserved resource, e.g. &#39;157.0&#39;</p>
4990    #[serde(rename = "UsagePrice")]
4991    #[serde(skip_serializing_if = "Option::is_none")]
4992    pub usage_price: Option<f64>,
4993}
4994
4995/// <p>Resource configuration (codec, resolution, bitrate, ...)</p>
4996#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4997#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4998pub struct ReservationResourceSpecification {
4999    /// <p>Channel class, e.g. &#39;STANDARD&#39;</p>
5000    #[serde(rename = "ChannelClass")]
5001    #[serde(skip_serializing_if = "Option::is_none")]
5002    pub channel_class: Option<String>,
5003    /// <p>Codec, e.g. &#39;AVC&#39;</p>
5004    #[serde(rename = "Codec")]
5005    #[serde(skip_serializing_if = "Option::is_none")]
5006    pub codec: Option<String>,
5007    /// <p>Maximum bitrate, e.g. &#39;MAX<em>20</em>MBPS&#39;</p>
5008    #[serde(rename = "MaximumBitrate")]
5009    #[serde(skip_serializing_if = "Option::is_none")]
5010    pub maximum_bitrate: Option<String>,
5011    /// <p>Maximum framerate, e.g. &#39;MAX<em>30</em>FPS&#39; (Outputs only)</p>
5012    #[serde(rename = "MaximumFramerate")]
5013    #[serde(skip_serializing_if = "Option::is_none")]
5014    pub maximum_framerate: Option<String>,
5015    /// <p>Resolution, e.g. &#39;HD&#39;</p>
5016    #[serde(rename = "Resolution")]
5017    #[serde(skip_serializing_if = "Option::is_none")]
5018    pub resolution: Option<String>,
5019    /// <p>Resource type, &#39;INPUT&#39;, &#39;OUTPUT&#39;, &#39;MULTIPLEX&#39;, or &#39;CHANNEL&#39;</p>
5020    #[serde(rename = "ResourceType")]
5021    #[serde(skip_serializing_if = "Option::is_none")]
5022    pub resource_type: Option<String>,
5023    /// <p>Special feature, e.g. &#39;AUDIO_NORMALIZATION&#39; (Channels only)</p>
5024    #[serde(rename = "SpecialFeature")]
5025    #[serde(skip_serializing_if = "Option::is_none")]
5026    pub special_feature: Option<String>,
5027    /// <p>Video quality, e.g. &#39;STANDARD&#39; (Outputs only)</p>
5028    #[serde(rename = "VideoQuality")]
5029    #[serde(skip_serializing_if = "Option::is_none")]
5030    pub video_quality: Option<String>,
5031}
5032
5033/// <p>Rtmp Caption Info Destination Settings</p>
5034#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5035pub struct RtmpCaptionInfoDestinationSettings {}
5036
5037/// <p>Rtmp Group Settings</p>
5038#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5039pub struct RtmpGroupSettings {
5040    /// <p>Authentication scheme to use when connecting with CDN</p>
5041    #[serde(rename = "AuthenticationScheme")]
5042    #[serde(skip_serializing_if = "Option::is_none")]
5043    pub authentication_scheme: Option<String>,
5044    /// <p>Controls behavior when content cache fills up. If remote origin server stalls the RTMP connection and does not accept content fast enough the &#39;Media Cache&#39; will fill up. When the cache reaches the duration specified by cacheLength the cache will stop accepting new content. If set to disconnectImmediately, the RTMP output will force a disconnect. Clear the media cache, and reconnect after restartDelay seconds. If set to waitForServer, the RTMP output will wait up to 5 minutes to allow the origin server to begin accepting data again.</p>
5045    #[serde(rename = "CacheFullBehavior")]
5046    #[serde(skip_serializing_if = "Option::is_none")]
5047    pub cache_full_behavior: Option<String>,
5048    /// <p>Cache length, in seconds, is used to calculate buffer size.</p>
5049    #[serde(rename = "CacheLength")]
5050    #[serde(skip_serializing_if = "Option::is_none")]
5051    pub cache_length: Option<i64>,
5052    /// <p>Controls the types of data that passes to onCaptionInfo outputs.  If set to &#39;all&#39; then 608 and 708 carried DTVCC data will be passed.  If set to &#39;field1AndField2608&#39; then DTVCC data will be stripped out, but 608 data from both fields will be passed. If set to &#39;field1608&#39; then only the data carried in 608 from field 1 video will be passed.</p>
5053    #[serde(rename = "CaptionData")]
5054    #[serde(skip_serializing_if = "Option::is_none")]
5055    pub caption_data: Option<String>,
5056    /// <p>Controls the behavior of this RTMP group if input becomes unavailable.</p>
5057    ///
5058    /// <ul>
5059    /// <li>emitOutput: Emit a slate until input returns.</li>
5060    /// <li>pauseOutput: Stop transmitting data until input returns. This does not close the underlying RTMP connection.</li>
5061    /// </ul>
5062    #[serde(rename = "InputLossAction")]
5063    #[serde(skip_serializing_if = "Option::is_none")]
5064    pub input_loss_action: Option<String>,
5065    /// <p>If a streaming output fails, number of seconds to wait until a restart is initiated. A value of 0 means never restart.</p>
5066    #[serde(rename = "RestartDelay")]
5067    #[serde(skip_serializing_if = "Option::is_none")]
5068    pub restart_delay: Option<i64>,
5069}
5070
5071/// <p>Rtmp Output Settings</p>
5072#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5073pub struct RtmpOutputSettings {
5074    /// <p>If set to verifyAuthenticity, verify the tls certificate chain to a trusted Certificate Authority (CA).  This will cause rtmps outputs with self-signed certificates to fail.</p>
5075    #[serde(rename = "CertificateMode")]
5076    #[serde(skip_serializing_if = "Option::is_none")]
5077    pub certificate_mode: Option<String>,
5078    /// <p>Number of seconds to wait before retrying a connection to the Flash Media server if the connection is lost.</p>
5079    #[serde(rename = "ConnectionRetryInterval")]
5080    #[serde(skip_serializing_if = "Option::is_none")]
5081    pub connection_retry_interval: Option<i64>,
5082    /// <p>The RTMP endpoint excluding the stream name (eg. rtmp://host/appname). For connection to Akamai, a username and password must be supplied. URI fields accept format identifiers.</p>
5083    #[serde(rename = "Destination")]
5084    pub destination: OutputLocationRef,
5085    /// <p>Number of retry attempts.</p>
5086    #[serde(rename = "NumRetries")]
5087    #[serde(skip_serializing_if = "Option::is_none")]
5088    pub num_retries: Option<i64>,
5089}
5090
5091/// <p>Contains information on a single schedule action.</p>
5092#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5093pub struct ScheduleAction {
5094    /// <p>The name of the action, must be unique within the schedule. This name provides the main reference to an action once it is added to the schedule. A name is unique if it is no longer in the schedule. The schedule is automatically cleaned up to remove actions with a start time of more than 1 hour ago (approximately) so at that point a name can be reused.</p>
5095    #[serde(rename = "ActionName")]
5096    pub action_name: String,
5097    /// <p>Settings for this schedule action.</p>
5098    #[serde(rename = "ScheduleActionSettings")]
5099    pub schedule_action_settings: ScheduleActionSettings,
5100    /// <p>The time for the action to start in the channel.</p>
5101    #[serde(rename = "ScheduleActionStartSettings")]
5102    pub schedule_action_start_settings: ScheduleActionStartSettings,
5103}
5104
5105/// <p>Holds the settings for a single schedule action.</p>
5106#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5107pub struct ScheduleActionSettings {
5108    /// <p>Action to insert HLS ID3 segment tagging</p>
5109    #[serde(rename = "HlsId3SegmentTaggingSettings")]
5110    #[serde(skip_serializing_if = "Option::is_none")]
5111    pub hls_id_3_segment_tagging_settings: Option<HlsId3SegmentTaggingScheduleActionSettings>,
5112    /// <p>Action to insert HLS metadata</p>
5113    #[serde(rename = "HlsTimedMetadataSettings")]
5114    #[serde(skip_serializing_if = "Option::is_none")]
5115    pub hls_timed_metadata_settings: Option<HlsTimedMetadataScheduleActionSettings>,
5116    /// <p>Action to prepare an input for a future immediate input switch</p>
5117    #[serde(rename = "InputPrepareSettings")]
5118    #[serde(skip_serializing_if = "Option::is_none")]
5119    pub input_prepare_settings: Option<InputPrepareScheduleActionSettings>,
5120    /// <p>Action to switch the input</p>
5121    #[serde(rename = "InputSwitchSettings")]
5122    #[serde(skip_serializing_if = "Option::is_none")]
5123    pub input_switch_settings: Option<InputSwitchScheduleActionSettings>,
5124    /// <p>Action to pause or unpause one or both channel pipelines</p>
5125    #[serde(rename = "PauseStateSettings")]
5126    #[serde(skip_serializing_if = "Option::is_none")]
5127    pub pause_state_settings: Option<PauseStateScheduleActionSettings>,
5128    /// <p>Action to insert SCTE-35 return<em>to</em>network message</p>
5129    #[serde(rename = "Scte35ReturnToNetworkSettings")]
5130    #[serde(skip_serializing_if = "Option::is_none")]
5131    pub scte_35_return_to_network_settings: Option<Scte35ReturnToNetworkScheduleActionSettings>,
5132    /// <p>Action to insert SCTE-35 splice_insert message</p>
5133    #[serde(rename = "Scte35SpliceInsertSettings")]
5134    #[serde(skip_serializing_if = "Option::is_none")]
5135    pub scte_35_splice_insert_settings: Option<Scte35SpliceInsertScheduleActionSettings>,
5136    /// <p>Action to insert SCTE-35 time_signal message</p>
5137    #[serde(rename = "Scte35TimeSignalSettings")]
5138    #[serde(skip_serializing_if = "Option::is_none")]
5139    pub scte_35_time_signal_settings: Option<Scte35TimeSignalScheduleActionSettings>,
5140    /// <p>Action to activate a static image overlay</p>
5141    #[serde(rename = "StaticImageActivateSettings")]
5142    #[serde(skip_serializing_if = "Option::is_none")]
5143    pub static_image_activate_settings: Option<StaticImageActivateScheduleActionSettings>,
5144    /// <p>Action to deactivate a static image overlay</p>
5145    #[serde(rename = "StaticImageDeactivateSettings")]
5146    #[serde(skip_serializing_if = "Option::is_none")]
5147    pub static_image_deactivate_settings: Option<StaticImageDeactivateScheduleActionSettings>,
5148}
5149
5150/// <p>Settings to specify when an action should occur. Only one of the options must be selected.</p>
5151#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5152pub struct ScheduleActionStartSettings {
5153    /// <p>Option for specifying the start time for an action.</p>
5154    #[serde(rename = "FixedModeScheduleActionStartSettings")]
5155    #[serde(skip_serializing_if = "Option::is_none")]
5156    pub fixed_mode_schedule_action_start_settings: Option<FixedModeScheduleActionStartSettings>,
5157    /// <p>Option for specifying an action as relative to another action.</p>
5158    #[serde(rename = "FollowModeScheduleActionStartSettings")]
5159    #[serde(skip_serializing_if = "Option::is_none")]
5160    pub follow_mode_schedule_action_start_settings: Option<FollowModeScheduleActionStartSettings>,
5161    /// <p>Option for specifying an action that should be applied immediately.</p>
5162    #[serde(rename = "ImmediateModeScheduleActionStartSettings")]
5163    #[serde(skip_serializing_if = "Option::is_none")]
5164    pub immediate_mode_schedule_action_start_settings:
5165        Option<ImmediateModeScheduleActionStartSettings>,
5166}
5167
5168/// <p>Scte20 Plus Embedded Destination Settings</p>
5169#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5170pub struct Scte20PlusEmbeddedDestinationSettings {}
5171
5172/// <p>Scte20 Source Settings</p>
5173#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5174pub struct Scte20SourceSettings {
5175    /// <p>If upconvert, 608 data is both passed through via the &quot;608 compatibility bytes&quot; fields of the 708 wrapper as well as translated into 708. 708 data present in the source content will be discarded.</p>
5176    #[serde(rename = "Convert608To708")]
5177    #[serde(skip_serializing_if = "Option::is_none")]
5178    pub convert_608_to_708: Option<String>,
5179    /// <p>Specifies the 608/708 channel number within the video track from which to extract captions. Unused for passthrough.</p>
5180    #[serde(rename = "Source608ChannelNumber")]
5181    #[serde(skip_serializing_if = "Option::is_none")]
5182    pub source_608_channel_number: Option<i64>,
5183}
5184
5185/// <p>Scte27 Destination Settings</p>
5186#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5187pub struct Scte27DestinationSettings {}
5188
5189/// <p>Scte27 Source Settings</p>
5190#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5191pub struct Scte27SourceSettings {
5192    /// <p>The pid field is used in conjunction with the caption selector languageCode field as follows:
5193    /// - Specify PID and Language: Extracts captions from that PID; the language is &quot;informational&quot;.
5194    /// - Specify PID and omit Language: Extracts the specified PID.
5195    /// - Omit PID and specify Language: Extracts the specified language, whichever PID that happens to be.
5196    /// - Omit PID and omit Language: Valid only if source is DVB-Sub that is being passed through; all languages will be passed through.</p>
5197    #[serde(rename = "Pid")]
5198    #[serde(skip_serializing_if = "Option::is_none")]
5199    pub pid: Option<i64>,
5200}
5201
5202/// <p>Corresponds to SCTE-35 delivery<em>not</em>restricted_flag parameter. To declare delivery restrictions, include this element and its four &quot;restriction&quot; flags. To declare that there are no restrictions, omit this element.</p>
5203#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5204pub struct Scte35DeliveryRestrictions {
5205    /// <p>Corresponds to SCTE-35 archive<em>allowed</em>flag.</p>
5206    #[serde(rename = "ArchiveAllowedFlag")]
5207    pub archive_allowed_flag: String,
5208    /// <p>Corresponds to SCTE-35 device_restrictions parameter.</p>
5209    #[serde(rename = "DeviceRestrictions")]
5210    pub device_restrictions: String,
5211    /// <p>Corresponds to SCTE-35 no<em>regional</em>blackout_flag parameter.</p>
5212    #[serde(rename = "NoRegionalBlackoutFlag")]
5213    pub no_regional_blackout_flag: String,
5214    /// <p>Corresponds to SCTE-35 web<em>delivery</em>allowed_flag parameter.</p>
5215    #[serde(rename = "WebDeliveryAllowedFlag")]
5216    pub web_delivery_allowed_flag: String,
5217}
5218
5219/// <p>Holds one set of SCTE-35 Descriptor Settings.</p>
5220#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5221pub struct Scte35Descriptor {
5222    /// <p>SCTE-35 Descriptor Settings.</p>
5223    #[serde(rename = "Scte35DescriptorSettings")]
5224    pub scte_35_descriptor_settings: Scte35DescriptorSettings,
5225}
5226
5227/// <p>SCTE-35 Descriptor settings.</p>
5228#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5229pub struct Scte35DescriptorSettings {
5230    /// <p>SCTE-35 Segmentation Descriptor.</p>
5231    #[serde(rename = "SegmentationDescriptorScte35DescriptorSettings")]
5232    pub segmentation_descriptor_scte_35_descriptor_settings: Scte35SegmentationDescriptor,
5233}
5234
5235/// <p>Settings for a SCTE-35 return<em>to</em>network message.</p>
5236#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5237pub struct Scte35ReturnToNetworkScheduleActionSettings {
5238    /// <p>The splice<em>event</em>id for the SCTE-35 splice_insert, as defined in SCTE-35.</p>
5239    #[serde(rename = "SpliceEventId")]
5240    pub splice_event_id: i64,
5241}
5242
5243/// <p>Corresponds to SCTE-35 segmentation_descriptor.</p>
5244#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5245pub struct Scte35SegmentationDescriptor {
5246    /// <p>Holds the four SCTE-35 delivery restriction parameters.</p>
5247    #[serde(rename = "DeliveryRestrictions")]
5248    #[serde(skip_serializing_if = "Option::is_none")]
5249    pub delivery_restrictions: Option<Scte35DeliveryRestrictions>,
5250    /// <p>Corresponds to SCTE-35 segment<em>num. A value that is valid for the specified segmentation</em>type_id.</p>
5251    #[serde(rename = "SegmentNum")]
5252    #[serde(skip_serializing_if = "Option::is_none")]
5253    pub segment_num: Option<i64>,
5254    /// <p>Corresponds to SCTE-35 segmentation<em>event</em>cancel_indicator.</p>
5255    #[serde(rename = "SegmentationCancelIndicator")]
5256    pub segmentation_cancel_indicator: String,
5257    /// <p>Corresponds to SCTE-35 segmentation<em>duration. Optional. The duration for the time</em>signal, in 90 KHz ticks. To convert seconds to ticks, multiple the seconds by 90,000. Enter time in 90 KHz clock ticks. If you do not enter a duration, the time_signal will continue until you insert a cancellation message.</p>
5258    #[serde(rename = "SegmentationDuration")]
5259    #[serde(skip_serializing_if = "Option::is_none")]
5260    pub segmentation_duration: Option<i64>,
5261    /// <p>Corresponds to SCTE-35 segmentation<em>event</em>id. </p>
5262    #[serde(rename = "SegmentationEventId")]
5263    pub segmentation_event_id: i64,
5264    /// <p>Corresponds to SCTE-35 segmentation<em>type</em>id. One of the segmentation<em>type</em>id values listed in the SCTE-35 specification. On the console, enter the ID in decimal (for example, &quot;52&quot;). In the CLI, API, or an SDK, enter the ID in hex (for example, &quot;0x34&quot;) or decimal (for example, &quot;52&quot;).</p>
5265    #[serde(rename = "SegmentationTypeId")]
5266    #[serde(skip_serializing_if = "Option::is_none")]
5267    pub segmentation_type_id: Option<i64>,
5268    /// <p>Corresponds to SCTE-35 segmentation<em>upid. Enter a string containing the hexadecimal representation of the characters that make up the SCTE-35 segmentation</em>upid value. Must contain an even number of hex characters. Do not include spaces between each hex pair. For example, the ASCII &quot;ADS Information&quot; becomes hex &quot;41445320496e666f726d6174696f6e.</p>
5269    #[serde(rename = "SegmentationUpid")]
5270    #[serde(skip_serializing_if = "Option::is_none")]
5271    pub segmentation_upid: Option<String>,
5272    /// <p>Corresponds to SCTE-35 segmentation<em>upid</em>type. On the console, enter one of the types listed in the SCTE-35 specification, converted to a decimal. For example, &quot;0x0C&quot; hex from the specification is &quot;12&quot; in decimal. In the CLI, API, or an SDK, enter one of the types listed in the SCTE-35 specification, in either hex (for example, &quot;0x0C&quot; ) or in decimal (for example, &quot;12&quot;).</p>
5273    #[serde(rename = "SegmentationUpidType")]
5274    #[serde(skip_serializing_if = "Option::is_none")]
5275    pub segmentation_upid_type: Option<i64>,
5276    /// <p>Corresponds to SCTE-35 segments<em>expected. A value that is valid for the specified segmentation</em>type_id.</p>
5277    #[serde(rename = "SegmentsExpected")]
5278    #[serde(skip_serializing_if = "Option::is_none")]
5279    pub segments_expected: Option<i64>,
5280    /// <p>Corresponds to SCTE-35 sub<em>segment</em>num. A value that is valid for the specified segmentation<em>type</em>id.</p>
5281    #[serde(rename = "SubSegmentNum")]
5282    #[serde(skip_serializing_if = "Option::is_none")]
5283    pub sub_segment_num: Option<i64>,
5284    /// <p>Corresponds to SCTE-35 sub<em>segments</em>expected. A value that is valid for the specified segmentation<em>type</em>id.</p>
5285    #[serde(rename = "SubSegmentsExpected")]
5286    #[serde(skip_serializing_if = "Option::is_none")]
5287    pub sub_segments_expected: Option<i64>,
5288}
5289
5290/// <p>Scte35 Splice Insert</p>
5291#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5292pub struct Scte35SpliceInsert {
5293    /// <p>When specified, this offset (in milliseconds) is added to the input Ad Avail PTS time. This only applies to embedded SCTE 104/35 messages and does not apply to OOB messages.</p>
5294    #[serde(rename = "AdAvailOffset")]
5295    #[serde(skip_serializing_if = "Option::is_none")]
5296    pub ad_avail_offset: Option<i64>,
5297    /// <p>When set to ignore, Segment Descriptors with noRegionalBlackoutFlag set to 0 will no longer trigger blackouts or Ad Avail slates</p>
5298    #[serde(rename = "NoRegionalBlackoutFlag")]
5299    #[serde(skip_serializing_if = "Option::is_none")]
5300    pub no_regional_blackout_flag: Option<String>,
5301    /// <p>When set to ignore, Segment Descriptors with webDeliveryAllowedFlag set to 0 will no longer trigger blackouts or Ad Avail slates</p>
5302    #[serde(rename = "WebDeliveryAllowedFlag")]
5303    #[serde(skip_serializing_if = "Option::is_none")]
5304    pub web_delivery_allowed_flag: Option<String>,
5305}
5306
5307/// <p>Settings for a SCTE-35 splice_insert message.</p>
5308#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5309pub struct Scte35SpliceInsertScheduleActionSettings {
5310    /// <p>Optional, the duration for the splice<em>insert, in 90 KHz ticks. To convert seconds to ticks, multiple the seconds by 90,000. If you enter a duration, there is an expectation that the downstream system can read the duration and cue in at that time. If you do not enter a duration, the splice</em>insert will continue indefinitely and there is an expectation that you will enter a return<em>to</em>network to end the splice_insert at the appropriate time.</p>
5311    #[serde(rename = "Duration")]
5312    #[serde(skip_serializing_if = "Option::is_none")]
5313    pub duration: Option<i64>,
5314    /// <p>The splice<em>event</em>id for the SCTE-35 splice_insert, as defined in SCTE-35.</p>
5315    #[serde(rename = "SpliceEventId")]
5316    pub splice_event_id: i64,
5317}
5318
5319/// <p>Scte35 Time Signal Apos</p>
5320#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5321pub struct Scte35TimeSignalApos {
5322    /// <p>When specified, this offset (in milliseconds) is added to the input Ad Avail PTS time. This only applies to embedded SCTE 104/35 messages and does not apply to OOB messages.</p>
5323    #[serde(rename = "AdAvailOffset")]
5324    #[serde(skip_serializing_if = "Option::is_none")]
5325    pub ad_avail_offset: Option<i64>,
5326    /// <p>When set to ignore, Segment Descriptors with noRegionalBlackoutFlag set to 0 will no longer trigger blackouts or Ad Avail slates</p>
5327    #[serde(rename = "NoRegionalBlackoutFlag")]
5328    #[serde(skip_serializing_if = "Option::is_none")]
5329    pub no_regional_blackout_flag: Option<String>,
5330    /// <p>When set to ignore, Segment Descriptors with webDeliveryAllowedFlag set to 0 will no longer trigger blackouts or Ad Avail slates</p>
5331    #[serde(rename = "WebDeliveryAllowedFlag")]
5332    #[serde(skip_serializing_if = "Option::is_none")]
5333    pub web_delivery_allowed_flag: Option<String>,
5334}
5335
5336/// <p>Settings for a SCTE-35 time_signal.</p>
5337#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5338pub struct Scte35TimeSignalScheduleActionSettings {
5339    /// <p>The list of SCTE-35 descriptors accompanying the SCTE-35 time_signal.</p>
5340    #[serde(rename = "Scte35Descriptors")]
5341    pub scte_35_descriptors: Vec<Scte35Descriptor>,
5342}
5343
5344/// <p>Smpte Tt Destination Settings</p>
5345#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5346pub struct SmpteTtDestinationSettings {}
5347
5348/// <p>Standard Hls Settings</p>
5349#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5350pub struct StandardHlsSettings {
5351    /// <p>List all the audio groups that are used with the video output stream. Input all the audio GROUP-IDs that are associated to the video, separate by &#39;,&#39;.</p>
5352    #[serde(rename = "AudioRenditionSets")]
5353    #[serde(skip_serializing_if = "Option::is_none")]
5354    pub audio_rendition_sets: Option<String>,
5355    #[serde(rename = "M3u8Settings")]
5356    pub m_3u_8_settings: M3u8Settings,
5357}
5358
5359/// <p>Placeholder documentation for StartChannelRequest</p>
5360#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5361#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5362pub struct StartChannelRequest {
5363    /// <p>A request to start a channel</p>
5364    #[serde(rename = "ChannelId")]
5365    pub channel_id: String,
5366}
5367
5368/// <p>Placeholder documentation for StartChannelResponse</p>
5369#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5370#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5371pub struct StartChannelResponse {
5372    /// <p>The unique arn of the channel.</p>
5373    #[serde(rename = "Arn")]
5374    #[serde(skip_serializing_if = "Option::is_none")]
5375    pub arn: Option<String>,
5376    /// <p>The class for this channel. STANDARD for a channel with two pipelines or SINGLE_PIPELINE for a channel with one pipeline.</p>
5377    #[serde(rename = "ChannelClass")]
5378    #[serde(skip_serializing_if = "Option::is_none")]
5379    pub channel_class: Option<String>,
5380    /// <p>A list of destinations of the channel. For UDP outputs, there is one
5381    /// destination per output. For other types (HLS, for example), there is
5382    /// one destination per packager.</p>
5383    #[serde(rename = "Destinations")]
5384    #[serde(skip_serializing_if = "Option::is_none")]
5385    pub destinations: Option<Vec<OutputDestination>>,
5386    /// <p>The endpoints where outgoing connections initiate from</p>
5387    #[serde(rename = "EgressEndpoints")]
5388    #[serde(skip_serializing_if = "Option::is_none")]
5389    pub egress_endpoints: Option<Vec<ChannelEgressEndpoint>>,
5390    #[serde(rename = "EncoderSettings")]
5391    #[serde(skip_serializing_if = "Option::is_none")]
5392    pub encoder_settings: Option<EncoderSettings>,
5393    /// <p>The unique id of the channel.</p>
5394    #[serde(rename = "Id")]
5395    #[serde(skip_serializing_if = "Option::is_none")]
5396    pub id: Option<String>,
5397    /// <p>List of input attachments for channel.</p>
5398    #[serde(rename = "InputAttachments")]
5399    #[serde(skip_serializing_if = "Option::is_none")]
5400    pub input_attachments: Option<Vec<InputAttachment>>,
5401    #[serde(rename = "InputSpecification")]
5402    #[serde(skip_serializing_if = "Option::is_none")]
5403    pub input_specification: Option<InputSpecification>,
5404    /// <p>The log level being written to CloudWatch Logs.</p>
5405    #[serde(rename = "LogLevel")]
5406    #[serde(skip_serializing_if = "Option::is_none")]
5407    pub log_level: Option<String>,
5408    /// <p>The name of the channel. (user-mutable)</p>
5409    #[serde(rename = "Name")]
5410    #[serde(skip_serializing_if = "Option::is_none")]
5411    pub name: Option<String>,
5412    /// <p>Runtime details for the pipelines of a running channel.</p>
5413    #[serde(rename = "PipelineDetails")]
5414    #[serde(skip_serializing_if = "Option::is_none")]
5415    pub pipeline_details: Option<Vec<PipelineDetail>>,
5416    /// <p>The number of currently healthy pipelines.</p>
5417    #[serde(rename = "PipelinesRunningCount")]
5418    #[serde(skip_serializing_if = "Option::is_none")]
5419    pub pipelines_running_count: Option<i64>,
5420    /// <p>The Amazon Resource Name (ARN) of the role assumed when running the Channel.</p>
5421    #[serde(rename = "RoleArn")]
5422    #[serde(skip_serializing_if = "Option::is_none")]
5423    pub role_arn: Option<String>,
5424    #[serde(rename = "State")]
5425    #[serde(skip_serializing_if = "Option::is_none")]
5426    pub state: Option<String>,
5427    /// <p>A collection of key-value pairs.</p>
5428    #[serde(rename = "Tags")]
5429    #[serde(skip_serializing_if = "Option::is_none")]
5430    pub tags: Option<::std::collections::HashMap<String, String>>,
5431}
5432
5433/// <p>Placeholder documentation for StartMultiplexRequest</p>
5434#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5435#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5436pub struct StartMultiplexRequest {
5437    /// <p>The ID of the multiplex.</p>
5438    #[serde(rename = "MultiplexId")]
5439    pub multiplex_id: String,
5440}
5441
5442/// <p>Placeholder documentation for StartMultiplexResponse</p>
5443#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5444#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5445pub struct StartMultiplexResponse {
5446    /// <p>The unique arn of the multiplex.</p>
5447    #[serde(rename = "Arn")]
5448    #[serde(skip_serializing_if = "Option::is_none")]
5449    pub arn: Option<String>,
5450    /// <p>A list of availability zones for the multiplex.</p>
5451    #[serde(rename = "AvailabilityZones")]
5452    #[serde(skip_serializing_if = "Option::is_none")]
5453    pub availability_zones: Option<Vec<String>>,
5454    /// <p>A list of the multiplex output destinations.</p>
5455    #[serde(rename = "Destinations")]
5456    #[serde(skip_serializing_if = "Option::is_none")]
5457    pub destinations: Option<Vec<MultiplexOutputDestination>>,
5458    /// <p>The unique id of the multiplex.</p>
5459    #[serde(rename = "Id")]
5460    #[serde(skip_serializing_if = "Option::is_none")]
5461    pub id: Option<String>,
5462    /// <p>Configuration for a multiplex event.</p>
5463    #[serde(rename = "MultiplexSettings")]
5464    #[serde(skip_serializing_if = "Option::is_none")]
5465    pub multiplex_settings: Option<MultiplexSettings>,
5466    /// <p>The name of the multiplex.</p>
5467    #[serde(rename = "Name")]
5468    #[serde(skip_serializing_if = "Option::is_none")]
5469    pub name: Option<String>,
5470    /// <p>The number of currently healthy pipelines.</p>
5471    #[serde(rename = "PipelinesRunningCount")]
5472    #[serde(skip_serializing_if = "Option::is_none")]
5473    pub pipelines_running_count: Option<i64>,
5474    /// <p>The number of programs in the multiplex.</p>
5475    #[serde(rename = "ProgramCount")]
5476    #[serde(skip_serializing_if = "Option::is_none")]
5477    pub program_count: Option<i64>,
5478    /// <p>The current state of the multiplex.</p>
5479    #[serde(rename = "State")]
5480    #[serde(skip_serializing_if = "Option::is_none")]
5481    pub state: Option<String>,
5482    /// <p>A collection of key-value pairs.</p>
5483    #[serde(rename = "Tags")]
5484    #[serde(skip_serializing_if = "Option::is_none")]
5485    pub tags: Option<::std::collections::HashMap<String, String>>,
5486}
5487
5488/// <p>Settings to identify the start of the clip.</p>
5489#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5490pub struct StartTimecode {
5491    /// <p>The timecode for the frame where you want to start the clip. Optional; if not specified, the clip starts at first frame in the file. Enter the timecode as HH:MM:SS:FF or HH:MM:SS;FF.</p>
5492    #[serde(rename = "Timecode")]
5493    #[serde(skip_serializing_if = "Option::is_none")]
5494    pub timecode: Option<String>,
5495}
5496
5497/// <p>Settings for the action to activate a static image.</p>
5498#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5499pub struct StaticImageActivateScheduleActionSettings {
5500    /// <p>The duration in milliseconds for the image to remain on the video. If omitted or set to 0 the duration is unlimited and the image will remain until it is explicitly deactivated.</p>
5501    #[serde(rename = "Duration")]
5502    #[serde(skip_serializing_if = "Option::is_none")]
5503    pub duration: Option<i64>,
5504    /// <p>The time in milliseconds for the image to fade in. The fade-in starts at the start time of the overlay. Default is 0 (no fade-in).</p>
5505    #[serde(rename = "FadeIn")]
5506    #[serde(skip_serializing_if = "Option::is_none")]
5507    pub fade_in: Option<i64>,
5508    /// <p>Applies only if a duration is specified. The time in milliseconds for the image to fade out. The fade-out starts when the duration time is hit, so it effectively extends the duration. Default is 0 (no fade-out).</p>
5509    #[serde(rename = "FadeOut")]
5510    #[serde(skip_serializing_if = "Option::is_none")]
5511    pub fade_out: Option<i64>,
5512    /// <p>The height of the image when inserted into the video, in pixels. The overlay will be scaled up or down to the specified height. Leave blank to use the native height of the overlay.</p>
5513    #[serde(rename = "Height")]
5514    #[serde(skip_serializing_if = "Option::is_none")]
5515    pub height: Option<i64>,
5516    /// <p>The location and filename of the image file to overlay on the video. The file must be a 32-bit BMP, PNG, or TGA file, and must not be larger (in pixels) than the input video.</p>
5517    #[serde(rename = "Image")]
5518    pub image: InputLocation,
5519    /// <p>Placement of the left edge of the overlay relative to the left edge of the video frame, in pixels. 0 (the default) is the left edge of the frame. If the placement causes the overlay to extend beyond the right edge of the underlying video, then the overlay is cropped on the right.</p>
5520    #[serde(rename = "ImageX")]
5521    #[serde(skip_serializing_if = "Option::is_none")]
5522    pub image_x: Option<i64>,
5523    /// <p>Placement of the top edge of the overlay relative to the top edge of the video frame, in pixels. 0 (the default) is the top edge of the frame. If the placement causes the overlay to extend beyond the bottom edge of the underlying video, then the overlay is cropped on the bottom.</p>
5524    #[serde(rename = "ImageY")]
5525    #[serde(skip_serializing_if = "Option::is_none")]
5526    pub image_y: Option<i64>,
5527    /// <p>The number of the layer, 0 to 7. There are 8 layers that can be overlaid on the video, each layer with a different image. The layers are in Z order, which means that overlays with higher values of layer are inserted on top of overlays with lower values of layer. Default is 0.</p>
5528    #[serde(rename = "Layer")]
5529    #[serde(skip_serializing_if = "Option::is_none")]
5530    pub layer: Option<i64>,
5531    /// <p>Opacity of image where 0 is transparent and 100 is fully opaque. Default is 100.</p>
5532    #[serde(rename = "Opacity")]
5533    #[serde(skip_serializing_if = "Option::is_none")]
5534    pub opacity: Option<i64>,
5535    /// <p>The width of the image when inserted into the video, in pixels. The overlay will be scaled up or down to the specified width. Leave blank to use the native width of the overlay.</p>
5536    #[serde(rename = "Width")]
5537    #[serde(skip_serializing_if = "Option::is_none")]
5538    pub width: Option<i64>,
5539}
5540
5541/// <p>Settings for the action to deactivate the image in a specific layer.</p>
5542#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5543pub struct StaticImageDeactivateScheduleActionSettings {
5544    /// <p>The time in milliseconds for the image to fade out. Default is 0 (no fade-out).</p>
5545    #[serde(rename = "FadeOut")]
5546    #[serde(skip_serializing_if = "Option::is_none")]
5547    pub fade_out: Option<i64>,
5548    /// <p>The image overlay layer to deactivate, 0 to 7. Default is 0.</p>
5549    #[serde(rename = "Layer")]
5550    #[serde(skip_serializing_if = "Option::is_none")]
5551    pub layer: Option<i64>,
5552}
5553
5554/// <p>Static Key Settings</p>
5555#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5556pub struct StaticKeySettings {
5557    /// <p>The URL of the license server used for protecting content.</p>
5558    #[serde(rename = "KeyProviderServer")]
5559    #[serde(skip_serializing_if = "Option::is_none")]
5560    pub key_provider_server: Option<InputLocation>,
5561    /// <p>Static key value as a 32 character hexadecimal string.</p>
5562    #[serde(rename = "StaticKeyValue")]
5563    pub static_key_value: String,
5564}
5565
5566/// <p>Placeholder documentation for StopChannelRequest</p>
5567#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5568#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5569pub struct StopChannelRequest {
5570    /// <p>A request to stop a running channel</p>
5571    #[serde(rename = "ChannelId")]
5572    pub channel_id: String,
5573}
5574
5575/// <p>Placeholder documentation for StopChannelResponse</p>
5576#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5577#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5578pub struct StopChannelResponse {
5579    /// <p>The unique arn of the channel.</p>
5580    #[serde(rename = "Arn")]
5581    #[serde(skip_serializing_if = "Option::is_none")]
5582    pub arn: Option<String>,
5583    /// <p>The class for this channel. STANDARD for a channel with two pipelines or SINGLE_PIPELINE for a channel with one pipeline.</p>
5584    #[serde(rename = "ChannelClass")]
5585    #[serde(skip_serializing_if = "Option::is_none")]
5586    pub channel_class: Option<String>,
5587    /// <p>A list of destinations of the channel. For UDP outputs, there is one
5588    /// destination per output. For other types (HLS, for example), there is
5589    /// one destination per packager.</p>
5590    #[serde(rename = "Destinations")]
5591    #[serde(skip_serializing_if = "Option::is_none")]
5592    pub destinations: Option<Vec<OutputDestination>>,
5593    /// <p>The endpoints where outgoing connections initiate from</p>
5594    #[serde(rename = "EgressEndpoints")]
5595    #[serde(skip_serializing_if = "Option::is_none")]
5596    pub egress_endpoints: Option<Vec<ChannelEgressEndpoint>>,
5597    #[serde(rename = "EncoderSettings")]
5598    #[serde(skip_serializing_if = "Option::is_none")]
5599    pub encoder_settings: Option<EncoderSettings>,
5600    /// <p>The unique id of the channel.</p>
5601    #[serde(rename = "Id")]
5602    #[serde(skip_serializing_if = "Option::is_none")]
5603    pub id: Option<String>,
5604    /// <p>List of input attachments for channel.</p>
5605    #[serde(rename = "InputAttachments")]
5606    #[serde(skip_serializing_if = "Option::is_none")]
5607    pub input_attachments: Option<Vec<InputAttachment>>,
5608    #[serde(rename = "InputSpecification")]
5609    #[serde(skip_serializing_if = "Option::is_none")]
5610    pub input_specification: Option<InputSpecification>,
5611    /// <p>The log level being written to CloudWatch Logs.</p>
5612    #[serde(rename = "LogLevel")]
5613    #[serde(skip_serializing_if = "Option::is_none")]
5614    pub log_level: Option<String>,
5615    /// <p>The name of the channel. (user-mutable)</p>
5616    #[serde(rename = "Name")]
5617    #[serde(skip_serializing_if = "Option::is_none")]
5618    pub name: Option<String>,
5619    /// <p>Runtime details for the pipelines of a running channel.</p>
5620    #[serde(rename = "PipelineDetails")]
5621    #[serde(skip_serializing_if = "Option::is_none")]
5622    pub pipeline_details: Option<Vec<PipelineDetail>>,
5623    /// <p>The number of currently healthy pipelines.</p>
5624    #[serde(rename = "PipelinesRunningCount")]
5625    #[serde(skip_serializing_if = "Option::is_none")]
5626    pub pipelines_running_count: Option<i64>,
5627    /// <p>The Amazon Resource Name (ARN) of the role assumed when running the Channel.</p>
5628    #[serde(rename = "RoleArn")]
5629    #[serde(skip_serializing_if = "Option::is_none")]
5630    pub role_arn: Option<String>,
5631    #[serde(rename = "State")]
5632    #[serde(skip_serializing_if = "Option::is_none")]
5633    pub state: Option<String>,
5634    /// <p>A collection of key-value pairs.</p>
5635    #[serde(rename = "Tags")]
5636    #[serde(skip_serializing_if = "Option::is_none")]
5637    pub tags: Option<::std::collections::HashMap<String, String>>,
5638}
5639
5640/// <p>Placeholder documentation for StopMultiplexRequest</p>
5641#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5642#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5643pub struct StopMultiplexRequest {
5644    /// <p>The ID of the multiplex.</p>
5645    #[serde(rename = "MultiplexId")]
5646    pub multiplex_id: String,
5647}
5648
5649/// <p>Placeholder documentation for StopMultiplexResponse</p>
5650#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5651#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5652pub struct StopMultiplexResponse {
5653    /// <p>The unique arn of the multiplex.</p>
5654    #[serde(rename = "Arn")]
5655    #[serde(skip_serializing_if = "Option::is_none")]
5656    pub arn: Option<String>,
5657    /// <p>A list of availability zones for the multiplex.</p>
5658    #[serde(rename = "AvailabilityZones")]
5659    #[serde(skip_serializing_if = "Option::is_none")]
5660    pub availability_zones: Option<Vec<String>>,
5661    /// <p>A list of the multiplex output destinations.</p>
5662    #[serde(rename = "Destinations")]
5663    #[serde(skip_serializing_if = "Option::is_none")]
5664    pub destinations: Option<Vec<MultiplexOutputDestination>>,
5665    /// <p>The unique id of the multiplex.</p>
5666    #[serde(rename = "Id")]
5667    #[serde(skip_serializing_if = "Option::is_none")]
5668    pub id: Option<String>,
5669    /// <p>Configuration for a multiplex event.</p>
5670    #[serde(rename = "MultiplexSettings")]
5671    #[serde(skip_serializing_if = "Option::is_none")]
5672    pub multiplex_settings: Option<MultiplexSettings>,
5673    /// <p>The name of the multiplex.</p>
5674    #[serde(rename = "Name")]
5675    #[serde(skip_serializing_if = "Option::is_none")]
5676    pub name: Option<String>,
5677    /// <p>The number of currently healthy pipelines.</p>
5678    #[serde(rename = "PipelinesRunningCount")]
5679    #[serde(skip_serializing_if = "Option::is_none")]
5680    pub pipelines_running_count: Option<i64>,
5681    /// <p>The number of programs in the multiplex.</p>
5682    #[serde(rename = "ProgramCount")]
5683    #[serde(skip_serializing_if = "Option::is_none")]
5684    pub program_count: Option<i64>,
5685    /// <p>The current state of the multiplex.</p>
5686    #[serde(rename = "State")]
5687    #[serde(skip_serializing_if = "Option::is_none")]
5688    pub state: Option<String>,
5689    /// <p>A collection of key-value pairs.</p>
5690    #[serde(rename = "Tags")]
5691    #[serde(skip_serializing_if = "Option::is_none")]
5692    pub tags: Option<::std::collections::HashMap<String, String>>,
5693}
5694
5695/// <p>Settings to identify the end of the clip.</p>
5696#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5697pub struct StopTimecode {
5698    /// <p>If you specify a StopTimecode in an input (in order to clip the file), you can specify if you want the clip to exclude (the default) or include the frame specified by the timecode.</p>
5699    #[serde(rename = "LastFrameClippingBehavior")]
5700    #[serde(skip_serializing_if = "Option::is_none")]
5701    pub last_frame_clipping_behavior: Option<String>,
5702    /// <p>The timecode for the frame where you want to stop the clip. Optional; if not specified, the clip continues to the end of the file. Enter the timecode as HH:MM:SS:FF or HH:MM:SS;FF.</p>
5703    #[serde(rename = "Timecode")]
5704    #[serde(skip_serializing_if = "Option::is_none")]
5705    pub timecode: Option<String>,
5706}
5707
5708/// <p>Teletext Destination Settings</p>
5709#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5710pub struct TeletextDestinationSettings {}
5711
5712/// <p>Teletext Source Settings</p>
5713#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5714pub struct TeletextSourceSettings {
5715    /// <p>Specifies the teletext page number within the data stream from which to extract captions. Range of 0x100 (256) to 0x8FF (2303). Unused for passthrough. Should be specified as a hexadecimal string with no &quot;0x&quot; prefix.</p>
5716    #[serde(rename = "PageNumber")]
5717    #[serde(skip_serializing_if = "Option::is_none")]
5718    pub page_number: Option<String>,
5719}
5720
5721/// <p>Temporal Filter Settings</p>
5722#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5723pub struct TemporalFilterSettings {
5724    /// <p>If you enable this filter, the results are the following:
5725    /// - If the source content is noisy (it contains excessive digital artifacts), the filter cleans up the source.
5726    /// - If the source content is already clean, the filter tends to decrease the bitrate, especially when the rate control mode is QVBR.</p>
5727    #[serde(rename = "PostFilterSharpening")]
5728    #[serde(skip_serializing_if = "Option::is_none")]
5729    pub post_filter_sharpening: Option<String>,
5730    /// <p>Choose a filter strength. We recommend a strength of 1 or 2. A higher strength might take out good information, resulting in an image that is overly soft.</p>
5731    #[serde(rename = "Strength")]
5732    #[serde(skip_serializing_if = "Option::is_none")]
5733    pub strength: Option<String>,
5734}
5735
5736/// <p>Timecode Config</p>
5737#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5738pub struct TimecodeConfig {
5739    /// <p>Identifies the source for the timecode that will be associated with the events outputs.
5740    /// -Embedded (embedded): Initialize the output timecode with timecode from the the source.  If no embedded timecode is detected in the source, the system falls back to using &quot;Start at 0&quot; (zerobased).
5741    /// -System Clock (systemclock): Use the UTC time.
5742    /// -Start at 0 (zerobased): The time of the first frame of the event will be 00:00:00:00.</p>
5743    #[serde(rename = "Source")]
5744    pub source: String,
5745    /// <p>Threshold in frames beyond which output timecode is resynchronized to the input timecode. Discrepancies below this threshold are permitted to avoid unnecessary discontinuities in the output timecode. No timecode sync when this is not specified.</p>
5746    #[serde(rename = "SyncThreshold")]
5747    #[serde(skip_serializing_if = "Option::is_none")]
5748    pub sync_threshold: Option<i64>,
5749}
5750
5751/// <p>Ttml Destination Settings</p>
5752#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5753pub struct TtmlDestinationSettings {
5754    /// <p>When set to passthrough, passes through style and position information from a TTML-like input source (TTML, SMPTE-TT, CFF-TT) to the CFF-TT output or TTML output.</p>
5755    #[serde(rename = "StyleControl")]
5756    #[serde(skip_serializing_if = "Option::is_none")]
5757    pub style_control: Option<String>,
5758}
5759
5760/// <p>Udp Container Settings</p>
5761#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5762pub struct UdpContainerSettings {
5763    #[serde(rename = "M2tsSettings")]
5764    #[serde(skip_serializing_if = "Option::is_none")]
5765    pub m_2ts_settings: Option<M2tsSettings>,
5766}
5767
5768/// <p>Udp Group Settings</p>
5769#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5770pub struct UdpGroupSettings {
5771    /// <p>Specifies behavior of last resort when input video is lost, and no more backup inputs are available. When dropTs is selected the entire transport stream will stop being emitted.  When dropProgram is selected the program can be dropped from the transport stream (and replaced with null packets to meet the TS bitrate requirement).  Or, when emitProgram is chosen the transport stream will continue to be produced normally with repeat frames, black frames, or slate frames substituted for the absent input video.</p>
5772    #[serde(rename = "InputLossAction")]
5773    #[serde(skip_serializing_if = "Option::is_none")]
5774    pub input_loss_action: Option<String>,
5775    /// <p>Indicates ID3 frame that has the timecode.</p>
5776    #[serde(rename = "TimedMetadataId3Frame")]
5777    #[serde(skip_serializing_if = "Option::is_none")]
5778    pub timed_metadata_id_3_frame: Option<String>,
5779    /// <p>Timed Metadata interval in seconds.</p>
5780    #[serde(rename = "TimedMetadataId3Period")]
5781    #[serde(skip_serializing_if = "Option::is_none")]
5782    pub timed_metadata_id_3_period: Option<i64>,
5783}
5784
5785/// <p>Udp Output Settings</p>
5786#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5787pub struct UdpOutputSettings {
5788    /// <p>UDP output buffering in milliseconds. Larger values increase latency through the transcoder but simultaneously assist the transcoder in maintaining a constant, low-jitter UDP/RTP output while accommodating clock recovery, input switching, input disruptions, picture reordering, etc.</p>
5789    #[serde(rename = "BufferMsec")]
5790    #[serde(skip_serializing_if = "Option::is_none")]
5791    pub buffer_msec: Option<i64>,
5792    #[serde(rename = "ContainerSettings")]
5793    pub container_settings: UdpContainerSettings,
5794    /// <p>Destination address and port number for RTP or UDP packets. Can be unicast or multicast RTP or UDP (eg. rtp://239.10.10.10:5001 or udp://10.100.100.100:5002).</p>
5795    #[serde(rename = "Destination")]
5796    pub destination: OutputLocationRef,
5797    /// <p>Settings for enabling and adjusting Forward Error Correction on UDP outputs.</p>
5798    #[serde(rename = "FecOutputSettings")]
5799    #[serde(skip_serializing_if = "Option::is_none")]
5800    pub fec_output_settings: Option<FecOutputSettings>,
5801}
5802
5803/// <p>Channel class that the channel should be updated to.</p>
5804#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5805#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5806pub struct UpdateChannelClassRequest {
5807    /// <p>The channel class that you wish to update this channel to use.</p>
5808    #[serde(rename = "ChannelClass")]
5809    pub channel_class: String,
5810    /// <p>Channel Id of the channel whose class should be updated.</p>
5811    #[serde(rename = "ChannelId")]
5812    pub channel_id: String,
5813    /// <p>A list of output destinations for this channel.</p>
5814    #[serde(rename = "Destinations")]
5815    #[serde(skip_serializing_if = "Option::is_none")]
5816    pub destinations: Option<Vec<OutputDestination>>,
5817}
5818
5819/// <p>Placeholder documentation for UpdateChannelClassResponse</p>
5820#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5821#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5822pub struct UpdateChannelClassResponse {
5823    #[serde(rename = "Channel")]
5824    #[serde(skip_serializing_if = "Option::is_none")]
5825    pub channel: Option<Channel>,
5826}
5827
5828/// <p>A request to update a channel.</p>
5829#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5830#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5831pub struct UpdateChannelRequest {
5832    /// <p>channel ID</p>
5833    #[serde(rename = "ChannelId")]
5834    pub channel_id: String,
5835    /// <p>A list of output destinations for this channel.</p>
5836    #[serde(rename = "Destinations")]
5837    #[serde(skip_serializing_if = "Option::is_none")]
5838    pub destinations: Option<Vec<OutputDestination>>,
5839    /// <p>The encoder settings for this channel.</p>
5840    #[serde(rename = "EncoderSettings")]
5841    #[serde(skip_serializing_if = "Option::is_none")]
5842    pub encoder_settings: Option<EncoderSettings>,
5843    #[serde(rename = "InputAttachments")]
5844    #[serde(skip_serializing_if = "Option::is_none")]
5845    pub input_attachments: Option<Vec<InputAttachment>>,
5846    /// <p>Specification of input for this channel (max. bitrate, resolution, codec, etc.)</p>
5847    #[serde(rename = "InputSpecification")]
5848    #[serde(skip_serializing_if = "Option::is_none")]
5849    pub input_specification: Option<InputSpecification>,
5850    /// <p>The log level to write to CloudWatch Logs.</p>
5851    #[serde(rename = "LogLevel")]
5852    #[serde(skip_serializing_if = "Option::is_none")]
5853    pub log_level: Option<String>,
5854    /// <p>The name of the channel.</p>
5855    #[serde(rename = "Name")]
5856    #[serde(skip_serializing_if = "Option::is_none")]
5857    pub name: Option<String>,
5858    /// <p>An optional Amazon Resource Name (ARN) of the role to assume when running the Channel. If you do not specify this on an update call but the role was previously set that role will be removed.</p>
5859    #[serde(rename = "RoleArn")]
5860    #[serde(skip_serializing_if = "Option::is_none")]
5861    pub role_arn: Option<String>,
5862}
5863
5864/// <p>Placeholder documentation for UpdateChannelResponse</p>
5865#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5866#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5867pub struct UpdateChannelResponse {
5868    #[serde(rename = "Channel")]
5869    #[serde(skip_serializing_if = "Option::is_none")]
5870    pub channel: Option<Channel>,
5871}
5872
5873/// <p>A request to update an input device.</p>
5874#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5875#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5876pub struct UpdateInputDeviceRequest {
5877    /// <p>The settings that you want to apply to the input device.</p>
5878    #[serde(rename = "HdDeviceSettings")]
5879    #[serde(skip_serializing_if = "Option::is_none")]
5880    pub hd_device_settings: Option<InputDeviceConfigurableSettings>,
5881    /// <p>The unique ID of the input device. For example, hd-123456789abcdef.</p>
5882    #[serde(rename = "InputDeviceId")]
5883    pub input_device_id: String,
5884    /// <p>The name that you assigned to this input device (not the unique ID).</p>
5885    #[serde(rename = "Name")]
5886    #[serde(skip_serializing_if = "Option::is_none")]
5887    pub name: Option<String>,
5888}
5889
5890/// <p>Placeholder documentation for UpdateInputDeviceResponse</p>
5891#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5892#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5893pub struct UpdateInputDeviceResponse {
5894    /// <p>The unique ARN of the input device.</p>
5895    #[serde(rename = "Arn")]
5896    #[serde(skip_serializing_if = "Option::is_none")]
5897    pub arn: Option<String>,
5898    /// <p>The state of the connection between the input device and AWS.</p>
5899    #[serde(rename = "ConnectionState")]
5900    #[serde(skip_serializing_if = "Option::is_none")]
5901    pub connection_state: Option<String>,
5902    /// <p>The status of the action to synchronize the device configuration. If you change the configuration of the input device (for example, the maximum bitrate), MediaLive sends the new data to the device. The device might not update itself immediately. SYNCED means the device has updated its configuration. SYNCING means that it has not updated its configuration.</p>
5903    #[serde(rename = "DeviceSettingsSyncState")]
5904    #[serde(skip_serializing_if = "Option::is_none")]
5905    pub device_settings_sync_state: Option<String>,
5906    /// <p>Settings that describe an input device that is type HD.</p>
5907    #[serde(rename = "HdDeviceSettings")]
5908    #[serde(skip_serializing_if = "Option::is_none")]
5909    pub hd_device_settings: Option<InputDeviceHdSettings>,
5910    /// <p>The unique ID of the input device.</p>
5911    #[serde(rename = "Id")]
5912    #[serde(skip_serializing_if = "Option::is_none")]
5913    pub id: Option<String>,
5914    /// <p>The network MAC address of the input device.</p>
5915    #[serde(rename = "MacAddress")]
5916    #[serde(skip_serializing_if = "Option::is_none")]
5917    pub mac_address: Option<String>,
5918    /// <p>A name that you specify for the input device.</p>
5919    #[serde(rename = "Name")]
5920    #[serde(skip_serializing_if = "Option::is_none")]
5921    pub name: Option<String>,
5922    /// <p>The network settings for the input device.</p>
5923    #[serde(rename = "NetworkSettings")]
5924    #[serde(skip_serializing_if = "Option::is_none")]
5925    pub network_settings: Option<InputDeviceNetworkSettings>,
5926    /// <p>The unique serial number of the input device.</p>
5927    #[serde(rename = "SerialNumber")]
5928    #[serde(skip_serializing_if = "Option::is_none")]
5929    pub serial_number: Option<String>,
5930    /// <p>The type of the input device.</p>
5931    #[serde(rename = "Type")]
5932    #[serde(skip_serializing_if = "Option::is_none")]
5933    pub type_: Option<String>,
5934}
5935
5936/// <p>A request to update an input.</p>
5937#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5938#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5939pub struct UpdateInputRequest {
5940    /// <p>Destination settings for PUSH type inputs.</p>
5941    #[serde(rename = "Destinations")]
5942    #[serde(skip_serializing_if = "Option::is_none")]
5943    pub destinations: Option<Vec<InputDestinationRequest>>,
5944    /// <p>Settings for the devices.</p>
5945    #[serde(rename = "InputDevices")]
5946    #[serde(skip_serializing_if = "Option::is_none")]
5947    pub input_devices: Option<Vec<InputDeviceRequest>>,
5948    /// <p>Unique ID of the input.</p>
5949    #[serde(rename = "InputId")]
5950    pub input_id: String,
5951    /// <p>A list of security groups referenced by IDs to attach to the input.</p>
5952    #[serde(rename = "InputSecurityGroups")]
5953    #[serde(skip_serializing_if = "Option::is_none")]
5954    pub input_security_groups: Option<Vec<String>>,
5955    /// <p>A list of the MediaConnect Flow ARNs that you want to use as the source of the input. You can specify as few as one
5956    /// Flow and presently, as many as two. The only requirement is when you have more than one is that each Flow is in a
5957    /// separate Availability Zone as this ensures your EML input is redundant to AZ issues.</p>
5958    #[serde(rename = "MediaConnectFlows")]
5959    #[serde(skip_serializing_if = "Option::is_none")]
5960    pub media_connect_flows: Option<Vec<MediaConnectFlowRequest>>,
5961    /// <p>Name of the input.</p>
5962    #[serde(rename = "Name")]
5963    #[serde(skip_serializing_if = "Option::is_none")]
5964    pub name: Option<String>,
5965    /// <p>The Amazon Resource Name (ARN) of the role this input assumes during and after creation.</p>
5966    #[serde(rename = "RoleArn")]
5967    #[serde(skip_serializing_if = "Option::is_none")]
5968    pub role_arn: Option<String>,
5969    /// <p>The source URLs for a PULL-type input. Every PULL type input needs
5970    /// exactly two source URLs for redundancy.
5971    /// Only specify sources for PULL type Inputs. Leave Destinations empty.</p>
5972    #[serde(rename = "Sources")]
5973    #[serde(skip_serializing_if = "Option::is_none")]
5974    pub sources: Option<Vec<InputSourceRequest>>,
5975}
5976
5977/// <p>Placeholder documentation for UpdateInputResponse</p>
5978#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5979#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5980pub struct UpdateInputResponse {
5981    #[serde(rename = "Input")]
5982    #[serde(skip_serializing_if = "Option::is_none")]
5983    pub input: Option<Input>,
5984}
5985
5986/// <p>The request to update some combination of the Input Security Group name and the IPv4 CIDRs the Input Security Group should allow.</p>
5987#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5988#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5989pub struct UpdateInputSecurityGroupRequest {
5990    /// <p>The id of the Input Security Group to update.</p>
5991    #[serde(rename = "InputSecurityGroupId")]
5992    pub input_security_group_id: String,
5993    /// <p>A collection of key-value pairs.</p>
5994    #[serde(rename = "Tags")]
5995    #[serde(skip_serializing_if = "Option::is_none")]
5996    pub tags: Option<::std::collections::HashMap<String, String>>,
5997    /// <p>List of IPv4 CIDR addresses to whitelist</p>
5998    #[serde(rename = "WhitelistRules")]
5999    #[serde(skip_serializing_if = "Option::is_none")]
6000    pub whitelist_rules: Option<Vec<InputWhitelistRuleCidr>>,
6001}
6002
6003/// <p>Placeholder documentation for UpdateInputSecurityGroupResponse</p>
6004#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6005#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6006pub struct UpdateInputSecurityGroupResponse {
6007    #[serde(rename = "SecurityGroup")]
6008    #[serde(skip_serializing_if = "Option::is_none")]
6009    pub security_group: Option<InputSecurityGroup>,
6010}
6011
6012/// <p>A request to update a program in a multiplex.</p>
6013#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6014#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6015pub struct UpdateMultiplexProgramRequest {
6016    /// <p>The ID of the multiplex of the program to update.</p>
6017    #[serde(rename = "MultiplexId")]
6018    pub multiplex_id: String,
6019    /// <p>The new settings for a multiplex program.</p>
6020    #[serde(rename = "MultiplexProgramSettings")]
6021    #[serde(skip_serializing_if = "Option::is_none")]
6022    pub multiplex_program_settings: Option<MultiplexProgramSettings>,
6023    /// <p>The name of the program to update.</p>
6024    #[serde(rename = "ProgramName")]
6025    pub program_name: String,
6026}
6027
6028/// <p>Placeholder documentation for UpdateMultiplexProgramResponse</p>
6029#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6030#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6031pub struct UpdateMultiplexProgramResponse {
6032    /// <p>The updated multiplex program.</p>
6033    #[serde(rename = "MultiplexProgram")]
6034    #[serde(skip_serializing_if = "Option::is_none")]
6035    pub multiplex_program: Option<MultiplexProgram>,
6036}
6037
6038/// <p>A request to update a multiplex.</p>
6039#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6040#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6041pub struct UpdateMultiplexRequest {
6042    /// <p>ID of the multiplex to update.</p>
6043    #[serde(rename = "MultiplexId")]
6044    pub multiplex_id: String,
6045    /// <p>The new settings for a multiplex.</p>
6046    #[serde(rename = "MultiplexSettings")]
6047    #[serde(skip_serializing_if = "Option::is_none")]
6048    pub multiplex_settings: Option<MultiplexSettings>,
6049    /// <p>Name of the multiplex.</p>
6050    #[serde(rename = "Name")]
6051    #[serde(skip_serializing_if = "Option::is_none")]
6052    pub name: Option<String>,
6053}
6054
6055/// <p>Placeholder documentation for UpdateMultiplexResponse</p>
6056#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6057#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6058pub struct UpdateMultiplexResponse {
6059    /// <p>The updated multiplex.</p>
6060    #[serde(rename = "Multiplex")]
6061    #[serde(skip_serializing_if = "Option::is_none")]
6062    pub multiplex: Option<Multiplex>,
6063}
6064
6065/// <p>Request to update a reservation</p>
6066#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6067#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6068pub struct UpdateReservationRequest {
6069    /// <p>Name of the reservation</p>
6070    #[serde(rename = "Name")]
6071    #[serde(skip_serializing_if = "Option::is_none")]
6072    pub name: Option<String>,
6073    /// <p>Unique reservation ID, e.g. &#39;1234567&#39;</p>
6074    #[serde(rename = "ReservationId")]
6075    pub reservation_id: String,
6076}
6077
6078/// <p>Placeholder documentation for UpdateReservationResponse</p>
6079#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6080#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6081pub struct UpdateReservationResponse {
6082    #[serde(rename = "Reservation")]
6083    #[serde(skip_serializing_if = "Option::is_none")]
6084    pub reservation: Option<Reservation>,
6085}
6086
6087/// <p>Placeholder documentation for ValidationError</p>
6088#[derive(Clone, Debug, Default, PartialEq)]
6089pub struct ValidationError {
6090    /// <p>Path to the source of the error.</p>
6091    pub element_path: Option<String>,
6092    /// <p>The error message.</p>
6093    pub error_message: Option<String>,
6094}
6095
6096/// <p>Video Codec Settings</p>
6097#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6098pub struct VideoCodecSettings {
6099    #[serde(rename = "FrameCaptureSettings")]
6100    #[serde(skip_serializing_if = "Option::is_none")]
6101    pub frame_capture_settings: Option<FrameCaptureSettings>,
6102    #[serde(rename = "H264Settings")]
6103    #[serde(skip_serializing_if = "Option::is_none")]
6104    pub h264_settings: Option<H264Settings>,
6105    #[serde(rename = "H265Settings")]
6106    #[serde(skip_serializing_if = "Option::is_none")]
6107    pub h265_settings: Option<H265Settings>,
6108}
6109
6110/// <p>Video settings for this stream.</p>
6111#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6112pub struct VideoDescription {
6113    /// <p>Video codec settings.</p>
6114    #[serde(rename = "CodecSettings")]
6115    #[serde(skip_serializing_if = "Option::is_none")]
6116    pub codec_settings: Option<VideoCodecSettings>,
6117    /// <p>Output video height, in pixels. Must be an even number. For most codecs, you can leave this field and width blank in order to use the height and width (resolution) from the source. Note, however, that leaving blank is not recommended. For the Frame Capture codec, height and width are required.</p>
6118    #[serde(rename = "Height")]
6119    #[serde(skip_serializing_if = "Option::is_none")]
6120    pub height: Option<i64>,
6121    /// <p>The name of this VideoDescription. Outputs will use this name to uniquely identify this Description.  Description names should be unique within this Live Event.</p>
6122    #[serde(rename = "Name")]
6123    pub name: String,
6124    /// <p>Indicates how to respond to the AFD values in the input stream. RESPOND causes input video to be clipped, depending on the AFD value, input display aspect ratio, and output display aspect ratio, and (except for FRAME<em>CAPTURE codec) includes the values in the output. PASSTHROUGH (does not apply to FRAME</em>CAPTURE codec) ignores the AFD values and includes the values in the output, so input video is not clipped. NONE ignores the AFD values and does not include the values through to the output, so input video is not clipped.</p>
6125    #[serde(rename = "RespondToAfd")]
6126    #[serde(skip_serializing_if = "Option::is_none")]
6127    pub respond_to_afd: Option<String>,
6128    /// <p>STRETCH<em>TO</em>OUTPUT configures the output position to stretch the video to the specified output resolution (height and width). This option will override any position value. DEFAULT may insert black boxes (pillar boxes or letter boxes) around the video to provide the specified output resolution.</p>
6129    #[serde(rename = "ScalingBehavior")]
6130    #[serde(skip_serializing_if = "Option::is_none")]
6131    pub scaling_behavior: Option<String>,
6132    /// <p>Changes the strength of the anti-alias filter used for scaling. 0 is the softest setting, 100 is the sharpest. A setting of 50 is recommended for most content.</p>
6133    #[serde(rename = "Sharpness")]
6134    #[serde(skip_serializing_if = "Option::is_none")]
6135    pub sharpness: Option<i64>,
6136    /// <p>Output video width, in pixels. Must be an even number. For most codecs, you can leave this field and height blank in order to use the height and width (resolution) from the source. Note, however, that leaving blank is not recommended. For the Frame Capture codec, height and width are required.</p>
6137    #[serde(rename = "Width")]
6138    #[serde(skip_serializing_if = "Option::is_none")]
6139    pub width: Option<i64>,
6140}
6141
6142/// <p>Specifies a particular video stream within an input source. An input may have only a single video selector.</p>
6143#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6144pub struct VideoSelector {
6145    /// <p>Specifies the color space of an input. This setting works in tandem with colorSpaceUsage and a video description&#39;s colorSpaceSettingsChoice to determine if any conversion will be performed.</p>
6146    #[serde(rename = "ColorSpace")]
6147    #[serde(skip_serializing_if = "Option::is_none")]
6148    pub color_space: Option<String>,
6149    /// <p>Applies only if colorSpace is a value other than follow. This field controls how the value in the colorSpace field will be used. fallback means that when the input does include color space data, that data will be used, but when the input has no color space data, the value in colorSpace will be used. Choose fallback if your input is sometimes missing color space data, but when it does have color space data, that data is correct. force means to always use the value in colorSpace. Choose force if your input usually has no color space data or might have unreliable color space data.</p>
6150    #[serde(rename = "ColorSpaceUsage")]
6151    #[serde(skip_serializing_if = "Option::is_none")]
6152    pub color_space_usage: Option<String>,
6153    /// <p>The video selector settings.</p>
6154    #[serde(rename = "SelectorSettings")]
6155    #[serde(skip_serializing_if = "Option::is_none")]
6156    pub selector_settings: Option<VideoSelectorSettings>,
6157}
6158
6159/// <p>Video Selector Pid</p>
6160#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6161pub struct VideoSelectorPid {
6162    /// <p>Selects a specific PID from within a video source.</p>
6163    #[serde(rename = "Pid")]
6164    #[serde(skip_serializing_if = "Option::is_none")]
6165    pub pid: Option<i64>,
6166}
6167
6168/// <p>Video Selector Program Id</p>
6169#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6170pub struct VideoSelectorProgramId {
6171    /// <p>Selects a specific program from within a multi-program transport stream. If the program doesn&#39;t exist, the first program within the transport stream will be selected by default.</p>
6172    #[serde(rename = "ProgramId")]
6173    #[serde(skip_serializing_if = "Option::is_none")]
6174    pub program_id: Option<i64>,
6175}
6176
6177/// <p>Video Selector Settings</p>
6178#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6179pub struct VideoSelectorSettings {
6180    #[serde(rename = "VideoSelectorPid")]
6181    #[serde(skip_serializing_if = "Option::is_none")]
6182    pub video_selector_pid: Option<VideoSelectorPid>,
6183    #[serde(rename = "VideoSelectorProgramId")]
6184    #[serde(skip_serializing_if = "Option::is_none")]
6185    pub video_selector_program_id: Option<VideoSelectorProgramId>,
6186}
6187
6188/// <p>Webvtt Destination Settings</p>
6189#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6190pub struct WebvttDestinationSettings {}
6191
6192/// Errors returned by BatchUpdateSchedule
6193#[derive(Debug, PartialEq)]
6194pub enum BatchUpdateScheduleError {
6195    /// <p>Placeholder documentation for BadGatewayException</p>
6196    BadGateway(String),
6197    /// <p>Placeholder documentation for BadRequestException</p>
6198    BadRequest(String),
6199    /// <p>Placeholder documentation for ForbiddenException</p>
6200    Forbidden(String),
6201    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6202    GatewayTimeout(String),
6203    /// <p>Placeholder documentation for InternalServerErrorException</p>
6204    InternalServerError(String),
6205    /// <p>Placeholder documentation for NotFoundException</p>
6206    NotFound(String),
6207    /// <p>Placeholder documentation for TooManyRequestsException</p>
6208    TooManyRequests(String),
6209    /// <p>Placeholder documentation for UnprocessableEntityException</p>
6210    UnprocessableEntity(String),
6211}
6212
6213impl BatchUpdateScheduleError {
6214    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<BatchUpdateScheduleError> {
6215        if let Some(err) = proto::json::Error::parse_rest(&res) {
6216            match err.typ.as_str() {
6217                "BadGatewayException" => {
6218                    return RusotoError::Service(BatchUpdateScheduleError::BadGateway(err.msg))
6219                }
6220                "BadRequestException" => {
6221                    return RusotoError::Service(BatchUpdateScheduleError::BadRequest(err.msg))
6222                }
6223                "ForbiddenException" => {
6224                    return RusotoError::Service(BatchUpdateScheduleError::Forbidden(err.msg))
6225                }
6226                "GatewayTimeoutException" => {
6227                    return RusotoError::Service(BatchUpdateScheduleError::GatewayTimeout(err.msg))
6228                }
6229                "InternalServerErrorException" => {
6230                    return RusotoError::Service(BatchUpdateScheduleError::InternalServerError(
6231                        err.msg,
6232                    ))
6233                }
6234                "NotFoundException" => {
6235                    return RusotoError::Service(BatchUpdateScheduleError::NotFound(err.msg))
6236                }
6237                "TooManyRequestsException" => {
6238                    return RusotoError::Service(BatchUpdateScheduleError::TooManyRequests(err.msg))
6239                }
6240                "UnprocessableEntityException" => {
6241                    return RusotoError::Service(BatchUpdateScheduleError::UnprocessableEntity(
6242                        err.msg,
6243                    ))
6244                }
6245                "ValidationException" => return RusotoError::Validation(err.msg),
6246                _ => {}
6247            }
6248        }
6249        RusotoError::Unknown(res)
6250    }
6251}
6252impl fmt::Display for BatchUpdateScheduleError {
6253    #[allow(unused_variables)]
6254    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6255        match *self {
6256            BatchUpdateScheduleError::BadGateway(ref cause) => write!(f, "{}", cause),
6257            BatchUpdateScheduleError::BadRequest(ref cause) => write!(f, "{}", cause),
6258            BatchUpdateScheduleError::Forbidden(ref cause) => write!(f, "{}", cause),
6259            BatchUpdateScheduleError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6260            BatchUpdateScheduleError::InternalServerError(ref cause) => write!(f, "{}", cause),
6261            BatchUpdateScheduleError::NotFound(ref cause) => write!(f, "{}", cause),
6262            BatchUpdateScheduleError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6263            BatchUpdateScheduleError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
6264        }
6265    }
6266}
6267impl Error for BatchUpdateScheduleError {}
6268/// Errors returned by CreateChannel
6269#[derive(Debug, PartialEq)]
6270pub enum CreateChannelError {
6271    /// <p>Placeholder documentation for BadGatewayException</p>
6272    BadGateway(String),
6273    /// <p>Placeholder documentation for BadRequestException</p>
6274    BadRequest(String),
6275    /// <p>Placeholder documentation for ConflictException</p>
6276    Conflict(String),
6277    /// <p>Placeholder documentation for ForbiddenException</p>
6278    Forbidden(String),
6279    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6280    GatewayTimeout(String),
6281    /// <p>Placeholder documentation for InternalServerErrorException</p>
6282    InternalServerError(String),
6283    /// <p>Placeholder documentation for TooManyRequestsException</p>
6284    TooManyRequests(String),
6285    /// <p>Placeholder documentation for UnprocessableEntityException</p>
6286    UnprocessableEntity(String),
6287}
6288
6289impl CreateChannelError {
6290    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateChannelError> {
6291        if let Some(err) = proto::json::Error::parse_rest(&res) {
6292            match err.typ.as_str() {
6293                "BadGatewayException" => {
6294                    return RusotoError::Service(CreateChannelError::BadGateway(err.msg))
6295                }
6296                "BadRequestException" => {
6297                    return RusotoError::Service(CreateChannelError::BadRequest(err.msg))
6298                }
6299                "ConflictException" => {
6300                    return RusotoError::Service(CreateChannelError::Conflict(err.msg))
6301                }
6302                "ForbiddenException" => {
6303                    return RusotoError::Service(CreateChannelError::Forbidden(err.msg))
6304                }
6305                "GatewayTimeoutException" => {
6306                    return RusotoError::Service(CreateChannelError::GatewayTimeout(err.msg))
6307                }
6308                "InternalServerErrorException" => {
6309                    return RusotoError::Service(CreateChannelError::InternalServerError(err.msg))
6310                }
6311                "TooManyRequestsException" => {
6312                    return RusotoError::Service(CreateChannelError::TooManyRequests(err.msg))
6313                }
6314                "UnprocessableEntityException" => {
6315                    return RusotoError::Service(CreateChannelError::UnprocessableEntity(err.msg))
6316                }
6317                "ValidationException" => return RusotoError::Validation(err.msg),
6318                _ => {}
6319            }
6320        }
6321        RusotoError::Unknown(res)
6322    }
6323}
6324impl fmt::Display for CreateChannelError {
6325    #[allow(unused_variables)]
6326    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6327        match *self {
6328            CreateChannelError::BadGateway(ref cause) => write!(f, "{}", cause),
6329            CreateChannelError::BadRequest(ref cause) => write!(f, "{}", cause),
6330            CreateChannelError::Conflict(ref cause) => write!(f, "{}", cause),
6331            CreateChannelError::Forbidden(ref cause) => write!(f, "{}", cause),
6332            CreateChannelError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6333            CreateChannelError::InternalServerError(ref cause) => write!(f, "{}", cause),
6334            CreateChannelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6335            CreateChannelError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
6336        }
6337    }
6338}
6339impl Error for CreateChannelError {}
6340/// Errors returned by CreateInput
6341#[derive(Debug, PartialEq)]
6342pub enum CreateInputError {
6343    /// <p>Placeholder documentation for BadGatewayException</p>
6344    BadGateway(String),
6345    /// <p>Placeholder documentation for BadRequestException</p>
6346    BadRequest(String),
6347    /// <p>Placeholder documentation for ForbiddenException</p>
6348    Forbidden(String),
6349    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6350    GatewayTimeout(String),
6351    /// <p>Placeholder documentation for InternalServerErrorException</p>
6352    InternalServerError(String),
6353    /// <p>Placeholder documentation for TooManyRequestsException</p>
6354    TooManyRequests(String),
6355}
6356
6357impl CreateInputError {
6358    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateInputError> {
6359        if let Some(err) = proto::json::Error::parse_rest(&res) {
6360            match err.typ.as_str() {
6361                "BadGatewayException" => {
6362                    return RusotoError::Service(CreateInputError::BadGateway(err.msg))
6363                }
6364                "BadRequestException" => {
6365                    return RusotoError::Service(CreateInputError::BadRequest(err.msg))
6366                }
6367                "ForbiddenException" => {
6368                    return RusotoError::Service(CreateInputError::Forbidden(err.msg))
6369                }
6370                "GatewayTimeoutException" => {
6371                    return RusotoError::Service(CreateInputError::GatewayTimeout(err.msg))
6372                }
6373                "InternalServerErrorException" => {
6374                    return RusotoError::Service(CreateInputError::InternalServerError(err.msg))
6375                }
6376                "TooManyRequestsException" => {
6377                    return RusotoError::Service(CreateInputError::TooManyRequests(err.msg))
6378                }
6379                "ValidationException" => return RusotoError::Validation(err.msg),
6380                _ => {}
6381            }
6382        }
6383        RusotoError::Unknown(res)
6384    }
6385}
6386impl fmt::Display for CreateInputError {
6387    #[allow(unused_variables)]
6388    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6389        match *self {
6390            CreateInputError::BadGateway(ref cause) => write!(f, "{}", cause),
6391            CreateInputError::BadRequest(ref cause) => write!(f, "{}", cause),
6392            CreateInputError::Forbidden(ref cause) => write!(f, "{}", cause),
6393            CreateInputError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6394            CreateInputError::InternalServerError(ref cause) => write!(f, "{}", cause),
6395            CreateInputError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6396        }
6397    }
6398}
6399impl Error for CreateInputError {}
6400/// Errors returned by CreateInputSecurityGroup
6401#[derive(Debug, PartialEq)]
6402pub enum CreateInputSecurityGroupError {
6403    /// <p>Placeholder documentation for BadGatewayException</p>
6404    BadGateway(String),
6405    /// <p>Placeholder documentation for BadRequestException</p>
6406    BadRequest(String),
6407    /// <p>Placeholder documentation for ForbiddenException</p>
6408    Forbidden(String),
6409    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6410    GatewayTimeout(String),
6411    /// <p>Placeholder documentation for InternalServerErrorException</p>
6412    InternalServerError(String),
6413    /// <p>Placeholder documentation for TooManyRequestsException</p>
6414    TooManyRequests(String),
6415}
6416
6417impl CreateInputSecurityGroupError {
6418    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateInputSecurityGroupError> {
6419        if let Some(err) = proto::json::Error::parse_rest(&res) {
6420            match err.typ.as_str() {
6421                "BadGatewayException" => {
6422                    return RusotoError::Service(CreateInputSecurityGroupError::BadGateway(err.msg))
6423                }
6424                "BadRequestException" => {
6425                    return RusotoError::Service(CreateInputSecurityGroupError::BadRequest(err.msg))
6426                }
6427                "ForbiddenException" => {
6428                    return RusotoError::Service(CreateInputSecurityGroupError::Forbidden(err.msg))
6429                }
6430                "GatewayTimeoutException" => {
6431                    return RusotoError::Service(CreateInputSecurityGroupError::GatewayTimeout(
6432                        err.msg,
6433                    ))
6434                }
6435                "InternalServerErrorException" => {
6436                    return RusotoError::Service(
6437                        CreateInputSecurityGroupError::InternalServerError(err.msg),
6438                    )
6439                }
6440                "TooManyRequestsException" => {
6441                    return RusotoError::Service(CreateInputSecurityGroupError::TooManyRequests(
6442                        err.msg,
6443                    ))
6444                }
6445                "ValidationException" => return RusotoError::Validation(err.msg),
6446                _ => {}
6447            }
6448        }
6449        RusotoError::Unknown(res)
6450    }
6451}
6452impl fmt::Display for CreateInputSecurityGroupError {
6453    #[allow(unused_variables)]
6454    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6455        match *self {
6456            CreateInputSecurityGroupError::BadGateway(ref cause) => write!(f, "{}", cause),
6457            CreateInputSecurityGroupError::BadRequest(ref cause) => write!(f, "{}", cause),
6458            CreateInputSecurityGroupError::Forbidden(ref cause) => write!(f, "{}", cause),
6459            CreateInputSecurityGroupError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6460            CreateInputSecurityGroupError::InternalServerError(ref cause) => write!(f, "{}", cause),
6461            CreateInputSecurityGroupError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6462        }
6463    }
6464}
6465impl Error for CreateInputSecurityGroupError {}
6466/// Errors returned by CreateMultiplex
6467#[derive(Debug, PartialEq)]
6468pub enum CreateMultiplexError {
6469    /// <p>Placeholder documentation for BadGatewayException</p>
6470    BadGateway(String),
6471    /// <p>Placeholder documentation for BadRequestException</p>
6472    BadRequest(String),
6473    /// <p>Placeholder documentation for ConflictException</p>
6474    Conflict(String),
6475    /// <p>Placeholder documentation for ForbiddenException</p>
6476    Forbidden(String),
6477    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6478    GatewayTimeout(String),
6479    /// <p>Placeholder documentation for InternalServerErrorException</p>
6480    InternalServerError(String),
6481    /// <p>Placeholder documentation for TooManyRequestsException</p>
6482    TooManyRequests(String),
6483    /// <p>Placeholder documentation for UnprocessableEntityException</p>
6484    UnprocessableEntity(String),
6485}
6486
6487impl CreateMultiplexError {
6488    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateMultiplexError> {
6489        if let Some(err) = proto::json::Error::parse_rest(&res) {
6490            match err.typ.as_str() {
6491                "BadGatewayException" => {
6492                    return RusotoError::Service(CreateMultiplexError::BadGateway(err.msg))
6493                }
6494                "BadRequestException" => {
6495                    return RusotoError::Service(CreateMultiplexError::BadRequest(err.msg))
6496                }
6497                "ConflictException" => {
6498                    return RusotoError::Service(CreateMultiplexError::Conflict(err.msg))
6499                }
6500                "ForbiddenException" => {
6501                    return RusotoError::Service(CreateMultiplexError::Forbidden(err.msg))
6502                }
6503                "GatewayTimeoutException" => {
6504                    return RusotoError::Service(CreateMultiplexError::GatewayTimeout(err.msg))
6505                }
6506                "InternalServerErrorException" => {
6507                    return RusotoError::Service(CreateMultiplexError::InternalServerError(err.msg))
6508                }
6509                "TooManyRequestsException" => {
6510                    return RusotoError::Service(CreateMultiplexError::TooManyRequests(err.msg))
6511                }
6512                "UnprocessableEntityException" => {
6513                    return RusotoError::Service(CreateMultiplexError::UnprocessableEntity(err.msg))
6514                }
6515                "ValidationException" => return RusotoError::Validation(err.msg),
6516                _ => {}
6517            }
6518        }
6519        RusotoError::Unknown(res)
6520    }
6521}
6522impl fmt::Display for CreateMultiplexError {
6523    #[allow(unused_variables)]
6524    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6525        match *self {
6526            CreateMultiplexError::BadGateway(ref cause) => write!(f, "{}", cause),
6527            CreateMultiplexError::BadRequest(ref cause) => write!(f, "{}", cause),
6528            CreateMultiplexError::Conflict(ref cause) => write!(f, "{}", cause),
6529            CreateMultiplexError::Forbidden(ref cause) => write!(f, "{}", cause),
6530            CreateMultiplexError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6531            CreateMultiplexError::InternalServerError(ref cause) => write!(f, "{}", cause),
6532            CreateMultiplexError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6533            CreateMultiplexError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
6534        }
6535    }
6536}
6537impl Error for CreateMultiplexError {}
6538/// Errors returned by CreateMultiplexProgram
6539#[derive(Debug, PartialEq)]
6540pub enum CreateMultiplexProgramError {
6541    /// <p>Placeholder documentation for BadGatewayException</p>
6542    BadGateway(String),
6543    /// <p>Placeholder documentation for BadRequestException</p>
6544    BadRequest(String),
6545    /// <p>Placeholder documentation for ConflictException</p>
6546    Conflict(String),
6547    /// <p>Placeholder documentation for ForbiddenException</p>
6548    Forbidden(String),
6549    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6550    GatewayTimeout(String),
6551    /// <p>Placeholder documentation for InternalServerErrorException</p>
6552    InternalServerError(String),
6553    /// <p>Placeholder documentation for TooManyRequestsException</p>
6554    TooManyRequests(String),
6555    /// <p>Placeholder documentation for UnprocessableEntityException</p>
6556    UnprocessableEntity(String),
6557}
6558
6559impl CreateMultiplexProgramError {
6560    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateMultiplexProgramError> {
6561        if let Some(err) = proto::json::Error::parse_rest(&res) {
6562            match err.typ.as_str() {
6563                "BadGatewayException" => {
6564                    return RusotoError::Service(CreateMultiplexProgramError::BadGateway(err.msg))
6565                }
6566                "BadRequestException" => {
6567                    return RusotoError::Service(CreateMultiplexProgramError::BadRequest(err.msg))
6568                }
6569                "ConflictException" => {
6570                    return RusotoError::Service(CreateMultiplexProgramError::Conflict(err.msg))
6571                }
6572                "ForbiddenException" => {
6573                    return RusotoError::Service(CreateMultiplexProgramError::Forbidden(err.msg))
6574                }
6575                "GatewayTimeoutException" => {
6576                    return RusotoError::Service(CreateMultiplexProgramError::GatewayTimeout(
6577                        err.msg,
6578                    ))
6579                }
6580                "InternalServerErrorException" => {
6581                    return RusotoError::Service(CreateMultiplexProgramError::InternalServerError(
6582                        err.msg,
6583                    ))
6584                }
6585                "TooManyRequestsException" => {
6586                    return RusotoError::Service(CreateMultiplexProgramError::TooManyRequests(
6587                        err.msg,
6588                    ))
6589                }
6590                "UnprocessableEntityException" => {
6591                    return RusotoError::Service(CreateMultiplexProgramError::UnprocessableEntity(
6592                        err.msg,
6593                    ))
6594                }
6595                "ValidationException" => return RusotoError::Validation(err.msg),
6596                _ => {}
6597            }
6598        }
6599        RusotoError::Unknown(res)
6600    }
6601}
6602impl fmt::Display for CreateMultiplexProgramError {
6603    #[allow(unused_variables)]
6604    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6605        match *self {
6606            CreateMultiplexProgramError::BadGateway(ref cause) => write!(f, "{}", cause),
6607            CreateMultiplexProgramError::BadRequest(ref cause) => write!(f, "{}", cause),
6608            CreateMultiplexProgramError::Conflict(ref cause) => write!(f, "{}", cause),
6609            CreateMultiplexProgramError::Forbidden(ref cause) => write!(f, "{}", cause),
6610            CreateMultiplexProgramError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6611            CreateMultiplexProgramError::InternalServerError(ref cause) => write!(f, "{}", cause),
6612            CreateMultiplexProgramError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6613            CreateMultiplexProgramError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
6614        }
6615    }
6616}
6617impl Error for CreateMultiplexProgramError {}
6618/// Errors returned by CreateTags
6619#[derive(Debug, PartialEq)]
6620pub enum CreateTagsError {
6621    /// <p>Placeholder documentation for BadRequestException</p>
6622    BadRequest(String),
6623    /// <p>Placeholder documentation for ForbiddenException</p>
6624    Forbidden(String),
6625    /// <p>Placeholder documentation for InternalServerErrorException</p>
6626    InternalServerError(String),
6627    /// <p>Placeholder documentation for NotFoundException</p>
6628    NotFound(String),
6629}
6630
6631impl CreateTagsError {
6632    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateTagsError> {
6633        if let Some(err) = proto::json::Error::parse_rest(&res) {
6634            match err.typ.as_str() {
6635                "BadRequestException" => {
6636                    return RusotoError::Service(CreateTagsError::BadRequest(err.msg))
6637                }
6638                "ForbiddenException" => {
6639                    return RusotoError::Service(CreateTagsError::Forbidden(err.msg))
6640                }
6641                "InternalServerErrorException" => {
6642                    return RusotoError::Service(CreateTagsError::InternalServerError(err.msg))
6643                }
6644                "NotFoundException" => {
6645                    return RusotoError::Service(CreateTagsError::NotFound(err.msg))
6646                }
6647                "ValidationException" => return RusotoError::Validation(err.msg),
6648                _ => {}
6649            }
6650        }
6651        RusotoError::Unknown(res)
6652    }
6653}
6654impl fmt::Display for CreateTagsError {
6655    #[allow(unused_variables)]
6656    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6657        match *self {
6658            CreateTagsError::BadRequest(ref cause) => write!(f, "{}", cause),
6659            CreateTagsError::Forbidden(ref cause) => write!(f, "{}", cause),
6660            CreateTagsError::InternalServerError(ref cause) => write!(f, "{}", cause),
6661            CreateTagsError::NotFound(ref cause) => write!(f, "{}", cause),
6662        }
6663    }
6664}
6665impl Error for CreateTagsError {}
6666/// Errors returned by DeleteChannel
6667#[derive(Debug, PartialEq)]
6668pub enum DeleteChannelError {
6669    /// <p>Placeholder documentation for BadGatewayException</p>
6670    BadGateway(String),
6671    /// <p>Placeholder documentation for BadRequestException</p>
6672    BadRequest(String),
6673    /// <p>Placeholder documentation for ConflictException</p>
6674    Conflict(String),
6675    /// <p>Placeholder documentation for ForbiddenException</p>
6676    Forbidden(String),
6677    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6678    GatewayTimeout(String),
6679    /// <p>Placeholder documentation for InternalServerErrorException</p>
6680    InternalServerError(String),
6681    /// <p>Placeholder documentation for NotFoundException</p>
6682    NotFound(String),
6683    /// <p>Placeholder documentation for TooManyRequestsException</p>
6684    TooManyRequests(String),
6685}
6686
6687impl DeleteChannelError {
6688    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteChannelError> {
6689        if let Some(err) = proto::json::Error::parse_rest(&res) {
6690            match err.typ.as_str() {
6691                "BadGatewayException" => {
6692                    return RusotoError::Service(DeleteChannelError::BadGateway(err.msg))
6693                }
6694                "BadRequestException" => {
6695                    return RusotoError::Service(DeleteChannelError::BadRequest(err.msg))
6696                }
6697                "ConflictException" => {
6698                    return RusotoError::Service(DeleteChannelError::Conflict(err.msg))
6699                }
6700                "ForbiddenException" => {
6701                    return RusotoError::Service(DeleteChannelError::Forbidden(err.msg))
6702                }
6703                "GatewayTimeoutException" => {
6704                    return RusotoError::Service(DeleteChannelError::GatewayTimeout(err.msg))
6705                }
6706                "InternalServerErrorException" => {
6707                    return RusotoError::Service(DeleteChannelError::InternalServerError(err.msg))
6708                }
6709                "NotFoundException" => {
6710                    return RusotoError::Service(DeleteChannelError::NotFound(err.msg))
6711                }
6712                "TooManyRequestsException" => {
6713                    return RusotoError::Service(DeleteChannelError::TooManyRequests(err.msg))
6714                }
6715                "ValidationException" => return RusotoError::Validation(err.msg),
6716                _ => {}
6717            }
6718        }
6719        RusotoError::Unknown(res)
6720    }
6721}
6722impl fmt::Display for DeleteChannelError {
6723    #[allow(unused_variables)]
6724    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6725        match *self {
6726            DeleteChannelError::BadGateway(ref cause) => write!(f, "{}", cause),
6727            DeleteChannelError::BadRequest(ref cause) => write!(f, "{}", cause),
6728            DeleteChannelError::Conflict(ref cause) => write!(f, "{}", cause),
6729            DeleteChannelError::Forbidden(ref cause) => write!(f, "{}", cause),
6730            DeleteChannelError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6731            DeleteChannelError::InternalServerError(ref cause) => write!(f, "{}", cause),
6732            DeleteChannelError::NotFound(ref cause) => write!(f, "{}", cause),
6733            DeleteChannelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6734        }
6735    }
6736}
6737impl Error for DeleteChannelError {}
6738/// Errors returned by DeleteInput
6739#[derive(Debug, PartialEq)]
6740pub enum DeleteInputError {
6741    /// <p>Placeholder documentation for BadGatewayException</p>
6742    BadGateway(String),
6743    /// <p>Placeholder documentation for BadRequestException</p>
6744    BadRequest(String),
6745    /// <p>Placeholder documentation for ConflictException</p>
6746    Conflict(String),
6747    /// <p>Placeholder documentation for ForbiddenException</p>
6748    Forbidden(String),
6749    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6750    GatewayTimeout(String),
6751    /// <p>Placeholder documentation for InternalServerErrorException</p>
6752    InternalServerError(String),
6753    /// <p>Placeholder documentation for NotFoundException</p>
6754    NotFound(String),
6755    /// <p>Placeholder documentation for TooManyRequestsException</p>
6756    TooManyRequests(String),
6757}
6758
6759impl DeleteInputError {
6760    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteInputError> {
6761        if let Some(err) = proto::json::Error::parse_rest(&res) {
6762            match err.typ.as_str() {
6763                "BadGatewayException" => {
6764                    return RusotoError::Service(DeleteInputError::BadGateway(err.msg))
6765                }
6766                "BadRequestException" => {
6767                    return RusotoError::Service(DeleteInputError::BadRequest(err.msg))
6768                }
6769                "ConflictException" => {
6770                    return RusotoError::Service(DeleteInputError::Conflict(err.msg))
6771                }
6772                "ForbiddenException" => {
6773                    return RusotoError::Service(DeleteInputError::Forbidden(err.msg))
6774                }
6775                "GatewayTimeoutException" => {
6776                    return RusotoError::Service(DeleteInputError::GatewayTimeout(err.msg))
6777                }
6778                "InternalServerErrorException" => {
6779                    return RusotoError::Service(DeleteInputError::InternalServerError(err.msg))
6780                }
6781                "NotFoundException" => {
6782                    return RusotoError::Service(DeleteInputError::NotFound(err.msg))
6783                }
6784                "TooManyRequestsException" => {
6785                    return RusotoError::Service(DeleteInputError::TooManyRequests(err.msg))
6786                }
6787                "ValidationException" => return RusotoError::Validation(err.msg),
6788                _ => {}
6789            }
6790        }
6791        RusotoError::Unknown(res)
6792    }
6793}
6794impl fmt::Display for DeleteInputError {
6795    #[allow(unused_variables)]
6796    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6797        match *self {
6798            DeleteInputError::BadGateway(ref cause) => write!(f, "{}", cause),
6799            DeleteInputError::BadRequest(ref cause) => write!(f, "{}", cause),
6800            DeleteInputError::Conflict(ref cause) => write!(f, "{}", cause),
6801            DeleteInputError::Forbidden(ref cause) => write!(f, "{}", cause),
6802            DeleteInputError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6803            DeleteInputError::InternalServerError(ref cause) => write!(f, "{}", cause),
6804            DeleteInputError::NotFound(ref cause) => write!(f, "{}", cause),
6805            DeleteInputError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6806        }
6807    }
6808}
6809impl Error for DeleteInputError {}
6810/// Errors returned by DeleteInputSecurityGroup
6811#[derive(Debug, PartialEq)]
6812pub enum DeleteInputSecurityGroupError {
6813    /// <p>Placeholder documentation for BadGatewayException</p>
6814    BadGateway(String),
6815    /// <p>Placeholder documentation for BadRequestException</p>
6816    BadRequest(String),
6817    /// <p>Placeholder documentation for ForbiddenException</p>
6818    Forbidden(String),
6819    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6820    GatewayTimeout(String),
6821    /// <p>Placeholder documentation for InternalServerErrorException</p>
6822    InternalServerError(String),
6823    /// <p>Placeholder documentation for NotFoundException</p>
6824    NotFound(String),
6825    /// <p>Placeholder documentation for TooManyRequestsException</p>
6826    TooManyRequests(String),
6827}
6828
6829impl DeleteInputSecurityGroupError {
6830    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteInputSecurityGroupError> {
6831        if let Some(err) = proto::json::Error::parse_rest(&res) {
6832            match err.typ.as_str() {
6833                "BadGatewayException" => {
6834                    return RusotoError::Service(DeleteInputSecurityGroupError::BadGateway(err.msg))
6835                }
6836                "BadRequestException" => {
6837                    return RusotoError::Service(DeleteInputSecurityGroupError::BadRequest(err.msg))
6838                }
6839                "ForbiddenException" => {
6840                    return RusotoError::Service(DeleteInputSecurityGroupError::Forbidden(err.msg))
6841                }
6842                "GatewayTimeoutException" => {
6843                    return RusotoError::Service(DeleteInputSecurityGroupError::GatewayTimeout(
6844                        err.msg,
6845                    ))
6846                }
6847                "InternalServerErrorException" => {
6848                    return RusotoError::Service(
6849                        DeleteInputSecurityGroupError::InternalServerError(err.msg),
6850                    )
6851                }
6852                "NotFoundException" => {
6853                    return RusotoError::Service(DeleteInputSecurityGroupError::NotFound(err.msg))
6854                }
6855                "TooManyRequestsException" => {
6856                    return RusotoError::Service(DeleteInputSecurityGroupError::TooManyRequests(
6857                        err.msg,
6858                    ))
6859                }
6860                "ValidationException" => return RusotoError::Validation(err.msg),
6861                _ => {}
6862            }
6863        }
6864        RusotoError::Unknown(res)
6865    }
6866}
6867impl fmt::Display for DeleteInputSecurityGroupError {
6868    #[allow(unused_variables)]
6869    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6870        match *self {
6871            DeleteInputSecurityGroupError::BadGateway(ref cause) => write!(f, "{}", cause),
6872            DeleteInputSecurityGroupError::BadRequest(ref cause) => write!(f, "{}", cause),
6873            DeleteInputSecurityGroupError::Forbidden(ref cause) => write!(f, "{}", cause),
6874            DeleteInputSecurityGroupError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6875            DeleteInputSecurityGroupError::InternalServerError(ref cause) => write!(f, "{}", cause),
6876            DeleteInputSecurityGroupError::NotFound(ref cause) => write!(f, "{}", cause),
6877            DeleteInputSecurityGroupError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6878        }
6879    }
6880}
6881impl Error for DeleteInputSecurityGroupError {}
6882/// Errors returned by DeleteMultiplex
6883#[derive(Debug, PartialEq)]
6884pub enum DeleteMultiplexError {
6885    /// <p>Placeholder documentation for BadGatewayException</p>
6886    BadGateway(String),
6887    /// <p>Placeholder documentation for BadRequestException</p>
6888    BadRequest(String),
6889    /// <p>Placeholder documentation for ConflictException</p>
6890    Conflict(String),
6891    /// <p>Placeholder documentation for ForbiddenException</p>
6892    Forbidden(String),
6893    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6894    GatewayTimeout(String),
6895    /// <p>Placeholder documentation for InternalServerErrorException</p>
6896    InternalServerError(String),
6897    /// <p>Placeholder documentation for NotFoundException</p>
6898    NotFound(String),
6899    /// <p>Placeholder documentation for TooManyRequestsException</p>
6900    TooManyRequests(String),
6901}
6902
6903impl DeleteMultiplexError {
6904    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteMultiplexError> {
6905        if let Some(err) = proto::json::Error::parse_rest(&res) {
6906            match err.typ.as_str() {
6907                "BadGatewayException" => {
6908                    return RusotoError::Service(DeleteMultiplexError::BadGateway(err.msg))
6909                }
6910                "BadRequestException" => {
6911                    return RusotoError::Service(DeleteMultiplexError::BadRequest(err.msg))
6912                }
6913                "ConflictException" => {
6914                    return RusotoError::Service(DeleteMultiplexError::Conflict(err.msg))
6915                }
6916                "ForbiddenException" => {
6917                    return RusotoError::Service(DeleteMultiplexError::Forbidden(err.msg))
6918                }
6919                "GatewayTimeoutException" => {
6920                    return RusotoError::Service(DeleteMultiplexError::GatewayTimeout(err.msg))
6921                }
6922                "InternalServerErrorException" => {
6923                    return RusotoError::Service(DeleteMultiplexError::InternalServerError(err.msg))
6924                }
6925                "NotFoundException" => {
6926                    return RusotoError::Service(DeleteMultiplexError::NotFound(err.msg))
6927                }
6928                "TooManyRequestsException" => {
6929                    return RusotoError::Service(DeleteMultiplexError::TooManyRequests(err.msg))
6930                }
6931                "ValidationException" => return RusotoError::Validation(err.msg),
6932                _ => {}
6933            }
6934        }
6935        RusotoError::Unknown(res)
6936    }
6937}
6938impl fmt::Display for DeleteMultiplexError {
6939    #[allow(unused_variables)]
6940    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6941        match *self {
6942            DeleteMultiplexError::BadGateway(ref cause) => write!(f, "{}", cause),
6943            DeleteMultiplexError::BadRequest(ref cause) => write!(f, "{}", cause),
6944            DeleteMultiplexError::Conflict(ref cause) => write!(f, "{}", cause),
6945            DeleteMultiplexError::Forbidden(ref cause) => write!(f, "{}", cause),
6946            DeleteMultiplexError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
6947            DeleteMultiplexError::InternalServerError(ref cause) => write!(f, "{}", cause),
6948            DeleteMultiplexError::NotFound(ref cause) => write!(f, "{}", cause),
6949            DeleteMultiplexError::TooManyRequests(ref cause) => write!(f, "{}", cause),
6950        }
6951    }
6952}
6953impl Error for DeleteMultiplexError {}
6954/// Errors returned by DeleteMultiplexProgram
6955#[derive(Debug, PartialEq)]
6956pub enum DeleteMultiplexProgramError {
6957    /// <p>Placeholder documentation for BadGatewayException</p>
6958    BadGateway(String),
6959    /// <p>Placeholder documentation for BadRequestException</p>
6960    BadRequest(String),
6961    /// <p>Placeholder documentation for ConflictException</p>
6962    Conflict(String),
6963    /// <p>Placeholder documentation for ForbiddenException</p>
6964    Forbidden(String),
6965    /// <p>Placeholder documentation for GatewayTimeoutException</p>
6966    GatewayTimeout(String),
6967    /// <p>Placeholder documentation for InternalServerErrorException</p>
6968    InternalServerError(String),
6969    /// <p>Placeholder documentation for NotFoundException</p>
6970    NotFound(String),
6971    /// <p>Placeholder documentation for TooManyRequestsException</p>
6972    TooManyRequests(String),
6973}
6974
6975impl DeleteMultiplexProgramError {
6976    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteMultiplexProgramError> {
6977        if let Some(err) = proto::json::Error::parse_rest(&res) {
6978            match err.typ.as_str() {
6979                "BadGatewayException" => {
6980                    return RusotoError::Service(DeleteMultiplexProgramError::BadGateway(err.msg))
6981                }
6982                "BadRequestException" => {
6983                    return RusotoError::Service(DeleteMultiplexProgramError::BadRequest(err.msg))
6984                }
6985                "ConflictException" => {
6986                    return RusotoError::Service(DeleteMultiplexProgramError::Conflict(err.msg))
6987                }
6988                "ForbiddenException" => {
6989                    return RusotoError::Service(DeleteMultiplexProgramError::Forbidden(err.msg))
6990                }
6991                "GatewayTimeoutException" => {
6992                    return RusotoError::Service(DeleteMultiplexProgramError::GatewayTimeout(
6993                        err.msg,
6994                    ))
6995                }
6996                "InternalServerErrorException" => {
6997                    return RusotoError::Service(DeleteMultiplexProgramError::InternalServerError(
6998                        err.msg,
6999                    ))
7000                }
7001                "NotFoundException" => {
7002                    return RusotoError::Service(DeleteMultiplexProgramError::NotFound(err.msg))
7003                }
7004                "TooManyRequestsException" => {
7005                    return RusotoError::Service(DeleteMultiplexProgramError::TooManyRequests(
7006                        err.msg,
7007                    ))
7008                }
7009                "ValidationException" => return RusotoError::Validation(err.msg),
7010                _ => {}
7011            }
7012        }
7013        RusotoError::Unknown(res)
7014    }
7015}
7016impl fmt::Display for DeleteMultiplexProgramError {
7017    #[allow(unused_variables)]
7018    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7019        match *self {
7020            DeleteMultiplexProgramError::BadGateway(ref cause) => write!(f, "{}", cause),
7021            DeleteMultiplexProgramError::BadRequest(ref cause) => write!(f, "{}", cause),
7022            DeleteMultiplexProgramError::Conflict(ref cause) => write!(f, "{}", cause),
7023            DeleteMultiplexProgramError::Forbidden(ref cause) => write!(f, "{}", cause),
7024            DeleteMultiplexProgramError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7025            DeleteMultiplexProgramError::InternalServerError(ref cause) => write!(f, "{}", cause),
7026            DeleteMultiplexProgramError::NotFound(ref cause) => write!(f, "{}", cause),
7027            DeleteMultiplexProgramError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7028        }
7029    }
7030}
7031impl Error for DeleteMultiplexProgramError {}
7032/// Errors returned by DeleteReservation
7033#[derive(Debug, PartialEq)]
7034pub enum DeleteReservationError {
7035    /// <p>Placeholder documentation for BadGatewayException</p>
7036    BadGateway(String),
7037    /// <p>Placeholder documentation for BadRequestException</p>
7038    BadRequest(String),
7039    /// <p>Placeholder documentation for ConflictException</p>
7040    Conflict(String),
7041    /// <p>Placeholder documentation for ForbiddenException</p>
7042    Forbidden(String),
7043    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7044    GatewayTimeout(String),
7045    /// <p>Placeholder documentation for InternalServerErrorException</p>
7046    InternalServerError(String),
7047    /// <p>Placeholder documentation for NotFoundException</p>
7048    NotFound(String),
7049    /// <p>Placeholder documentation for TooManyRequestsException</p>
7050    TooManyRequests(String),
7051}
7052
7053impl DeleteReservationError {
7054    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteReservationError> {
7055        if let Some(err) = proto::json::Error::parse_rest(&res) {
7056            match err.typ.as_str() {
7057                "BadGatewayException" => {
7058                    return RusotoError::Service(DeleteReservationError::BadGateway(err.msg))
7059                }
7060                "BadRequestException" => {
7061                    return RusotoError::Service(DeleteReservationError::BadRequest(err.msg))
7062                }
7063                "ConflictException" => {
7064                    return RusotoError::Service(DeleteReservationError::Conflict(err.msg))
7065                }
7066                "ForbiddenException" => {
7067                    return RusotoError::Service(DeleteReservationError::Forbidden(err.msg))
7068                }
7069                "GatewayTimeoutException" => {
7070                    return RusotoError::Service(DeleteReservationError::GatewayTimeout(err.msg))
7071                }
7072                "InternalServerErrorException" => {
7073                    return RusotoError::Service(DeleteReservationError::InternalServerError(
7074                        err.msg,
7075                    ))
7076                }
7077                "NotFoundException" => {
7078                    return RusotoError::Service(DeleteReservationError::NotFound(err.msg))
7079                }
7080                "TooManyRequestsException" => {
7081                    return RusotoError::Service(DeleteReservationError::TooManyRequests(err.msg))
7082                }
7083                "ValidationException" => return RusotoError::Validation(err.msg),
7084                _ => {}
7085            }
7086        }
7087        RusotoError::Unknown(res)
7088    }
7089}
7090impl fmt::Display for DeleteReservationError {
7091    #[allow(unused_variables)]
7092    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7093        match *self {
7094            DeleteReservationError::BadGateway(ref cause) => write!(f, "{}", cause),
7095            DeleteReservationError::BadRequest(ref cause) => write!(f, "{}", cause),
7096            DeleteReservationError::Conflict(ref cause) => write!(f, "{}", cause),
7097            DeleteReservationError::Forbidden(ref cause) => write!(f, "{}", cause),
7098            DeleteReservationError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7099            DeleteReservationError::InternalServerError(ref cause) => write!(f, "{}", cause),
7100            DeleteReservationError::NotFound(ref cause) => write!(f, "{}", cause),
7101            DeleteReservationError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7102        }
7103    }
7104}
7105impl Error for DeleteReservationError {}
7106/// Errors returned by DeleteSchedule
7107#[derive(Debug, PartialEq)]
7108pub enum DeleteScheduleError {
7109    /// <p>Placeholder documentation for BadGatewayException</p>
7110    BadGateway(String),
7111    /// <p>Placeholder documentation for BadRequestException</p>
7112    BadRequest(String),
7113    /// <p>Placeholder documentation for ForbiddenException</p>
7114    Forbidden(String),
7115    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7116    GatewayTimeout(String),
7117    /// <p>Placeholder documentation for InternalServerErrorException</p>
7118    InternalServerError(String),
7119    /// <p>Placeholder documentation for NotFoundException</p>
7120    NotFound(String),
7121    /// <p>Placeholder documentation for TooManyRequestsException</p>
7122    TooManyRequests(String),
7123}
7124
7125impl DeleteScheduleError {
7126    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteScheduleError> {
7127        if let Some(err) = proto::json::Error::parse_rest(&res) {
7128            match err.typ.as_str() {
7129                "BadGatewayException" => {
7130                    return RusotoError::Service(DeleteScheduleError::BadGateway(err.msg))
7131                }
7132                "BadRequestException" => {
7133                    return RusotoError::Service(DeleteScheduleError::BadRequest(err.msg))
7134                }
7135                "ForbiddenException" => {
7136                    return RusotoError::Service(DeleteScheduleError::Forbidden(err.msg))
7137                }
7138                "GatewayTimeoutException" => {
7139                    return RusotoError::Service(DeleteScheduleError::GatewayTimeout(err.msg))
7140                }
7141                "InternalServerErrorException" => {
7142                    return RusotoError::Service(DeleteScheduleError::InternalServerError(err.msg))
7143                }
7144                "NotFoundException" => {
7145                    return RusotoError::Service(DeleteScheduleError::NotFound(err.msg))
7146                }
7147                "TooManyRequestsException" => {
7148                    return RusotoError::Service(DeleteScheduleError::TooManyRequests(err.msg))
7149                }
7150                "ValidationException" => return RusotoError::Validation(err.msg),
7151                _ => {}
7152            }
7153        }
7154        RusotoError::Unknown(res)
7155    }
7156}
7157impl fmt::Display for DeleteScheduleError {
7158    #[allow(unused_variables)]
7159    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7160        match *self {
7161            DeleteScheduleError::BadGateway(ref cause) => write!(f, "{}", cause),
7162            DeleteScheduleError::BadRequest(ref cause) => write!(f, "{}", cause),
7163            DeleteScheduleError::Forbidden(ref cause) => write!(f, "{}", cause),
7164            DeleteScheduleError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7165            DeleteScheduleError::InternalServerError(ref cause) => write!(f, "{}", cause),
7166            DeleteScheduleError::NotFound(ref cause) => write!(f, "{}", cause),
7167            DeleteScheduleError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7168        }
7169    }
7170}
7171impl Error for DeleteScheduleError {}
7172/// Errors returned by DeleteTags
7173#[derive(Debug, PartialEq)]
7174pub enum DeleteTagsError {
7175    /// <p>Placeholder documentation for BadRequestException</p>
7176    BadRequest(String),
7177    /// <p>Placeholder documentation for ForbiddenException</p>
7178    Forbidden(String),
7179    /// <p>Placeholder documentation for InternalServerErrorException</p>
7180    InternalServerError(String),
7181    /// <p>Placeholder documentation for NotFoundException</p>
7182    NotFound(String),
7183}
7184
7185impl DeleteTagsError {
7186    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteTagsError> {
7187        if let Some(err) = proto::json::Error::parse_rest(&res) {
7188            match err.typ.as_str() {
7189                "BadRequestException" => {
7190                    return RusotoError::Service(DeleteTagsError::BadRequest(err.msg))
7191                }
7192                "ForbiddenException" => {
7193                    return RusotoError::Service(DeleteTagsError::Forbidden(err.msg))
7194                }
7195                "InternalServerErrorException" => {
7196                    return RusotoError::Service(DeleteTagsError::InternalServerError(err.msg))
7197                }
7198                "NotFoundException" => {
7199                    return RusotoError::Service(DeleteTagsError::NotFound(err.msg))
7200                }
7201                "ValidationException" => return RusotoError::Validation(err.msg),
7202                _ => {}
7203            }
7204        }
7205        RusotoError::Unknown(res)
7206    }
7207}
7208impl fmt::Display for DeleteTagsError {
7209    #[allow(unused_variables)]
7210    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7211        match *self {
7212            DeleteTagsError::BadRequest(ref cause) => write!(f, "{}", cause),
7213            DeleteTagsError::Forbidden(ref cause) => write!(f, "{}", cause),
7214            DeleteTagsError::InternalServerError(ref cause) => write!(f, "{}", cause),
7215            DeleteTagsError::NotFound(ref cause) => write!(f, "{}", cause),
7216        }
7217    }
7218}
7219impl Error for DeleteTagsError {}
7220/// Errors returned by DescribeChannel
7221#[derive(Debug, PartialEq)]
7222pub enum DescribeChannelError {
7223    /// <p>Placeholder documentation for BadGatewayException</p>
7224    BadGateway(String),
7225    /// <p>Placeholder documentation for BadRequestException</p>
7226    BadRequest(String),
7227    /// <p>Placeholder documentation for ForbiddenException</p>
7228    Forbidden(String),
7229    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7230    GatewayTimeout(String),
7231    /// <p>Placeholder documentation for InternalServerErrorException</p>
7232    InternalServerError(String),
7233    /// <p>Placeholder documentation for NotFoundException</p>
7234    NotFound(String),
7235    /// <p>Placeholder documentation for TooManyRequestsException</p>
7236    TooManyRequests(String),
7237}
7238
7239impl DescribeChannelError {
7240    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeChannelError> {
7241        if let Some(err) = proto::json::Error::parse_rest(&res) {
7242            match err.typ.as_str() {
7243                "BadGatewayException" => {
7244                    return RusotoError::Service(DescribeChannelError::BadGateway(err.msg))
7245                }
7246                "BadRequestException" => {
7247                    return RusotoError::Service(DescribeChannelError::BadRequest(err.msg))
7248                }
7249                "ForbiddenException" => {
7250                    return RusotoError::Service(DescribeChannelError::Forbidden(err.msg))
7251                }
7252                "GatewayTimeoutException" => {
7253                    return RusotoError::Service(DescribeChannelError::GatewayTimeout(err.msg))
7254                }
7255                "InternalServerErrorException" => {
7256                    return RusotoError::Service(DescribeChannelError::InternalServerError(err.msg))
7257                }
7258                "NotFoundException" => {
7259                    return RusotoError::Service(DescribeChannelError::NotFound(err.msg))
7260                }
7261                "TooManyRequestsException" => {
7262                    return RusotoError::Service(DescribeChannelError::TooManyRequests(err.msg))
7263                }
7264                "ValidationException" => return RusotoError::Validation(err.msg),
7265                _ => {}
7266            }
7267        }
7268        RusotoError::Unknown(res)
7269    }
7270}
7271impl fmt::Display for DescribeChannelError {
7272    #[allow(unused_variables)]
7273    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7274        match *self {
7275            DescribeChannelError::BadGateway(ref cause) => write!(f, "{}", cause),
7276            DescribeChannelError::BadRequest(ref cause) => write!(f, "{}", cause),
7277            DescribeChannelError::Forbidden(ref cause) => write!(f, "{}", cause),
7278            DescribeChannelError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7279            DescribeChannelError::InternalServerError(ref cause) => write!(f, "{}", cause),
7280            DescribeChannelError::NotFound(ref cause) => write!(f, "{}", cause),
7281            DescribeChannelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7282        }
7283    }
7284}
7285impl Error for DescribeChannelError {}
7286/// Errors returned by DescribeInput
7287#[derive(Debug, PartialEq)]
7288pub enum DescribeInputError {
7289    /// <p>Placeholder documentation for BadGatewayException</p>
7290    BadGateway(String),
7291    /// <p>Placeholder documentation for BadRequestException</p>
7292    BadRequest(String),
7293    /// <p>Placeholder documentation for ForbiddenException</p>
7294    Forbidden(String),
7295    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7296    GatewayTimeout(String),
7297    /// <p>Placeholder documentation for InternalServerErrorException</p>
7298    InternalServerError(String),
7299    /// <p>Placeholder documentation for NotFoundException</p>
7300    NotFound(String),
7301    /// <p>Placeholder documentation for TooManyRequestsException</p>
7302    TooManyRequests(String),
7303}
7304
7305impl DescribeInputError {
7306    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeInputError> {
7307        if let Some(err) = proto::json::Error::parse_rest(&res) {
7308            match err.typ.as_str() {
7309                "BadGatewayException" => {
7310                    return RusotoError::Service(DescribeInputError::BadGateway(err.msg))
7311                }
7312                "BadRequestException" => {
7313                    return RusotoError::Service(DescribeInputError::BadRequest(err.msg))
7314                }
7315                "ForbiddenException" => {
7316                    return RusotoError::Service(DescribeInputError::Forbidden(err.msg))
7317                }
7318                "GatewayTimeoutException" => {
7319                    return RusotoError::Service(DescribeInputError::GatewayTimeout(err.msg))
7320                }
7321                "InternalServerErrorException" => {
7322                    return RusotoError::Service(DescribeInputError::InternalServerError(err.msg))
7323                }
7324                "NotFoundException" => {
7325                    return RusotoError::Service(DescribeInputError::NotFound(err.msg))
7326                }
7327                "TooManyRequestsException" => {
7328                    return RusotoError::Service(DescribeInputError::TooManyRequests(err.msg))
7329                }
7330                "ValidationException" => return RusotoError::Validation(err.msg),
7331                _ => {}
7332            }
7333        }
7334        RusotoError::Unknown(res)
7335    }
7336}
7337impl fmt::Display for DescribeInputError {
7338    #[allow(unused_variables)]
7339    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7340        match *self {
7341            DescribeInputError::BadGateway(ref cause) => write!(f, "{}", cause),
7342            DescribeInputError::BadRequest(ref cause) => write!(f, "{}", cause),
7343            DescribeInputError::Forbidden(ref cause) => write!(f, "{}", cause),
7344            DescribeInputError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7345            DescribeInputError::InternalServerError(ref cause) => write!(f, "{}", cause),
7346            DescribeInputError::NotFound(ref cause) => write!(f, "{}", cause),
7347            DescribeInputError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7348        }
7349    }
7350}
7351impl Error for DescribeInputError {}
7352/// Errors returned by DescribeInputDevice
7353#[derive(Debug, PartialEq)]
7354pub enum DescribeInputDeviceError {
7355    /// <p>Placeholder documentation for BadGatewayException</p>
7356    BadGateway(String),
7357    /// <p>Placeholder documentation for BadRequestException</p>
7358    BadRequest(String),
7359    /// <p>Placeholder documentation for ForbiddenException</p>
7360    Forbidden(String),
7361    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7362    GatewayTimeout(String),
7363    /// <p>Placeholder documentation for InternalServerErrorException</p>
7364    InternalServerError(String),
7365    /// <p>Placeholder documentation for NotFoundException</p>
7366    NotFound(String),
7367    /// <p>Placeholder documentation for TooManyRequestsException</p>
7368    TooManyRequests(String),
7369}
7370
7371impl DescribeInputDeviceError {
7372    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeInputDeviceError> {
7373        if let Some(err) = proto::json::Error::parse_rest(&res) {
7374            match err.typ.as_str() {
7375                "BadGatewayException" => {
7376                    return RusotoError::Service(DescribeInputDeviceError::BadGateway(err.msg))
7377                }
7378                "BadRequestException" => {
7379                    return RusotoError::Service(DescribeInputDeviceError::BadRequest(err.msg))
7380                }
7381                "ForbiddenException" => {
7382                    return RusotoError::Service(DescribeInputDeviceError::Forbidden(err.msg))
7383                }
7384                "GatewayTimeoutException" => {
7385                    return RusotoError::Service(DescribeInputDeviceError::GatewayTimeout(err.msg))
7386                }
7387                "InternalServerErrorException" => {
7388                    return RusotoError::Service(DescribeInputDeviceError::InternalServerError(
7389                        err.msg,
7390                    ))
7391                }
7392                "NotFoundException" => {
7393                    return RusotoError::Service(DescribeInputDeviceError::NotFound(err.msg))
7394                }
7395                "TooManyRequestsException" => {
7396                    return RusotoError::Service(DescribeInputDeviceError::TooManyRequests(err.msg))
7397                }
7398                "ValidationException" => return RusotoError::Validation(err.msg),
7399                _ => {}
7400            }
7401        }
7402        RusotoError::Unknown(res)
7403    }
7404}
7405impl fmt::Display for DescribeInputDeviceError {
7406    #[allow(unused_variables)]
7407    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7408        match *self {
7409            DescribeInputDeviceError::BadGateway(ref cause) => write!(f, "{}", cause),
7410            DescribeInputDeviceError::BadRequest(ref cause) => write!(f, "{}", cause),
7411            DescribeInputDeviceError::Forbidden(ref cause) => write!(f, "{}", cause),
7412            DescribeInputDeviceError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7413            DescribeInputDeviceError::InternalServerError(ref cause) => write!(f, "{}", cause),
7414            DescribeInputDeviceError::NotFound(ref cause) => write!(f, "{}", cause),
7415            DescribeInputDeviceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7416        }
7417    }
7418}
7419impl Error for DescribeInputDeviceError {}
7420/// Errors returned by DescribeInputSecurityGroup
7421#[derive(Debug, PartialEq)]
7422pub enum DescribeInputSecurityGroupError {
7423    /// <p>Placeholder documentation for BadGatewayException</p>
7424    BadGateway(String),
7425    /// <p>Placeholder documentation for BadRequestException</p>
7426    BadRequest(String),
7427    /// <p>Placeholder documentation for ForbiddenException</p>
7428    Forbidden(String),
7429    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7430    GatewayTimeout(String),
7431    /// <p>Placeholder documentation for InternalServerErrorException</p>
7432    InternalServerError(String),
7433    /// <p>Placeholder documentation for NotFoundException</p>
7434    NotFound(String),
7435    /// <p>Placeholder documentation for TooManyRequestsException</p>
7436    TooManyRequests(String),
7437}
7438
7439impl DescribeInputSecurityGroupError {
7440    pub fn from_response(
7441        res: BufferedHttpResponse,
7442    ) -> RusotoError<DescribeInputSecurityGroupError> {
7443        if let Some(err) = proto::json::Error::parse_rest(&res) {
7444            match err.typ.as_str() {
7445                "BadGatewayException" => {
7446                    return RusotoError::Service(DescribeInputSecurityGroupError::BadGateway(
7447                        err.msg,
7448                    ))
7449                }
7450                "BadRequestException" => {
7451                    return RusotoError::Service(DescribeInputSecurityGroupError::BadRequest(
7452                        err.msg,
7453                    ))
7454                }
7455                "ForbiddenException" => {
7456                    return RusotoError::Service(DescribeInputSecurityGroupError::Forbidden(
7457                        err.msg,
7458                    ))
7459                }
7460                "GatewayTimeoutException" => {
7461                    return RusotoError::Service(DescribeInputSecurityGroupError::GatewayTimeout(
7462                        err.msg,
7463                    ))
7464                }
7465                "InternalServerErrorException" => {
7466                    return RusotoError::Service(
7467                        DescribeInputSecurityGroupError::InternalServerError(err.msg),
7468                    )
7469                }
7470                "NotFoundException" => {
7471                    return RusotoError::Service(DescribeInputSecurityGroupError::NotFound(err.msg))
7472                }
7473                "TooManyRequestsException" => {
7474                    return RusotoError::Service(DescribeInputSecurityGroupError::TooManyRequests(
7475                        err.msg,
7476                    ))
7477                }
7478                "ValidationException" => return RusotoError::Validation(err.msg),
7479                _ => {}
7480            }
7481        }
7482        RusotoError::Unknown(res)
7483    }
7484}
7485impl fmt::Display for DescribeInputSecurityGroupError {
7486    #[allow(unused_variables)]
7487    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7488        match *self {
7489            DescribeInputSecurityGroupError::BadGateway(ref cause) => write!(f, "{}", cause),
7490            DescribeInputSecurityGroupError::BadRequest(ref cause) => write!(f, "{}", cause),
7491            DescribeInputSecurityGroupError::Forbidden(ref cause) => write!(f, "{}", cause),
7492            DescribeInputSecurityGroupError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7493            DescribeInputSecurityGroupError::InternalServerError(ref cause) => {
7494                write!(f, "{}", cause)
7495            }
7496            DescribeInputSecurityGroupError::NotFound(ref cause) => write!(f, "{}", cause),
7497            DescribeInputSecurityGroupError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7498        }
7499    }
7500}
7501impl Error for DescribeInputSecurityGroupError {}
7502/// Errors returned by DescribeMultiplex
7503#[derive(Debug, PartialEq)]
7504pub enum DescribeMultiplexError {
7505    /// <p>Placeholder documentation for BadGatewayException</p>
7506    BadGateway(String),
7507    /// <p>Placeholder documentation for BadRequestException</p>
7508    BadRequest(String),
7509    /// <p>Placeholder documentation for ForbiddenException</p>
7510    Forbidden(String),
7511    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7512    GatewayTimeout(String),
7513    /// <p>Placeholder documentation for InternalServerErrorException</p>
7514    InternalServerError(String),
7515    /// <p>Placeholder documentation for NotFoundException</p>
7516    NotFound(String),
7517    /// <p>Placeholder documentation for TooManyRequestsException</p>
7518    TooManyRequests(String),
7519}
7520
7521impl DescribeMultiplexError {
7522    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeMultiplexError> {
7523        if let Some(err) = proto::json::Error::parse_rest(&res) {
7524            match err.typ.as_str() {
7525                "BadGatewayException" => {
7526                    return RusotoError::Service(DescribeMultiplexError::BadGateway(err.msg))
7527                }
7528                "BadRequestException" => {
7529                    return RusotoError::Service(DescribeMultiplexError::BadRequest(err.msg))
7530                }
7531                "ForbiddenException" => {
7532                    return RusotoError::Service(DescribeMultiplexError::Forbidden(err.msg))
7533                }
7534                "GatewayTimeoutException" => {
7535                    return RusotoError::Service(DescribeMultiplexError::GatewayTimeout(err.msg))
7536                }
7537                "InternalServerErrorException" => {
7538                    return RusotoError::Service(DescribeMultiplexError::InternalServerError(
7539                        err.msg,
7540                    ))
7541                }
7542                "NotFoundException" => {
7543                    return RusotoError::Service(DescribeMultiplexError::NotFound(err.msg))
7544                }
7545                "TooManyRequestsException" => {
7546                    return RusotoError::Service(DescribeMultiplexError::TooManyRequests(err.msg))
7547                }
7548                "ValidationException" => return RusotoError::Validation(err.msg),
7549                _ => {}
7550            }
7551        }
7552        RusotoError::Unknown(res)
7553    }
7554}
7555impl fmt::Display for DescribeMultiplexError {
7556    #[allow(unused_variables)]
7557    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7558        match *self {
7559            DescribeMultiplexError::BadGateway(ref cause) => write!(f, "{}", cause),
7560            DescribeMultiplexError::BadRequest(ref cause) => write!(f, "{}", cause),
7561            DescribeMultiplexError::Forbidden(ref cause) => write!(f, "{}", cause),
7562            DescribeMultiplexError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7563            DescribeMultiplexError::InternalServerError(ref cause) => write!(f, "{}", cause),
7564            DescribeMultiplexError::NotFound(ref cause) => write!(f, "{}", cause),
7565            DescribeMultiplexError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7566        }
7567    }
7568}
7569impl Error for DescribeMultiplexError {}
7570/// Errors returned by DescribeMultiplexProgram
7571#[derive(Debug, PartialEq)]
7572pub enum DescribeMultiplexProgramError {
7573    /// <p>Placeholder documentation for BadGatewayException</p>
7574    BadGateway(String),
7575    /// <p>Placeholder documentation for BadRequestException</p>
7576    BadRequest(String),
7577    /// <p>Placeholder documentation for ForbiddenException</p>
7578    Forbidden(String),
7579    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7580    GatewayTimeout(String),
7581    /// <p>Placeholder documentation for InternalServerErrorException</p>
7582    InternalServerError(String),
7583    /// <p>Placeholder documentation for NotFoundException</p>
7584    NotFound(String),
7585    /// <p>Placeholder documentation for TooManyRequestsException</p>
7586    TooManyRequests(String),
7587}
7588
7589impl DescribeMultiplexProgramError {
7590    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeMultiplexProgramError> {
7591        if let Some(err) = proto::json::Error::parse_rest(&res) {
7592            match err.typ.as_str() {
7593                "BadGatewayException" => {
7594                    return RusotoError::Service(DescribeMultiplexProgramError::BadGateway(err.msg))
7595                }
7596                "BadRequestException" => {
7597                    return RusotoError::Service(DescribeMultiplexProgramError::BadRequest(err.msg))
7598                }
7599                "ForbiddenException" => {
7600                    return RusotoError::Service(DescribeMultiplexProgramError::Forbidden(err.msg))
7601                }
7602                "GatewayTimeoutException" => {
7603                    return RusotoError::Service(DescribeMultiplexProgramError::GatewayTimeout(
7604                        err.msg,
7605                    ))
7606                }
7607                "InternalServerErrorException" => {
7608                    return RusotoError::Service(
7609                        DescribeMultiplexProgramError::InternalServerError(err.msg),
7610                    )
7611                }
7612                "NotFoundException" => {
7613                    return RusotoError::Service(DescribeMultiplexProgramError::NotFound(err.msg))
7614                }
7615                "TooManyRequestsException" => {
7616                    return RusotoError::Service(DescribeMultiplexProgramError::TooManyRequests(
7617                        err.msg,
7618                    ))
7619                }
7620                "ValidationException" => return RusotoError::Validation(err.msg),
7621                _ => {}
7622            }
7623        }
7624        RusotoError::Unknown(res)
7625    }
7626}
7627impl fmt::Display for DescribeMultiplexProgramError {
7628    #[allow(unused_variables)]
7629    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7630        match *self {
7631            DescribeMultiplexProgramError::BadGateway(ref cause) => write!(f, "{}", cause),
7632            DescribeMultiplexProgramError::BadRequest(ref cause) => write!(f, "{}", cause),
7633            DescribeMultiplexProgramError::Forbidden(ref cause) => write!(f, "{}", cause),
7634            DescribeMultiplexProgramError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7635            DescribeMultiplexProgramError::InternalServerError(ref cause) => write!(f, "{}", cause),
7636            DescribeMultiplexProgramError::NotFound(ref cause) => write!(f, "{}", cause),
7637            DescribeMultiplexProgramError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7638        }
7639    }
7640}
7641impl Error for DescribeMultiplexProgramError {}
7642/// Errors returned by DescribeOffering
7643#[derive(Debug, PartialEq)]
7644pub enum DescribeOfferingError {
7645    /// <p>Placeholder documentation for BadGatewayException</p>
7646    BadGateway(String),
7647    /// <p>Placeholder documentation for BadRequestException</p>
7648    BadRequest(String),
7649    /// <p>Placeholder documentation for ForbiddenException</p>
7650    Forbidden(String),
7651    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7652    GatewayTimeout(String),
7653    /// <p>Placeholder documentation for InternalServerErrorException</p>
7654    InternalServerError(String),
7655    /// <p>Placeholder documentation for NotFoundException</p>
7656    NotFound(String),
7657    /// <p>Placeholder documentation for TooManyRequestsException</p>
7658    TooManyRequests(String),
7659}
7660
7661impl DescribeOfferingError {
7662    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeOfferingError> {
7663        if let Some(err) = proto::json::Error::parse_rest(&res) {
7664            match err.typ.as_str() {
7665                "BadGatewayException" => {
7666                    return RusotoError::Service(DescribeOfferingError::BadGateway(err.msg))
7667                }
7668                "BadRequestException" => {
7669                    return RusotoError::Service(DescribeOfferingError::BadRequest(err.msg))
7670                }
7671                "ForbiddenException" => {
7672                    return RusotoError::Service(DescribeOfferingError::Forbidden(err.msg))
7673                }
7674                "GatewayTimeoutException" => {
7675                    return RusotoError::Service(DescribeOfferingError::GatewayTimeout(err.msg))
7676                }
7677                "InternalServerErrorException" => {
7678                    return RusotoError::Service(DescribeOfferingError::InternalServerError(
7679                        err.msg,
7680                    ))
7681                }
7682                "NotFoundException" => {
7683                    return RusotoError::Service(DescribeOfferingError::NotFound(err.msg))
7684                }
7685                "TooManyRequestsException" => {
7686                    return RusotoError::Service(DescribeOfferingError::TooManyRequests(err.msg))
7687                }
7688                "ValidationException" => return RusotoError::Validation(err.msg),
7689                _ => {}
7690            }
7691        }
7692        RusotoError::Unknown(res)
7693    }
7694}
7695impl fmt::Display for DescribeOfferingError {
7696    #[allow(unused_variables)]
7697    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7698        match *self {
7699            DescribeOfferingError::BadGateway(ref cause) => write!(f, "{}", cause),
7700            DescribeOfferingError::BadRequest(ref cause) => write!(f, "{}", cause),
7701            DescribeOfferingError::Forbidden(ref cause) => write!(f, "{}", cause),
7702            DescribeOfferingError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7703            DescribeOfferingError::InternalServerError(ref cause) => write!(f, "{}", cause),
7704            DescribeOfferingError::NotFound(ref cause) => write!(f, "{}", cause),
7705            DescribeOfferingError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7706        }
7707    }
7708}
7709impl Error for DescribeOfferingError {}
7710/// Errors returned by DescribeReservation
7711#[derive(Debug, PartialEq)]
7712pub enum DescribeReservationError {
7713    /// <p>Placeholder documentation for BadGatewayException</p>
7714    BadGateway(String),
7715    /// <p>Placeholder documentation for BadRequestException</p>
7716    BadRequest(String),
7717    /// <p>Placeholder documentation for ForbiddenException</p>
7718    Forbidden(String),
7719    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7720    GatewayTimeout(String),
7721    /// <p>Placeholder documentation for InternalServerErrorException</p>
7722    InternalServerError(String),
7723    /// <p>Placeholder documentation for NotFoundException</p>
7724    NotFound(String),
7725    /// <p>Placeholder documentation for TooManyRequestsException</p>
7726    TooManyRequests(String),
7727}
7728
7729impl DescribeReservationError {
7730    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeReservationError> {
7731        if let Some(err) = proto::json::Error::parse_rest(&res) {
7732            match err.typ.as_str() {
7733                "BadGatewayException" => {
7734                    return RusotoError::Service(DescribeReservationError::BadGateway(err.msg))
7735                }
7736                "BadRequestException" => {
7737                    return RusotoError::Service(DescribeReservationError::BadRequest(err.msg))
7738                }
7739                "ForbiddenException" => {
7740                    return RusotoError::Service(DescribeReservationError::Forbidden(err.msg))
7741                }
7742                "GatewayTimeoutException" => {
7743                    return RusotoError::Service(DescribeReservationError::GatewayTimeout(err.msg))
7744                }
7745                "InternalServerErrorException" => {
7746                    return RusotoError::Service(DescribeReservationError::InternalServerError(
7747                        err.msg,
7748                    ))
7749                }
7750                "NotFoundException" => {
7751                    return RusotoError::Service(DescribeReservationError::NotFound(err.msg))
7752                }
7753                "TooManyRequestsException" => {
7754                    return RusotoError::Service(DescribeReservationError::TooManyRequests(err.msg))
7755                }
7756                "ValidationException" => return RusotoError::Validation(err.msg),
7757                _ => {}
7758            }
7759        }
7760        RusotoError::Unknown(res)
7761    }
7762}
7763impl fmt::Display for DescribeReservationError {
7764    #[allow(unused_variables)]
7765    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7766        match *self {
7767            DescribeReservationError::BadGateway(ref cause) => write!(f, "{}", cause),
7768            DescribeReservationError::BadRequest(ref cause) => write!(f, "{}", cause),
7769            DescribeReservationError::Forbidden(ref cause) => write!(f, "{}", cause),
7770            DescribeReservationError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7771            DescribeReservationError::InternalServerError(ref cause) => write!(f, "{}", cause),
7772            DescribeReservationError::NotFound(ref cause) => write!(f, "{}", cause),
7773            DescribeReservationError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7774        }
7775    }
7776}
7777impl Error for DescribeReservationError {}
7778/// Errors returned by DescribeSchedule
7779#[derive(Debug, PartialEq)]
7780pub enum DescribeScheduleError {
7781    /// <p>Placeholder documentation for BadGatewayException</p>
7782    BadGateway(String),
7783    /// <p>Placeholder documentation for BadRequestException</p>
7784    BadRequest(String),
7785    /// <p>Placeholder documentation for ForbiddenException</p>
7786    Forbidden(String),
7787    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7788    GatewayTimeout(String),
7789    /// <p>Placeholder documentation for InternalServerErrorException</p>
7790    InternalServerError(String),
7791    /// <p>Placeholder documentation for NotFoundException</p>
7792    NotFound(String),
7793    /// <p>Placeholder documentation for TooManyRequestsException</p>
7794    TooManyRequests(String),
7795}
7796
7797impl DescribeScheduleError {
7798    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeScheduleError> {
7799        if let Some(err) = proto::json::Error::parse_rest(&res) {
7800            match err.typ.as_str() {
7801                "BadGatewayException" => {
7802                    return RusotoError::Service(DescribeScheduleError::BadGateway(err.msg))
7803                }
7804                "BadRequestException" => {
7805                    return RusotoError::Service(DescribeScheduleError::BadRequest(err.msg))
7806                }
7807                "ForbiddenException" => {
7808                    return RusotoError::Service(DescribeScheduleError::Forbidden(err.msg))
7809                }
7810                "GatewayTimeoutException" => {
7811                    return RusotoError::Service(DescribeScheduleError::GatewayTimeout(err.msg))
7812                }
7813                "InternalServerErrorException" => {
7814                    return RusotoError::Service(DescribeScheduleError::InternalServerError(
7815                        err.msg,
7816                    ))
7817                }
7818                "NotFoundException" => {
7819                    return RusotoError::Service(DescribeScheduleError::NotFound(err.msg))
7820                }
7821                "TooManyRequestsException" => {
7822                    return RusotoError::Service(DescribeScheduleError::TooManyRequests(err.msg))
7823                }
7824                "ValidationException" => return RusotoError::Validation(err.msg),
7825                _ => {}
7826            }
7827        }
7828        RusotoError::Unknown(res)
7829    }
7830}
7831impl fmt::Display for DescribeScheduleError {
7832    #[allow(unused_variables)]
7833    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7834        match *self {
7835            DescribeScheduleError::BadGateway(ref cause) => write!(f, "{}", cause),
7836            DescribeScheduleError::BadRequest(ref cause) => write!(f, "{}", cause),
7837            DescribeScheduleError::Forbidden(ref cause) => write!(f, "{}", cause),
7838            DescribeScheduleError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7839            DescribeScheduleError::InternalServerError(ref cause) => write!(f, "{}", cause),
7840            DescribeScheduleError::NotFound(ref cause) => write!(f, "{}", cause),
7841            DescribeScheduleError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7842        }
7843    }
7844}
7845impl Error for DescribeScheduleError {}
7846/// Errors returned by ListChannels
7847#[derive(Debug, PartialEq)]
7848pub enum ListChannelsError {
7849    /// <p>Placeholder documentation for BadGatewayException</p>
7850    BadGateway(String),
7851    /// <p>Placeholder documentation for BadRequestException</p>
7852    BadRequest(String),
7853    /// <p>Placeholder documentation for ForbiddenException</p>
7854    Forbidden(String),
7855    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7856    GatewayTimeout(String),
7857    /// <p>Placeholder documentation for InternalServerErrorException</p>
7858    InternalServerError(String),
7859    /// <p>Placeholder documentation for TooManyRequestsException</p>
7860    TooManyRequests(String),
7861}
7862
7863impl ListChannelsError {
7864    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListChannelsError> {
7865        if let Some(err) = proto::json::Error::parse_rest(&res) {
7866            match err.typ.as_str() {
7867                "BadGatewayException" => {
7868                    return RusotoError::Service(ListChannelsError::BadGateway(err.msg))
7869                }
7870                "BadRequestException" => {
7871                    return RusotoError::Service(ListChannelsError::BadRequest(err.msg))
7872                }
7873                "ForbiddenException" => {
7874                    return RusotoError::Service(ListChannelsError::Forbidden(err.msg))
7875                }
7876                "GatewayTimeoutException" => {
7877                    return RusotoError::Service(ListChannelsError::GatewayTimeout(err.msg))
7878                }
7879                "InternalServerErrorException" => {
7880                    return RusotoError::Service(ListChannelsError::InternalServerError(err.msg))
7881                }
7882                "TooManyRequestsException" => {
7883                    return RusotoError::Service(ListChannelsError::TooManyRequests(err.msg))
7884                }
7885                "ValidationException" => return RusotoError::Validation(err.msg),
7886                _ => {}
7887            }
7888        }
7889        RusotoError::Unknown(res)
7890    }
7891}
7892impl fmt::Display for ListChannelsError {
7893    #[allow(unused_variables)]
7894    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7895        match *self {
7896            ListChannelsError::BadGateway(ref cause) => write!(f, "{}", cause),
7897            ListChannelsError::BadRequest(ref cause) => write!(f, "{}", cause),
7898            ListChannelsError::Forbidden(ref cause) => write!(f, "{}", cause),
7899            ListChannelsError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7900            ListChannelsError::InternalServerError(ref cause) => write!(f, "{}", cause),
7901            ListChannelsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7902        }
7903    }
7904}
7905impl Error for ListChannelsError {}
7906/// Errors returned by ListInputDevices
7907#[derive(Debug, PartialEq)]
7908pub enum ListInputDevicesError {
7909    /// <p>Placeholder documentation for BadGatewayException</p>
7910    BadGateway(String),
7911    /// <p>Placeholder documentation for BadRequestException</p>
7912    BadRequest(String),
7913    /// <p>Placeholder documentation for ForbiddenException</p>
7914    Forbidden(String),
7915    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7916    GatewayTimeout(String),
7917    /// <p>Placeholder documentation for InternalServerErrorException</p>
7918    InternalServerError(String),
7919    /// <p>Placeholder documentation for TooManyRequestsException</p>
7920    TooManyRequests(String),
7921}
7922
7923impl ListInputDevicesError {
7924    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListInputDevicesError> {
7925        if let Some(err) = proto::json::Error::parse_rest(&res) {
7926            match err.typ.as_str() {
7927                "BadGatewayException" => {
7928                    return RusotoError::Service(ListInputDevicesError::BadGateway(err.msg))
7929                }
7930                "BadRequestException" => {
7931                    return RusotoError::Service(ListInputDevicesError::BadRequest(err.msg))
7932                }
7933                "ForbiddenException" => {
7934                    return RusotoError::Service(ListInputDevicesError::Forbidden(err.msg))
7935                }
7936                "GatewayTimeoutException" => {
7937                    return RusotoError::Service(ListInputDevicesError::GatewayTimeout(err.msg))
7938                }
7939                "InternalServerErrorException" => {
7940                    return RusotoError::Service(ListInputDevicesError::InternalServerError(
7941                        err.msg,
7942                    ))
7943                }
7944                "TooManyRequestsException" => {
7945                    return RusotoError::Service(ListInputDevicesError::TooManyRequests(err.msg))
7946                }
7947                "ValidationException" => return RusotoError::Validation(err.msg),
7948                _ => {}
7949            }
7950        }
7951        RusotoError::Unknown(res)
7952    }
7953}
7954impl fmt::Display for ListInputDevicesError {
7955    #[allow(unused_variables)]
7956    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7957        match *self {
7958            ListInputDevicesError::BadGateway(ref cause) => write!(f, "{}", cause),
7959            ListInputDevicesError::BadRequest(ref cause) => write!(f, "{}", cause),
7960            ListInputDevicesError::Forbidden(ref cause) => write!(f, "{}", cause),
7961            ListInputDevicesError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
7962            ListInputDevicesError::InternalServerError(ref cause) => write!(f, "{}", cause),
7963            ListInputDevicesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
7964        }
7965    }
7966}
7967impl Error for ListInputDevicesError {}
7968/// Errors returned by ListInputSecurityGroups
7969#[derive(Debug, PartialEq)]
7970pub enum ListInputSecurityGroupsError {
7971    /// <p>Placeholder documentation for BadGatewayException</p>
7972    BadGateway(String),
7973    /// <p>Placeholder documentation for BadRequestException</p>
7974    BadRequest(String),
7975    /// <p>Placeholder documentation for ForbiddenException</p>
7976    Forbidden(String),
7977    /// <p>Placeholder documentation for GatewayTimeoutException</p>
7978    GatewayTimeout(String),
7979    /// <p>Placeholder documentation for InternalServerErrorException</p>
7980    InternalServerError(String),
7981    /// <p>Placeholder documentation for TooManyRequestsException</p>
7982    TooManyRequests(String),
7983}
7984
7985impl ListInputSecurityGroupsError {
7986    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListInputSecurityGroupsError> {
7987        if let Some(err) = proto::json::Error::parse_rest(&res) {
7988            match err.typ.as_str() {
7989                "BadGatewayException" => {
7990                    return RusotoError::Service(ListInputSecurityGroupsError::BadGateway(err.msg))
7991                }
7992                "BadRequestException" => {
7993                    return RusotoError::Service(ListInputSecurityGroupsError::BadRequest(err.msg))
7994                }
7995                "ForbiddenException" => {
7996                    return RusotoError::Service(ListInputSecurityGroupsError::Forbidden(err.msg))
7997                }
7998                "GatewayTimeoutException" => {
7999                    return RusotoError::Service(ListInputSecurityGroupsError::GatewayTimeout(
8000                        err.msg,
8001                    ))
8002                }
8003                "InternalServerErrorException" => {
8004                    return RusotoError::Service(ListInputSecurityGroupsError::InternalServerError(
8005                        err.msg,
8006                    ))
8007                }
8008                "TooManyRequestsException" => {
8009                    return RusotoError::Service(ListInputSecurityGroupsError::TooManyRequests(
8010                        err.msg,
8011                    ))
8012                }
8013                "ValidationException" => return RusotoError::Validation(err.msg),
8014                _ => {}
8015            }
8016        }
8017        RusotoError::Unknown(res)
8018    }
8019}
8020impl fmt::Display for ListInputSecurityGroupsError {
8021    #[allow(unused_variables)]
8022    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8023        match *self {
8024            ListInputSecurityGroupsError::BadGateway(ref cause) => write!(f, "{}", cause),
8025            ListInputSecurityGroupsError::BadRequest(ref cause) => write!(f, "{}", cause),
8026            ListInputSecurityGroupsError::Forbidden(ref cause) => write!(f, "{}", cause),
8027            ListInputSecurityGroupsError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8028            ListInputSecurityGroupsError::InternalServerError(ref cause) => write!(f, "{}", cause),
8029            ListInputSecurityGroupsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8030        }
8031    }
8032}
8033impl Error for ListInputSecurityGroupsError {}
8034/// Errors returned by ListInputs
8035#[derive(Debug, PartialEq)]
8036pub enum ListInputsError {
8037    /// <p>Placeholder documentation for BadGatewayException</p>
8038    BadGateway(String),
8039    /// <p>Placeholder documentation for BadRequestException</p>
8040    BadRequest(String),
8041    /// <p>Placeholder documentation for ForbiddenException</p>
8042    Forbidden(String),
8043    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8044    GatewayTimeout(String),
8045    /// <p>Placeholder documentation for InternalServerErrorException</p>
8046    InternalServerError(String),
8047    /// <p>Placeholder documentation for TooManyRequestsException</p>
8048    TooManyRequests(String),
8049}
8050
8051impl ListInputsError {
8052    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListInputsError> {
8053        if let Some(err) = proto::json::Error::parse_rest(&res) {
8054            match err.typ.as_str() {
8055                "BadGatewayException" => {
8056                    return RusotoError::Service(ListInputsError::BadGateway(err.msg))
8057                }
8058                "BadRequestException" => {
8059                    return RusotoError::Service(ListInputsError::BadRequest(err.msg))
8060                }
8061                "ForbiddenException" => {
8062                    return RusotoError::Service(ListInputsError::Forbidden(err.msg))
8063                }
8064                "GatewayTimeoutException" => {
8065                    return RusotoError::Service(ListInputsError::GatewayTimeout(err.msg))
8066                }
8067                "InternalServerErrorException" => {
8068                    return RusotoError::Service(ListInputsError::InternalServerError(err.msg))
8069                }
8070                "TooManyRequestsException" => {
8071                    return RusotoError::Service(ListInputsError::TooManyRequests(err.msg))
8072                }
8073                "ValidationException" => return RusotoError::Validation(err.msg),
8074                _ => {}
8075            }
8076        }
8077        RusotoError::Unknown(res)
8078    }
8079}
8080impl fmt::Display for ListInputsError {
8081    #[allow(unused_variables)]
8082    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8083        match *self {
8084            ListInputsError::BadGateway(ref cause) => write!(f, "{}", cause),
8085            ListInputsError::BadRequest(ref cause) => write!(f, "{}", cause),
8086            ListInputsError::Forbidden(ref cause) => write!(f, "{}", cause),
8087            ListInputsError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8088            ListInputsError::InternalServerError(ref cause) => write!(f, "{}", cause),
8089            ListInputsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8090        }
8091    }
8092}
8093impl Error for ListInputsError {}
8094/// Errors returned by ListMultiplexPrograms
8095#[derive(Debug, PartialEq)]
8096pub enum ListMultiplexProgramsError {
8097    /// <p>Placeholder documentation for BadGatewayException</p>
8098    BadGateway(String),
8099    /// <p>Placeholder documentation for BadRequestException</p>
8100    BadRequest(String),
8101    /// <p>Placeholder documentation for ForbiddenException</p>
8102    Forbidden(String),
8103    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8104    GatewayTimeout(String),
8105    /// <p>Placeholder documentation for InternalServerErrorException</p>
8106    InternalServerError(String),
8107    /// <p>Placeholder documentation for NotFoundException</p>
8108    NotFound(String),
8109    /// <p>Placeholder documentation for TooManyRequestsException</p>
8110    TooManyRequests(String),
8111}
8112
8113impl ListMultiplexProgramsError {
8114    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListMultiplexProgramsError> {
8115        if let Some(err) = proto::json::Error::parse_rest(&res) {
8116            match err.typ.as_str() {
8117                "BadGatewayException" => {
8118                    return RusotoError::Service(ListMultiplexProgramsError::BadGateway(err.msg))
8119                }
8120                "BadRequestException" => {
8121                    return RusotoError::Service(ListMultiplexProgramsError::BadRequest(err.msg))
8122                }
8123                "ForbiddenException" => {
8124                    return RusotoError::Service(ListMultiplexProgramsError::Forbidden(err.msg))
8125                }
8126                "GatewayTimeoutException" => {
8127                    return RusotoError::Service(ListMultiplexProgramsError::GatewayTimeout(
8128                        err.msg,
8129                    ))
8130                }
8131                "InternalServerErrorException" => {
8132                    return RusotoError::Service(ListMultiplexProgramsError::InternalServerError(
8133                        err.msg,
8134                    ))
8135                }
8136                "NotFoundException" => {
8137                    return RusotoError::Service(ListMultiplexProgramsError::NotFound(err.msg))
8138                }
8139                "TooManyRequestsException" => {
8140                    return RusotoError::Service(ListMultiplexProgramsError::TooManyRequests(
8141                        err.msg,
8142                    ))
8143                }
8144                "ValidationException" => return RusotoError::Validation(err.msg),
8145                _ => {}
8146            }
8147        }
8148        RusotoError::Unknown(res)
8149    }
8150}
8151impl fmt::Display for ListMultiplexProgramsError {
8152    #[allow(unused_variables)]
8153    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8154        match *self {
8155            ListMultiplexProgramsError::BadGateway(ref cause) => write!(f, "{}", cause),
8156            ListMultiplexProgramsError::BadRequest(ref cause) => write!(f, "{}", cause),
8157            ListMultiplexProgramsError::Forbidden(ref cause) => write!(f, "{}", cause),
8158            ListMultiplexProgramsError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8159            ListMultiplexProgramsError::InternalServerError(ref cause) => write!(f, "{}", cause),
8160            ListMultiplexProgramsError::NotFound(ref cause) => write!(f, "{}", cause),
8161            ListMultiplexProgramsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8162        }
8163    }
8164}
8165impl Error for ListMultiplexProgramsError {}
8166/// Errors returned by ListMultiplexes
8167#[derive(Debug, PartialEq)]
8168pub enum ListMultiplexesError {
8169    /// <p>Placeholder documentation for BadGatewayException</p>
8170    BadGateway(String),
8171    /// <p>Placeholder documentation for BadRequestException</p>
8172    BadRequest(String),
8173    /// <p>Placeholder documentation for ForbiddenException</p>
8174    Forbidden(String),
8175    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8176    GatewayTimeout(String),
8177    /// <p>Placeholder documentation for InternalServerErrorException</p>
8178    InternalServerError(String),
8179    /// <p>Placeholder documentation for TooManyRequestsException</p>
8180    TooManyRequests(String),
8181}
8182
8183impl ListMultiplexesError {
8184    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListMultiplexesError> {
8185        if let Some(err) = proto::json::Error::parse_rest(&res) {
8186            match err.typ.as_str() {
8187                "BadGatewayException" => {
8188                    return RusotoError::Service(ListMultiplexesError::BadGateway(err.msg))
8189                }
8190                "BadRequestException" => {
8191                    return RusotoError::Service(ListMultiplexesError::BadRequest(err.msg))
8192                }
8193                "ForbiddenException" => {
8194                    return RusotoError::Service(ListMultiplexesError::Forbidden(err.msg))
8195                }
8196                "GatewayTimeoutException" => {
8197                    return RusotoError::Service(ListMultiplexesError::GatewayTimeout(err.msg))
8198                }
8199                "InternalServerErrorException" => {
8200                    return RusotoError::Service(ListMultiplexesError::InternalServerError(err.msg))
8201                }
8202                "TooManyRequestsException" => {
8203                    return RusotoError::Service(ListMultiplexesError::TooManyRequests(err.msg))
8204                }
8205                "ValidationException" => return RusotoError::Validation(err.msg),
8206                _ => {}
8207            }
8208        }
8209        RusotoError::Unknown(res)
8210    }
8211}
8212impl fmt::Display for ListMultiplexesError {
8213    #[allow(unused_variables)]
8214    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8215        match *self {
8216            ListMultiplexesError::BadGateway(ref cause) => write!(f, "{}", cause),
8217            ListMultiplexesError::BadRequest(ref cause) => write!(f, "{}", cause),
8218            ListMultiplexesError::Forbidden(ref cause) => write!(f, "{}", cause),
8219            ListMultiplexesError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8220            ListMultiplexesError::InternalServerError(ref cause) => write!(f, "{}", cause),
8221            ListMultiplexesError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8222        }
8223    }
8224}
8225impl Error for ListMultiplexesError {}
8226/// Errors returned by ListOfferings
8227#[derive(Debug, PartialEq)]
8228pub enum ListOfferingsError {
8229    /// <p>Placeholder documentation for BadGatewayException</p>
8230    BadGateway(String),
8231    /// <p>Placeholder documentation for BadRequestException</p>
8232    BadRequest(String),
8233    /// <p>Placeholder documentation for ForbiddenException</p>
8234    Forbidden(String),
8235    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8236    GatewayTimeout(String),
8237    /// <p>Placeholder documentation for InternalServerErrorException</p>
8238    InternalServerError(String),
8239    /// <p>Placeholder documentation for TooManyRequestsException</p>
8240    TooManyRequests(String),
8241}
8242
8243impl ListOfferingsError {
8244    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListOfferingsError> {
8245        if let Some(err) = proto::json::Error::parse_rest(&res) {
8246            match err.typ.as_str() {
8247                "BadGatewayException" => {
8248                    return RusotoError::Service(ListOfferingsError::BadGateway(err.msg))
8249                }
8250                "BadRequestException" => {
8251                    return RusotoError::Service(ListOfferingsError::BadRequest(err.msg))
8252                }
8253                "ForbiddenException" => {
8254                    return RusotoError::Service(ListOfferingsError::Forbidden(err.msg))
8255                }
8256                "GatewayTimeoutException" => {
8257                    return RusotoError::Service(ListOfferingsError::GatewayTimeout(err.msg))
8258                }
8259                "InternalServerErrorException" => {
8260                    return RusotoError::Service(ListOfferingsError::InternalServerError(err.msg))
8261                }
8262                "TooManyRequestsException" => {
8263                    return RusotoError::Service(ListOfferingsError::TooManyRequests(err.msg))
8264                }
8265                "ValidationException" => return RusotoError::Validation(err.msg),
8266                _ => {}
8267            }
8268        }
8269        RusotoError::Unknown(res)
8270    }
8271}
8272impl fmt::Display for ListOfferingsError {
8273    #[allow(unused_variables)]
8274    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8275        match *self {
8276            ListOfferingsError::BadGateway(ref cause) => write!(f, "{}", cause),
8277            ListOfferingsError::BadRequest(ref cause) => write!(f, "{}", cause),
8278            ListOfferingsError::Forbidden(ref cause) => write!(f, "{}", cause),
8279            ListOfferingsError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8280            ListOfferingsError::InternalServerError(ref cause) => write!(f, "{}", cause),
8281            ListOfferingsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8282        }
8283    }
8284}
8285impl Error for ListOfferingsError {}
8286/// Errors returned by ListReservations
8287#[derive(Debug, PartialEq)]
8288pub enum ListReservationsError {
8289    /// <p>Placeholder documentation for BadGatewayException</p>
8290    BadGateway(String),
8291    /// <p>Placeholder documentation for BadRequestException</p>
8292    BadRequest(String),
8293    /// <p>Placeholder documentation for ForbiddenException</p>
8294    Forbidden(String),
8295    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8296    GatewayTimeout(String),
8297    /// <p>Placeholder documentation for InternalServerErrorException</p>
8298    InternalServerError(String),
8299    /// <p>Placeholder documentation for TooManyRequestsException</p>
8300    TooManyRequests(String),
8301}
8302
8303impl ListReservationsError {
8304    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListReservationsError> {
8305        if let Some(err) = proto::json::Error::parse_rest(&res) {
8306            match err.typ.as_str() {
8307                "BadGatewayException" => {
8308                    return RusotoError::Service(ListReservationsError::BadGateway(err.msg))
8309                }
8310                "BadRequestException" => {
8311                    return RusotoError::Service(ListReservationsError::BadRequest(err.msg))
8312                }
8313                "ForbiddenException" => {
8314                    return RusotoError::Service(ListReservationsError::Forbidden(err.msg))
8315                }
8316                "GatewayTimeoutException" => {
8317                    return RusotoError::Service(ListReservationsError::GatewayTimeout(err.msg))
8318                }
8319                "InternalServerErrorException" => {
8320                    return RusotoError::Service(ListReservationsError::InternalServerError(
8321                        err.msg,
8322                    ))
8323                }
8324                "TooManyRequestsException" => {
8325                    return RusotoError::Service(ListReservationsError::TooManyRequests(err.msg))
8326                }
8327                "ValidationException" => return RusotoError::Validation(err.msg),
8328                _ => {}
8329            }
8330        }
8331        RusotoError::Unknown(res)
8332    }
8333}
8334impl fmt::Display for ListReservationsError {
8335    #[allow(unused_variables)]
8336    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8337        match *self {
8338            ListReservationsError::BadGateway(ref cause) => write!(f, "{}", cause),
8339            ListReservationsError::BadRequest(ref cause) => write!(f, "{}", cause),
8340            ListReservationsError::Forbidden(ref cause) => write!(f, "{}", cause),
8341            ListReservationsError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8342            ListReservationsError::InternalServerError(ref cause) => write!(f, "{}", cause),
8343            ListReservationsError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8344        }
8345    }
8346}
8347impl Error for ListReservationsError {}
8348/// Errors returned by ListTagsForResource
8349#[derive(Debug, PartialEq)]
8350pub enum ListTagsForResourceError {
8351    /// <p>Placeholder documentation for BadRequestException</p>
8352    BadRequest(String),
8353    /// <p>Placeholder documentation for ForbiddenException</p>
8354    Forbidden(String),
8355    /// <p>Placeholder documentation for InternalServerErrorException</p>
8356    InternalServerError(String),
8357    /// <p>Placeholder documentation for NotFoundException</p>
8358    NotFound(String),
8359}
8360
8361impl ListTagsForResourceError {
8362    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
8363        if let Some(err) = proto::json::Error::parse_rest(&res) {
8364            match err.typ.as_str() {
8365                "BadRequestException" => {
8366                    return RusotoError::Service(ListTagsForResourceError::BadRequest(err.msg))
8367                }
8368                "ForbiddenException" => {
8369                    return RusotoError::Service(ListTagsForResourceError::Forbidden(err.msg))
8370                }
8371                "InternalServerErrorException" => {
8372                    return RusotoError::Service(ListTagsForResourceError::InternalServerError(
8373                        err.msg,
8374                    ))
8375                }
8376                "NotFoundException" => {
8377                    return RusotoError::Service(ListTagsForResourceError::NotFound(err.msg))
8378                }
8379                "ValidationException" => return RusotoError::Validation(err.msg),
8380                _ => {}
8381            }
8382        }
8383        RusotoError::Unknown(res)
8384    }
8385}
8386impl fmt::Display for ListTagsForResourceError {
8387    #[allow(unused_variables)]
8388    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8389        match *self {
8390            ListTagsForResourceError::BadRequest(ref cause) => write!(f, "{}", cause),
8391            ListTagsForResourceError::Forbidden(ref cause) => write!(f, "{}", cause),
8392            ListTagsForResourceError::InternalServerError(ref cause) => write!(f, "{}", cause),
8393            ListTagsForResourceError::NotFound(ref cause) => write!(f, "{}", cause),
8394        }
8395    }
8396}
8397impl Error for ListTagsForResourceError {}
8398/// Errors returned by PurchaseOffering
8399#[derive(Debug, PartialEq)]
8400pub enum PurchaseOfferingError {
8401    /// <p>Placeholder documentation for BadGatewayException</p>
8402    BadGateway(String),
8403    /// <p>Placeholder documentation for BadRequestException</p>
8404    BadRequest(String),
8405    /// <p>Placeholder documentation for ConflictException</p>
8406    Conflict(String),
8407    /// <p>Placeholder documentation for ForbiddenException</p>
8408    Forbidden(String),
8409    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8410    GatewayTimeout(String),
8411    /// <p>Placeholder documentation for InternalServerErrorException</p>
8412    InternalServerError(String),
8413    /// <p>Placeholder documentation for NotFoundException</p>
8414    NotFound(String),
8415    /// <p>Placeholder documentation for TooManyRequestsException</p>
8416    TooManyRequests(String),
8417}
8418
8419impl PurchaseOfferingError {
8420    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PurchaseOfferingError> {
8421        if let Some(err) = proto::json::Error::parse_rest(&res) {
8422            match err.typ.as_str() {
8423                "BadGatewayException" => {
8424                    return RusotoError::Service(PurchaseOfferingError::BadGateway(err.msg))
8425                }
8426                "BadRequestException" => {
8427                    return RusotoError::Service(PurchaseOfferingError::BadRequest(err.msg))
8428                }
8429                "ConflictException" => {
8430                    return RusotoError::Service(PurchaseOfferingError::Conflict(err.msg))
8431                }
8432                "ForbiddenException" => {
8433                    return RusotoError::Service(PurchaseOfferingError::Forbidden(err.msg))
8434                }
8435                "GatewayTimeoutException" => {
8436                    return RusotoError::Service(PurchaseOfferingError::GatewayTimeout(err.msg))
8437                }
8438                "InternalServerErrorException" => {
8439                    return RusotoError::Service(PurchaseOfferingError::InternalServerError(
8440                        err.msg,
8441                    ))
8442                }
8443                "NotFoundException" => {
8444                    return RusotoError::Service(PurchaseOfferingError::NotFound(err.msg))
8445                }
8446                "TooManyRequestsException" => {
8447                    return RusotoError::Service(PurchaseOfferingError::TooManyRequests(err.msg))
8448                }
8449                "ValidationException" => return RusotoError::Validation(err.msg),
8450                _ => {}
8451            }
8452        }
8453        RusotoError::Unknown(res)
8454    }
8455}
8456impl fmt::Display for PurchaseOfferingError {
8457    #[allow(unused_variables)]
8458    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8459        match *self {
8460            PurchaseOfferingError::BadGateway(ref cause) => write!(f, "{}", cause),
8461            PurchaseOfferingError::BadRequest(ref cause) => write!(f, "{}", cause),
8462            PurchaseOfferingError::Conflict(ref cause) => write!(f, "{}", cause),
8463            PurchaseOfferingError::Forbidden(ref cause) => write!(f, "{}", cause),
8464            PurchaseOfferingError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8465            PurchaseOfferingError::InternalServerError(ref cause) => write!(f, "{}", cause),
8466            PurchaseOfferingError::NotFound(ref cause) => write!(f, "{}", cause),
8467            PurchaseOfferingError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8468        }
8469    }
8470}
8471impl Error for PurchaseOfferingError {}
8472/// Errors returned by StartChannel
8473#[derive(Debug, PartialEq)]
8474pub enum StartChannelError {
8475    /// <p>Placeholder documentation for BadGatewayException</p>
8476    BadGateway(String),
8477    /// <p>Placeholder documentation for BadRequestException</p>
8478    BadRequest(String),
8479    /// <p>Placeholder documentation for ConflictException</p>
8480    Conflict(String),
8481    /// <p>Placeholder documentation for ForbiddenException</p>
8482    Forbidden(String),
8483    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8484    GatewayTimeout(String),
8485    /// <p>Placeholder documentation for InternalServerErrorException</p>
8486    InternalServerError(String),
8487    /// <p>Placeholder documentation for NotFoundException</p>
8488    NotFound(String),
8489    /// <p>Placeholder documentation for TooManyRequestsException</p>
8490    TooManyRequests(String),
8491}
8492
8493impl StartChannelError {
8494    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartChannelError> {
8495        if let Some(err) = proto::json::Error::parse_rest(&res) {
8496            match err.typ.as_str() {
8497                "BadGatewayException" => {
8498                    return RusotoError::Service(StartChannelError::BadGateway(err.msg))
8499                }
8500                "BadRequestException" => {
8501                    return RusotoError::Service(StartChannelError::BadRequest(err.msg))
8502                }
8503                "ConflictException" => {
8504                    return RusotoError::Service(StartChannelError::Conflict(err.msg))
8505                }
8506                "ForbiddenException" => {
8507                    return RusotoError::Service(StartChannelError::Forbidden(err.msg))
8508                }
8509                "GatewayTimeoutException" => {
8510                    return RusotoError::Service(StartChannelError::GatewayTimeout(err.msg))
8511                }
8512                "InternalServerErrorException" => {
8513                    return RusotoError::Service(StartChannelError::InternalServerError(err.msg))
8514                }
8515                "NotFoundException" => {
8516                    return RusotoError::Service(StartChannelError::NotFound(err.msg))
8517                }
8518                "TooManyRequestsException" => {
8519                    return RusotoError::Service(StartChannelError::TooManyRequests(err.msg))
8520                }
8521                "ValidationException" => return RusotoError::Validation(err.msg),
8522                _ => {}
8523            }
8524        }
8525        RusotoError::Unknown(res)
8526    }
8527}
8528impl fmt::Display for StartChannelError {
8529    #[allow(unused_variables)]
8530    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8531        match *self {
8532            StartChannelError::BadGateway(ref cause) => write!(f, "{}", cause),
8533            StartChannelError::BadRequest(ref cause) => write!(f, "{}", cause),
8534            StartChannelError::Conflict(ref cause) => write!(f, "{}", cause),
8535            StartChannelError::Forbidden(ref cause) => write!(f, "{}", cause),
8536            StartChannelError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8537            StartChannelError::InternalServerError(ref cause) => write!(f, "{}", cause),
8538            StartChannelError::NotFound(ref cause) => write!(f, "{}", cause),
8539            StartChannelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8540        }
8541    }
8542}
8543impl Error for StartChannelError {}
8544/// Errors returned by StartMultiplex
8545#[derive(Debug, PartialEq)]
8546pub enum StartMultiplexError {
8547    /// <p>Placeholder documentation for BadGatewayException</p>
8548    BadGateway(String),
8549    /// <p>Placeholder documentation for BadRequestException</p>
8550    BadRequest(String),
8551    /// <p>Placeholder documentation for ConflictException</p>
8552    Conflict(String),
8553    /// <p>Placeholder documentation for ForbiddenException</p>
8554    Forbidden(String),
8555    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8556    GatewayTimeout(String),
8557    /// <p>Placeholder documentation for InternalServerErrorException</p>
8558    InternalServerError(String),
8559    /// <p>Placeholder documentation for NotFoundException</p>
8560    NotFound(String),
8561    /// <p>Placeholder documentation for TooManyRequestsException</p>
8562    TooManyRequests(String),
8563}
8564
8565impl StartMultiplexError {
8566    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartMultiplexError> {
8567        if let Some(err) = proto::json::Error::parse_rest(&res) {
8568            match err.typ.as_str() {
8569                "BadGatewayException" => {
8570                    return RusotoError::Service(StartMultiplexError::BadGateway(err.msg))
8571                }
8572                "BadRequestException" => {
8573                    return RusotoError::Service(StartMultiplexError::BadRequest(err.msg))
8574                }
8575                "ConflictException" => {
8576                    return RusotoError::Service(StartMultiplexError::Conflict(err.msg))
8577                }
8578                "ForbiddenException" => {
8579                    return RusotoError::Service(StartMultiplexError::Forbidden(err.msg))
8580                }
8581                "GatewayTimeoutException" => {
8582                    return RusotoError::Service(StartMultiplexError::GatewayTimeout(err.msg))
8583                }
8584                "InternalServerErrorException" => {
8585                    return RusotoError::Service(StartMultiplexError::InternalServerError(err.msg))
8586                }
8587                "NotFoundException" => {
8588                    return RusotoError::Service(StartMultiplexError::NotFound(err.msg))
8589                }
8590                "TooManyRequestsException" => {
8591                    return RusotoError::Service(StartMultiplexError::TooManyRequests(err.msg))
8592                }
8593                "ValidationException" => return RusotoError::Validation(err.msg),
8594                _ => {}
8595            }
8596        }
8597        RusotoError::Unknown(res)
8598    }
8599}
8600impl fmt::Display for StartMultiplexError {
8601    #[allow(unused_variables)]
8602    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8603        match *self {
8604            StartMultiplexError::BadGateway(ref cause) => write!(f, "{}", cause),
8605            StartMultiplexError::BadRequest(ref cause) => write!(f, "{}", cause),
8606            StartMultiplexError::Conflict(ref cause) => write!(f, "{}", cause),
8607            StartMultiplexError::Forbidden(ref cause) => write!(f, "{}", cause),
8608            StartMultiplexError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8609            StartMultiplexError::InternalServerError(ref cause) => write!(f, "{}", cause),
8610            StartMultiplexError::NotFound(ref cause) => write!(f, "{}", cause),
8611            StartMultiplexError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8612        }
8613    }
8614}
8615impl Error for StartMultiplexError {}
8616/// Errors returned by StopChannel
8617#[derive(Debug, PartialEq)]
8618pub enum StopChannelError {
8619    /// <p>Placeholder documentation for BadGatewayException</p>
8620    BadGateway(String),
8621    /// <p>Placeholder documentation for BadRequestException</p>
8622    BadRequest(String),
8623    /// <p>Placeholder documentation for ConflictException</p>
8624    Conflict(String),
8625    /// <p>Placeholder documentation for ForbiddenException</p>
8626    Forbidden(String),
8627    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8628    GatewayTimeout(String),
8629    /// <p>Placeholder documentation for InternalServerErrorException</p>
8630    InternalServerError(String),
8631    /// <p>Placeholder documentation for NotFoundException</p>
8632    NotFound(String),
8633    /// <p>Placeholder documentation for TooManyRequestsException</p>
8634    TooManyRequests(String),
8635}
8636
8637impl StopChannelError {
8638    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopChannelError> {
8639        if let Some(err) = proto::json::Error::parse_rest(&res) {
8640            match err.typ.as_str() {
8641                "BadGatewayException" => {
8642                    return RusotoError::Service(StopChannelError::BadGateway(err.msg))
8643                }
8644                "BadRequestException" => {
8645                    return RusotoError::Service(StopChannelError::BadRequest(err.msg))
8646                }
8647                "ConflictException" => {
8648                    return RusotoError::Service(StopChannelError::Conflict(err.msg))
8649                }
8650                "ForbiddenException" => {
8651                    return RusotoError::Service(StopChannelError::Forbidden(err.msg))
8652                }
8653                "GatewayTimeoutException" => {
8654                    return RusotoError::Service(StopChannelError::GatewayTimeout(err.msg))
8655                }
8656                "InternalServerErrorException" => {
8657                    return RusotoError::Service(StopChannelError::InternalServerError(err.msg))
8658                }
8659                "NotFoundException" => {
8660                    return RusotoError::Service(StopChannelError::NotFound(err.msg))
8661                }
8662                "TooManyRequestsException" => {
8663                    return RusotoError::Service(StopChannelError::TooManyRequests(err.msg))
8664                }
8665                "ValidationException" => return RusotoError::Validation(err.msg),
8666                _ => {}
8667            }
8668        }
8669        RusotoError::Unknown(res)
8670    }
8671}
8672impl fmt::Display for StopChannelError {
8673    #[allow(unused_variables)]
8674    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8675        match *self {
8676            StopChannelError::BadGateway(ref cause) => write!(f, "{}", cause),
8677            StopChannelError::BadRequest(ref cause) => write!(f, "{}", cause),
8678            StopChannelError::Conflict(ref cause) => write!(f, "{}", cause),
8679            StopChannelError::Forbidden(ref cause) => write!(f, "{}", cause),
8680            StopChannelError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8681            StopChannelError::InternalServerError(ref cause) => write!(f, "{}", cause),
8682            StopChannelError::NotFound(ref cause) => write!(f, "{}", cause),
8683            StopChannelError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8684        }
8685    }
8686}
8687impl Error for StopChannelError {}
8688/// Errors returned by StopMultiplex
8689#[derive(Debug, PartialEq)]
8690pub enum StopMultiplexError {
8691    /// <p>Placeholder documentation for BadGatewayException</p>
8692    BadGateway(String),
8693    /// <p>Placeholder documentation for BadRequestException</p>
8694    BadRequest(String),
8695    /// <p>Placeholder documentation for ConflictException</p>
8696    Conflict(String),
8697    /// <p>Placeholder documentation for ForbiddenException</p>
8698    Forbidden(String),
8699    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8700    GatewayTimeout(String),
8701    /// <p>Placeholder documentation for InternalServerErrorException</p>
8702    InternalServerError(String),
8703    /// <p>Placeholder documentation for NotFoundException</p>
8704    NotFound(String),
8705    /// <p>Placeholder documentation for TooManyRequestsException</p>
8706    TooManyRequests(String),
8707}
8708
8709impl StopMultiplexError {
8710    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopMultiplexError> {
8711        if let Some(err) = proto::json::Error::parse_rest(&res) {
8712            match err.typ.as_str() {
8713                "BadGatewayException" => {
8714                    return RusotoError::Service(StopMultiplexError::BadGateway(err.msg))
8715                }
8716                "BadRequestException" => {
8717                    return RusotoError::Service(StopMultiplexError::BadRequest(err.msg))
8718                }
8719                "ConflictException" => {
8720                    return RusotoError::Service(StopMultiplexError::Conflict(err.msg))
8721                }
8722                "ForbiddenException" => {
8723                    return RusotoError::Service(StopMultiplexError::Forbidden(err.msg))
8724                }
8725                "GatewayTimeoutException" => {
8726                    return RusotoError::Service(StopMultiplexError::GatewayTimeout(err.msg))
8727                }
8728                "InternalServerErrorException" => {
8729                    return RusotoError::Service(StopMultiplexError::InternalServerError(err.msg))
8730                }
8731                "NotFoundException" => {
8732                    return RusotoError::Service(StopMultiplexError::NotFound(err.msg))
8733                }
8734                "TooManyRequestsException" => {
8735                    return RusotoError::Service(StopMultiplexError::TooManyRequests(err.msg))
8736                }
8737                "ValidationException" => return RusotoError::Validation(err.msg),
8738                _ => {}
8739            }
8740        }
8741        RusotoError::Unknown(res)
8742    }
8743}
8744impl fmt::Display for StopMultiplexError {
8745    #[allow(unused_variables)]
8746    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8747        match *self {
8748            StopMultiplexError::BadGateway(ref cause) => write!(f, "{}", cause),
8749            StopMultiplexError::BadRequest(ref cause) => write!(f, "{}", cause),
8750            StopMultiplexError::Conflict(ref cause) => write!(f, "{}", cause),
8751            StopMultiplexError::Forbidden(ref cause) => write!(f, "{}", cause),
8752            StopMultiplexError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8753            StopMultiplexError::InternalServerError(ref cause) => write!(f, "{}", cause),
8754            StopMultiplexError::NotFound(ref cause) => write!(f, "{}", cause),
8755            StopMultiplexError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8756        }
8757    }
8758}
8759impl Error for StopMultiplexError {}
8760/// Errors returned by UpdateChannel
8761#[derive(Debug, PartialEq)]
8762pub enum UpdateChannelError {
8763    /// <p>Placeholder documentation for BadGatewayException</p>
8764    BadGateway(String),
8765    /// <p>Placeholder documentation for BadRequestException</p>
8766    BadRequest(String),
8767    /// <p>Placeholder documentation for ConflictException</p>
8768    Conflict(String),
8769    /// <p>Placeholder documentation for ForbiddenException</p>
8770    Forbidden(String),
8771    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8772    GatewayTimeout(String),
8773    /// <p>Placeholder documentation for InternalServerErrorException</p>
8774    InternalServerError(String),
8775    /// <p>Placeholder documentation for UnprocessableEntityException</p>
8776    UnprocessableEntity(String),
8777}
8778
8779impl UpdateChannelError {
8780    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateChannelError> {
8781        if let Some(err) = proto::json::Error::parse_rest(&res) {
8782            match err.typ.as_str() {
8783                "BadGatewayException" => {
8784                    return RusotoError::Service(UpdateChannelError::BadGateway(err.msg))
8785                }
8786                "BadRequestException" => {
8787                    return RusotoError::Service(UpdateChannelError::BadRequest(err.msg))
8788                }
8789                "ConflictException" => {
8790                    return RusotoError::Service(UpdateChannelError::Conflict(err.msg))
8791                }
8792                "ForbiddenException" => {
8793                    return RusotoError::Service(UpdateChannelError::Forbidden(err.msg))
8794                }
8795                "GatewayTimeoutException" => {
8796                    return RusotoError::Service(UpdateChannelError::GatewayTimeout(err.msg))
8797                }
8798                "InternalServerErrorException" => {
8799                    return RusotoError::Service(UpdateChannelError::InternalServerError(err.msg))
8800                }
8801                "UnprocessableEntityException" => {
8802                    return RusotoError::Service(UpdateChannelError::UnprocessableEntity(err.msg))
8803                }
8804                "ValidationException" => return RusotoError::Validation(err.msg),
8805                _ => {}
8806            }
8807        }
8808        RusotoError::Unknown(res)
8809    }
8810}
8811impl fmt::Display for UpdateChannelError {
8812    #[allow(unused_variables)]
8813    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8814        match *self {
8815            UpdateChannelError::BadGateway(ref cause) => write!(f, "{}", cause),
8816            UpdateChannelError::BadRequest(ref cause) => write!(f, "{}", cause),
8817            UpdateChannelError::Conflict(ref cause) => write!(f, "{}", cause),
8818            UpdateChannelError::Forbidden(ref cause) => write!(f, "{}", cause),
8819            UpdateChannelError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8820            UpdateChannelError::InternalServerError(ref cause) => write!(f, "{}", cause),
8821            UpdateChannelError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
8822        }
8823    }
8824}
8825impl Error for UpdateChannelError {}
8826/// Errors returned by UpdateChannelClass
8827#[derive(Debug, PartialEq)]
8828pub enum UpdateChannelClassError {
8829    /// <p>Placeholder documentation for BadGatewayException</p>
8830    BadGateway(String),
8831    /// <p>Placeholder documentation for BadRequestException</p>
8832    BadRequest(String),
8833    /// <p>Placeholder documentation for ConflictException</p>
8834    Conflict(String),
8835    /// <p>Placeholder documentation for ForbiddenException</p>
8836    Forbidden(String),
8837    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8838    GatewayTimeout(String),
8839    /// <p>Placeholder documentation for InternalServerErrorException</p>
8840    InternalServerError(String),
8841    /// <p>Placeholder documentation for NotFoundException</p>
8842    NotFound(String),
8843    /// <p>Placeholder documentation for TooManyRequestsException</p>
8844    TooManyRequests(String),
8845    /// <p>Placeholder documentation for UnprocessableEntityException</p>
8846    UnprocessableEntity(String),
8847}
8848
8849impl UpdateChannelClassError {
8850    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateChannelClassError> {
8851        if let Some(err) = proto::json::Error::parse_rest(&res) {
8852            match err.typ.as_str() {
8853                "BadGatewayException" => {
8854                    return RusotoError::Service(UpdateChannelClassError::BadGateway(err.msg))
8855                }
8856                "BadRequestException" => {
8857                    return RusotoError::Service(UpdateChannelClassError::BadRequest(err.msg))
8858                }
8859                "ConflictException" => {
8860                    return RusotoError::Service(UpdateChannelClassError::Conflict(err.msg))
8861                }
8862                "ForbiddenException" => {
8863                    return RusotoError::Service(UpdateChannelClassError::Forbidden(err.msg))
8864                }
8865                "GatewayTimeoutException" => {
8866                    return RusotoError::Service(UpdateChannelClassError::GatewayTimeout(err.msg))
8867                }
8868                "InternalServerErrorException" => {
8869                    return RusotoError::Service(UpdateChannelClassError::InternalServerError(
8870                        err.msg,
8871                    ))
8872                }
8873                "NotFoundException" => {
8874                    return RusotoError::Service(UpdateChannelClassError::NotFound(err.msg))
8875                }
8876                "TooManyRequestsException" => {
8877                    return RusotoError::Service(UpdateChannelClassError::TooManyRequests(err.msg))
8878                }
8879                "UnprocessableEntityException" => {
8880                    return RusotoError::Service(UpdateChannelClassError::UnprocessableEntity(
8881                        err.msg,
8882                    ))
8883                }
8884                "ValidationException" => return RusotoError::Validation(err.msg),
8885                _ => {}
8886            }
8887        }
8888        RusotoError::Unknown(res)
8889    }
8890}
8891impl fmt::Display for UpdateChannelClassError {
8892    #[allow(unused_variables)]
8893    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8894        match *self {
8895            UpdateChannelClassError::BadGateway(ref cause) => write!(f, "{}", cause),
8896            UpdateChannelClassError::BadRequest(ref cause) => write!(f, "{}", cause),
8897            UpdateChannelClassError::Conflict(ref cause) => write!(f, "{}", cause),
8898            UpdateChannelClassError::Forbidden(ref cause) => write!(f, "{}", cause),
8899            UpdateChannelClassError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8900            UpdateChannelClassError::InternalServerError(ref cause) => write!(f, "{}", cause),
8901            UpdateChannelClassError::NotFound(ref cause) => write!(f, "{}", cause),
8902            UpdateChannelClassError::TooManyRequests(ref cause) => write!(f, "{}", cause),
8903            UpdateChannelClassError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
8904        }
8905    }
8906}
8907impl Error for UpdateChannelClassError {}
8908/// Errors returned by UpdateInput
8909#[derive(Debug, PartialEq)]
8910pub enum UpdateInputError {
8911    /// <p>Placeholder documentation for BadGatewayException</p>
8912    BadGateway(String),
8913    /// <p>Placeholder documentation for BadRequestException</p>
8914    BadRequest(String),
8915    /// <p>Placeholder documentation for ConflictException</p>
8916    Conflict(String),
8917    /// <p>Placeholder documentation for ForbiddenException</p>
8918    Forbidden(String),
8919    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8920    GatewayTimeout(String),
8921    /// <p>Placeholder documentation for InternalServerErrorException</p>
8922    InternalServerError(String),
8923    /// <p>Placeholder documentation for NotFoundException</p>
8924    NotFound(String),
8925}
8926
8927impl UpdateInputError {
8928    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateInputError> {
8929        if let Some(err) = proto::json::Error::parse_rest(&res) {
8930            match err.typ.as_str() {
8931                "BadGatewayException" => {
8932                    return RusotoError::Service(UpdateInputError::BadGateway(err.msg))
8933                }
8934                "BadRequestException" => {
8935                    return RusotoError::Service(UpdateInputError::BadRequest(err.msg))
8936                }
8937                "ConflictException" => {
8938                    return RusotoError::Service(UpdateInputError::Conflict(err.msg))
8939                }
8940                "ForbiddenException" => {
8941                    return RusotoError::Service(UpdateInputError::Forbidden(err.msg))
8942                }
8943                "GatewayTimeoutException" => {
8944                    return RusotoError::Service(UpdateInputError::GatewayTimeout(err.msg))
8945                }
8946                "InternalServerErrorException" => {
8947                    return RusotoError::Service(UpdateInputError::InternalServerError(err.msg))
8948                }
8949                "NotFoundException" => {
8950                    return RusotoError::Service(UpdateInputError::NotFound(err.msg))
8951                }
8952                "ValidationException" => return RusotoError::Validation(err.msg),
8953                _ => {}
8954            }
8955        }
8956        RusotoError::Unknown(res)
8957    }
8958}
8959impl fmt::Display for UpdateInputError {
8960    #[allow(unused_variables)]
8961    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8962        match *self {
8963            UpdateInputError::BadGateway(ref cause) => write!(f, "{}", cause),
8964            UpdateInputError::BadRequest(ref cause) => write!(f, "{}", cause),
8965            UpdateInputError::Conflict(ref cause) => write!(f, "{}", cause),
8966            UpdateInputError::Forbidden(ref cause) => write!(f, "{}", cause),
8967            UpdateInputError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
8968            UpdateInputError::InternalServerError(ref cause) => write!(f, "{}", cause),
8969            UpdateInputError::NotFound(ref cause) => write!(f, "{}", cause),
8970        }
8971    }
8972}
8973impl Error for UpdateInputError {}
8974/// Errors returned by UpdateInputDevice
8975#[derive(Debug, PartialEq)]
8976pub enum UpdateInputDeviceError {
8977    /// <p>Placeholder documentation for BadGatewayException</p>
8978    BadGateway(String),
8979    /// <p>Placeholder documentation for BadRequestException</p>
8980    BadRequest(String),
8981    /// <p>Placeholder documentation for ForbiddenException</p>
8982    Forbidden(String),
8983    /// <p>Placeholder documentation for GatewayTimeoutException</p>
8984    GatewayTimeout(String),
8985    /// <p>Placeholder documentation for InternalServerErrorException</p>
8986    InternalServerError(String),
8987    /// <p>Placeholder documentation for NotFoundException</p>
8988    NotFound(String),
8989    /// <p>Placeholder documentation for TooManyRequestsException</p>
8990    TooManyRequests(String),
8991    /// <p>Placeholder documentation for UnprocessableEntityException</p>
8992    UnprocessableEntity(String),
8993}
8994
8995impl UpdateInputDeviceError {
8996    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateInputDeviceError> {
8997        if let Some(err) = proto::json::Error::parse_rest(&res) {
8998            match err.typ.as_str() {
8999                "BadGatewayException" => {
9000                    return RusotoError::Service(UpdateInputDeviceError::BadGateway(err.msg))
9001                }
9002                "BadRequestException" => {
9003                    return RusotoError::Service(UpdateInputDeviceError::BadRequest(err.msg))
9004                }
9005                "ForbiddenException" => {
9006                    return RusotoError::Service(UpdateInputDeviceError::Forbidden(err.msg))
9007                }
9008                "GatewayTimeoutException" => {
9009                    return RusotoError::Service(UpdateInputDeviceError::GatewayTimeout(err.msg))
9010                }
9011                "InternalServerErrorException" => {
9012                    return RusotoError::Service(UpdateInputDeviceError::InternalServerError(
9013                        err.msg,
9014                    ))
9015                }
9016                "NotFoundException" => {
9017                    return RusotoError::Service(UpdateInputDeviceError::NotFound(err.msg))
9018                }
9019                "TooManyRequestsException" => {
9020                    return RusotoError::Service(UpdateInputDeviceError::TooManyRequests(err.msg))
9021                }
9022                "UnprocessableEntityException" => {
9023                    return RusotoError::Service(UpdateInputDeviceError::UnprocessableEntity(
9024                        err.msg,
9025                    ))
9026                }
9027                "ValidationException" => return RusotoError::Validation(err.msg),
9028                _ => {}
9029            }
9030        }
9031        RusotoError::Unknown(res)
9032    }
9033}
9034impl fmt::Display for UpdateInputDeviceError {
9035    #[allow(unused_variables)]
9036    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9037        match *self {
9038            UpdateInputDeviceError::BadGateway(ref cause) => write!(f, "{}", cause),
9039            UpdateInputDeviceError::BadRequest(ref cause) => write!(f, "{}", cause),
9040            UpdateInputDeviceError::Forbidden(ref cause) => write!(f, "{}", cause),
9041            UpdateInputDeviceError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
9042            UpdateInputDeviceError::InternalServerError(ref cause) => write!(f, "{}", cause),
9043            UpdateInputDeviceError::NotFound(ref cause) => write!(f, "{}", cause),
9044            UpdateInputDeviceError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9045            UpdateInputDeviceError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
9046        }
9047    }
9048}
9049impl Error for UpdateInputDeviceError {}
9050/// Errors returned by UpdateInputSecurityGroup
9051#[derive(Debug, PartialEq)]
9052pub enum UpdateInputSecurityGroupError {
9053    /// <p>Placeholder documentation for BadGatewayException</p>
9054    BadGateway(String),
9055    /// <p>Placeholder documentation for BadRequestException</p>
9056    BadRequest(String),
9057    /// <p>Placeholder documentation for ConflictException</p>
9058    Conflict(String),
9059    /// <p>Placeholder documentation for ForbiddenException</p>
9060    Forbidden(String),
9061    /// <p>Placeholder documentation for GatewayTimeoutException</p>
9062    GatewayTimeout(String),
9063    /// <p>Placeholder documentation for InternalServerErrorException</p>
9064    InternalServerError(String),
9065    /// <p>Placeholder documentation for NotFoundException</p>
9066    NotFound(String),
9067}
9068
9069impl UpdateInputSecurityGroupError {
9070    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateInputSecurityGroupError> {
9071        if let Some(err) = proto::json::Error::parse_rest(&res) {
9072            match err.typ.as_str() {
9073                "BadGatewayException" => {
9074                    return RusotoError::Service(UpdateInputSecurityGroupError::BadGateway(err.msg))
9075                }
9076                "BadRequestException" => {
9077                    return RusotoError::Service(UpdateInputSecurityGroupError::BadRequest(err.msg))
9078                }
9079                "ConflictException" => {
9080                    return RusotoError::Service(UpdateInputSecurityGroupError::Conflict(err.msg))
9081                }
9082                "ForbiddenException" => {
9083                    return RusotoError::Service(UpdateInputSecurityGroupError::Forbidden(err.msg))
9084                }
9085                "GatewayTimeoutException" => {
9086                    return RusotoError::Service(UpdateInputSecurityGroupError::GatewayTimeout(
9087                        err.msg,
9088                    ))
9089                }
9090                "InternalServerErrorException" => {
9091                    return RusotoError::Service(
9092                        UpdateInputSecurityGroupError::InternalServerError(err.msg),
9093                    )
9094                }
9095                "NotFoundException" => {
9096                    return RusotoError::Service(UpdateInputSecurityGroupError::NotFound(err.msg))
9097                }
9098                "ValidationException" => return RusotoError::Validation(err.msg),
9099                _ => {}
9100            }
9101        }
9102        RusotoError::Unknown(res)
9103    }
9104}
9105impl fmt::Display for UpdateInputSecurityGroupError {
9106    #[allow(unused_variables)]
9107    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9108        match *self {
9109            UpdateInputSecurityGroupError::BadGateway(ref cause) => write!(f, "{}", cause),
9110            UpdateInputSecurityGroupError::BadRequest(ref cause) => write!(f, "{}", cause),
9111            UpdateInputSecurityGroupError::Conflict(ref cause) => write!(f, "{}", cause),
9112            UpdateInputSecurityGroupError::Forbidden(ref cause) => write!(f, "{}", cause),
9113            UpdateInputSecurityGroupError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
9114            UpdateInputSecurityGroupError::InternalServerError(ref cause) => write!(f, "{}", cause),
9115            UpdateInputSecurityGroupError::NotFound(ref cause) => write!(f, "{}", cause),
9116        }
9117    }
9118}
9119impl Error for UpdateInputSecurityGroupError {}
9120/// Errors returned by UpdateMultiplex
9121#[derive(Debug, PartialEq)]
9122pub enum UpdateMultiplexError {
9123    /// <p>Placeholder documentation for BadGatewayException</p>
9124    BadGateway(String),
9125    /// <p>Placeholder documentation for BadRequestException</p>
9126    BadRequest(String),
9127    /// <p>Placeholder documentation for ConflictException</p>
9128    Conflict(String),
9129    /// <p>Placeholder documentation for ForbiddenException</p>
9130    Forbidden(String),
9131    /// <p>Placeholder documentation for GatewayTimeoutException</p>
9132    GatewayTimeout(String),
9133    /// <p>Placeholder documentation for InternalServerErrorException</p>
9134    InternalServerError(String),
9135    /// <p>Placeholder documentation for NotFoundException</p>
9136    NotFound(String),
9137    /// <p>Placeholder documentation for UnprocessableEntityException</p>
9138    UnprocessableEntity(String),
9139}
9140
9141impl UpdateMultiplexError {
9142    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateMultiplexError> {
9143        if let Some(err) = proto::json::Error::parse_rest(&res) {
9144            match err.typ.as_str() {
9145                "BadGatewayException" => {
9146                    return RusotoError::Service(UpdateMultiplexError::BadGateway(err.msg))
9147                }
9148                "BadRequestException" => {
9149                    return RusotoError::Service(UpdateMultiplexError::BadRequest(err.msg))
9150                }
9151                "ConflictException" => {
9152                    return RusotoError::Service(UpdateMultiplexError::Conflict(err.msg))
9153                }
9154                "ForbiddenException" => {
9155                    return RusotoError::Service(UpdateMultiplexError::Forbidden(err.msg))
9156                }
9157                "GatewayTimeoutException" => {
9158                    return RusotoError::Service(UpdateMultiplexError::GatewayTimeout(err.msg))
9159                }
9160                "InternalServerErrorException" => {
9161                    return RusotoError::Service(UpdateMultiplexError::InternalServerError(err.msg))
9162                }
9163                "NotFoundException" => {
9164                    return RusotoError::Service(UpdateMultiplexError::NotFound(err.msg))
9165                }
9166                "UnprocessableEntityException" => {
9167                    return RusotoError::Service(UpdateMultiplexError::UnprocessableEntity(err.msg))
9168                }
9169                "ValidationException" => return RusotoError::Validation(err.msg),
9170                _ => {}
9171            }
9172        }
9173        RusotoError::Unknown(res)
9174    }
9175}
9176impl fmt::Display for UpdateMultiplexError {
9177    #[allow(unused_variables)]
9178    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9179        match *self {
9180            UpdateMultiplexError::BadGateway(ref cause) => write!(f, "{}", cause),
9181            UpdateMultiplexError::BadRequest(ref cause) => write!(f, "{}", cause),
9182            UpdateMultiplexError::Conflict(ref cause) => write!(f, "{}", cause),
9183            UpdateMultiplexError::Forbidden(ref cause) => write!(f, "{}", cause),
9184            UpdateMultiplexError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
9185            UpdateMultiplexError::InternalServerError(ref cause) => write!(f, "{}", cause),
9186            UpdateMultiplexError::NotFound(ref cause) => write!(f, "{}", cause),
9187            UpdateMultiplexError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
9188        }
9189    }
9190}
9191impl Error for UpdateMultiplexError {}
9192/// Errors returned by UpdateMultiplexProgram
9193#[derive(Debug, PartialEq)]
9194pub enum UpdateMultiplexProgramError {
9195    /// <p>Placeholder documentation for BadGatewayException</p>
9196    BadGateway(String),
9197    /// <p>Placeholder documentation for BadRequestException</p>
9198    BadRequest(String),
9199    /// <p>Placeholder documentation for ConflictException</p>
9200    Conflict(String),
9201    /// <p>Placeholder documentation for ForbiddenException</p>
9202    Forbidden(String),
9203    /// <p>Placeholder documentation for GatewayTimeoutException</p>
9204    GatewayTimeout(String),
9205    /// <p>Placeholder documentation for InternalServerErrorException</p>
9206    InternalServerError(String),
9207    /// <p>Placeholder documentation for NotFoundException</p>
9208    NotFound(String),
9209    /// <p>Placeholder documentation for UnprocessableEntityException</p>
9210    UnprocessableEntity(String),
9211}
9212
9213impl UpdateMultiplexProgramError {
9214    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateMultiplexProgramError> {
9215        if let Some(err) = proto::json::Error::parse_rest(&res) {
9216            match err.typ.as_str() {
9217                "BadGatewayException" => {
9218                    return RusotoError::Service(UpdateMultiplexProgramError::BadGateway(err.msg))
9219                }
9220                "BadRequestException" => {
9221                    return RusotoError::Service(UpdateMultiplexProgramError::BadRequest(err.msg))
9222                }
9223                "ConflictException" => {
9224                    return RusotoError::Service(UpdateMultiplexProgramError::Conflict(err.msg))
9225                }
9226                "ForbiddenException" => {
9227                    return RusotoError::Service(UpdateMultiplexProgramError::Forbidden(err.msg))
9228                }
9229                "GatewayTimeoutException" => {
9230                    return RusotoError::Service(UpdateMultiplexProgramError::GatewayTimeout(
9231                        err.msg,
9232                    ))
9233                }
9234                "InternalServerErrorException" => {
9235                    return RusotoError::Service(UpdateMultiplexProgramError::InternalServerError(
9236                        err.msg,
9237                    ))
9238                }
9239                "NotFoundException" => {
9240                    return RusotoError::Service(UpdateMultiplexProgramError::NotFound(err.msg))
9241                }
9242                "UnprocessableEntityException" => {
9243                    return RusotoError::Service(UpdateMultiplexProgramError::UnprocessableEntity(
9244                        err.msg,
9245                    ))
9246                }
9247                "ValidationException" => return RusotoError::Validation(err.msg),
9248                _ => {}
9249            }
9250        }
9251        RusotoError::Unknown(res)
9252    }
9253}
9254impl fmt::Display for UpdateMultiplexProgramError {
9255    #[allow(unused_variables)]
9256    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9257        match *self {
9258            UpdateMultiplexProgramError::BadGateway(ref cause) => write!(f, "{}", cause),
9259            UpdateMultiplexProgramError::BadRequest(ref cause) => write!(f, "{}", cause),
9260            UpdateMultiplexProgramError::Conflict(ref cause) => write!(f, "{}", cause),
9261            UpdateMultiplexProgramError::Forbidden(ref cause) => write!(f, "{}", cause),
9262            UpdateMultiplexProgramError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
9263            UpdateMultiplexProgramError::InternalServerError(ref cause) => write!(f, "{}", cause),
9264            UpdateMultiplexProgramError::NotFound(ref cause) => write!(f, "{}", cause),
9265            UpdateMultiplexProgramError::UnprocessableEntity(ref cause) => write!(f, "{}", cause),
9266        }
9267    }
9268}
9269impl Error for UpdateMultiplexProgramError {}
9270/// Errors returned by UpdateReservation
9271#[derive(Debug, PartialEq)]
9272pub enum UpdateReservationError {
9273    /// <p>Placeholder documentation for BadGatewayException</p>
9274    BadGateway(String),
9275    /// <p>Placeholder documentation for BadRequestException</p>
9276    BadRequest(String),
9277    /// <p>Placeholder documentation for ConflictException</p>
9278    Conflict(String),
9279    /// <p>Placeholder documentation for ForbiddenException</p>
9280    Forbidden(String),
9281    /// <p>Placeholder documentation for GatewayTimeoutException</p>
9282    GatewayTimeout(String),
9283    /// <p>Placeholder documentation for InternalServerErrorException</p>
9284    InternalServerError(String),
9285    /// <p>Placeholder documentation for NotFoundException</p>
9286    NotFound(String),
9287    /// <p>Placeholder documentation for TooManyRequestsException</p>
9288    TooManyRequests(String),
9289}
9290
9291impl UpdateReservationError {
9292    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateReservationError> {
9293        if let Some(err) = proto::json::Error::parse_rest(&res) {
9294            match err.typ.as_str() {
9295                "BadGatewayException" => {
9296                    return RusotoError::Service(UpdateReservationError::BadGateway(err.msg))
9297                }
9298                "BadRequestException" => {
9299                    return RusotoError::Service(UpdateReservationError::BadRequest(err.msg))
9300                }
9301                "ConflictException" => {
9302                    return RusotoError::Service(UpdateReservationError::Conflict(err.msg))
9303                }
9304                "ForbiddenException" => {
9305                    return RusotoError::Service(UpdateReservationError::Forbidden(err.msg))
9306                }
9307                "GatewayTimeoutException" => {
9308                    return RusotoError::Service(UpdateReservationError::GatewayTimeout(err.msg))
9309                }
9310                "InternalServerErrorException" => {
9311                    return RusotoError::Service(UpdateReservationError::InternalServerError(
9312                        err.msg,
9313                    ))
9314                }
9315                "NotFoundException" => {
9316                    return RusotoError::Service(UpdateReservationError::NotFound(err.msg))
9317                }
9318                "TooManyRequestsException" => {
9319                    return RusotoError::Service(UpdateReservationError::TooManyRequests(err.msg))
9320                }
9321                "ValidationException" => return RusotoError::Validation(err.msg),
9322                _ => {}
9323            }
9324        }
9325        RusotoError::Unknown(res)
9326    }
9327}
9328impl fmt::Display for UpdateReservationError {
9329    #[allow(unused_variables)]
9330    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9331        match *self {
9332            UpdateReservationError::BadGateway(ref cause) => write!(f, "{}", cause),
9333            UpdateReservationError::BadRequest(ref cause) => write!(f, "{}", cause),
9334            UpdateReservationError::Conflict(ref cause) => write!(f, "{}", cause),
9335            UpdateReservationError::Forbidden(ref cause) => write!(f, "{}", cause),
9336            UpdateReservationError::GatewayTimeout(ref cause) => write!(f, "{}", cause),
9337            UpdateReservationError::InternalServerError(ref cause) => write!(f, "{}", cause),
9338            UpdateReservationError::NotFound(ref cause) => write!(f, "{}", cause),
9339            UpdateReservationError::TooManyRequests(ref cause) => write!(f, "{}", cause),
9340        }
9341    }
9342}
9343impl Error for UpdateReservationError {}
9344/// Trait representing the capabilities of the MediaLive API. MediaLive clients implement this trait.
9345#[async_trait]
9346pub trait MediaLive {
9347    /// <p>Update a channel schedule</p>
9348    async fn batch_update_schedule(
9349        &self,
9350        input: BatchUpdateScheduleRequest,
9351    ) -> Result<BatchUpdateScheduleResponse, RusotoError<BatchUpdateScheduleError>>;
9352
9353    /// <p>Creates a new channel</p>
9354    async fn create_channel(
9355        &self,
9356        input: CreateChannelRequest,
9357    ) -> Result<CreateChannelResponse, RusotoError<CreateChannelError>>;
9358
9359    /// <p>Create an input</p>
9360    async fn create_input(
9361        &self,
9362        input: CreateInputRequest,
9363    ) -> Result<CreateInputResponse, RusotoError<CreateInputError>>;
9364
9365    /// <p>Creates a Input Security Group</p>
9366    async fn create_input_security_group(
9367        &self,
9368        input: CreateInputSecurityGroupRequest,
9369    ) -> Result<CreateInputSecurityGroupResponse, RusotoError<CreateInputSecurityGroupError>>;
9370
9371    /// <p>Create a new multiplex.</p>
9372    async fn create_multiplex(
9373        &self,
9374        input: CreateMultiplexRequest,
9375    ) -> Result<CreateMultiplexResponse, RusotoError<CreateMultiplexError>>;
9376
9377    /// <p>Create a new program in the multiplex.</p>
9378    async fn create_multiplex_program(
9379        &self,
9380        input: CreateMultiplexProgramRequest,
9381    ) -> Result<CreateMultiplexProgramResponse, RusotoError<CreateMultiplexProgramError>>;
9382
9383    /// <p>Create tags for a resource</p>
9384    async fn create_tags(
9385        &self,
9386        input: CreateTagsRequest,
9387    ) -> Result<(), RusotoError<CreateTagsError>>;
9388
9389    /// <p>Starts deletion of channel. The associated outputs are also deleted.</p>
9390    async fn delete_channel(
9391        &self,
9392        input: DeleteChannelRequest,
9393    ) -> Result<DeleteChannelResponse, RusotoError<DeleteChannelError>>;
9394
9395    /// <p>Deletes the input end point</p>
9396    async fn delete_input(
9397        &self,
9398        input: DeleteInputRequest,
9399    ) -> Result<DeleteInputResponse, RusotoError<DeleteInputError>>;
9400
9401    /// <p>Deletes an Input Security Group</p>
9402    async fn delete_input_security_group(
9403        &self,
9404        input: DeleteInputSecurityGroupRequest,
9405    ) -> Result<DeleteInputSecurityGroupResponse, RusotoError<DeleteInputSecurityGroupError>>;
9406
9407    /// <p>Delete a multiplex. The multiplex must be idle.</p>
9408    async fn delete_multiplex(
9409        &self,
9410        input: DeleteMultiplexRequest,
9411    ) -> Result<DeleteMultiplexResponse, RusotoError<DeleteMultiplexError>>;
9412
9413    /// <p>Delete a program from a multiplex.</p>
9414    async fn delete_multiplex_program(
9415        &self,
9416        input: DeleteMultiplexProgramRequest,
9417    ) -> Result<DeleteMultiplexProgramResponse, RusotoError<DeleteMultiplexProgramError>>;
9418
9419    /// <p>Delete an expired reservation.</p>
9420    async fn delete_reservation(
9421        &self,
9422        input: DeleteReservationRequest,
9423    ) -> Result<DeleteReservationResponse, RusotoError<DeleteReservationError>>;
9424
9425    /// <p>Delete all schedule actions on a channel.</p>
9426    async fn delete_schedule(
9427        &self,
9428        input: DeleteScheduleRequest,
9429    ) -> Result<DeleteScheduleResponse, RusotoError<DeleteScheduleError>>;
9430
9431    /// <p>Removes tags for a resource</p>
9432    async fn delete_tags(
9433        &self,
9434        input: DeleteTagsRequest,
9435    ) -> Result<(), RusotoError<DeleteTagsError>>;
9436
9437    /// <p>Gets details about a channel</p>
9438    async fn describe_channel(
9439        &self,
9440        input: DescribeChannelRequest,
9441    ) -> Result<DescribeChannelResponse, RusotoError<DescribeChannelError>>;
9442
9443    /// <p>Produces details about an input</p>
9444    async fn describe_input(
9445        &self,
9446        input: DescribeInputRequest,
9447    ) -> Result<DescribeInputResponse, RusotoError<DescribeInputError>>;
9448
9449    /// <p>Gets the details for the input device</p>
9450    async fn describe_input_device(
9451        &self,
9452        input: DescribeInputDeviceRequest,
9453    ) -> Result<DescribeInputDeviceResponse, RusotoError<DescribeInputDeviceError>>;
9454
9455    /// <p>Produces a summary of an Input Security Group</p>
9456    async fn describe_input_security_group(
9457        &self,
9458        input: DescribeInputSecurityGroupRequest,
9459    ) -> Result<DescribeInputSecurityGroupResponse, RusotoError<DescribeInputSecurityGroupError>>;
9460
9461    /// <p>Gets details about a multiplex.</p>
9462    async fn describe_multiplex(
9463        &self,
9464        input: DescribeMultiplexRequest,
9465    ) -> Result<DescribeMultiplexResponse, RusotoError<DescribeMultiplexError>>;
9466
9467    /// <p>Get the details for a program in a multiplex.</p>
9468    async fn describe_multiplex_program(
9469        &self,
9470        input: DescribeMultiplexProgramRequest,
9471    ) -> Result<DescribeMultiplexProgramResponse, RusotoError<DescribeMultiplexProgramError>>;
9472
9473    /// <p>Get details for an offering.</p>
9474    async fn describe_offering(
9475        &self,
9476        input: DescribeOfferingRequest,
9477    ) -> Result<DescribeOfferingResponse, RusotoError<DescribeOfferingError>>;
9478
9479    /// <p>Get details for a reservation.</p>
9480    async fn describe_reservation(
9481        &self,
9482        input: DescribeReservationRequest,
9483    ) -> Result<DescribeReservationResponse, RusotoError<DescribeReservationError>>;
9484
9485    /// <p>Get a channel schedule</p>
9486    async fn describe_schedule(
9487        &self,
9488        input: DescribeScheduleRequest,
9489    ) -> Result<DescribeScheduleResponse, RusotoError<DescribeScheduleError>>;
9490
9491    /// <p>Produces list of channels that have been created</p>
9492    async fn list_channels(
9493        &self,
9494        input: ListChannelsRequest,
9495    ) -> Result<ListChannelsResponse, RusotoError<ListChannelsError>>;
9496
9497    /// <p>List input devices</p>
9498    async fn list_input_devices(
9499        &self,
9500        input: ListInputDevicesRequest,
9501    ) -> Result<ListInputDevicesResponse, RusotoError<ListInputDevicesError>>;
9502
9503    /// <p>Produces a list of Input Security Groups for an account</p>
9504    async fn list_input_security_groups(
9505        &self,
9506        input: ListInputSecurityGroupsRequest,
9507    ) -> Result<ListInputSecurityGroupsResponse, RusotoError<ListInputSecurityGroupsError>>;
9508
9509    /// <p>Produces list of inputs that have been created</p>
9510    async fn list_inputs(
9511        &self,
9512        input: ListInputsRequest,
9513    ) -> Result<ListInputsResponse, RusotoError<ListInputsError>>;
9514
9515    /// <p>List the programs that currently exist for a specific multiplex.</p>
9516    async fn list_multiplex_programs(
9517        &self,
9518        input: ListMultiplexProgramsRequest,
9519    ) -> Result<ListMultiplexProgramsResponse, RusotoError<ListMultiplexProgramsError>>;
9520
9521    /// <p>Retrieve a list of the existing multiplexes.</p>
9522    async fn list_multiplexes(
9523        &self,
9524        input: ListMultiplexesRequest,
9525    ) -> Result<ListMultiplexesResponse, RusotoError<ListMultiplexesError>>;
9526
9527    /// <p>List offerings available for purchase.</p>
9528    async fn list_offerings(
9529        &self,
9530        input: ListOfferingsRequest,
9531    ) -> Result<ListOfferingsResponse, RusotoError<ListOfferingsError>>;
9532
9533    /// <p>List purchased reservations.</p>
9534    async fn list_reservations(
9535        &self,
9536        input: ListReservationsRequest,
9537    ) -> Result<ListReservationsResponse, RusotoError<ListReservationsError>>;
9538
9539    /// <p>Produces list of tags that have been created for a resource</p>
9540    async fn list_tags_for_resource(
9541        &self,
9542        input: ListTagsForResourceRequest,
9543    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>>;
9544
9545    /// <p>Purchase an offering and create a reservation.</p>
9546    async fn purchase_offering(
9547        &self,
9548        input: PurchaseOfferingRequest,
9549    ) -> Result<PurchaseOfferingResponse, RusotoError<PurchaseOfferingError>>;
9550
9551    /// <p>Starts an existing channel</p>
9552    async fn start_channel(
9553        &self,
9554        input: StartChannelRequest,
9555    ) -> Result<StartChannelResponse, RusotoError<StartChannelError>>;
9556
9557    /// <p>Start (run) the multiplex. Starting the multiplex does not start the channels. You must explicitly start each channel.</p>
9558    async fn start_multiplex(
9559        &self,
9560        input: StartMultiplexRequest,
9561    ) -> Result<StartMultiplexResponse, RusotoError<StartMultiplexError>>;
9562
9563    /// <p>Stops a running channel</p>
9564    async fn stop_channel(
9565        &self,
9566        input: StopChannelRequest,
9567    ) -> Result<StopChannelResponse, RusotoError<StopChannelError>>;
9568
9569    /// <p>Stops a running multiplex. If the multiplex isn&#39;t running, this action has no effect.</p>
9570    async fn stop_multiplex(
9571        &self,
9572        input: StopMultiplexRequest,
9573    ) -> Result<StopMultiplexResponse, RusotoError<StopMultiplexError>>;
9574
9575    /// <p>Updates a channel.</p>
9576    async fn update_channel(
9577        &self,
9578        input: UpdateChannelRequest,
9579    ) -> Result<UpdateChannelResponse, RusotoError<UpdateChannelError>>;
9580
9581    /// <p>Changes the class of the channel.</p>
9582    async fn update_channel_class(
9583        &self,
9584        input: UpdateChannelClassRequest,
9585    ) -> Result<UpdateChannelClassResponse, RusotoError<UpdateChannelClassError>>;
9586
9587    /// <p>Updates an input.</p>
9588    async fn update_input(
9589        &self,
9590        input: UpdateInputRequest,
9591    ) -> Result<UpdateInputResponse, RusotoError<UpdateInputError>>;
9592
9593    /// <p>Updates the parameters for the input device.</p>
9594    async fn update_input_device(
9595        &self,
9596        input: UpdateInputDeviceRequest,
9597    ) -> Result<UpdateInputDeviceResponse, RusotoError<UpdateInputDeviceError>>;
9598
9599    /// <p>Update an Input Security Group&#39;s Whilelists.</p>
9600    async fn update_input_security_group(
9601        &self,
9602        input: UpdateInputSecurityGroupRequest,
9603    ) -> Result<UpdateInputSecurityGroupResponse, RusotoError<UpdateInputSecurityGroupError>>;
9604
9605    /// <p>Updates a multiplex.</p>
9606    async fn update_multiplex(
9607        &self,
9608        input: UpdateMultiplexRequest,
9609    ) -> Result<UpdateMultiplexResponse, RusotoError<UpdateMultiplexError>>;
9610
9611    /// <p>Update a program in a multiplex.</p>
9612    async fn update_multiplex_program(
9613        &self,
9614        input: UpdateMultiplexProgramRequest,
9615    ) -> Result<UpdateMultiplexProgramResponse, RusotoError<UpdateMultiplexProgramError>>;
9616
9617    /// <p>Update reservation.</p>
9618    async fn update_reservation(
9619        &self,
9620        input: UpdateReservationRequest,
9621    ) -> Result<UpdateReservationResponse, RusotoError<UpdateReservationError>>;
9622}
9623/// A client for the MediaLive API.
9624#[derive(Clone)]
9625pub struct MediaLiveClient {
9626    client: Client,
9627    region: region::Region,
9628}
9629
9630impl MediaLiveClient {
9631    /// Creates a client backed by the default tokio event loop.
9632    ///
9633    /// The client will use the default credentials provider and tls client.
9634    pub fn new(region: region::Region) -> MediaLiveClient {
9635        MediaLiveClient {
9636            client: Client::shared(),
9637            region,
9638        }
9639    }
9640
9641    pub fn new_with<P, D>(
9642        request_dispatcher: D,
9643        credentials_provider: P,
9644        region: region::Region,
9645    ) -> MediaLiveClient
9646    where
9647        P: ProvideAwsCredentials + Send + Sync + 'static,
9648        D: DispatchSignedRequest + Send + Sync + 'static,
9649    {
9650        MediaLiveClient {
9651            client: Client::new_with(credentials_provider, request_dispatcher),
9652            region,
9653        }
9654    }
9655
9656    pub fn new_with_client(client: Client, region: region::Region) -> MediaLiveClient {
9657        MediaLiveClient { client, region }
9658    }
9659}
9660
9661#[async_trait]
9662impl MediaLive for MediaLiveClient {
9663    /// <p>Update a channel schedule</p>
9664    #[allow(unused_mut)]
9665    async fn batch_update_schedule(
9666        &self,
9667        input: BatchUpdateScheduleRequest,
9668    ) -> Result<BatchUpdateScheduleResponse, RusotoError<BatchUpdateScheduleError>> {
9669        let request_uri = format!(
9670            "/prod/channels/{channel_id}/schedule",
9671            channel_id = input.channel_id
9672        );
9673
9674        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
9675        request.set_content_type("application/x-amz-json-1.1".to_owned());
9676
9677        let encoded = Some(serde_json::to_vec(&input).unwrap());
9678        request.set_payload(encoded);
9679
9680        let mut response = self
9681            .client
9682            .sign_and_dispatch(request)
9683            .await
9684            .map_err(RusotoError::from)?;
9685        if response.status.as_u16() == 200 {
9686            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9687            let result = proto::json::ResponsePayload::new(&response)
9688                .deserialize::<BatchUpdateScheduleResponse, _>()?;
9689
9690            Ok(result)
9691        } else {
9692            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9693            Err(BatchUpdateScheduleError::from_response(response))
9694        }
9695    }
9696
9697    /// <p>Creates a new channel</p>
9698    #[allow(unused_mut)]
9699    async fn create_channel(
9700        &self,
9701        input: CreateChannelRequest,
9702    ) -> Result<CreateChannelResponse, RusotoError<CreateChannelError>> {
9703        let request_uri = "/prod/channels";
9704
9705        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
9706        request.set_content_type("application/x-amz-json-1.1".to_owned());
9707
9708        let encoded = Some(serde_json::to_vec(&input).unwrap());
9709        request.set_payload(encoded);
9710
9711        let mut response = self
9712            .client
9713            .sign_and_dispatch(request)
9714            .await
9715            .map_err(RusotoError::from)?;
9716        if response.status.as_u16() == 201 {
9717            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9718            let result = proto::json::ResponsePayload::new(&response)
9719                .deserialize::<CreateChannelResponse, _>()?;
9720
9721            Ok(result)
9722        } else {
9723            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9724            Err(CreateChannelError::from_response(response))
9725        }
9726    }
9727
9728    /// <p>Create an input</p>
9729    #[allow(unused_mut)]
9730    async fn create_input(
9731        &self,
9732        input: CreateInputRequest,
9733    ) -> Result<CreateInputResponse, RusotoError<CreateInputError>> {
9734        let request_uri = "/prod/inputs";
9735
9736        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
9737        request.set_content_type("application/x-amz-json-1.1".to_owned());
9738
9739        let encoded = Some(serde_json::to_vec(&input).unwrap());
9740        request.set_payload(encoded);
9741
9742        let mut response = self
9743            .client
9744            .sign_and_dispatch(request)
9745            .await
9746            .map_err(RusotoError::from)?;
9747        if response.status.as_u16() == 201 {
9748            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9749            let result = proto::json::ResponsePayload::new(&response)
9750                .deserialize::<CreateInputResponse, _>()?;
9751
9752            Ok(result)
9753        } else {
9754            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9755            Err(CreateInputError::from_response(response))
9756        }
9757    }
9758
9759    /// <p>Creates a Input Security Group</p>
9760    #[allow(unused_mut)]
9761    async fn create_input_security_group(
9762        &self,
9763        input: CreateInputSecurityGroupRequest,
9764    ) -> Result<CreateInputSecurityGroupResponse, RusotoError<CreateInputSecurityGroupError>> {
9765        let request_uri = "/prod/inputSecurityGroups";
9766
9767        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
9768        request.set_content_type("application/x-amz-json-1.1".to_owned());
9769
9770        let encoded = Some(serde_json::to_vec(&input).unwrap());
9771        request.set_payload(encoded);
9772
9773        let mut response = self
9774            .client
9775            .sign_and_dispatch(request)
9776            .await
9777            .map_err(RusotoError::from)?;
9778        if response.status.as_u16() == 200 {
9779            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9780            let result = proto::json::ResponsePayload::new(&response)
9781                .deserialize::<CreateInputSecurityGroupResponse, _>()?;
9782
9783            Ok(result)
9784        } else {
9785            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9786            Err(CreateInputSecurityGroupError::from_response(response))
9787        }
9788    }
9789
9790    /// <p>Create a new multiplex.</p>
9791    #[allow(unused_mut)]
9792    async fn create_multiplex(
9793        &self,
9794        input: CreateMultiplexRequest,
9795    ) -> Result<CreateMultiplexResponse, RusotoError<CreateMultiplexError>> {
9796        let request_uri = "/prod/multiplexes";
9797
9798        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
9799        request.set_content_type("application/x-amz-json-1.1".to_owned());
9800
9801        let encoded = Some(serde_json::to_vec(&input).unwrap());
9802        request.set_payload(encoded);
9803
9804        let mut response = self
9805            .client
9806            .sign_and_dispatch(request)
9807            .await
9808            .map_err(RusotoError::from)?;
9809        if response.status.as_u16() == 201 {
9810            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9811            let result = proto::json::ResponsePayload::new(&response)
9812                .deserialize::<CreateMultiplexResponse, _>()?;
9813
9814            Ok(result)
9815        } else {
9816            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9817            Err(CreateMultiplexError::from_response(response))
9818        }
9819    }
9820
9821    /// <p>Create a new program in the multiplex.</p>
9822    #[allow(unused_mut)]
9823    async fn create_multiplex_program(
9824        &self,
9825        input: CreateMultiplexProgramRequest,
9826    ) -> Result<CreateMultiplexProgramResponse, RusotoError<CreateMultiplexProgramError>> {
9827        let request_uri = format!(
9828            "/prod/multiplexes/{multiplex_id}/programs",
9829            multiplex_id = input.multiplex_id
9830        );
9831
9832        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
9833        request.set_content_type("application/x-amz-json-1.1".to_owned());
9834
9835        let encoded = Some(serde_json::to_vec(&input).unwrap());
9836        request.set_payload(encoded);
9837
9838        let mut response = self
9839            .client
9840            .sign_and_dispatch(request)
9841            .await
9842            .map_err(RusotoError::from)?;
9843        if response.status.as_u16() == 201 {
9844            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9845            let result = proto::json::ResponsePayload::new(&response)
9846                .deserialize::<CreateMultiplexProgramResponse, _>()?;
9847
9848            Ok(result)
9849        } else {
9850            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9851            Err(CreateMultiplexProgramError::from_response(response))
9852        }
9853    }
9854
9855    /// <p>Create tags for a resource</p>
9856    #[allow(unused_mut)]
9857    async fn create_tags(
9858        &self,
9859        input: CreateTagsRequest,
9860    ) -> Result<(), RusotoError<CreateTagsError>> {
9861        let request_uri = format!(
9862            "/prod/tags/{resource_arn}",
9863            resource_arn = input.resource_arn
9864        );
9865
9866        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
9867        request.set_content_type("application/x-amz-json-1.1".to_owned());
9868
9869        let encoded = Some(serde_json::to_vec(&input).unwrap());
9870        request.set_payload(encoded);
9871
9872        let mut response = self
9873            .client
9874            .sign_and_dispatch(request)
9875            .await
9876            .map_err(RusotoError::from)?;
9877        if response.status.as_u16() == 204 {
9878            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9879            let result = ::std::mem::drop(response);
9880
9881            Ok(result)
9882        } else {
9883            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9884            Err(CreateTagsError::from_response(response))
9885        }
9886    }
9887
9888    /// <p>Starts deletion of channel. The associated outputs are also deleted.</p>
9889    #[allow(unused_mut)]
9890    async fn delete_channel(
9891        &self,
9892        input: DeleteChannelRequest,
9893    ) -> Result<DeleteChannelResponse, RusotoError<DeleteChannelError>> {
9894        let request_uri = format!("/prod/channels/{channel_id}", channel_id = input.channel_id);
9895
9896        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
9897        request.set_content_type("application/x-amz-json-1.1".to_owned());
9898
9899        let mut response = self
9900            .client
9901            .sign_and_dispatch(request)
9902            .await
9903            .map_err(RusotoError::from)?;
9904        if response.status.as_u16() == 200 {
9905            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9906            let result = proto::json::ResponsePayload::new(&response)
9907                .deserialize::<DeleteChannelResponse, _>()?;
9908
9909            Ok(result)
9910        } else {
9911            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9912            Err(DeleteChannelError::from_response(response))
9913        }
9914    }
9915
9916    /// <p>Deletes the input end point</p>
9917    #[allow(unused_mut)]
9918    async fn delete_input(
9919        &self,
9920        input: DeleteInputRequest,
9921    ) -> Result<DeleteInputResponse, RusotoError<DeleteInputError>> {
9922        let request_uri = format!("/prod/inputs/{input_id}", input_id = input.input_id);
9923
9924        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
9925        request.set_content_type("application/x-amz-json-1.1".to_owned());
9926
9927        let mut response = self
9928            .client
9929            .sign_and_dispatch(request)
9930            .await
9931            .map_err(RusotoError::from)?;
9932        if response.status.as_u16() == 200 {
9933            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9934            let result = proto::json::ResponsePayload::new(&response)
9935                .deserialize::<DeleteInputResponse, _>()?;
9936
9937            Ok(result)
9938        } else {
9939            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9940            Err(DeleteInputError::from_response(response))
9941        }
9942    }
9943
9944    /// <p>Deletes an Input Security Group</p>
9945    #[allow(unused_mut)]
9946    async fn delete_input_security_group(
9947        &self,
9948        input: DeleteInputSecurityGroupRequest,
9949    ) -> Result<DeleteInputSecurityGroupResponse, RusotoError<DeleteInputSecurityGroupError>> {
9950        let request_uri = format!(
9951            "/prod/inputSecurityGroups/{input_security_group_id}",
9952            input_security_group_id = input.input_security_group_id
9953        );
9954
9955        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
9956        request.set_content_type("application/x-amz-json-1.1".to_owned());
9957
9958        let mut response = self
9959            .client
9960            .sign_and_dispatch(request)
9961            .await
9962            .map_err(RusotoError::from)?;
9963        if response.status.as_u16() == 200 {
9964            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9965            let result = proto::json::ResponsePayload::new(&response)
9966                .deserialize::<DeleteInputSecurityGroupResponse, _>()?;
9967
9968            Ok(result)
9969        } else {
9970            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9971            Err(DeleteInputSecurityGroupError::from_response(response))
9972        }
9973    }
9974
9975    /// <p>Delete a multiplex. The multiplex must be idle.</p>
9976    #[allow(unused_mut)]
9977    async fn delete_multiplex(
9978        &self,
9979        input: DeleteMultiplexRequest,
9980    ) -> Result<DeleteMultiplexResponse, RusotoError<DeleteMultiplexError>> {
9981        let request_uri = format!(
9982            "/prod/multiplexes/{multiplex_id}",
9983            multiplex_id = input.multiplex_id
9984        );
9985
9986        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
9987        request.set_content_type("application/x-amz-json-1.1".to_owned());
9988
9989        let mut response = self
9990            .client
9991            .sign_and_dispatch(request)
9992            .await
9993            .map_err(RusotoError::from)?;
9994        if response.status.as_u16() == 202 {
9995            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9996            let result = proto::json::ResponsePayload::new(&response)
9997                .deserialize::<DeleteMultiplexResponse, _>()?;
9998
9999            Ok(result)
10000        } else {
10001            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10002            Err(DeleteMultiplexError::from_response(response))
10003        }
10004    }
10005
10006    /// <p>Delete a program from a multiplex.</p>
10007    #[allow(unused_mut)]
10008    async fn delete_multiplex_program(
10009        &self,
10010        input: DeleteMultiplexProgramRequest,
10011    ) -> Result<DeleteMultiplexProgramResponse, RusotoError<DeleteMultiplexProgramError>> {
10012        let request_uri = format!(
10013            "/prod/multiplexes/{multiplex_id}/programs/{program_name}",
10014            multiplex_id = input.multiplex_id,
10015            program_name = input.program_name
10016        );
10017
10018        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
10019        request.set_content_type("application/x-amz-json-1.1".to_owned());
10020
10021        let mut response = self
10022            .client
10023            .sign_and_dispatch(request)
10024            .await
10025            .map_err(RusotoError::from)?;
10026        if response.status.as_u16() == 200 {
10027            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10028            let result = proto::json::ResponsePayload::new(&response)
10029                .deserialize::<DeleteMultiplexProgramResponse, _>()?;
10030
10031            Ok(result)
10032        } else {
10033            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10034            Err(DeleteMultiplexProgramError::from_response(response))
10035        }
10036    }
10037
10038    /// <p>Delete an expired reservation.</p>
10039    #[allow(unused_mut)]
10040    async fn delete_reservation(
10041        &self,
10042        input: DeleteReservationRequest,
10043    ) -> Result<DeleteReservationResponse, RusotoError<DeleteReservationError>> {
10044        let request_uri = format!(
10045            "/prod/reservations/{reservation_id}",
10046            reservation_id = input.reservation_id
10047        );
10048
10049        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
10050        request.set_content_type("application/x-amz-json-1.1".to_owned());
10051
10052        let mut response = self
10053            .client
10054            .sign_and_dispatch(request)
10055            .await
10056            .map_err(RusotoError::from)?;
10057        if response.status.as_u16() == 200 {
10058            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10059            let result = proto::json::ResponsePayload::new(&response)
10060                .deserialize::<DeleteReservationResponse, _>()?;
10061
10062            Ok(result)
10063        } else {
10064            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10065            Err(DeleteReservationError::from_response(response))
10066        }
10067    }
10068
10069    /// <p>Delete all schedule actions on a channel.</p>
10070    #[allow(unused_mut)]
10071    async fn delete_schedule(
10072        &self,
10073        input: DeleteScheduleRequest,
10074    ) -> Result<DeleteScheduleResponse, RusotoError<DeleteScheduleError>> {
10075        let request_uri = format!(
10076            "/prod/channels/{channel_id}/schedule",
10077            channel_id = input.channel_id
10078        );
10079
10080        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
10081        request.set_content_type("application/x-amz-json-1.1".to_owned());
10082
10083        let mut response = self
10084            .client
10085            .sign_and_dispatch(request)
10086            .await
10087            .map_err(RusotoError::from)?;
10088        if response.status.as_u16() == 200 {
10089            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10090            let result = proto::json::ResponsePayload::new(&response)
10091                .deserialize::<DeleteScheduleResponse, _>()?;
10092
10093            Ok(result)
10094        } else {
10095            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10096            Err(DeleteScheduleError::from_response(response))
10097        }
10098    }
10099
10100    /// <p>Removes tags for a resource</p>
10101    #[allow(unused_mut)]
10102    async fn delete_tags(
10103        &self,
10104        input: DeleteTagsRequest,
10105    ) -> Result<(), RusotoError<DeleteTagsError>> {
10106        let request_uri = format!(
10107            "/prod/tags/{resource_arn}",
10108            resource_arn = input.resource_arn
10109        );
10110
10111        let mut request = SignedRequest::new("DELETE", "medialive", &self.region, &request_uri);
10112        request.set_content_type("application/x-amz-json-1.1".to_owned());
10113
10114        let mut params = Params::new();
10115        for item in input.tag_keys.iter() {
10116            params.put("tagKeys", item);
10117        }
10118        request.set_params(params);
10119
10120        let mut response = self
10121            .client
10122            .sign_and_dispatch(request)
10123            .await
10124            .map_err(RusotoError::from)?;
10125        if response.status.as_u16() == 204 {
10126            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10127            let result = ::std::mem::drop(response);
10128
10129            Ok(result)
10130        } else {
10131            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10132            Err(DeleteTagsError::from_response(response))
10133        }
10134    }
10135
10136    /// <p>Gets details about a channel</p>
10137    #[allow(unused_mut)]
10138    async fn describe_channel(
10139        &self,
10140        input: DescribeChannelRequest,
10141    ) -> Result<DescribeChannelResponse, RusotoError<DescribeChannelError>> {
10142        let request_uri = format!("/prod/channels/{channel_id}", channel_id = input.channel_id);
10143
10144        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10145        request.set_content_type("application/x-amz-json-1.1".to_owned());
10146
10147        let mut response = self
10148            .client
10149            .sign_and_dispatch(request)
10150            .await
10151            .map_err(RusotoError::from)?;
10152        if response.status.as_u16() == 200 {
10153            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10154            let result = proto::json::ResponsePayload::new(&response)
10155                .deserialize::<DescribeChannelResponse, _>()?;
10156
10157            Ok(result)
10158        } else {
10159            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10160            Err(DescribeChannelError::from_response(response))
10161        }
10162    }
10163
10164    /// <p>Produces details about an input</p>
10165    #[allow(unused_mut)]
10166    async fn describe_input(
10167        &self,
10168        input: DescribeInputRequest,
10169    ) -> Result<DescribeInputResponse, RusotoError<DescribeInputError>> {
10170        let request_uri = format!("/prod/inputs/{input_id}", input_id = input.input_id);
10171
10172        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10173        request.set_content_type("application/x-amz-json-1.1".to_owned());
10174
10175        let mut response = self
10176            .client
10177            .sign_and_dispatch(request)
10178            .await
10179            .map_err(RusotoError::from)?;
10180        if response.status.as_u16() == 200 {
10181            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10182            let result = proto::json::ResponsePayload::new(&response)
10183                .deserialize::<DescribeInputResponse, _>()?;
10184
10185            Ok(result)
10186        } else {
10187            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10188            Err(DescribeInputError::from_response(response))
10189        }
10190    }
10191
10192    /// <p>Gets the details for the input device</p>
10193    #[allow(unused_mut)]
10194    async fn describe_input_device(
10195        &self,
10196        input: DescribeInputDeviceRequest,
10197    ) -> Result<DescribeInputDeviceResponse, RusotoError<DescribeInputDeviceError>> {
10198        let request_uri = format!(
10199            "/prod/inputDevices/{input_device_id}",
10200            input_device_id = input.input_device_id
10201        );
10202
10203        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10204        request.set_content_type("application/x-amz-json-1.1".to_owned());
10205
10206        let mut response = self
10207            .client
10208            .sign_and_dispatch(request)
10209            .await
10210            .map_err(RusotoError::from)?;
10211        if response.status.as_u16() == 200 {
10212            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10213            let result = proto::json::ResponsePayload::new(&response)
10214                .deserialize::<DescribeInputDeviceResponse, _>()?;
10215
10216            Ok(result)
10217        } else {
10218            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10219            Err(DescribeInputDeviceError::from_response(response))
10220        }
10221    }
10222
10223    /// <p>Produces a summary of an Input Security Group</p>
10224    #[allow(unused_mut)]
10225    async fn describe_input_security_group(
10226        &self,
10227        input: DescribeInputSecurityGroupRequest,
10228    ) -> Result<DescribeInputSecurityGroupResponse, RusotoError<DescribeInputSecurityGroupError>>
10229    {
10230        let request_uri = format!(
10231            "/prod/inputSecurityGroups/{input_security_group_id}",
10232            input_security_group_id = input.input_security_group_id
10233        );
10234
10235        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10236        request.set_content_type("application/x-amz-json-1.1".to_owned());
10237
10238        let mut response = self
10239            .client
10240            .sign_and_dispatch(request)
10241            .await
10242            .map_err(RusotoError::from)?;
10243        if response.status.as_u16() == 200 {
10244            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10245            let result = proto::json::ResponsePayload::new(&response)
10246                .deserialize::<DescribeInputSecurityGroupResponse, _>()?;
10247
10248            Ok(result)
10249        } else {
10250            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10251            Err(DescribeInputSecurityGroupError::from_response(response))
10252        }
10253    }
10254
10255    /// <p>Gets details about a multiplex.</p>
10256    #[allow(unused_mut)]
10257    async fn describe_multiplex(
10258        &self,
10259        input: DescribeMultiplexRequest,
10260    ) -> Result<DescribeMultiplexResponse, RusotoError<DescribeMultiplexError>> {
10261        let request_uri = format!(
10262            "/prod/multiplexes/{multiplex_id}",
10263            multiplex_id = input.multiplex_id
10264        );
10265
10266        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10267        request.set_content_type("application/x-amz-json-1.1".to_owned());
10268
10269        let mut response = self
10270            .client
10271            .sign_and_dispatch(request)
10272            .await
10273            .map_err(RusotoError::from)?;
10274        if response.status.as_u16() == 200 {
10275            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10276            let result = proto::json::ResponsePayload::new(&response)
10277                .deserialize::<DescribeMultiplexResponse, _>()?;
10278
10279            Ok(result)
10280        } else {
10281            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10282            Err(DescribeMultiplexError::from_response(response))
10283        }
10284    }
10285
10286    /// <p>Get the details for a program in a multiplex.</p>
10287    #[allow(unused_mut)]
10288    async fn describe_multiplex_program(
10289        &self,
10290        input: DescribeMultiplexProgramRequest,
10291    ) -> Result<DescribeMultiplexProgramResponse, RusotoError<DescribeMultiplexProgramError>> {
10292        let request_uri = format!(
10293            "/prod/multiplexes/{multiplex_id}/programs/{program_name}",
10294            multiplex_id = input.multiplex_id,
10295            program_name = input.program_name
10296        );
10297
10298        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10299        request.set_content_type("application/x-amz-json-1.1".to_owned());
10300
10301        let mut response = self
10302            .client
10303            .sign_and_dispatch(request)
10304            .await
10305            .map_err(RusotoError::from)?;
10306        if response.status.as_u16() == 200 {
10307            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10308            let result = proto::json::ResponsePayload::new(&response)
10309                .deserialize::<DescribeMultiplexProgramResponse, _>()?;
10310
10311            Ok(result)
10312        } else {
10313            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10314            Err(DescribeMultiplexProgramError::from_response(response))
10315        }
10316    }
10317
10318    /// <p>Get details for an offering.</p>
10319    #[allow(unused_mut)]
10320    async fn describe_offering(
10321        &self,
10322        input: DescribeOfferingRequest,
10323    ) -> Result<DescribeOfferingResponse, RusotoError<DescribeOfferingError>> {
10324        let request_uri = format!(
10325            "/prod/offerings/{offering_id}",
10326            offering_id = input.offering_id
10327        );
10328
10329        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10330        request.set_content_type("application/x-amz-json-1.1".to_owned());
10331
10332        let mut response = self
10333            .client
10334            .sign_and_dispatch(request)
10335            .await
10336            .map_err(RusotoError::from)?;
10337        if response.status.as_u16() == 200 {
10338            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10339            let result = proto::json::ResponsePayload::new(&response)
10340                .deserialize::<DescribeOfferingResponse, _>()?;
10341
10342            Ok(result)
10343        } else {
10344            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10345            Err(DescribeOfferingError::from_response(response))
10346        }
10347    }
10348
10349    /// <p>Get details for a reservation.</p>
10350    #[allow(unused_mut)]
10351    async fn describe_reservation(
10352        &self,
10353        input: DescribeReservationRequest,
10354    ) -> Result<DescribeReservationResponse, RusotoError<DescribeReservationError>> {
10355        let request_uri = format!(
10356            "/prod/reservations/{reservation_id}",
10357            reservation_id = input.reservation_id
10358        );
10359
10360        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10361        request.set_content_type("application/x-amz-json-1.1".to_owned());
10362
10363        let mut response = self
10364            .client
10365            .sign_and_dispatch(request)
10366            .await
10367            .map_err(RusotoError::from)?;
10368        if response.status.as_u16() == 200 {
10369            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10370            let result = proto::json::ResponsePayload::new(&response)
10371                .deserialize::<DescribeReservationResponse, _>()?;
10372
10373            Ok(result)
10374        } else {
10375            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10376            Err(DescribeReservationError::from_response(response))
10377        }
10378    }
10379
10380    /// <p>Get a channel schedule</p>
10381    #[allow(unused_mut)]
10382    async fn describe_schedule(
10383        &self,
10384        input: DescribeScheduleRequest,
10385    ) -> Result<DescribeScheduleResponse, RusotoError<DescribeScheduleError>> {
10386        let request_uri = format!(
10387            "/prod/channels/{channel_id}/schedule",
10388            channel_id = input.channel_id
10389        );
10390
10391        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10392        request.set_content_type("application/x-amz-json-1.1".to_owned());
10393
10394        let mut params = Params::new();
10395        if let Some(ref x) = input.max_results {
10396            params.put("maxResults", x);
10397        }
10398        if let Some(ref x) = input.next_token {
10399            params.put("nextToken", x);
10400        }
10401        request.set_params(params);
10402
10403        let mut response = self
10404            .client
10405            .sign_and_dispatch(request)
10406            .await
10407            .map_err(RusotoError::from)?;
10408        if response.status.as_u16() == 200 {
10409            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10410            let result = proto::json::ResponsePayload::new(&response)
10411                .deserialize::<DescribeScheduleResponse, _>()?;
10412
10413            Ok(result)
10414        } else {
10415            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10416            Err(DescribeScheduleError::from_response(response))
10417        }
10418    }
10419
10420    /// <p>Produces list of channels that have been created</p>
10421    #[allow(unused_mut)]
10422    async fn list_channels(
10423        &self,
10424        input: ListChannelsRequest,
10425    ) -> Result<ListChannelsResponse, RusotoError<ListChannelsError>> {
10426        let request_uri = "/prod/channels";
10427
10428        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10429        request.set_content_type("application/x-amz-json-1.1".to_owned());
10430
10431        let mut params = Params::new();
10432        if let Some(ref x) = input.max_results {
10433            params.put("maxResults", x);
10434        }
10435        if let Some(ref x) = input.next_token {
10436            params.put("nextToken", x);
10437        }
10438        request.set_params(params);
10439
10440        let mut response = self
10441            .client
10442            .sign_and_dispatch(request)
10443            .await
10444            .map_err(RusotoError::from)?;
10445        if response.status.as_u16() == 200 {
10446            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10447            let result = proto::json::ResponsePayload::new(&response)
10448                .deserialize::<ListChannelsResponse, _>()?;
10449
10450            Ok(result)
10451        } else {
10452            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10453            Err(ListChannelsError::from_response(response))
10454        }
10455    }
10456
10457    /// <p>List input devices</p>
10458    #[allow(unused_mut)]
10459    async fn list_input_devices(
10460        &self,
10461        input: ListInputDevicesRequest,
10462    ) -> Result<ListInputDevicesResponse, RusotoError<ListInputDevicesError>> {
10463        let request_uri = "/prod/inputDevices";
10464
10465        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10466        request.set_content_type("application/x-amz-json-1.1".to_owned());
10467
10468        let mut params = Params::new();
10469        if let Some(ref x) = input.max_results {
10470            params.put("maxResults", x);
10471        }
10472        if let Some(ref x) = input.next_token {
10473            params.put("nextToken", x);
10474        }
10475        request.set_params(params);
10476
10477        let mut response = self
10478            .client
10479            .sign_and_dispatch(request)
10480            .await
10481            .map_err(RusotoError::from)?;
10482        if response.status.as_u16() == 200 {
10483            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10484            let result = proto::json::ResponsePayload::new(&response)
10485                .deserialize::<ListInputDevicesResponse, _>()?;
10486
10487            Ok(result)
10488        } else {
10489            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10490            Err(ListInputDevicesError::from_response(response))
10491        }
10492    }
10493
10494    /// <p>Produces a list of Input Security Groups for an account</p>
10495    #[allow(unused_mut)]
10496    async fn list_input_security_groups(
10497        &self,
10498        input: ListInputSecurityGroupsRequest,
10499    ) -> Result<ListInputSecurityGroupsResponse, RusotoError<ListInputSecurityGroupsError>> {
10500        let request_uri = "/prod/inputSecurityGroups";
10501
10502        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10503        request.set_content_type("application/x-amz-json-1.1".to_owned());
10504
10505        let mut params = Params::new();
10506        if let Some(ref x) = input.max_results {
10507            params.put("maxResults", x);
10508        }
10509        if let Some(ref x) = input.next_token {
10510            params.put("nextToken", x);
10511        }
10512        request.set_params(params);
10513
10514        let mut response = self
10515            .client
10516            .sign_and_dispatch(request)
10517            .await
10518            .map_err(RusotoError::from)?;
10519        if response.status.as_u16() == 200 {
10520            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10521            let result = proto::json::ResponsePayload::new(&response)
10522                .deserialize::<ListInputSecurityGroupsResponse, _>()?;
10523
10524            Ok(result)
10525        } else {
10526            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10527            Err(ListInputSecurityGroupsError::from_response(response))
10528        }
10529    }
10530
10531    /// <p>Produces list of inputs that have been created</p>
10532    #[allow(unused_mut)]
10533    async fn list_inputs(
10534        &self,
10535        input: ListInputsRequest,
10536    ) -> Result<ListInputsResponse, RusotoError<ListInputsError>> {
10537        let request_uri = "/prod/inputs";
10538
10539        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10540        request.set_content_type("application/x-amz-json-1.1".to_owned());
10541
10542        let mut params = Params::new();
10543        if let Some(ref x) = input.max_results {
10544            params.put("maxResults", x);
10545        }
10546        if let Some(ref x) = input.next_token {
10547            params.put("nextToken", x);
10548        }
10549        request.set_params(params);
10550
10551        let mut response = self
10552            .client
10553            .sign_and_dispatch(request)
10554            .await
10555            .map_err(RusotoError::from)?;
10556        if response.status.as_u16() == 200 {
10557            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10558            let result = proto::json::ResponsePayload::new(&response)
10559                .deserialize::<ListInputsResponse, _>()?;
10560
10561            Ok(result)
10562        } else {
10563            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10564            Err(ListInputsError::from_response(response))
10565        }
10566    }
10567
10568    /// <p>List the programs that currently exist for a specific multiplex.</p>
10569    #[allow(unused_mut)]
10570    async fn list_multiplex_programs(
10571        &self,
10572        input: ListMultiplexProgramsRequest,
10573    ) -> Result<ListMultiplexProgramsResponse, RusotoError<ListMultiplexProgramsError>> {
10574        let request_uri = format!(
10575            "/prod/multiplexes/{multiplex_id}/programs",
10576            multiplex_id = input.multiplex_id
10577        );
10578
10579        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10580        request.set_content_type("application/x-amz-json-1.1".to_owned());
10581
10582        let mut params = Params::new();
10583        if let Some(ref x) = input.max_results {
10584            params.put("maxResults", x);
10585        }
10586        if let Some(ref x) = input.next_token {
10587            params.put("nextToken", x);
10588        }
10589        request.set_params(params);
10590
10591        let mut response = self
10592            .client
10593            .sign_and_dispatch(request)
10594            .await
10595            .map_err(RusotoError::from)?;
10596        if response.status.as_u16() == 200 {
10597            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10598            let result = proto::json::ResponsePayload::new(&response)
10599                .deserialize::<ListMultiplexProgramsResponse, _>()?;
10600
10601            Ok(result)
10602        } else {
10603            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10604            Err(ListMultiplexProgramsError::from_response(response))
10605        }
10606    }
10607
10608    /// <p>Retrieve a list of the existing multiplexes.</p>
10609    #[allow(unused_mut)]
10610    async fn list_multiplexes(
10611        &self,
10612        input: ListMultiplexesRequest,
10613    ) -> Result<ListMultiplexesResponse, RusotoError<ListMultiplexesError>> {
10614        let request_uri = "/prod/multiplexes";
10615
10616        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10617        request.set_content_type("application/x-amz-json-1.1".to_owned());
10618
10619        let mut params = Params::new();
10620        if let Some(ref x) = input.max_results {
10621            params.put("maxResults", x);
10622        }
10623        if let Some(ref x) = input.next_token {
10624            params.put("nextToken", x);
10625        }
10626        request.set_params(params);
10627
10628        let mut response = self
10629            .client
10630            .sign_and_dispatch(request)
10631            .await
10632            .map_err(RusotoError::from)?;
10633        if response.status.as_u16() == 200 {
10634            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10635            let result = proto::json::ResponsePayload::new(&response)
10636                .deserialize::<ListMultiplexesResponse, _>()?;
10637
10638            Ok(result)
10639        } else {
10640            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10641            Err(ListMultiplexesError::from_response(response))
10642        }
10643    }
10644
10645    /// <p>List offerings available for purchase.</p>
10646    #[allow(unused_mut)]
10647    async fn list_offerings(
10648        &self,
10649        input: ListOfferingsRequest,
10650    ) -> Result<ListOfferingsResponse, RusotoError<ListOfferingsError>> {
10651        let request_uri = "/prod/offerings";
10652
10653        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10654        request.set_content_type("application/x-amz-json-1.1".to_owned());
10655
10656        let mut params = Params::new();
10657        if let Some(ref x) = input.channel_class {
10658            params.put("channelClass", x);
10659        }
10660        if let Some(ref x) = input.channel_configuration {
10661            params.put("channelConfiguration", x);
10662        }
10663        if let Some(ref x) = input.codec {
10664            params.put("codec", x);
10665        }
10666        if let Some(ref x) = input.duration {
10667            params.put("duration", x);
10668        }
10669        if let Some(ref x) = input.max_results {
10670            params.put("maxResults", x);
10671        }
10672        if let Some(ref x) = input.maximum_bitrate {
10673            params.put("maximumBitrate", x);
10674        }
10675        if let Some(ref x) = input.maximum_framerate {
10676            params.put("maximumFramerate", x);
10677        }
10678        if let Some(ref x) = input.next_token {
10679            params.put("nextToken", x);
10680        }
10681        if let Some(ref x) = input.resolution {
10682            params.put("resolution", x);
10683        }
10684        if let Some(ref x) = input.resource_type {
10685            params.put("resourceType", x);
10686        }
10687        if let Some(ref x) = input.special_feature {
10688            params.put("specialFeature", x);
10689        }
10690        if let Some(ref x) = input.video_quality {
10691            params.put("videoQuality", x);
10692        }
10693        request.set_params(params);
10694
10695        let mut response = self
10696            .client
10697            .sign_and_dispatch(request)
10698            .await
10699            .map_err(RusotoError::from)?;
10700        if response.status.as_u16() == 200 {
10701            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10702            let result = proto::json::ResponsePayload::new(&response)
10703                .deserialize::<ListOfferingsResponse, _>()?;
10704
10705            Ok(result)
10706        } else {
10707            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10708            Err(ListOfferingsError::from_response(response))
10709        }
10710    }
10711
10712    /// <p>List purchased reservations.</p>
10713    #[allow(unused_mut)]
10714    async fn list_reservations(
10715        &self,
10716        input: ListReservationsRequest,
10717    ) -> Result<ListReservationsResponse, RusotoError<ListReservationsError>> {
10718        let request_uri = "/prod/reservations";
10719
10720        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10721        request.set_content_type("application/x-amz-json-1.1".to_owned());
10722
10723        let mut params = Params::new();
10724        if let Some(ref x) = input.channel_class {
10725            params.put("channelClass", x);
10726        }
10727        if let Some(ref x) = input.codec {
10728            params.put("codec", x);
10729        }
10730        if let Some(ref x) = input.max_results {
10731            params.put("maxResults", x);
10732        }
10733        if let Some(ref x) = input.maximum_bitrate {
10734            params.put("maximumBitrate", x);
10735        }
10736        if let Some(ref x) = input.maximum_framerate {
10737            params.put("maximumFramerate", x);
10738        }
10739        if let Some(ref x) = input.next_token {
10740            params.put("nextToken", x);
10741        }
10742        if let Some(ref x) = input.resolution {
10743            params.put("resolution", x);
10744        }
10745        if let Some(ref x) = input.resource_type {
10746            params.put("resourceType", x);
10747        }
10748        if let Some(ref x) = input.special_feature {
10749            params.put("specialFeature", x);
10750        }
10751        if let Some(ref x) = input.video_quality {
10752            params.put("videoQuality", x);
10753        }
10754        request.set_params(params);
10755
10756        let mut response = self
10757            .client
10758            .sign_and_dispatch(request)
10759            .await
10760            .map_err(RusotoError::from)?;
10761        if response.status.as_u16() == 200 {
10762            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10763            let result = proto::json::ResponsePayload::new(&response)
10764                .deserialize::<ListReservationsResponse, _>()?;
10765
10766            Ok(result)
10767        } else {
10768            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10769            Err(ListReservationsError::from_response(response))
10770        }
10771    }
10772
10773    /// <p>Produces list of tags that have been created for a resource</p>
10774    #[allow(unused_mut)]
10775    async fn list_tags_for_resource(
10776        &self,
10777        input: ListTagsForResourceRequest,
10778    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>> {
10779        let request_uri = format!(
10780            "/prod/tags/{resource_arn}",
10781            resource_arn = input.resource_arn
10782        );
10783
10784        let mut request = SignedRequest::new("GET", "medialive", &self.region, &request_uri);
10785        request.set_content_type("application/x-amz-json-1.1".to_owned());
10786
10787        let mut response = self
10788            .client
10789            .sign_and_dispatch(request)
10790            .await
10791            .map_err(RusotoError::from)?;
10792        if response.status.as_u16() == 200 {
10793            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10794            let result = proto::json::ResponsePayload::new(&response)
10795                .deserialize::<ListTagsForResourceResponse, _>()?;
10796
10797            Ok(result)
10798        } else {
10799            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10800            Err(ListTagsForResourceError::from_response(response))
10801        }
10802    }
10803
10804    /// <p>Purchase an offering and create a reservation.</p>
10805    #[allow(unused_mut)]
10806    async fn purchase_offering(
10807        &self,
10808        input: PurchaseOfferingRequest,
10809    ) -> Result<PurchaseOfferingResponse, RusotoError<PurchaseOfferingError>> {
10810        let request_uri = format!(
10811            "/prod/offerings/{offering_id}/purchase",
10812            offering_id = input.offering_id
10813        );
10814
10815        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
10816        request.set_content_type("application/x-amz-json-1.1".to_owned());
10817
10818        let encoded = Some(serde_json::to_vec(&input).unwrap());
10819        request.set_payload(encoded);
10820
10821        let mut response = self
10822            .client
10823            .sign_and_dispatch(request)
10824            .await
10825            .map_err(RusotoError::from)?;
10826        if response.status.as_u16() == 201 {
10827            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10828            let result = proto::json::ResponsePayload::new(&response)
10829                .deserialize::<PurchaseOfferingResponse, _>()?;
10830
10831            Ok(result)
10832        } else {
10833            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10834            Err(PurchaseOfferingError::from_response(response))
10835        }
10836    }
10837
10838    /// <p>Starts an existing channel</p>
10839    #[allow(unused_mut)]
10840    async fn start_channel(
10841        &self,
10842        input: StartChannelRequest,
10843    ) -> Result<StartChannelResponse, RusotoError<StartChannelError>> {
10844        let request_uri = format!(
10845            "/prod/channels/{channel_id}/start",
10846            channel_id = input.channel_id
10847        );
10848
10849        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
10850        request.set_content_type("application/x-amz-json-1.1".to_owned());
10851
10852        let mut response = self
10853            .client
10854            .sign_and_dispatch(request)
10855            .await
10856            .map_err(RusotoError::from)?;
10857        if response.status.as_u16() == 200 {
10858            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10859            let result = proto::json::ResponsePayload::new(&response)
10860                .deserialize::<StartChannelResponse, _>()?;
10861
10862            Ok(result)
10863        } else {
10864            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10865            Err(StartChannelError::from_response(response))
10866        }
10867    }
10868
10869    /// <p>Start (run) the multiplex. Starting the multiplex does not start the channels. You must explicitly start each channel.</p>
10870    #[allow(unused_mut)]
10871    async fn start_multiplex(
10872        &self,
10873        input: StartMultiplexRequest,
10874    ) -> Result<StartMultiplexResponse, RusotoError<StartMultiplexError>> {
10875        let request_uri = format!(
10876            "/prod/multiplexes/{multiplex_id}/start",
10877            multiplex_id = input.multiplex_id
10878        );
10879
10880        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
10881        request.set_content_type("application/x-amz-json-1.1".to_owned());
10882
10883        let mut response = self
10884            .client
10885            .sign_and_dispatch(request)
10886            .await
10887            .map_err(RusotoError::from)?;
10888        if response.status.as_u16() == 202 {
10889            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10890            let result = proto::json::ResponsePayload::new(&response)
10891                .deserialize::<StartMultiplexResponse, _>()?;
10892
10893            Ok(result)
10894        } else {
10895            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10896            Err(StartMultiplexError::from_response(response))
10897        }
10898    }
10899
10900    /// <p>Stops a running channel</p>
10901    #[allow(unused_mut)]
10902    async fn stop_channel(
10903        &self,
10904        input: StopChannelRequest,
10905    ) -> Result<StopChannelResponse, RusotoError<StopChannelError>> {
10906        let request_uri = format!(
10907            "/prod/channels/{channel_id}/stop",
10908            channel_id = input.channel_id
10909        );
10910
10911        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
10912        request.set_content_type("application/x-amz-json-1.1".to_owned());
10913
10914        let mut response = self
10915            .client
10916            .sign_and_dispatch(request)
10917            .await
10918            .map_err(RusotoError::from)?;
10919        if response.status.as_u16() == 200 {
10920            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10921            let result = proto::json::ResponsePayload::new(&response)
10922                .deserialize::<StopChannelResponse, _>()?;
10923
10924            Ok(result)
10925        } else {
10926            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10927            Err(StopChannelError::from_response(response))
10928        }
10929    }
10930
10931    /// <p>Stops a running multiplex. If the multiplex isn&#39;t running, this action has no effect.</p>
10932    #[allow(unused_mut)]
10933    async fn stop_multiplex(
10934        &self,
10935        input: StopMultiplexRequest,
10936    ) -> Result<StopMultiplexResponse, RusotoError<StopMultiplexError>> {
10937        let request_uri = format!(
10938            "/prod/multiplexes/{multiplex_id}/stop",
10939            multiplex_id = input.multiplex_id
10940        );
10941
10942        let mut request = SignedRequest::new("POST", "medialive", &self.region, &request_uri);
10943        request.set_content_type("application/x-amz-json-1.1".to_owned());
10944
10945        let mut response = self
10946            .client
10947            .sign_and_dispatch(request)
10948            .await
10949            .map_err(RusotoError::from)?;
10950        if response.status.as_u16() == 202 {
10951            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10952            let result = proto::json::ResponsePayload::new(&response)
10953                .deserialize::<StopMultiplexResponse, _>()?;
10954
10955            Ok(result)
10956        } else {
10957            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10958            Err(StopMultiplexError::from_response(response))
10959        }
10960    }
10961
10962    /// <p>Updates a channel.</p>
10963    #[allow(unused_mut)]
10964    async fn update_channel(
10965        &self,
10966        input: UpdateChannelRequest,
10967    ) -> Result<UpdateChannelResponse, RusotoError<UpdateChannelError>> {
10968        let request_uri = format!("/prod/channels/{channel_id}", channel_id = input.channel_id);
10969
10970        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
10971        request.set_content_type("application/x-amz-json-1.1".to_owned());
10972
10973        let encoded = Some(serde_json::to_vec(&input).unwrap());
10974        request.set_payload(encoded);
10975
10976        let mut response = self
10977            .client
10978            .sign_and_dispatch(request)
10979            .await
10980            .map_err(RusotoError::from)?;
10981        if response.status.as_u16() == 200 {
10982            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10983            let result = proto::json::ResponsePayload::new(&response)
10984                .deserialize::<UpdateChannelResponse, _>()?;
10985
10986            Ok(result)
10987        } else {
10988            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10989            Err(UpdateChannelError::from_response(response))
10990        }
10991    }
10992
10993    /// <p>Changes the class of the channel.</p>
10994    #[allow(unused_mut)]
10995    async fn update_channel_class(
10996        &self,
10997        input: UpdateChannelClassRequest,
10998    ) -> Result<UpdateChannelClassResponse, RusotoError<UpdateChannelClassError>> {
10999        let request_uri = format!(
11000            "/prod/channels/{channel_id}/channelClass",
11001            channel_id = input.channel_id
11002        );
11003
11004        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
11005        request.set_content_type("application/x-amz-json-1.1".to_owned());
11006
11007        let encoded = Some(serde_json::to_vec(&input).unwrap());
11008        request.set_payload(encoded);
11009
11010        let mut response = self
11011            .client
11012            .sign_and_dispatch(request)
11013            .await
11014            .map_err(RusotoError::from)?;
11015        if response.status.as_u16() == 200 {
11016            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11017            let result = proto::json::ResponsePayload::new(&response)
11018                .deserialize::<UpdateChannelClassResponse, _>()?;
11019
11020            Ok(result)
11021        } else {
11022            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11023            Err(UpdateChannelClassError::from_response(response))
11024        }
11025    }
11026
11027    /// <p>Updates an input.</p>
11028    #[allow(unused_mut)]
11029    async fn update_input(
11030        &self,
11031        input: UpdateInputRequest,
11032    ) -> Result<UpdateInputResponse, RusotoError<UpdateInputError>> {
11033        let request_uri = format!("/prod/inputs/{input_id}", input_id = input.input_id);
11034
11035        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
11036        request.set_content_type("application/x-amz-json-1.1".to_owned());
11037
11038        let encoded = Some(serde_json::to_vec(&input).unwrap());
11039        request.set_payload(encoded);
11040
11041        let mut response = self
11042            .client
11043            .sign_and_dispatch(request)
11044            .await
11045            .map_err(RusotoError::from)?;
11046        if response.status.as_u16() == 200 {
11047            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11048            let result = proto::json::ResponsePayload::new(&response)
11049                .deserialize::<UpdateInputResponse, _>()?;
11050
11051            Ok(result)
11052        } else {
11053            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11054            Err(UpdateInputError::from_response(response))
11055        }
11056    }
11057
11058    /// <p>Updates the parameters for the input device.</p>
11059    #[allow(unused_mut)]
11060    async fn update_input_device(
11061        &self,
11062        input: UpdateInputDeviceRequest,
11063    ) -> Result<UpdateInputDeviceResponse, RusotoError<UpdateInputDeviceError>> {
11064        let request_uri = format!(
11065            "/prod/inputDevices/{input_device_id}",
11066            input_device_id = input.input_device_id
11067        );
11068
11069        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
11070        request.set_content_type("application/x-amz-json-1.1".to_owned());
11071
11072        let encoded = Some(serde_json::to_vec(&input).unwrap());
11073        request.set_payload(encoded);
11074
11075        let mut response = self
11076            .client
11077            .sign_and_dispatch(request)
11078            .await
11079            .map_err(RusotoError::from)?;
11080        if response.status.as_u16() == 200 {
11081            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11082            let result = proto::json::ResponsePayload::new(&response)
11083                .deserialize::<UpdateInputDeviceResponse, _>()?;
11084
11085            Ok(result)
11086        } else {
11087            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11088            Err(UpdateInputDeviceError::from_response(response))
11089        }
11090    }
11091
11092    /// <p>Update an Input Security Group&#39;s Whilelists.</p>
11093    #[allow(unused_mut)]
11094    async fn update_input_security_group(
11095        &self,
11096        input: UpdateInputSecurityGroupRequest,
11097    ) -> Result<UpdateInputSecurityGroupResponse, RusotoError<UpdateInputSecurityGroupError>> {
11098        let request_uri = format!(
11099            "/prod/inputSecurityGroups/{input_security_group_id}",
11100            input_security_group_id = input.input_security_group_id
11101        );
11102
11103        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
11104        request.set_content_type("application/x-amz-json-1.1".to_owned());
11105
11106        let encoded = Some(serde_json::to_vec(&input).unwrap());
11107        request.set_payload(encoded);
11108
11109        let mut response = self
11110            .client
11111            .sign_and_dispatch(request)
11112            .await
11113            .map_err(RusotoError::from)?;
11114        if response.status.as_u16() == 200 {
11115            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11116            let result = proto::json::ResponsePayload::new(&response)
11117                .deserialize::<UpdateInputSecurityGroupResponse, _>()?;
11118
11119            Ok(result)
11120        } else {
11121            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11122            Err(UpdateInputSecurityGroupError::from_response(response))
11123        }
11124    }
11125
11126    /// <p>Updates a multiplex.</p>
11127    #[allow(unused_mut)]
11128    async fn update_multiplex(
11129        &self,
11130        input: UpdateMultiplexRequest,
11131    ) -> Result<UpdateMultiplexResponse, RusotoError<UpdateMultiplexError>> {
11132        let request_uri = format!(
11133            "/prod/multiplexes/{multiplex_id}",
11134            multiplex_id = input.multiplex_id
11135        );
11136
11137        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
11138        request.set_content_type("application/x-amz-json-1.1".to_owned());
11139
11140        let encoded = Some(serde_json::to_vec(&input).unwrap());
11141        request.set_payload(encoded);
11142
11143        let mut response = self
11144            .client
11145            .sign_and_dispatch(request)
11146            .await
11147            .map_err(RusotoError::from)?;
11148        if response.status.as_u16() == 200 {
11149            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11150            let result = proto::json::ResponsePayload::new(&response)
11151                .deserialize::<UpdateMultiplexResponse, _>()?;
11152
11153            Ok(result)
11154        } else {
11155            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11156            Err(UpdateMultiplexError::from_response(response))
11157        }
11158    }
11159
11160    /// <p>Update a program in a multiplex.</p>
11161    #[allow(unused_mut)]
11162    async fn update_multiplex_program(
11163        &self,
11164        input: UpdateMultiplexProgramRequest,
11165    ) -> Result<UpdateMultiplexProgramResponse, RusotoError<UpdateMultiplexProgramError>> {
11166        let request_uri = format!(
11167            "/prod/multiplexes/{multiplex_id}/programs/{program_name}",
11168            multiplex_id = input.multiplex_id,
11169            program_name = input.program_name
11170        );
11171
11172        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
11173        request.set_content_type("application/x-amz-json-1.1".to_owned());
11174
11175        let encoded = Some(serde_json::to_vec(&input).unwrap());
11176        request.set_payload(encoded);
11177
11178        let mut response = self
11179            .client
11180            .sign_and_dispatch(request)
11181            .await
11182            .map_err(RusotoError::from)?;
11183        if response.status.as_u16() == 200 {
11184            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11185            let result = proto::json::ResponsePayload::new(&response)
11186                .deserialize::<UpdateMultiplexProgramResponse, _>()?;
11187
11188            Ok(result)
11189        } else {
11190            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11191            Err(UpdateMultiplexProgramError::from_response(response))
11192        }
11193    }
11194
11195    /// <p>Update reservation.</p>
11196    #[allow(unused_mut)]
11197    async fn update_reservation(
11198        &self,
11199        input: UpdateReservationRequest,
11200    ) -> Result<UpdateReservationResponse, RusotoError<UpdateReservationError>> {
11201        let request_uri = format!(
11202            "/prod/reservations/{reservation_id}",
11203            reservation_id = input.reservation_id
11204        );
11205
11206        let mut request = SignedRequest::new("PUT", "medialive", &self.region, &request_uri);
11207        request.set_content_type("application/x-amz-json-1.1".to_owned());
11208
11209        let encoded = Some(serde_json::to_vec(&input).unwrap());
11210        request.set_payload(encoded);
11211
11212        let mut response = self
11213            .client
11214            .sign_and_dispatch(request)
11215            .await
11216            .map_err(RusotoError::from)?;
11217        if response.status.as_u16() == 200 {
11218            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11219            let result = proto::json::ResponsePayload::new(&response)
11220                .deserialize::<UpdateReservationResponse, _>()?;
11221
11222            Ok(result)
11223        } else {
11224            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11225            Err(UpdateReservationError::from_response(response))
11226        }
11227    }
11228}