aws_sdk_verifiedpermissions/operation/
delete_policy.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DeletePolicy`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DeletePolicy;
6impl DeletePolicy {
7    /// Creates a new `DeletePolicy`
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::delete_policy::DeletePolicyInput,
14    ) -> ::std::result::Result<
15        crate::operation::delete_policy::DeletePolicyOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::delete_policy::DeletePolicyError,
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::delete_policy::DeletePolicyError>()
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::delete_policy::DeletePolicyOutput>()
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::delete_policy::DeletePolicyInput,
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("VerifiedPermissions", "DeletePolicy", 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                "VerifiedPermissions.DeletePolicy",
59                "rpc.service" = "VerifiedPermissions",
60                "rpc.method" = "DeletePolicy",
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 DeletePolicy {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DeletePolicy");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            DeletePolicyRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            DeletePolicyResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("DeletePolicy")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
106            "DeletePolicy",
107            "VerifiedPermissions",
108        ));
109        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
110        signing_options.double_uri_encode = true;
111        signing_options.content_sha256_header = false;
112        signing_options.normalize_uri_path = true;
113        signing_options.payload_override = None;
114
115        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
116            signing_options,
117            ..::std::default::Default::default()
118        });
119
120        ::std::option::Option::Some(cfg.freeze())
121    }
122
123    fn runtime_components(
124        &self,
125        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
126    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
127        #[allow(unused_mut)]
128        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DeletePolicy")
129            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
130            .with_interceptor(DeletePolicyEndpointParamsInterceptor)
131            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
132                crate::operation::delete_policy::DeletePolicyError,
133            >::new())
134            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
135                crate::operation::delete_policy::DeletePolicyError,
136            >::new())
137            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
138                crate::operation::delete_policy::DeletePolicyError,
139            >::new());
140
141        ::std::borrow::Cow::Owned(rcb)
142    }
143}
144
145#[derive(Debug)]
146struct DeletePolicyResponseDeserializer;
147impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DeletePolicyResponseDeserializer {
148    fn deserialize_nonstreaming(
149        &self,
150        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
151    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
152        let (success, status) = (response.status().is_success(), response.status().as_u16());
153        let headers = response.headers();
154        let body = response.body().bytes().expect("body loaded");
155        #[allow(unused_mut)]
156        let mut force_error = false;
157        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
158        let parse_result = if !success && status != 200 || force_error {
159            crate::protocol_serde::shape_delete_policy::de_delete_policy_http_error(status, headers, body)
160        } else {
161            crate::protocol_serde::shape_delete_policy::de_delete_policy_http_response(status, headers, body)
162        };
163        crate::protocol_serde::type_erase_result(parse_result)
164    }
165}
166#[derive(Debug)]
167struct DeletePolicyRequestSerializer;
168impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DeletePolicyRequestSerializer {
169    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
170    fn serialize_input(
171        &self,
172        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
173        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
174    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
175        let input = input
176            .downcast::<crate::operation::delete_policy::DeletePolicyInput>()
177            .expect("correct type");
178        let _header_serialization_settings = _cfg
179            .load::<crate::serialization_settings::HeaderSerializationSettings>()
180            .cloned()
181            .unwrap_or_default();
182        let mut request_builder = {
183            fn uri_base(
184                _input: &crate::operation::delete_policy::DeletePolicyInput,
185                output: &mut ::std::string::String,
186            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
187                use ::std::fmt::Write as _;
188                ::std::write!(output, "/").expect("formatting should succeed");
189                ::std::result::Result::Ok(())
190            }
191            #[allow(clippy::unnecessary_wraps)]
192            fn update_http_builder(
193                input: &crate::operation::delete_policy::DeletePolicyInput,
194                builder: ::http::request::Builder,
195            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
196                let mut uri = ::std::string::String::new();
197                uri_base(input, &mut uri)?;
198                ::std::result::Result::Ok(builder.method("POST").uri(uri))
199            }
200            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
201            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.0");
202            builder = _header_serialization_settings.set_default_header(
203                builder,
204                ::http::header::HeaderName::from_static("x-amz-target"),
205                "VerifiedPermissions.DeletePolicy",
206            );
207            builder
208        };
209        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_delete_policy::ser_delete_policy_input(&input)?);
210        if let Some(content_length) = body.content_length() {
211            let content_length = content_length.to_string();
212            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
213        }
214        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
215    }
216}
217#[derive(Debug)]
218struct DeletePolicyEndpointParamsInterceptor;
219
220impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DeletePolicyEndpointParamsInterceptor {
221    fn name(&self) -> &'static str {
222        "DeletePolicyEndpointParamsInterceptor"
223    }
224
225    fn read_before_execution(
226        &self,
227        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
228            '_,
229            ::aws_smithy_runtime_api::client::interceptors::context::Input,
230            ::aws_smithy_runtime_api::client::interceptors::context::Output,
231            ::aws_smithy_runtime_api::client::interceptors::context::Error,
232        >,
233        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
234    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
235        let _input = context
236            .input()
237            .downcast_ref::<DeletePolicyInput>()
238            .ok_or("failed to downcast to DeletePolicyInput")?;
239
240        let params = crate::config::endpoint::Params::builder()
241            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
242            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
243            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
244            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
245            .build()
246            .map_err(|err| {
247                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
248            })?;
249        cfg.interceptor_state()
250            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
251        ::std::result::Result::Ok(())
252    }
253}
254
255// The get_* functions below are generated from JMESPath expressions in the
256// operationContextParams trait. They target the operation's input shape.
257
258/// Error type for the `DeletePolicyError` operation.
259#[non_exhaustive]
260#[derive(::std::fmt::Debug)]
261pub enum DeletePolicyError {
262    /// <p>The request failed because another request to modify a resource occurred at the same.</p>
263    ConflictException(crate::types::error::ConflictException),
264    /// <p>The request failed because it references a resource that doesn't exist.</p>
265    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
266    /// <p>You don't have sufficient access to perform this action.</p>
267    AccessDeniedException(crate::types::error::AccessDeniedException),
268    /// <p>The request failed because of an internal error. Try your request again later</p>
269    InternalServerException(crate::types::error::InternalServerException),
270    /// <p>The request failed because it exceeded a throttling quota.</p>
271    ThrottlingException(crate::types::error::ThrottlingException),
272    /// <p>The request failed because one or more input parameters don't satisfy their constraint requirements. The output is provided as a list of fields and a reason for each field that isn't valid.</p>
273    /// <p>The possible reasons include the following:</p>
274    /// <ul>
275    /// <li>
276    /// <p><b>UnrecognizedEntityType</b></p>
277    /// <p>The policy includes an entity type that isn't found in the schema.</p></li>
278    /// <li>
279    /// <p><b>UnrecognizedActionId</b></p>
280    /// <p>The policy includes an action id that isn't found in the schema.</p></li>
281    /// <li>
282    /// <p><b>InvalidActionApplication</b></p>
283    /// <p>The policy includes an action that, according to the schema, doesn't support the specified principal and resource.</p></li>
284    /// <li>
285    /// <p><b>UnexpectedType</b></p>
286    /// <p>The policy included an operand that isn't a valid type for the specified operation.</p></li>
287    /// <li>
288    /// <p><b>IncompatibleTypes</b></p>
289    /// <p>The types of elements included in a <code>set</code>, or the types of expressions used in an <code>if...then...else</code> clause aren't compatible in this context.</p></li>
290    /// <li>
291    /// <p><b>MissingAttribute</b></p>
292    /// <p>The policy attempts to access a record or entity attribute that isn't specified in the schema. Test for the existence of the attribute first before attempting to access its value. For more information, see the <a href="https://docs.cedarpolicy.com/policies/syntax-operators.html#has-presence-of-attribute-test">has (presence of attribute test) operator</a> in the <i>Cedar Policy Language Guide</i>.</p></li>
293    /// <li>
294    /// <p><b>UnsafeOptionalAttributeAccess</b></p>
295    /// <p>The policy attempts to access a record or entity attribute that is optional and isn't guaranteed to be present. Test for the existence of the attribute first before attempting to access its value. For more information, see the <a href="https://docs.cedarpolicy.com/policies/syntax-operators.html#has-presence-of-attribute-test">has (presence of attribute test) operator</a> in the <i>Cedar Policy Language Guide</i>.</p></li>
296    /// <li>
297    /// <p><b>ImpossiblePolicy</b></p>
298    /// <p>Cedar has determined that a policy condition always evaluates to false. If the policy is always false, it can never apply to any query, and so it can never affect an authorization decision.</p></li>
299    /// <li>
300    /// <p><b>WrongNumberArguments</b></p>
301    /// <p>The policy references an extension type with the wrong number of arguments.</p></li>
302    /// <li>
303    /// <p><b>FunctionArgumentValidationError</b></p>
304    /// <p>Cedar couldn't parse the argument passed to an extension type. For example, a string that is to be parsed as an IPv4 address can contain only digits and the period character.</p></li>
305    /// </ul>
306    ValidationException(crate::types::error::ValidationException),
307    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
308    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
309    variable wildcard pattern and check `.code()`:
310     \
311    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
312     \
313    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DeletePolicyError) for what information is available for the error.")]
314    Unhandled(crate::error::sealed_unhandled::Unhandled),
315}
316impl DeletePolicyError {
317    /// Creates the `DeletePolicyError::Unhandled` variant from any error type.
318    pub fn unhandled(
319        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
320    ) -> Self {
321        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
322            source: err.into(),
323            meta: ::std::default::Default::default(),
324        })
325    }
326
327    /// Creates the `DeletePolicyError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
328    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
329        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
330            source: err.clone().into(),
331            meta: err,
332        })
333    }
334    ///
335    /// Returns error metadata, which includes the error code, message,
336    /// request ID, and potentially additional information.
337    ///
338    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
339        match self {
340            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
343            Self::InternalServerException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
344            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
345            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
346            Self::Unhandled(e) => &e.meta,
347        }
348    }
349    /// Returns `true` if the error kind is `DeletePolicyError::ConflictException`.
350    pub fn is_conflict_exception(&self) -> bool {
351        matches!(self, Self::ConflictException(_))
352    }
353    /// Returns `true` if the error kind is `DeletePolicyError::ResourceNotFoundException`.
354    pub fn is_resource_not_found_exception(&self) -> bool {
355        matches!(self, Self::ResourceNotFoundException(_))
356    }
357    /// Returns `true` if the error kind is `DeletePolicyError::AccessDeniedException`.
358    pub fn is_access_denied_exception(&self) -> bool {
359        matches!(self, Self::AccessDeniedException(_))
360    }
361    /// Returns `true` if the error kind is `DeletePolicyError::InternalServerException`.
362    pub fn is_internal_server_exception(&self) -> bool {
363        matches!(self, Self::InternalServerException(_))
364    }
365    /// Returns `true` if the error kind is `DeletePolicyError::ThrottlingException`.
366    pub fn is_throttling_exception(&self) -> bool {
367        matches!(self, Self::ThrottlingException(_))
368    }
369    /// Returns `true` if the error kind is `DeletePolicyError::ValidationException`.
370    pub fn is_validation_exception(&self) -> bool {
371        matches!(self, Self::ValidationException(_))
372    }
373}
374impl ::std::error::Error for DeletePolicyError {
375    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
376        match self {
377            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
378            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
379            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
380            Self::InternalServerException(_inner) => ::std::option::Option::Some(_inner),
381            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
382            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
383            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
384        }
385    }
386}
387impl ::std::fmt::Display for DeletePolicyError {
388    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
389        match self {
390            Self::ConflictException(_inner) => _inner.fmt(f),
391            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
392            Self::AccessDeniedException(_inner) => _inner.fmt(f),
393            Self::InternalServerException(_inner) => _inner.fmt(f),
394            Self::ThrottlingException(_inner) => _inner.fmt(f),
395            Self::ValidationException(_inner) => _inner.fmt(f),
396            Self::Unhandled(_inner) => {
397                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
398                    write!(f, "unhandled error ({code})")
399                } else {
400                    f.write_str("unhandled error")
401                }
402            }
403        }
404    }
405}
406impl ::aws_smithy_types::retry::ProvideErrorKind for DeletePolicyError {
407    fn code(&self) -> ::std::option::Option<&str> {
408        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
409    }
410    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
411        match self {
412            Self::InternalServerException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
413            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
414            _ => ::std::option::Option::None,
415        }
416    }
417}
418impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DeletePolicyError {
419    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
420        match self {
421            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
422            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
423            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
424            Self::InternalServerException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
425            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
426            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
427            Self::Unhandled(_inner) => &_inner.meta,
428        }
429    }
430}
431impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DeletePolicyError {
432    fn create_unhandled_error(
433        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
434        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
435    ) -> Self {
436        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
437            source,
438            meta: meta.unwrap_or_default(),
439        })
440    }
441}
442impl ::aws_types::request_id::RequestId for crate::operation::delete_policy::DeletePolicyError {
443    fn request_id(&self) -> Option<&str> {
444        self.meta().request_id()
445    }
446}
447
448pub use crate::operation::delete_policy::_delete_policy_output::DeletePolicyOutput;
449
450pub use crate::operation::delete_policy::_delete_policy_input::DeletePolicyInput;
451
452mod _delete_policy_input;
453
454mod _delete_policy_output;
455
456/// Builders
457pub mod builders;