Skip to main content

aws_sdk_codecatalyst/operation/
start_workflow_run.rs

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