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
145        ::std::borrow::Cow::Owned(rcb)
146    }
147}
148
149#[derive(Debug)]
150struct StartWorkflowRunTelemetryInputCaptureInterceptor;
151
152#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
153impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StartWorkflowRunTelemetryInputCaptureInterceptor {
154    fn name(&self) -> &'static str {
155        "StartWorkflowRunTelemetryInputCaptureInterceptor"
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::<StartWorkflowRunInput>() 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("workflowId") {
193            if let ::std::option::Option::Some(value) = input.workflow_id.as_deref() {
194                captured.insert("workflowId", value);
195            }
196        }
197        if requested.should_capture("clientToken") {
198            if let ::std::option::Option::Some(value) = input.client_token.as_deref() {
199                captured.insert("clientToken", value);
200            }
201        }
202
203        cfg.interceptor_state().store_put(captured);
204        ::std::result::Result::Ok(())
205    }
206}
207#[derive(Debug)]
208struct StartWorkflowRunResponseDeserializer;
209impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for StartWorkflowRunResponseDeserializer {
210    fn deserialize_nonstreaming_with_config(
211        &self,
212        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
213        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
214    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
215        let (success, status) = (response.status().is_success(), response.status().as_u16());
216        let headers = response.headers();
217        let body = response.body().bytes().expect("body loaded");
218        #[allow(unused_mut)]
219        let mut force_error = false;
220        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
221        let parse_result = if !success && status != 200 || force_error {
222            crate::protocol_serde::shape_start_workflow_run::de_start_workflow_run_http_error(status, headers, body)
223        } else {
224            crate::protocol_serde::shape_start_workflow_run::de_start_workflow_run_http_response(status, headers, body)
225        };
226        crate::protocol_serde::type_erase_result(parse_result)
227    }
228}
229#[derive(Debug)]
230struct StartWorkflowRunRequestSerializer;
231impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for StartWorkflowRunRequestSerializer {
232    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
233    fn serialize_input(
234        &self,
235        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
236        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
237    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
238        let input = input
239            .downcast::<crate::operation::start_workflow_run::StartWorkflowRunInput>()
240            .expect("correct type");
241        let _header_serialization_settings = _cfg
242            .load::<crate::serialization_settings::HeaderSerializationSettings>()
243            .cloned()
244            .unwrap_or_default();
245        let mut request_builder = {
246            #[allow(clippy::uninlined_format_args)]
247            fn uri_base(
248                _input: &crate::operation::start_workflow_run::StartWorkflowRunInput,
249                output: &mut ::std::string::String,
250            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
251                use ::std::fmt::Write as _;
252                let input_1 = &_input.space_name;
253                let input_1 = input_1
254                    .as_ref()
255                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
256                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
257                if space_name.is_empty() {
258                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
259                        "space_name",
260                        "cannot be empty or unset",
261                    ));
262                }
263                let input_2 = &_input.project_name;
264                let input_2 = input_2
265                    .as_ref()
266                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
267                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
268                if project_name.is_empty() {
269                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
270                        "project_name",
271                        "cannot be empty or unset",
272                    ));
273                }
274                ::std::write!(
275                    output,
276                    "/v1/spaces/{spaceName}/projects/{projectName}/workflowRuns",
277                    spaceName = space_name,
278                    projectName = project_name
279                )
280                .expect("formatting should succeed");
281                ::std::result::Result::Ok(())
282            }
283            fn uri_query(
284                _input: &crate::operation::start_workflow_run::StartWorkflowRunInput,
285                mut output: &mut ::std::string::String,
286            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
287                let mut query = ::aws_smithy_http::query::Writer::new(output);
288                let inner_3 = &_input.workflow_id;
289                let inner_3 = inner_3
290                    .as_ref()
291                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("workflow_id", "cannot be empty or unset"))?;
292                if inner_3.is_empty() {
293                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
294                        "workflow_id",
295                        "cannot be empty or unset",
296                    ));
297                }
298                query.push_kv("workflowId", &::aws_smithy_http::query::fmt_string(inner_3));
299                ::std::result::Result::Ok(())
300            }
301            #[allow(clippy::unnecessary_wraps)]
302            fn update_http_builder(
303                input: &crate::operation::start_workflow_run::StartWorkflowRunInput,
304                builder: ::http_1x::request::Builder,
305            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
306                let mut uri = ::std::string::String::new();
307                uri_base(input, &mut uri)?;
308                uri_query(input, &mut uri)?;
309                ::std::result::Result::Ok(builder.method("PUT").uri(uri))
310            }
311            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
312            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
313            builder
314        };
315        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_start_workflow_run::ser_start_workflow_run_input(&input)?);
316        if let Some(content_length) = body.content_length() {
317            let content_length = content_length.to_string();
318            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
319        }
320        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
321    }
322}
323#[derive(Debug)]
324struct StartWorkflowRunEndpointParamsInterceptor;
325
326#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
327impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StartWorkflowRunEndpointParamsInterceptor {
328    fn name(&self) -> &'static str {
329        "StartWorkflowRunEndpointParamsInterceptor"
330    }
331
332    fn read_before_execution(
333        &self,
334        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
335            '_,
336            ::aws_smithy_runtime_api::client::interceptors::context::Input,
337            ::aws_smithy_runtime_api::client::interceptors::context::Output,
338            ::aws_smithy_runtime_api::client::interceptors::context::Error,
339        >,
340        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
341    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
342        let _input = context
343            .input()
344            .downcast_ref::<StartWorkflowRunInput>()
345            .ok_or("failed to downcast to StartWorkflowRunInput")?;
346
347        let params = crate::config::endpoint::Params::builder()
348            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
349            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
350            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
351            .build()
352            .map_err(|err| {
353                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
354            })?;
355        cfg.interceptor_state()
356            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
357        ::std::result::Result::Ok(())
358    }
359}
360
361// The get_* functions below are generated from JMESPath expressions in the
362// operationContextParams trait. They target the operation's input shape.
363
364/// Error type for the `StartWorkflowRunError` operation.
365#[non_exhaustive]
366#[derive(::std::fmt::Debug)]
367pub enum StartWorkflowRunError {
368    /// <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>
369    AccessDeniedException(crate::types::error::AccessDeniedException),
370    /// <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>
371    ConflictException(crate::types::error::ConflictException),
372    /// <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>
373    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
374    /// <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>
375    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
376    /// <p>The request was denied due to request throttling.</p>
377    ThrottlingException(crate::types::error::ThrottlingException),
378    /// <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>
379    ValidationException(crate::types::error::ValidationException),
380    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
381    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
382    variable wildcard pattern and check `.code()`:
383     \
384    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
385     \
386    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-StartWorkflowRunError) for what information is available for the error.")]
387    Unhandled(crate::error::sealed_unhandled::Unhandled),
388}
389impl StartWorkflowRunError {
390    /// Creates the `StartWorkflowRunError::Unhandled` variant from any error type.
391    pub fn unhandled(
392        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
393    ) -> Self {
394        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
395            source: err.into(),
396            meta: ::std::default::Default::default(),
397        })
398    }
399
400    /// Creates the `StartWorkflowRunError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
401    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
402        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
403            source: err.clone().into(),
404            meta: err,
405        })
406    }
407    ///
408    /// Returns error metadata, which includes the error code, message,
409    /// request ID, and potentially additional information.
410    ///
411    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
412        match self {
413            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
414            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
415            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
416            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
417            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
418            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
419            Self::Unhandled(e) => &e.meta,
420        }
421    }
422    /// Returns `true` if the error kind is `StartWorkflowRunError::AccessDeniedException`.
423    pub fn is_access_denied_exception(&self) -> bool {
424        matches!(self, Self::AccessDeniedException(_))
425    }
426    /// Returns `true` if the error kind is `StartWorkflowRunError::ConflictException`.
427    pub fn is_conflict_exception(&self) -> bool {
428        matches!(self, Self::ConflictException(_))
429    }
430    /// Returns `true` if the error kind is `StartWorkflowRunError::ResourceNotFoundException`.
431    pub fn is_resource_not_found_exception(&self) -> bool {
432        matches!(self, Self::ResourceNotFoundException(_))
433    }
434    /// Returns `true` if the error kind is `StartWorkflowRunError::ServiceQuotaExceededException`.
435    pub fn is_service_quota_exceeded_exception(&self) -> bool {
436        matches!(self, Self::ServiceQuotaExceededException(_))
437    }
438    /// Returns `true` if the error kind is `StartWorkflowRunError::ThrottlingException`.
439    pub fn is_throttling_exception(&self) -> bool {
440        matches!(self, Self::ThrottlingException(_))
441    }
442    /// Returns `true` if the error kind is `StartWorkflowRunError::ValidationException`.
443    pub fn is_validation_exception(&self) -> bool {
444        matches!(self, Self::ValidationException(_))
445    }
446}
447impl ::std::error::Error for StartWorkflowRunError {
448    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
449        match self {
450            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
451            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
452            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
453            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
454            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
455            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
456            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
457        }
458    }
459}
460impl ::std::fmt::Display for StartWorkflowRunError {
461    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
462        match self {
463            Self::AccessDeniedException(_inner) => _inner.fmt(f),
464            Self::ConflictException(_inner) => _inner.fmt(f),
465            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
466            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
467            Self::ThrottlingException(_inner) => _inner.fmt(f),
468            Self::ValidationException(_inner) => _inner.fmt(f),
469            Self::Unhandled(_inner) => {
470                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
471                    write!(f, "unhandled error ({code})")
472                } else {
473                    f.write_str("unhandled error")
474                }
475            }
476        }
477    }
478}
479impl ::aws_smithy_types::retry::ProvideErrorKind for StartWorkflowRunError {
480    fn code(&self) -> ::std::option::Option<&str> {
481        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
482    }
483    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
484        match self {
485            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
486            _ => ::std::option::Option::None,
487        }
488    }
489}
490impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for StartWorkflowRunError {
491    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
492        match self {
493            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
494            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
495            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
496            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
497            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
498            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
499            Self::Unhandled(_inner) => &_inner.meta,
500        }
501    }
502}
503impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for StartWorkflowRunError {
504    fn create_unhandled_error(
505        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
506        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
507    ) -> Self {
508        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
509            source,
510            meta: meta.unwrap_or_default(),
511        })
512    }
513}
514impl ::aws_types::request_id::RequestId for crate::operation::start_workflow_run::StartWorkflowRunError {
515    fn request_id(&self) -> Option<&str> {
516        self.meta().request_id()
517    }
518}
519
520pub use crate::operation::start_workflow_run::_start_workflow_run_input::StartWorkflowRunInput;
521
522pub use crate::operation::start_workflow_run::_start_workflow_run_output::StartWorkflowRunOutput;
523
524mod _start_workflow_run_input;
525
526mod _start_workflow_run_output;
527
528/// Builders
529pub mod builders;