Skip to main content

aws_sdk_codecatalyst/operation/
create_project.rs

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