Skip to main content

aws_sdk_codecatalyst/operation/
start_dev_environment_session.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `StartDevEnvironmentSession`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct StartDevEnvironmentSession;
6impl StartDevEnvironmentSession {
7    /// Creates a new `StartDevEnvironmentSession`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::start_dev_environment_session::StartDevEnvironmentSessionInput,
14    ) -> ::std::result::Result<
15        crate::operation::start_dev_environment_session::StartDevEnvironmentSessionOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::start_dev_environment_session::StartDevEnvironmentSessionError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::start_dev_environment_session::StartDevEnvironmentSessionError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::start_dev_environment_session::StartDevEnvironmentSessionOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::start_dev_environment_session::StartDevEnvironmentSessionInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "CodeCatalyst",
56            "StartDevEnvironmentSession",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "CodeCatalyst.StartDevEnvironmentSession",
65            "rpc.service" = "CodeCatalyst",
66            "rpc.method" = "StartDevEnvironmentSession",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79
80        if let ::std::option::Option::Some(config_override) = config_override {
81            for plugin in config_override.runtime_plugins.iter().cloned() {
82                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
83            }
84            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
85                config_override,
86                client_config.config.clone(),
87                &client_config.runtime_components,
88            ));
89        }
90        runtime_plugins
91    }
92}
93impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for StartDevEnvironmentSession {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("StartDevEnvironmentSession");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            StartDevEnvironmentSessionRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            StartDevEnvironmentSessionResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("StartDevEnvironmentSession")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
112        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
113            "StartDevEnvironmentSession",
114            "CodeCatalyst",
115        ));
116
117        ::std::option::Option::Some(cfg.freeze())
118    }
119
120    fn runtime_components(
121        &self,
122        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
123    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
124        #[allow(unused_mut)]
125        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("StartDevEnvironmentSession")
126            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
127                StartDevEnvironmentSessionTelemetryInputCaptureInterceptor,
128            ))
129            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
130                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
131            ))
132            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
133                StartDevEnvironmentSessionEndpointParamsInterceptor,
134            ))
135            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
136                crate::operation::start_dev_environment_session::StartDevEnvironmentSessionError,
137            >::new())
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
139                crate::operation::start_dev_environment_session::StartDevEnvironmentSessionError,
140            >::new())
141            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
142                crate::operation::start_dev_environment_session::StartDevEnvironmentSessionError,
143            >::new());
144
145        ::std::borrow::Cow::Owned(rcb)
146    }
147}
148
149#[derive(Debug)]
150struct StartDevEnvironmentSessionTelemetryInputCaptureInterceptor;
151
152#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
153impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StartDevEnvironmentSessionTelemetryInputCaptureInterceptor {
154    fn name(&self) -> &'static str {
155        "StartDevEnvironmentSessionTelemetryInputCaptureInterceptor"
156    }
157
158    fn read_before_execution(
159        &self,
160        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
161            '_,
162            ::aws_smithy_runtime_api::client::interceptors::context::Input,
163            ::aws_smithy_runtime_api::client::interceptors::context::Output,
164            ::aws_smithy_runtime_api::client::interceptors::context::Error,
165        >,
166        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
167    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
168        // Nothing to do unless the customer opted in by naming members to record.
169        let ::std::option::Option::Some(requested) = cfg
170            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
171            .filter(|r| !r.is_empty())
172        else {
173            return ::std::result::Result::Ok(());
174        };
175
176        let ::std::option::Option::Some(input) = context.input().downcast_ref::<StartDevEnvironmentSessionInput>() else {
177            // A mismatched input is not this interceptor's concern; skip quietly.
178            return ::std::result::Result::Ok(());
179        };
180
181        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
182        if requested.should_capture("spaceName") {
183            if let ::std::option::Option::Some(value) = input.space_name.as_deref() {
184                captured.insert("spaceName", value);
185            }
186        }
187        if requested.should_capture("projectName") {
188            if let ::std::option::Option::Some(value) = input.project_name.as_deref() {
189                captured.insert("projectName", value);
190            }
191        }
192        if requested.should_capture("id") {
193            if let ::std::option::Option::Some(value) = input.id.as_deref() {
194                captured.insert("id", value);
195            }
196        }
197
198        cfg.interceptor_state().store_put(captured);
199        ::std::result::Result::Ok(())
200    }
201}
202#[derive(Debug)]
203struct StartDevEnvironmentSessionResponseDeserializer;
204impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for StartDevEnvironmentSessionResponseDeserializer {
205    fn deserialize_nonstreaming_with_config(
206        &self,
207        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
208        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
209    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
210        let (success, status) = (response.status().is_success(), response.status().as_u16());
211        let headers = response.headers();
212        let body = response.body().bytes().expect("body loaded");
213        #[allow(unused_mut)]
214        let mut force_error = false;
215        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
216        let parse_result = if !success && status != 200 || force_error {
217            crate::protocol_serde::shape_start_dev_environment_session::de_start_dev_environment_session_http_error(status, headers, body)
218        } else {
219            crate::protocol_serde::shape_start_dev_environment_session::de_start_dev_environment_session_http_response(status, headers, body)
220        };
221        crate::protocol_serde::type_erase_result(parse_result)
222    }
223}
224#[derive(Debug)]
225struct StartDevEnvironmentSessionRequestSerializer;
226impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for StartDevEnvironmentSessionRequestSerializer {
227    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
228    fn serialize_input(
229        &self,
230        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
231        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
232    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
233        let input = input
234            .downcast::<crate::operation::start_dev_environment_session::StartDevEnvironmentSessionInput>()
235            .expect("correct type");
236        let _header_serialization_settings = _cfg
237            .load::<crate::serialization_settings::HeaderSerializationSettings>()
238            .cloned()
239            .unwrap_or_default();
240        let mut request_builder = {
241            #[allow(clippy::uninlined_format_args)]
242            fn uri_base(
243                _input: &crate::operation::start_dev_environment_session::StartDevEnvironmentSessionInput,
244                output: &mut ::std::string::String,
245            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
246                use ::std::fmt::Write as _;
247                let input_1 = &_input.space_name;
248                let input_1 = input_1
249                    .as_ref()
250                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
251                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
252                if space_name.is_empty() {
253                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
254                        "space_name",
255                        "cannot be empty or unset",
256                    ));
257                }
258                let input_2 = &_input.project_name;
259                let input_2 = input_2
260                    .as_ref()
261                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
262                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
263                if project_name.is_empty() {
264                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
265                        "project_name",
266                        "cannot be empty or unset",
267                    ));
268                }
269                let input_3 = &_input.id;
270                let input_3 = input_3
271                    .as_ref()
272                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("id", "cannot be empty or unset"))?;
273                let id = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
274                if id.is_empty() {
275                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
276                        "id",
277                        "cannot be empty or unset",
278                    ));
279                }
280                ::std::write!(
281                    output,
282                    "/v1/spaces/{spaceName}/projects/{projectName}/devEnvironments/{id}/session",
283                    spaceName = space_name,
284                    projectName = project_name,
285                    id = id
286                )
287                .expect("formatting should succeed");
288                ::std::result::Result::Ok(())
289            }
290            #[allow(clippy::unnecessary_wraps)]
291            fn update_http_builder(
292                input: &crate::operation::start_dev_environment_session::StartDevEnvironmentSessionInput,
293                builder: ::http_1x::request::Builder,
294            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
295                let mut uri = ::std::string::String::new();
296                uri_base(input, &mut uri)?;
297                ::std::result::Result::Ok(builder.method("PUT").uri(uri))
298            }
299            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
300            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
301            builder
302        };
303        let body = ::aws_smithy_types::body::SdkBody::from(
304            crate::protocol_serde::shape_start_dev_environment_session::ser_start_dev_environment_session_input(&input)?,
305        );
306        if let Some(content_length) = body.content_length() {
307            let content_length = content_length.to_string();
308            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
309        }
310        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
311    }
312}
313#[derive(Debug)]
314struct StartDevEnvironmentSessionEndpointParamsInterceptor;
315
316#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
317impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StartDevEnvironmentSessionEndpointParamsInterceptor {
318    fn name(&self) -> &'static str {
319        "StartDevEnvironmentSessionEndpointParamsInterceptor"
320    }
321
322    fn read_before_execution(
323        &self,
324        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
325            '_,
326            ::aws_smithy_runtime_api::client::interceptors::context::Input,
327            ::aws_smithy_runtime_api::client::interceptors::context::Output,
328            ::aws_smithy_runtime_api::client::interceptors::context::Error,
329        >,
330        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
331    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
332        let _input = context
333            .input()
334            .downcast_ref::<StartDevEnvironmentSessionInput>()
335            .ok_or("failed to downcast to StartDevEnvironmentSessionInput")?;
336
337        let params = crate::config::endpoint::Params::builder()
338            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
339            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
340            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
341            .build()
342            .map_err(|err| {
343                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
344            })?;
345        cfg.interceptor_state()
346            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
347        ::std::result::Result::Ok(())
348    }
349}
350
351// The get_* functions below are generated from JMESPath expressions in the
352// operationContextParams trait. They target the operation's input shape.
353
354/// Error type for the `StartDevEnvironmentSessionError` operation.
355#[non_exhaustive]
356#[derive(::std::fmt::Debug)]
357pub enum StartDevEnvironmentSessionError {
358    /// <p>The request was denied because you don't have sufficient access to perform this action. Verify that you are a member of a role that allows this action.</p>
359    AccessDeniedException(crate::types::error::AccessDeniedException),
360    /// <p>The request was denied because the requested operation would cause a conflict with the current state of a service resource associated with the request. Another user might have updated the resource. Reload, make sure you have the latest data, and then try again.</p>
361    ConflictException(crate::types::error::ConflictException),
362    /// <p>The request was denied because the specified resource was not found. Verify that the spelling is correct and that you have access to the resource.</p>
363    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
364    /// <p>The request was denied because one or more resources has reached its limits for the tier the space belongs to. Either reduce the number of resources, or change the tier if applicable.</p>
365    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
366    /// <p>The request was denied due to request throttling.</p>
367    ThrottlingException(crate::types::error::ThrottlingException),
368    /// <p>The request was denied because an input failed to satisfy the constraints specified by the service. Check the spelling and input requirements, and then try again.</p>
369    ValidationException(crate::types::error::ValidationException),
370    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
371    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
372    variable wildcard pattern and check `.code()`:
373     \
374    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
375     \
376    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-StartDevEnvironmentSessionError) for what information is available for the error.")]
377    Unhandled(crate::error::sealed_unhandled::Unhandled),
378}
379impl StartDevEnvironmentSessionError {
380    /// Creates the `StartDevEnvironmentSessionError::Unhandled` variant from any error type.
381    pub fn unhandled(
382        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
383    ) -> Self {
384        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
385            source: err.into(),
386            meta: ::std::default::Default::default(),
387        })
388    }
389
390    /// Creates the `StartDevEnvironmentSessionError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
391    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
392        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
393            source: err.clone().into(),
394            meta: err,
395        })
396    }
397    ///
398    /// Returns error metadata, which includes the error code, message,
399    /// request ID, and potentially additional information.
400    ///
401    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
402        match self {
403            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
404            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
405            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
406            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
407            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
408            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
409            Self::Unhandled(e) => &e.meta,
410        }
411    }
412    /// Returns `true` if the error kind is `StartDevEnvironmentSessionError::AccessDeniedException`.
413    pub fn is_access_denied_exception(&self) -> bool {
414        matches!(self, Self::AccessDeniedException(_))
415    }
416    /// Returns `true` if the error kind is `StartDevEnvironmentSessionError::ConflictException`.
417    pub fn is_conflict_exception(&self) -> bool {
418        matches!(self, Self::ConflictException(_))
419    }
420    /// Returns `true` if the error kind is `StartDevEnvironmentSessionError::ResourceNotFoundException`.
421    pub fn is_resource_not_found_exception(&self) -> bool {
422        matches!(self, Self::ResourceNotFoundException(_))
423    }
424    /// Returns `true` if the error kind is `StartDevEnvironmentSessionError::ServiceQuotaExceededException`.
425    pub fn is_service_quota_exceeded_exception(&self) -> bool {
426        matches!(self, Self::ServiceQuotaExceededException(_))
427    }
428    /// Returns `true` if the error kind is `StartDevEnvironmentSessionError::ThrottlingException`.
429    pub fn is_throttling_exception(&self) -> bool {
430        matches!(self, Self::ThrottlingException(_))
431    }
432    /// Returns `true` if the error kind is `StartDevEnvironmentSessionError::ValidationException`.
433    pub fn is_validation_exception(&self) -> bool {
434        matches!(self, Self::ValidationException(_))
435    }
436}
437impl ::std::error::Error for StartDevEnvironmentSessionError {
438    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
439        match self {
440            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
441            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
442            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
443            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
444            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
445            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
446            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
447        }
448    }
449}
450impl ::std::fmt::Display for StartDevEnvironmentSessionError {
451    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
452        match self {
453            Self::AccessDeniedException(_inner) => _inner.fmt(f),
454            Self::ConflictException(_inner) => _inner.fmt(f),
455            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
456            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
457            Self::ThrottlingException(_inner) => _inner.fmt(f),
458            Self::ValidationException(_inner) => _inner.fmt(f),
459            Self::Unhandled(_inner) => {
460                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
461                    write!(f, "unhandled error ({code})")
462                } else {
463                    f.write_str("unhandled error")
464                }
465            }
466        }
467    }
468}
469impl ::aws_smithy_types::retry::ProvideErrorKind for StartDevEnvironmentSessionError {
470    fn code(&self) -> ::std::option::Option<&str> {
471        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
472    }
473    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
474        match self {
475            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
476            _ => ::std::option::Option::None,
477        }
478    }
479}
480impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for StartDevEnvironmentSessionError {
481    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
482        match self {
483            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
484            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
485            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
486            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
487            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
488            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
489            Self::Unhandled(_inner) => &_inner.meta,
490        }
491    }
492}
493impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for StartDevEnvironmentSessionError {
494    fn create_unhandled_error(
495        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
496        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
497    ) -> Self {
498        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
499            source,
500            meta: meta.unwrap_or_default(),
501        })
502    }
503}
504impl ::aws_types::request_id::RequestId for crate::operation::start_dev_environment_session::StartDevEnvironmentSessionError {
505    fn request_id(&self) -> Option<&str> {
506        self.meta().request_id()
507    }
508}
509
510pub use crate::operation::start_dev_environment_session::_start_dev_environment_session_input::StartDevEnvironmentSessionInput;
511
512pub use crate::operation::start_dev_environment_session::_start_dev_environment_session_output::StartDevEnvironmentSessionOutput;
513
514mod _start_dev_environment_session_input;
515
516mod _start_dev_environment_session_output;
517
518/// Builders
519pub mod builders;