Skip to main content

aws_sdk_cloudtrail/operation/
stop_logging.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `StopLogging`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct StopLogging;
6impl StopLogging {
7    /// Creates a new `StopLogging`
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::stop_logging::StopLoggingInput,
14    ) -> ::std::result::Result<
15        crate::operation::stop_logging::StopLoggingOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::stop_logging::StopLoggingError,
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::stop_logging::StopLoggingError>()
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::stop_logging::StopLoggingOutput>()
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::stop_logging::StopLoggingInput,
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("CloudTrail", "StopLogging", 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                "CloudTrail.StopLogging",
59                "rpc.service" = "CloudTrail",
60                "rpc.method" = "StopLogging",
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 StopLogging {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("StopLogging");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            StopLoggingRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            StopLoggingResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("StopLogging")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("StopLogging", "CloudTrail"));
106        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
107        signing_options.double_uri_encode = true;
108        signing_options.content_sha256_header = false;
109        signing_options.normalize_uri_path = true;
110        signing_options.payload_override = None;
111
112        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
113            signing_options,
114            ..::std::default::Default::default()
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("StopLogging")
126            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
127                StopLoggingTelemetryInputCaptureInterceptor,
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                StopLoggingEndpointParamsInterceptor,
134            ))
135            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
136                crate::operation::stop_logging::StopLoggingError,
137            >::new())
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
139                crate::operation::stop_logging::StopLoggingError,
140            >::new())
141            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
142                crate::operation::stop_logging::StopLoggingError,
143            >::new());
144
145        ::std::borrow::Cow::Owned(rcb)
146    }
147}
148
149#[derive(Debug)]
150struct StopLoggingTelemetryInputCaptureInterceptor;
151
152#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
153impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StopLoggingTelemetryInputCaptureInterceptor {
154    fn name(&self) -> &'static str {
155        "StopLoggingTelemetryInputCaptureInterceptor"
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::<StopLoggingInput>() 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("Name") {
183            if let ::std::option::Option::Some(value) = input.name.as_deref() {
184                captured.insert("Name", value);
185            }
186        }
187
188        cfg.interceptor_state().store_put(captured);
189        ::std::result::Result::Ok(())
190    }
191}
192#[derive(Debug)]
193struct StopLoggingResponseDeserializer;
194impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for StopLoggingResponseDeserializer {
195    fn deserialize_nonstreaming_with_config(
196        &self,
197        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
198        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
199    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
200        let (success, status) = (response.status().is_success(), response.status().as_u16());
201        let headers = response.headers();
202        let body = response.body().bytes().expect("body loaded");
203        #[allow(unused_mut)]
204        let mut force_error = false;
205        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
206        let parse_result = if !success && status != 200 || force_error {
207            crate::protocol_serde::shape_stop_logging::de_stop_logging_http_error(status, headers, body)
208        } else {
209            crate::protocol_serde::shape_stop_logging::de_stop_logging_http_response(status, headers, body)
210        };
211        crate::protocol_serde::type_erase_result(parse_result)
212    }
213}
214#[derive(Debug)]
215struct StopLoggingRequestSerializer;
216impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for StopLoggingRequestSerializer {
217    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
218    fn serialize_input(
219        &self,
220        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
221        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
222    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
223        let input = input
224            .downcast::<crate::operation::stop_logging::StopLoggingInput>()
225            .expect("correct type");
226        let _header_serialization_settings = _cfg
227            .load::<crate::serialization_settings::HeaderSerializationSettings>()
228            .cloned()
229            .unwrap_or_default();
230        let mut request_builder = {
231            #[allow(clippy::uninlined_format_args)]
232            fn uri_base(
233                _input: &crate::operation::stop_logging::StopLoggingInput,
234                output: &mut ::std::string::String,
235            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
236                use ::std::fmt::Write as _;
237                ::std::write!(output, "/").expect("formatting should succeed");
238                ::std::result::Result::Ok(())
239            }
240            #[allow(clippy::unnecessary_wraps)]
241            fn update_http_builder(
242                input: &crate::operation::stop_logging::StopLoggingInput,
243                builder: ::http_1x::request::Builder,
244            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
245                let mut uri = ::std::string::String::new();
246                uri_base(input, &mut uri)?;
247                ::std::result::Result::Ok(builder.method("POST").uri(uri))
248            }
249            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
250            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.1");
251            builder = _header_serialization_settings.set_default_header(
252                builder,
253                ::http_1x::header::HeaderName::from_static("x-amz-target"),
254                "CloudTrail_20131101.StopLogging",
255            );
256            builder
257        };
258        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_stop_logging::ser_stop_logging_input(&input)?);
259        if let Some(content_length) = body.content_length() {
260            let content_length = content_length.to_string();
261            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
262        }
263        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
264    }
265}
266#[derive(Debug)]
267struct StopLoggingEndpointParamsInterceptor;
268
269#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
270impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StopLoggingEndpointParamsInterceptor {
271    fn name(&self) -> &'static str {
272        "StopLoggingEndpointParamsInterceptor"
273    }
274
275    fn read_before_execution(
276        &self,
277        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
278            '_,
279            ::aws_smithy_runtime_api::client::interceptors::context::Input,
280            ::aws_smithy_runtime_api::client::interceptors::context::Output,
281            ::aws_smithy_runtime_api::client::interceptors::context::Error,
282        >,
283        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
284    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
285        let _input = context
286            .input()
287            .downcast_ref::<StopLoggingInput>()
288            .ok_or("failed to downcast to StopLoggingInput")?;
289
290        let params = crate::config::endpoint::Params::builder()
291            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
292            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
293            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
294            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
295            .build()
296            .map_err(|err| {
297                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
298            })?;
299        cfg.interceptor_state()
300            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
301        ::std::result::Result::Ok(())
302    }
303}
304
305// The get_* functions below are generated from JMESPath expressions in the
306// operationContextParams trait. They target the operation's input shape.
307
308/// Error type for the `StopLoggingError` operation.
309#[non_exhaustive]
310#[derive(::std::fmt::Debug)]
311pub enum StopLoggingError {
312    /// <p>This exception is thrown when an operation is called with an ARN that is not valid.</p>
313    /// <p>The following is the format of a trail ARN: <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code></p>
314    /// <p>The following is the format of an event data store ARN: <code>arn:aws:cloudtrail:us-east-2:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE</code></p>
315    /// <p>The following is the format of a dashboard ARN: <code>arn:aws:cloudtrail:us-east-1:123456789012:dashboard/exampleDash</code></p>
316    /// <p>The following is the format of a channel ARN: <code>arn:aws:cloudtrail:us-east-2:123456789012:channel/01234567890</code></p>
317    CloudTrailArnInvalidException(crate::types::error::CloudTrailArnInvalidException),
318    /// <p>This exception is thrown when the specified resource is not ready for an operation. This can occur when you try to run an operation on a resource before CloudTrail has time to fully load the resource, or because another operation is modifying the resource. If this exception occurs, wait a few minutes, and then try the operation again.</p>
319    ConflictException(crate::types::error::ConflictException),
320    /// <p>This exception is thrown when the IAM identity that is used to create the organization resource lacks one or more required permissions for creating an organization resource in a required service.</p>
321    InsufficientDependencyServiceAccessPermissionException(crate::types::error::InsufficientDependencyServiceAccessPermissionException),
322    /// <p>This exception is thrown when an operation is called on a trail from a Region other than the Region in which the trail was created.</p>
323    InvalidHomeRegionException(crate::types::error::InvalidHomeRegionException),
324    /// <p>This exception is thrown when the provided trail name is not valid. Trail names must meet the following requirements:</p>
325    /// <ul>
326    /// <li>
327    /// <p>Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-)</p></li>
328    /// <li>
329    /// <p>Start with a letter or number, and end with a letter or number</p></li>
330    /// <li>
331    /// <p>Be between 3 and 128 characters</p></li>
332    /// <li>
333    /// <p>Have no adjacent periods, underscores or dashes. Names like <code>my-_namespace</code> and <code>my--namespace</code> are not valid.</p></li>
334    /// <li>
335    /// <p>Not be in IP address format (for example, 192.168.5.4)</p></li>
336    /// </ul>
337    InvalidTrailNameException(crate::types::error::InvalidTrailNameException),
338    /// <p>This exception is thrown when the management account does not have a service-linked role.</p>
339    NoManagementAccountSlrExistsException(crate::types::error::NoManagementAccountSlrExistsException),
340    /// <p>This exception is thrown when the Amazon Web Services account making the request to create or update an organization trail or event data store is not the management account for an organization in Organizations. For more information, see <a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-an-organizational-trail-prepare.html">Prepare For Creating a Trail For Your Organization</a> or <a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-organizations.html">Organization event data stores</a>.</p>
341    NotOrganizationMasterAccountException(crate::types::error::NotOrganizationMasterAccountException),
342    /// <p>This exception is thrown when the requested operation is not permitted.</p>
343    OperationNotPermittedException(crate::types::error::OperationNotPermittedException),
344    /// <p>This exception is thrown when the request rate exceeds the limit.</p>
345    ThrottlingException(crate::types::error::ThrottlingException),
346    /// <p>This exception is thrown when the trail with the given name is not found.</p>
347    TrailNotFoundException(crate::types::error::TrailNotFoundException),
348    /// <p>This exception is thrown when the requested operation is not supported.</p>
349    UnsupportedOperationException(crate::types::error::UnsupportedOperationException),
350    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
351    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
352    variable wildcard pattern and check `.code()`:
353     \
354    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
355     \
356    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-StopLoggingError) for what information is available for the error.")]
357    Unhandled(crate::error::sealed_unhandled::Unhandled),
358}
359impl StopLoggingError {
360    /// Creates the `StopLoggingError::Unhandled` variant from any error type.
361    pub fn unhandled(
362        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
363    ) -> Self {
364        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
365            source: err.into(),
366            meta: ::std::default::Default::default(),
367        })
368    }
369
370    /// Creates the `StopLoggingError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
371    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
372        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
373            source: err.clone().into(),
374            meta: err,
375        })
376    }
377    ///
378    /// Returns error metadata, which includes the error code, message,
379    /// request ID, and potentially additional information.
380    ///
381    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
382        match self {
383            Self::CloudTrailArnInvalidException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
384            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
385            Self::InsufficientDependencyServiceAccessPermissionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
386            Self::InvalidHomeRegionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
387            Self::InvalidTrailNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
388            Self::NoManagementAccountSlrExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
389            Self::NotOrganizationMasterAccountException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
390            Self::OperationNotPermittedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
391            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
392            Self::TrailNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
393            Self::UnsupportedOperationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
394            Self::Unhandled(e) => &e.meta,
395        }
396    }
397    /// Returns `true` if the error kind is `StopLoggingError::CloudTrailArnInvalidException`.
398    pub fn is_cloud_trail_arn_invalid_exception(&self) -> bool {
399        matches!(self, Self::CloudTrailArnInvalidException(_))
400    }
401    /// Returns `true` if the error kind is `StopLoggingError::ConflictException`.
402    pub fn is_conflict_exception(&self) -> bool {
403        matches!(self, Self::ConflictException(_))
404    }
405    /// Returns `true` if the error kind is `StopLoggingError::InsufficientDependencyServiceAccessPermissionException`.
406    pub fn is_insufficient_dependency_service_access_permission_exception(&self) -> bool {
407        matches!(self, Self::InsufficientDependencyServiceAccessPermissionException(_))
408    }
409    /// Returns `true` if the error kind is `StopLoggingError::InvalidHomeRegionException`.
410    pub fn is_invalid_home_region_exception(&self) -> bool {
411        matches!(self, Self::InvalidHomeRegionException(_))
412    }
413    /// Returns `true` if the error kind is `StopLoggingError::InvalidTrailNameException`.
414    pub fn is_invalid_trail_name_exception(&self) -> bool {
415        matches!(self, Self::InvalidTrailNameException(_))
416    }
417    /// Returns `true` if the error kind is `StopLoggingError::NoManagementAccountSlrExistsException`.
418    pub fn is_no_management_account_slr_exists_exception(&self) -> bool {
419        matches!(self, Self::NoManagementAccountSlrExistsException(_))
420    }
421    /// Returns `true` if the error kind is `StopLoggingError::NotOrganizationMasterAccountException`.
422    pub fn is_not_organization_master_account_exception(&self) -> bool {
423        matches!(self, Self::NotOrganizationMasterAccountException(_))
424    }
425    /// Returns `true` if the error kind is `StopLoggingError::OperationNotPermittedException`.
426    pub fn is_operation_not_permitted_exception(&self) -> bool {
427        matches!(self, Self::OperationNotPermittedException(_))
428    }
429    /// Returns `true` if the error kind is `StopLoggingError::ThrottlingException`.
430    pub fn is_throttling_exception(&self) -> bool {
431        matches!(self, Self::ThrottlingException(_))
432    }
433    /// Returns `true` if the error kind is `StopLoggingError::TrailNotFoundException`.
434    pub fn is_trail_not_found_exception(&self) -> bool {
435        matches!(self, Self::TrailNotFoundException(_))
436    }
437    /// Returns `true` if the error kind is `StopLoggingError::UnsupportedOperationException`.
438    pub fn is_unsupported_operation_exception(&self) -> bool {
439        matches!(self, Self::UnsupportedOperationException(_))
440    }
441}
442impl ::std::error::Error for StopLoggingError {
443    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
444        match self {
445            Self::CloudTrailArnInvalidException(_inner) => ::std::option::Option::Some(_inner),
446            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
447            Self::InsufficientDependencyServiceAccessPermissionException(_inner) => ::std::option::Option::Some(_inner),
448            Self::InvalidHomeRegionException(_inner) => ::std::option::Option::Some(_inner),
449            Self::InvalidTrailNameException(_inner) => ::std::option::Option::Some(_inner),
450            Self::NoManagementAccountSlrExistsException(_inner) => ::std::option::Option::Some(_inner),
451            Self::NotOrganizationMasterAccountException(_inner) => ::std::option::Option::Some(_inner),
452            Self::OperationNotPermittedException(_inner) => ::std::option::Option::Some(_inner),
453            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
454            Self::TrailNotFoundException(_inner) => ::std::option::Option::Some(_inner),
455            Self::UnsupportedOperationException(_inner) => ::std::option::Option::Some(_inner),
456            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
457        }
458    }
459}
460impl ::std::fmt::Display for StopLoggingError {
461    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
462        match self {
463            Self::CloudTrailArnInvalidException(_inner) => _inner.fmt(f),
464            Self::ConflictException(_inner) => _inner.fmt(f),
465            Self::InsufficientDependencyServiceAccessPermissionException(_inner) => _inner.fmt(f),
466            Self::InvalidHomeRegionException(_inner) => _inner.fmt(f),
467            Self::InvalidTrailNameException(_inner) => _inner.fmt(f),
468            Self::NoManagementAccountSlrExistsException(_inner) => _inner.fmt(f),
469            Self::NotOrganizationMasterAccountException(_inner) => _inner.fmt(f),
470            Self::OperationNotPermittedException(_inner) => _inner.fmt(f),
471            Self::ThrottlingException(_inner) => _inner.fmt(f),
472            Self::TrailNotFoundException(_inner) => _inner.fmt(f),
473            Self::UnsupportedOperationException(_inner) => _inner.fmt(f),
474            Self::Unhandled(_inner) => {
475                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
476                    write!(f, "unhandled error ({code})")
477                } else {
478                    f.write_str("unhandled error")
479                }
480            }
481        }
482    }
483}
484impl ::aws_smithy_types::retry::ProvideErrorKind for StopLoggingError {
485    fn code(&self) -> ::std::option::Option<&str> {
486        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
487    }
488    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
489        ::std::option::Option::None
490    }
491}
492impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for StopLoggingError {
493    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
494        match self {
495            Self::CloudTrailArnInvalidException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
496            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
497            Self::InsufficientDependencyServiceAccessPermissionException(_inner) => {
498                ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
499            }
500            Self::InvalidHomeRegionException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
501            Self::InvalidTrailNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
502            Self::NoManagementAccountSlrExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
503            Self::NotOrganizationMasterAccountException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
504            Self::OperationNotPermittedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
505            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
506            Self::TrailNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
507            Self::UnsupportedOperationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
508            Self::Unhandled(_inner) => &_inner.meta,
509        }
510    }
511}
512impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for StopLoggingError {
513    fn create_unhandled_error(
514        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
515        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
516    ) -> Self {
517        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
518            source,
519            meta: meta.unwrap_or_default(),
520        })
521    }
522}
523impl ::aws_types::request_id::RequestId for crate::operation::stop_logging::StopLoggingError {
524    fn request_id(&self) -> Option<&str> {
525        self.meta().request_id()
526    }
527}
528
529pub use crate::operation::stop_logging::_stop_logging_input::StopLoggingInput;
530
531pub use crate::operation::stop_logging::_stop_logging_output::StopLoggingOutput;
532
533mod _stop_logging_input;
534
535mod _stop_logging_output;
536
537/// Builders
538pub mod builders;