aws_sdk_mwaaserverless/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("MWAA Serverless", "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                "MWAA Serverless.StartWorkflowRun",
59                "rpc.service" = "MWAA Serverless",
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            "MWAA Serverless",
115        ));
116        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
117        signing_options.double_uri_encode = true;
118        signing_options.content_sha256_header = false;
119        signing_options.normalize_uri_path = true;
120        signing_options.payload_override = None;
121
122        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
123            signing_options,
124            ..::std::default::Default::default()
125        });
126
127        ::std::option::Option::Some(cfg.freeze())
128    }
129
130    fn runtime_components(
131        &self,
132        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
133    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
134        #[allow(unused_mut)]
135        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("StartWorkflowRun")
136            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
137            .with_interceptor(StartWorkflowRunEndpointParamsInterceptor)
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
139                crate::operation::start_workflow_run::StartWorkflowRunError,
140            >::new())
141            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
142                crate::operation::start_workflow_run::StartWorkflowRunError,
143            >::new())
144            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
145                crate::operation::start_workflow_run::StartWorkflowRunError,
146            >::new());
147
148        ::std::borrow::Cow::Owned(rcb)
149    }
150}
151
152#[derive(Debug)]
153struct StartWorkflowRunResponseDeserializer;
154impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for StartWorkflowRunResponseDeserializer {
155    fn deserialize_nonstreaming(
156        &self,
157        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
158    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
159        let (success, status) = (response.status().is_success(), response.status().as_u16());
160        let headers = response.headers();
161        let body = response.body().bytes().expect("body loaded");
162        #[allow(unused_mut)]
163        let mut force_error = false;
164        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
165        let parse_result = if !success && status != 200 || force_error {
166            crate::protocol_serde::shape_start_workflow_run::de_start_workflow_run_http_error(status, headers, body)
167        } else {
168            crate::protocol_serde::shape_start_workflow_run::de_start_workflow_run_http_response(status, headers, body)
169        };
170        crate::protocol_serde::type_erase_result(parse_result)
171    }
172}
173#[derive(Debug)]
174struct StartWorkflowRunRequestSerializer;
175impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for StartWorkflowRunRequestSerializer {
176    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
177    fn serialize_input(
178        &self,
179        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
180        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
181    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
182        let input = input
183            .downcast::<crate::operation::start_workflow_run::StartWorkflowRunInput>()
184            .expect("correct type");
185        let _header_serialization_settings = _cfg
186            .load::<crate::serialization_settings::HeaderSerializationSettings>()
187            .cloned()
188            .unwrap_or_default();
189        let mut request_builder = {
190            #[allow(clippy::uninlined_format_args)]
191            fn uri_base(
192                _input: &crate::operation::start_workflow_run::StartWorkflowRunInput,
193                output: &mut ::std::string::String,
194            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
195                use ::std::fmt::Write as _;
196                ::std::write!(output, "/").expect("formatting should succeed");
197                ::std::result::Result::Ok(())
198            }
199            #[allow(clippy::unnecessary_wraps)]
200            fn update_http_builder(
201                input: &crate::operation::start_workflow_run::StartWorkflowRunInput,
202                builder: ::http::request::Builder,
203            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
204                let mut uri = ::std::string::String::new();
205                uri_base(input, &mut uri)?;
206                ::std::result::Result::Ok(builder.method("POST").uri(uri))
207            }
208            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
209            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.0");
210            builder = _header_serialization_settings.set_default_header(
211                builder,
212                ::http::header::HeaderName::from_static("x-amz-target"),
213                "AmazonMWAAServerless.StartWorkflowRun",
214            );
215            builder
216        };
217        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_start_workflow_run::ser_start_workflow_run_input(&input)?);
218        if let Some(content_length) = body.content_length() {
219            let content_length = content_length.to_string();
220            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
221        }
222        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
223    }
224}
225#[derive(Debug)]
226struct StartWorkflowRunEndpointParamsInterceptor;
227
228impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StartWorkflowRunEndpointParamsInterceptor {
229    fn name(&self) -> &'static str {
230        "StartWorkflowRunEndpointParamsInterceptor"
231    }
232
233    fn read_before_execution(
234        &self,
235        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
236            '_,
237            ::aws_smithy_runtime_api::client::interceptors::context::Input,
238            ::aws_smithy_runtime_api::client::interceptors::context::Output,
239            ::aws_smithy_runtime_api::client::interceptors::context::Error,
240        >,
241        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
242    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
243        let _input = context
244            .input()
245            .downcast_ref::<StartWorkflowRunInput>()
246            .ok_or("failed to downcast to StartWorkflowRunInput")?;
247
248        let params = crate::config::endpoint::Params::builder()
249            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
250            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
251            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
252            .build()
253            .map_err(|err| {
254                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
255            })?;
256        cfg.interceptor_state()
257            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
258        ::std::result::Result::Ok(())
259    }
260}
261
262// The get_* functions below are generated from JMESPath expressions in the
263// operationContextParams trait. They target the operation's input shape.
264
265/// Error type for the `StartWorkflowRunError` operation.
266#[non_exhaustive]
267#[derive(::std::fmt::Debug)]
268pub enum StartWorkflowRunError {
269    /// <p>You do not have sufficient permission to perform this action.</p>
270    AccessDeniedException(crate::types::error::AccessDeniedException),
271    /// <p>You cannot create a resource that already exists, or the resource is in a state that prevents the requested operation.</p>
272    ConflictException(crate::types::error::ConflictException),
273    /// <p>An unexpected server-side error occurred during request processing.</p>
274    InternalServerException(crate::types::error::InternalServerException),
275    /// <p>The operation timed out.</p>
276    OperationTimeoutException(crate::types::error::OperationTimeoutException),
277    /// <p>The specified resource was not found. You can only access or modify a resource that already exists.</p>
278    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
279    /// <p>The request exceeds the service quota for Amazon Managed Workflows for Apache Airflow Serverless resources. This can occur when you attempt to create more workflows than allowed, exceed concurrent workflow run limits, or surpass task execution limits. Amazon Managed Workflows for Apache Airflow Serverless implements admission control using DynamoDB-based counters to manage resource utilization across the multi-tenant environment. Contact Amazon Web Services Support to request quota increases if you need higher limits for your use case.</p>
280    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
281    /// <p>The request was denied because too many requests were made in a short period, exceeding the service rate limits. Amazon Managed Workflows for Apache Airflow Serverless implements throttling controls to ensure fair resource allocation across all customers in the multi-tenant environment. This helps maintain service stability and performance. If you encounter throttling, implement exponential backoff and retry logic in your applications, or consider distributing your API calls over a longer time period.</p>
282    ThrottlingException(crate::types::error::ThrottlingException),
283    /// <p>The specified request parameters are invalid, missing, or inconsistent with Amazon Managed Workflows for Apache Airflow Serverless service requirements. This can occur when workflow definitions contain unsupported operators, when required IAM permissions are missing, when S3 locations are inaccessible, or when network configurations are invalid. The service validates workflow definitions, execution roles, and resource configurations to ensure compatibility with the managed Airflow environment and security requirements.</p>
284    ValidationException(crate::types::error::ValidationException),
285    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
286    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
287    variable wildcard pattern and check `.code()`:
288     \
289    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
290     \
291    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-StartWorkflowRunError) for what information is available for the error.")]
292    Unhandled(crate::error::sealed_unhandled::Unhandled),
293}
294impl StartWorkflowRunError {
295    /// Creates the `StartWorkflowRunError::Unhandled` variant from any error type.
296    pub fn unhandled(
297        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
298    ) -> Self {
299        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
300            source: err.into(),
301            meta: ::std::default::Default::default(),
302        })
303    }
304
305    /// Creates the `StartWorkflowRunError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
306    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
307        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
308            source: err.clone().into(),
309            meta: err,
310        })
311    }
312    ///
313    /// Returns error metadata, which includes the error code, message,
314    /// request ID, and potentially additional information.
315    ///
316    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
317        match self {
318            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
319            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
320            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
321            Self::OperationTimeoutException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
322            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
323            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
324            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
325            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
326            Self::Unhandled(e) => &e.meta,
327        }
328    }
329    /// Returns `true` if the error kind is `StartWorkflowRunError::AccessDeniedException`.
330    pub fn is_access_denied_exception(&self) -> bool {
331        matches!(self, Self::AccessDeniedException(_))
332    }
333    /// Returns `true` if the error kind is `StartWorkflowRunError::ConflictException`.
334    pub fn is_conflict_exception(&self) -> bool {
335        matches!(self, Self::ConflictException(_))
336    }
337    /// Returns `true` if the error kind is `StartWorkflowRunError::InternalServerException`.
338    pub fn is_internal_server_exception(&self) -> bool {
339        matches!(self, Self::InternalServerException(_))
340    }
341    /// Returns `true` if the error kind is `StartWorkflowRunError::OperationTimeoutException`.
342    pub fn is_operation_timeout_exception(&self) -> bool {
343        matches!(self, Self::OperationTimeoutException(_))
344    }
345    /// Returns `true` if the error kind is `StartWorkflowRunError::ResourceNotFoundException`.
346    pub fn is_resource_not_found_exception(&self) -> bool {
347        matches!(self, Self::ResourceNotFoundException(_))
348    }
349    /// Returns `true` if the error kind is `StartWorkflowRunError::ServiceQuotaExceededException`.
350    pub fn is_service_quota_exceeded_exception(&self) -> bool {
351        matches!(self, Self::ServiceQuotaExceededException(_))
352    }
353    /// Returns `true` if the error kind is `StartWorkflowRunError::ThrottlingException`.
354    pub fn is_throttling_exception(&self) -> bool {
355        matches!(self, Self::ThrottlingException(_))
356    }
357    /// Returns `true` if the error kind is `StartWorkflowRunError::ValidationException`.
358    pub fn is_validation_exception(&self) -> bool {
359        matches!(self, Self::ValidationException(_))
360    }
361}
362impl ::std::error::Error for StartWorkflowRunError {
363    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
364        match self {
365            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
366            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
367            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
368            Self::OperationTimeoutException(_inner) => ::std::option::Option::Some(_inner),
369            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
370            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
371            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
372            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
373            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
374        }
375    }
376}
377impl ::std::fmt::Display for StartWorkflowRunError {
378    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
379        match self {
380            Self::AccessDeniedException(_inner) => _inner.fmt(f),
381            Self::ConflictException(_inner) => _inner.fmt(f),
382            Self::InternalServerException(_inner) => _inner.fmt(f),
383            Self::OperationTimeoutException(_inner) => _inner.fmt(f),
384            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
385            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
386            Self::ThrottlingException(_inner) => _inner.fmt(f),
387            Self::ValidationException(_inner) => _inner.fmt(f),
388            Self::Unhandled(_inner) => {
389                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
390                    write!(f, "unhandled error ({code})")
391                } else {
392                    f.write_str("unhandled error")
393                }
394            }
395        }
396    }
397}
398impl ::aws_smithy_types::retry::ProvideErrorKind for StartWorkflowRunError {
399    fn code(&self) -> ::std::option::Option<&str> {
400        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
401    }
402    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
403        match self {
404            Self::InternalServerException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
405            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
406            _ => ::std::option::Option::None,
407        }
408    }
409}
410impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for StartWorkflowRunError {
411    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
412        match self {
413            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
414            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
415            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
416            Self::OperationTimeoutException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
417            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
418            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
419            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
420            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
421            Self::Unhandled(_inner) => &_inner.meta,
422        }
423    }
424}
425impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for StartWorkflowRunError {
426    fn create_unhandled_error(
427        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
428        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
429    ) -> Self {
430        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
431            source,
432            meta: meta.unwrap_or_default(),
433        })
434    }
435}
436impl ::aws_types::request_id::RequestId for crate::operation::start_workflow_run::StartWorkflowRunError {
437    fn request_id(&self) -> Option<&str> {
438        self.meta().request_id()
439    }
440}
441
442pub use crate::operation::start_workflow_run::_start_workflow_run_output::StartWorkflowRunOutput;
443
444pub use crate::operation::start_workflow_run::_start_workflow_run_input::StartWorkflowRunInput;
445
446mod _start_workflow_run_input;
447
448mod _start_workflow_run_output;
449
450/// Builders
451pub mod builders;