Skip to main content

aws_sdk_supportapp/operation/
create_slack_channel_configuration.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateSlackChannelConfiguration`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateSlackChannelConfiguration;
6impl CreateSlackChannelConfiguration {
7    /// Creates a new `CreateSlackChannelConfiguration`
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_slack_channel_configuration::CreateSlackChannelConfigurationInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationError,
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_slack_channel_configuration::CreateSlackChannelConfigurationError>()
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_slack_channel_configuration::CreateSlackChannelConfigurationOutput>()
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_slack_channel_configuration::CreateSlackChannelConfigurationInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "Support App",
56            "CreateSlackChannelConfiguration",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "Support App.CreateSlackChannelConfiguration",
65            "rpc.service" = "Support App",
66            "rpc.method" = "CreateSlackChannelConfiguration",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79
80        if let ::std::option::Option::Some(config_override) = config_override {
81            for plugin in config_override.runtime_plugins.iter().cloned() {
82                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
83            }
84            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
85                config_override,
86                client_config.config.clone(),
87                &client_config.runtime_components,
88            ));
89        }
90        runtime_plugins
91    }
92}
93impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateSlackChannelConfiguration {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateSlackChannelConfiguration");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            CreateSlackChannelConfigurationRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            CreateSlackChannelConfigurationResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("CreateSlackChannelConfiguration")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "CreateSlackChannelConfiguration",
113            "Support App",
114        ));
115        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
116        signing_options.double_uri_encode = true;
117        signing_options.content_sha256_header = false;
118        signing_options.normalize_uri_path = true;
119        signing_options.payload_override = None;
120
121        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
122            signing_options,
123            ..::std::default::Default::default()
124        });
125
126        ::std::option::Option::Some(cfg.freeze())
127    }
128
129    fn runtime_components(
130        &self,
131        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
132    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
133        #[allow(unused_mut)]
134        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateSlackChannelConfiguration")
135            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
136                CreateSlackChannelConfigurationTelemetryInputCaptureInterceptor,
137            ))
138            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
139                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
140            ))
141            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
142                CreateSlackChannelConfigurationEndpointParamsInterceptor,
143            ))
144            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
145                crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationError,
146            >::new())
147            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
148                crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationError,
149            >::new())
150            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
151                crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationError,
152            >::new())
153            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
154                crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationError,
155            >::new());
156
157        ::std::borrow::Cow::Owned(rcb)
158    }
159}
160
161#[derive(Debug)]
162struct CreateSlackChannelConfigurationTelemetryInputCaptureInterceptor;
163
164#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
165impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateSlackChannelConfigurationTelemetryInputCaptureInterceptor {
166    fn name(&self) -> &'static str {
167        "CreateSlackChannelConfigurationTelemetryInputCaptureInterceptor"
168    }
169
170    fn read_before_execution(
171        &self,
172        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
173            '_,
174            ::aws_smithy_runtime_api::client::interceptors::context::Input,
175            ::aws_smithy_runtime_api::client::interceptors::context::Output,
176            ::aws_smithy_runtime_api::client::interceptors::context::Error,
177        >,
178        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
179    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
180        // Nothing to do unless the customer opted in by naming members to record.
181        let ::std::option::Option::Some(requested) = cfg
182            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
183            .filter(|r| !r.is_empty())
184        else {
185            return ::std::result::Result::Ok(());
186        };
187
188        let ::std::option::Option::Some(input) = context.input().downcast_ref::<CreateSlackChannelConfigurationInput>() else {
189            // A mismatched input is not this interceptor's concern; skip quietly.
190            return ::std::result::Result::Ok(());
191        };
192
193        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
194        if requested.should_capture("teamId") {
195            if let ::std::option::Option::Some(value) = input.team_id.as_deref() {
196                captured.insert("teamId", value);
197            }
198        }
199        if requested.should_capture("channelId") {
200            if let ::std::option::Option::Some(value) = input.channel_id.as_deref() {
201                captured.insert("channelId", value);
202            }
203        }
204        if requested.should_capture("channelName") {
205            if let ::std::option::Option::Some(value) = input.channel_name.as_deref() {
206                captured.insert("channelName", value);
207            }
208        }
209        if requested.should_capture("channelRoleArn") {
210            if let ::std::option::Option::Some(value) = input.channel_role_arn.as_deref() {
211                captured.insert("channelRoleArn", value);
212            }
213        }
214
215        cfg.interceptor_state().store_put(captured);
216        ::std::result::Result::Ok(())
217    }
218}
219#[derive(Debug)]
220struct CreateSlackChannelConfigurationResponseDeserializer;
221impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateSlackChannelConfigurationResponseDeserializer {
222    fn deserialize_nonstreaming_with_config(
223        &self,
224        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
225        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
226    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
227        let (success, status) = (response.status().is_success(), response.status().as_u16());
228        let headers = response.headers();
229        let body = response.body().bytes().expect("body loaded");
230        #[allow(unused_mut)]
231        let mut force_error = false;
232        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
233        let parse_result = if !success && status != 200 || force_error {
234            crate::protocol_serde::shape_create_slack_channel_configuration::de_create_slack_channel_configuration_http_error(status, headers, body)
235        } else {
236            crate::protocol_serde::shape_create_slack_channel_configuration::de_create_slack_channel_configuration_http_response(
237                status, headers, body,
238            )
239        };
240        crate::protocol_serde::type_erase_result(parse_result)
241    }
242}
243#[derive(Debug)]
244struct CreateSlackChannelConfigurationRequestSerializer;
245impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateSlackChannelConfigurationRequestSerializer {
246    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
247    fn serialize_input(
248        &self,
249        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
250        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
251    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
252        let input = input
253            .downcast::<crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationInput>()
254            .expect("correct type");
255        let _header_serialization_settings = _cfg
256            .load::<crate::serialization_settings::HeaderSerializationSettings>()
257            .cloned()
258            .unwrap_or_default();
259        let mut request_builder = {
260            #[allow(clippy::uninlined_format_args)]
261            fn uri_base(
262                _input: &crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationInput,
263                output: &mut ::std::string::String,
264            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
265                use ::std::fmt::Write as _;
266                ::std::write!(output, "/control/create-slack-channel-configuration").expect("formatting should succeed");
267                ::std::result::Result::Ok(())
268            }
269            #[allow(clippy::unnecessary_wraps)]
270            fn update_http_builder(
271                input: &crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationInput,
272                builder: ::http_1x::request::Builder,
273            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
274                let mut uri = ::std::string::String::new();
275                uri_base(input, &mut uri)?;
276                ::std::result::Result::Ok(builder.method("POST").uri(uri))
277            }
278            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
279            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/json");
280            builder
281        };
282        let body = ::aws_smithy_types::body::SdkBody::from(
283            crate::protocol_serde::shape_create_slack_channel_configuration::ser_create_slack_channel_configuration_input(&input)?,
284        );
285        if let Some(content_length) = body.content_length() {
286            let content_length = content_length.to_string();
287            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
288        }
289        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
290    }
291}
292#[derive(Debug)]
293struct CreateSlackChannelConfigurationEndpointParamsInterceptor;
294
295#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
296impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateSlackChannelConfigurationEndpointParamsInterceptor {
297    fn name(&self) -> &'static str {
298        "CreateSlackChannelConfigurationEndpointParamsInterceptor"
299    }
300
301    fn read_before_execution(
302        &self,
303        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
304            '_,
305            ::aws_smithy_runtime_api::client::interceptors::context::Input,
306            ::aws_smithy_runtime_api::client::interceptors::context::Output,
307            ::aws_smithy_runtime_api::client::interceptors::context::Error,
308        >,
309        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
310    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
311        let _input = context
312            .input()
313            .downcast_ref::<CreateSlackChannelConfigurationInput>()
314            .ok_or("failed to downcast to CreateSlackChannelConfigurationInput")?;
315
316        let params = crate::config::endpoint::Params::builder()
317            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
318            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
319            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
320            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
321            .build()
322            .map_err(|err| {
323                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
324            })?;
325        cfg.interceptor_state()
326            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
327        ::std::result::Result::Ok(())
328    }
329}
330
331// The get_* functions below are generated from JMESPath expressions in the
332// operationContextParams trait. They target the operation's input shape.
333
334/// Error type for the `CreateSlackChannelConfigurationError` operation.
335#[non_exhaustive]
336#[derive(::std::fmt::Debug)]
337pub enum CreateSlackChannelConfigurationError {
338    /// <p>You don't have sufficient permission to perform this action.</p>
339    AccessDeniedException(crate::types::error::AccessDeniedException),
340    /// <p>Your request has a conflict. For example, you might receive this error if you try the following:</p>
341    /// <ul>
342    /// <li>
343    /// <p>Add, update, or delete a Slack channel configuration before you add a Slack workspace to your Amazon Web Services account.</p></li>
344    /// <li>
345    /// <p>Add a Slack channel configuration that already exists in your Amazon Web Services account.</p></li>
346    /// <li>
347    /// <p>Delete a Slack channel configuration for a live chat channel.</p></li>
348    /// <li>
349    /// <p>Delete a Slack workspace from your Amazon Web Services account that has an active live chat channel.</p></li>
350    /// <li>
351    /// <p>Call the <code>RegisterSlackWorkspaceForOrganization</code> API from an Amazon Web Services account that doesn't belong to an organization.</p></li>
352    /// <li>
353    /// <p>Call the <code>RegisterSlackWorkspaceForOrganization</code> API from a member account, but the management account hasn't registered that workspace yet for the organization.</p></li>
354    /// </ul>
355    ConflictException(crate::types::error::ConflictException),
356    /// <p>We can’t process your request right now because of a server issue. Try again later.</p>
357    InternalServerException(crate::types::error::InternalServerException),
358    /// <p>Your Service Quotas request exceeds the quota for the service. For example, your Service Quotas request to Amazon Web Services Support App might exceed the maximum number of workspaces or channels per account, or the maximum number of accounts per Slack channel.</p>
359    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
360    /// <p>Your request input doesn't meet the constraints that the Amazon Web Services Support App specifies.</p>
361    ValidationException(crate::types::error::ValidationException),
362    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
363    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
364    variable wildcard pattern and check `.code()`:
365     \
366    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
367     \
368    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateSlackChannelConfigurationError) for what information is available for the error.")]
369    Unhandled(crate::error::sealed_unhandled::Unhandled),
370}
371impl CreateSlackChannelConfigurationError {
372    /// Creates the `CreateSlackChannelConfigurationError::Unhandled` variant from any error type.
373    pub fn unhandled(
374        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
375    ) -> Self {
376        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
377            source: err.into(),
378            meta: ::std::default::Default::default(),
379        })
380    }
381
382    /// Creates the `CreateSlackChannelConfigurationError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
383    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
384        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
385            source: err.clone().into(),
386            meta: err,
387        })
388    }
389    ///
390    /// Returns error metadata, which includes the error code, message,
391    /// request ID, and potentially additional information.
392    ///
393    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
394        match self {
395            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
396            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
397            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
398            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
399            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
400            Self::Unhandled(e) => &e.meta,
401        }
402    }
403    /// Returns `true` if the error kind is `CreateSlackChannelConfigurationError::AccessDeniedException`.
404    pub fn is_access_denied_exception(&self) -> bool {
405        matches!(self, Self::AccessDeniedException(_))
406    }
407    /// Returns `true` if the error kind is `CreateSlackChannelConfigurationError::ConflictException`.
408    pub fn is_conflict_exception(&self) -> bool {
409        matches!(self, Self::ConflictException(_))
410    }
411    /// Returns `true` if the error kind is `CreateSlackChannelConfigurationError::InternalServerException`.
412    pub fn is_internal_server_exception(&self) -> bool {
413        matches!(self, Self::InternalServerException(_))
414    }
415    /// Returns `true` if the error kind is `CreateSlackChannelConfigurationError::ServiceQuotaExceededException`.
416    pub fn is_service_quota_exceeded_exception(&self) -> bool {
417        matches!(self, Self::ServiceQuotaExceededException(_))
418    }
419    /// Returns `true` if the error kind is `CreateSlackChannelConfigurationError::ValidationException`.
420    pub fn is_validation_exception(&self) -> bool {
421        matches!(self, Self::ValidationException(_))
422    }
423}
424impl ::std::error::Error for CreateSlackChannelConfigurationError {
425    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
426        match self {
427            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
428            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
429            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
430            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
431            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
432            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
433        }
434    }
435}
436impl ::std::fmt::Display for CreateSlackChannelConfigurationError {
437    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
438        match self {
439            Self::AccessDeniedException(_inner) => _inner.fmt(f),
440            Self::ConflictException(_inner) => _inner.fmt(f),
441            Self::InternalServerException(_inner) => _inner.fmt(f),
442            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
443            Self::ValidationException(_inner) => _inner.fmt(f),
444            Self::Unhandled(_inner) => {
445                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
446                    write!(f, "unhandled error ({code})")
447                } else {
448                    f.write_str("unhandled error")
449                }
450            }
451        }
452    }
453}
454impl ::aws_smithy_types::retry::ProvideErrorKind for CreateSlackChannelConfigurationError {
455    fn code(&self) -> ::std::option::Option<&str> {
456        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
457    }
458    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
459        ::std::option::Option::None
460    }
461}
462impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateSlackChannelConfigurationError {
463    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
464        match self {
465            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
466            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
467            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
468            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
469            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
470            Self::Unhandled(_inner) => &_inner.meta,
471        }
472    }
473}
474impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateSlackChannelConfigurationError {
475    fn create_unhandled_error(
476        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
477        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
478    ) -> Self {
479        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
480            source,
481            meta: meta.unwrap_or_default(),
482        })
483    }
484}
485impl ::aws_types::request_id::RequestId for crate::operation::create_slack_channel_configuration::CreateSlackChannelConfigurationError {
486    fn request_id(&self) -> Option<&str> {
487        self.meta().request_id()
488    }
489}
490
491pub use crate::operation::create_slack_channel_configuration::_create_slack_channel_configuration_input::CreateSlackChannelConfigurationInput;
492
493pub use crate::operation::create_slack_channel_configuration::_create_slack_channel_configuration_output::CreateSlackChannelConfigurationOutput;
494
495mod _create_slack_channel_configuration_input;
496
497mod _create_slack_channel_configuration_output;
498
499/// Builders
500pub mod builders;