aws-sdk-codeartifact 0.24.0

AWS SDK for CodeArtifact
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[derive(Debug)]
pub(crate) struct Handle {
    pub(crate) client: aws_smithy_client::Client<
        aws_smithy_client::erase::DynConnector,
        aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
    >,
    pub(crate) conf: crate::Config,
}

/// Client for CodeArtifact
///
/// Client for invoking operations on CodeArtifact. Each operation on CodeArtifact is a method on this
/// this struct. `.send()` MUST be invoked on the generated operations to dispatch the request to the service.
///
/// # Examples
/// **Constructing a client and invoking an operation**
/// ```rust,no_run
/// # async fn docs() {
///     // create a shared configuration. This can be used & shared between multiple service clients.
///     let shared_config = aws_config::load_from_env().await;
///     let client = aws_sdk_codeartifact::Client::new(&shared_config);
///     // invoke an operation
///     /* let rsp = client
///         .<operation_name>().
///         .<param>("some value")
///         .send().await; */
/// # }
/// ```
/// **Constructing a client with custom configuration**
/// ```rust,no_run
/// use aws_config::retry::RetryConfig;
/// # async fn docs() {
/// let shared_config = aws_config::load_from_env().await;
/// let config = aws_sdk_codeartifact::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_codeartifact::Client::from_conf(config);
/// # }
#[derive(std::fmt::Debug)]
pub struct Client {
    handle: std::sync::Arc<Handle>,
}

impl std::clone::Clone for Client {
    fn clone(&self) -> Self {
        Self {
            handle: self.handle.clone(),
        }
    }
}

#[doc(inline)]
pub use aws_smithy_client::Builder;

impl
    From<
        aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
    > for Client
{
    fn from(
        client: aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
    ) -> Self {
        Self::with_config(client, crate::Config::builder().build())
    }
}

impl Client {
    /// Creates a client with the given service configuration.
    pub fn with_config(
        client: aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
        conf: crate::Config,
    ) -> Self {
        Self {
            handle: std::sync::Arc::new(Handle { client, conf }),
        }
    }

    /// Returns the client's configuration.
    pub fn conf(&self) -> &crate::Config {
        &self.handle.conf
    }
}
impl Client {
    /// Constructs a fluent builder for the [`AssociateExternalConnection`](crate::client::fluent_builders::AssociateExternalConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::AssociateExternalConnection::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::AssociateExternalConnection::set_domain): <p>The name of the domain that contains the repository.</p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::AssociateExternalConnection::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::AssociateExternalConnection::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::AssociateExternalConnection::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::AssociateExternalConnection::set_repository): <p> The name of the repository to which the external connection is added. </p>
    ///   - [`external_connection(impl Into<String>)`](crate::client::fluent_builders::AssociateExternalConnection::external_connection) / [`set_external_connection(Option<String>)`](crate::client::fluent_builders::AssociateExternalConnection::set_external_connection): <p> The name of the external connection to add to the repository. The following values are supported: </p>  <ul>   <li> <p> <code>public:npmjs</code> - for the npm public repository. </p> </li>   <li> <p> <code>public:nuget-org</code> - for the NuGet Gallery. </p> </li>   <li> <p> <code>public:pypi</code> - for the Python Package Index. </p> </li>   <li> <p> <code>public:maven-central</code> - for Maven Central. </p> </li>   <li> <p> <code>public:maven-googleandroid</code> - for the Google Android repository. </p> </li>   <li> <p> <code>public:maven-gradleplugins</code> - for the Gradle plugins repository. </p> </li>   <li> <p> <code>public:maven-commonsware</code> - for the CommonsWare Android repository. </p> </li>  </ul>
    /// - On success, responds with [`AssociateExternalConnectionOutput`](crate::output::AssociateExternalConnectionOutput) with field(s):
    ///   - [`repository(Option<RepositoryDescription>)`](crate::output::AssociateExternalConnectionOutput::repository): <p> Information about the connected repository after processing the request. </p>
    /// - On failure, responds with [`SdkError<AssociateExternalConnectionError>`](crate::error::AssociateExternalConnectionError)
    pub fn associate_external_connection(&self) -> fluent_builders::AssociateExternalConnection {
        fluent_builders::AssociateExternalConnection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CopyPackageVersions`](crate::client::fluent_builders::CopyPackageVersions) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::CopyPackageVersions::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::CopyPackageVersions::set_domain): <p> The name of the domain that contains the source and destination repositories. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::CopyPackageVersions::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::CopyPackageVersions::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`source_repository(impl Into<String>)`](crate::client::fluent_builders::CopyPackageVersions::source_repository) / [`set_source_repository(Option<String>)`](crate::client::fluent_builders::CopyPackageVersions::set_source_repository): <p> The name of the repository that contains the package versions to be copied. </p>
    ///   - [`destination_repository(impl Into<String>)`](crate::client::fluent_builders::CopyPackageVersions::destination_repository) / [`set_destination_repository(Option<String>)`](crate::client::fluent_builders::CopyPackageVersions::set_destination_repository): <p> The name of the repository into which package versions are copied. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::CopyPackageVersions::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::CopyPackageVersions::set_format): <p> The format of the package versions to be copied. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::CopyPackageVersions::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::CopyPackageVersions::set_namespace): <p>The namespace of the package versions to be copied. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. The namespace is required when copying Maven package versions. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::CopyPackageVersions::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::CopyPackageVersions::set_package): <p> The name of the package that contains the versions to be copied. </p>
    ///   - [`versions(Vec<String>)`](crate::client::fluent_builders::CopyPackageVersions::versions) / [`set_versions(Option<Vec<String>>)`](crate::client::fluent_builders::CopyPackageVersions::set_versions): <p> The versions of the package to be copied. </p> <note>   <p> You must specify <code>versions</code> or <code>versionRevisions</code>. You cannot specify both. </p>  </note>
    ///   - [`version_revisions(HashMap<String, String>)`](crate::client::fluent_builders::CopyPackageVersions::version_revisions) / [`set_version_revisions(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CopyPackageVersions::set_version_revisions): <p> A list of key-value pairs. The keys are package versions and the values are package version revisions. A <code>CopyPackageVersion</code> operation succeeds if the specified versions in the source repository match the specified package version revision. </p> <note>   <p> You must specify <code>versions</code> or <code>versionRevisions</code>. You cannot specify both. </p>  </note>
    ///   - [`allow_overwrite(bool)`](crate::client::fluent_builders::CopyPackageVersions::allow_overwrite) / [`set_allow_overwrite(Option<bool>)`](crate::client::fluent_builders::CopyPackageVersions::set_allow_overwrite): <p> Set to true to overwrite a package version that already exists in the destination repository. If set to false and the package version already exists in the destination repository, the package version is returned in the <code>failedVersions</code> field of the response with an <code>ALREADY_EXISTS</code> error code. </p>
    ///   - [`include_from_upstream(bool)`](crate::client::fluent_builders::CopyPackageVersions::include_from_upstream) / [`set_include_from_upstream(Option<bool>)`](crate::client::fluent_builders::CopyPackageVersions::set_include_from_upstream): <p> Set to true to copy packages from repositories that are upstream from the source repository to the destination repository. The default setting is false. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
    /// - On success, responds with [`CopyPackageVersionsOutput`](crate::output::CopyPackageVersionsOutput) with field(s):
    ///   - [`successful_versions(Option<HashMap<String, SuccessfulPackageVersionInfo>>)`](crate::output::CopyPackageVersionsOutput::successful_versions): <p> A list of the package versions that were successfully copied to your repository. </p>
    ///   - [`failed_versions(Option<HashMap<String, PackageVersionError>>)`](crate::output::CopyPackageVersionsOutput::failed_versions): <p> A map of package versions that failed to copy and their error codes. The possible error codes are in the <code>PackageVersionError</code> data type. They are: </p>  <ul>   <li> <p> <code>ALREADY_EXISTS</code> </p> </li>   <li> <p> <code>MISMATCHED_REVISION</code> </p> </li>   <li> <p> <code>MISMATCHED_STATUS</code> </p> </li>   <li> <p> <code>NOT_ALLOWED</code> </p> </li>   <li> <p> <code>NOT_FOUND</code> </p> </li>   <li> <p> <code>SKIPPED</code> </p> </li>  </ul>
    /// - On failure, responds with [`SdkError<CopyPackageVersionsError>`](crate::error::CopyPackageVersionsError)
    pub fn copy_package_versions(&self) -> fluent_builders::CopyPackageVersions {
        fluent_builders::CopyPackageVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateDomain`](crate::client::fluent_builders::CreateDomain) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::CreateDomain::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::CreateDomain::set_domain): <p> The name of the domain to create. All domain names in an Amazon Web Services Region that are in the same Amazon Web Services account must be unique. The domain name is used as the prefix in DNS hostnames. Do not use sensitive information in a domain name because it is publicly discoverable. </p>
    ///   - [`encryption_key(impl Into<String>)`](crate::client::fluent_builders::CreateDomain::encryption_key) / [`set_encryption_key(Option<String>)`](crate::client::fluent_builders::CreateDomain::set_encryption_key): <p> The encryption key for the domain. This is used to encrypt content stored in a domain. An encryption key can be a key ID, a key Amazon Resource Name (ARN), a key alias, or a key alias ARN. To specify an <code>encryptionKey</code>, your IAM role must have <code>kms:DescribeKey</code> and <code>kms:CreateGrant</code> permissions on the encryption key that is used. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestSyntax">DescribeKey</a> in the <i>Key Management Service API Reference</i> and <a href="https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html">Key Management Service API Permissions Reference</a> in the <i>Key Management Service Developer Guide</i>. </p> <important>   <p> CodeArtifact supports only symmetric CMKs. Do not associate an asymmetric CMK with your domain. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using symmetric and asymmetric keys</a> in the <i>Key Management Service Developer Guide</i>. </p>  </important>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateDomain::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateDomain::set_tags): <p>One or more tag key-value pairs for the domain.</p>
    /// - On success, responds with [`CreateDomainOutput`](crate::output::CreateDomainOutput) with field(s):
    ///   - [`domain(Option<DomainDescription>)`](crate::output::CreateDomainOutput::domain): <p> Contains information about the created domain after processing the request. </p>
    /// - On failure, responds with [`SdkError<CreateDomainError>`](crate::error::CreateDomainError)
    pub fn create_domain(&self) -> fluent_builders::CreateDomain {
        fluent_builders::CreateDomain::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateRepository`](crate::client::fluent_builders::CreateRepository) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::CreateRepository::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::CreateRepository::set_domain): <p> The name of the domain that contains the created repository. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::CreateRepository::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::CreateRepository::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::CreateRepository::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::CreateRepository::set_repository): <p> The name of the repository to create. </p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateRepository::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateRepository::set_description): <p> A description of the created repository. </p>
    ///   - [`upstreams(Vec<UpstreamRepository>)`](crate::client::fluent_builders::CreateRepository::upstreams) / [`set_upstreams(Option<Vec<UpstreamRepository>>)`](crate::client::fluent_builders::CreateRepository::set_upstreams): <p> A list of upstream repositories to associate with the repository. The order of the upstream repositories in the list determines their priority order when CodeArtifact looks for a requested package version. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateRepository::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateRepository::set_tags): <p>One or more tag key-value pairs for the repository.</p>
    /// - On success, responds with [`CreateRepositoryOutput`](crate::output::CreateRepositoryOutput) with field(s):
    ///   - [`repository(Option<RepositoryDescription>)`](crate::output::CreateRepositoryOutput::repository): <p> Information about the created repository after processing the request. </p>
    /// - On failure, responds with [`SdkError<CreateRepositoryError>`](crate::error::CreateRepositoryError)
    pub fn create_repository(&self) -> fluent_builders::CreateRepository {
        fluent_builders::CreateRepository::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteDomain`](crate::client::fluent_builders::DeleteDomain) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DeleteDomain::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DeleteDomain::set_domain): <p> The name of the domain to delete. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DeleteDomain::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DeleteDomain::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    /// - On success, responds with [`DeleteDomainOutput`](crate::output::DeleteDomainOutput) with field(s):
    ///   - [`domain(Option<DomainDescription>)`](crate::output::DeleteDomainOutput::domain): <p> Contains information about the deleted domain after processing the request. </p>
    /// - On failure, responds with [`SdkError<DeleteDomainError>`](crate::error::DeleteDomainError)
    pub fn delete_domain(&self) -> fluent_builders::DeleteDomain {
        fluent_builders::DeleteDomain::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteDomainPermissionsPolicy`](crate::client::fluent_builders::DeleteDomainPermissionsPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DeleteDomainPermissionsPolicy::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DeleteDomainPermissionsPolicy::set_domain): <p> The name of the domain associated with the resource policy to be deleted. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DeleteDomainPermissionsPolicy::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DeleteDomainPermissionsPolicy::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`policy_revision(impl Into<String>)`](crate::client::fluent_builders::DeleteDomainPermissionsPolicy::policy_revision) / [`set_policy_revision(Option<String>)`](crate::client::fluent_builders::DeleteDomainPermissionsPolicy::set_policy_revision): <p> The current revision of the resource policy to be deleted. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. </p>
    /// - On success, responds with [`DeleteDomainPermissionsPolicyOutput`](crate::output::DeleteDomainPermissionsPolicyOutput) with field(s):
    ///   - [`policy(Option<ResourcePolicy>)`](crate::output::DeleteDomainPermissionsPolicyOutput::policy): <p> Information about the deleted resource policy after processing the request. </p>
    /// - On failure, responds with [`SdkError<DeleteDomainPermissionsPolicyError>`](crate::error::DeleteDomainPermissionsPolicyError)
    pub fn delete_domain_permissions_policy(
        &self,
    ) -> fluent_builders::DeleteDomainPermissionsPolicy {
        fluent_builders::DeleteDomainPermissionsPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeletePackageVersions`](crate::client::fluent_builders::DeletePackageVersions) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DeletePackageVersions::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DeletePackageVersions::set_domain): <p> The name of the domain that contains the package to delete. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DeletePackageVersions::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DeletePackageVersions::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DeletePackageVersions::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DeletePackageVersions::set_repository): <p> The name of the repository that contains the package versions to delete. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::DeletePackageVersions::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::DeletePackageVersions::set_format): <p> The format of the package versions to delete. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::DeletePackageVersions::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::DeletePackageVersions::set_namespace): <p>The namespace of the package versions to be deleted. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. The namespace is required when deleting Maven package versions. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::DeletePackageVersions::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::DeletePackageVersions::set_package): <p> The name of the package with the versions to delete. </p>
    ///   - [`versions(Vec<String>)`](crate::client::fluent_builders::DeletePackageVersions::versions) / [`set_versions(Option<Vec<String>>)`](crate::client::fluent_builders::DeletePackageVersions::set_versions): <p> An array of strings that specify the versions of the package to delete. </p>
    ///   - [`expected_status(PackageVersionStatus)`](crate::client::fluent_builders::DeletePackageVersions::expected_status) / [`set_expected_status(Option<PackageVersionStatus>)`](crate::client::fluent_builders::DeletePackageVersions::set_expected_status): <p> The expected status of the package version to delete. </p>
    /// - On success, responds with [`DeletePackageVersionsOutput`](crate::output::DeletePackageVersionsOutput) with field(s):
    ///   - [`successful_versions(Option<HashMap<String, SuccessfulPackageVersionInfo>>)`](crate::output::DeletePackageVersionsOutput::successful_versions): <p> A list of the package versions that were successfully deleted. The status of every successful version will be <code>Deleted</code>. </p>
    ///   - [`failed_versions(Option<HashMap<String, PackageVersionError>>)`](crate::output::DeletePackageVersionsOutput::failed_versions): <p> A <code>PackageVersionError</code> object that contains a map of errors codes for the deleted package that failed. The possible error codes are: </p>  <ul>   <li> <p> <code>ALREADY_EXISTS</code> </p> </li>   <li> <p> <code>MISMATCHED_REVISION</code> </p> </li>   <li> <p> <code>MISMATCHED_STATUS</code> </p> </li>   <li> <p> <code>NOT_ALLOWED</code> </p> </li>   <li> <p> <code>NOT_FOUND</code> </p> </li>   <li> <p> <code>SKIPPED</code> </p> </li>  </ul>
    /// - On failure, responds with [`SdkError<DeletePackageVersionsError>`](crate::error::DeletePackageVersionsError)
    pub fn delete_package_versions(&self) -> fluent_builders::DeletePackageVersions {
        fluent_builders::DeletePackageVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteRepository`](crate::client::fluent_builders::DeleteRepository) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DeleteRepository::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DeleteRepository::set_domain): <p> The name of the domain that contains the repository to delete. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DeleteRepository::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DeleteRepository::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DeleteRepository::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DeleteRepository::set_repository): <p> The name of the repository to delete. </p>
    /// - On success, responds with [`DeleteRepositoryOutput`](crate::output::DeleteRepositoryOutput) with field(s):
    ///   - [`repository(Option<RepositoryDescription>)`](crate::output::DeleteRepositoryOutput::repository): <p> Information about the deleted repository after processing the request. </p>
    /// - On failure, responds with [`SdkError<DeleteRepositoryError>`](crate::error::DeleteRepositoryError)
    pub fn delete_repository(&self) -> fluent_builders::DeleteRepository {
        fluent_builders::DeleteRepository::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteRepositoryPermissionsPolicy`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::set_domain): <p> The name of the domain that contains the repository associated with the resource policy to be deleted. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::set_repository): <p> The name of the repository that is associated with the resource policy to be deleted </p>
    ///   - [`policy_revision(impl Into<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::policy_revision) / [`set_policy_revision(Option<String>)`](crate::client::fluent_builders::DeleteRepositoryPermissionsPolicy::set_policy_revision): <p> The revision of the repository's resource policy to be deleted. This revision is used for optimistic locking, which prevents others from accidentally overwriting your changes to the repository's resource policy. </p>
    /// - On success, responds with [`DeleteRepositoryPermissionsPolicyOutput`](crate::output::DeleteRepositoryPermissionsPolicyOutput) with field(s):
    ///   - [`policy(Option<ResourcePolicy>)`](crate::output::DeleteRepositoryPermissionsPolicyOutput::policy): <p> Information about the deleted policy after processing the request. </p>
    /// - On failure, responds with [`SdkError<DeleteRepositoryPermissionsPolicyError>`](crate::error::DeleteRepositoryPermissionsPolicyError)
    pub fn delete_repository_permissions_policy(
        &self,
    ) -> fluent_builders::DeleteRepositoryPermissionsPolicy {
        fluent_builders::DeleteRepositoryPermissionsPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeDomain`](crate::client::fluent_builders::DescribeDomain) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DescribeDomain::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DescribeDomain::set_domain): <p> A string that specifies the name of the requested domain. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DescribeDomain::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DescribeDomain::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    /// - On success, responds with [`DescribeDomainOutput`](crate::output::DescribeDomainOutput) with field(s):
    ///   - [`domain(Option<DomainDescription>)`](crate::output::DescribeDomainOutput::domain): <p> Information about a domain. A domain is a container for repositories. When you create a domain, it is empty until you add one or more repositories. </p>
    /// - On failure, responds with [`SdkError<DescribeDomainError>`](crate::error::DescribeDomainError)
    pub fn describe_domain(&self) -> fluent_builders::DescribeDomain {
        fluent_builders::DescribeDomain::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribePackage`](crate::client::fluent_builders::DescribePackage) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DescribePackage::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DescribePackage::set_domain): <p>The name of the domain that contains the repository that contains the package.</p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DescribePackage::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DescribePackage::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DescribePackage::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DescribePackage::set_repository): <p>The name of the repository that contains the requested package. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::DescribePackage::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::DescribePackage::set_format): <p>A format that specifies the type of the requested package.</p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::DescribePackage::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::DescribePackage::set_namespace): <p>The namespace of the requested package. The package component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package is its <code>groupId</code>. The namespace is required when requesting Maven packages. </p> </li>   <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::DescribePackage::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::DescribePackage::set_package): <p>The name of the requested package.</p>
    /// - On success, responds with [`DescribePackageOutput`](crate::output::DescribePackageOutput) with field(s):
    ///   - [`package(Option<PackageDescription>)`](crate::output::DescribePackageOutput::package): <p>A <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDescription.html">PackageDescription</a> object that contains information about the requested package.</p>
    /// - On failure, responds with [`SdkError<DescribePackageError>`](crate::error::DescribePackageError)
    pub fn describe_package(&self) -> fluent_builders::DescribePackage {
        fluent_builders::DescribePackage::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribePackageVersion`](crate::client::fluent_builders::DescribePackageVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DescribePackageVersion::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DescribePackageVersion::set_domain): <p> The name of the domain that contains the repository that contains the package version. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DescribePackageVersion::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DescribePackageVersion::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DescribePackageVersion::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DescribePackageVersion::set_repository): <p> The name of the repository that contains the package version. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::DescribePackageVersion::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::DescribePackageVersion::set_format): <p> A format that specifies the type of the requested package version. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::DescribePackageVersion::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::DescribePackageVersion::set_namespace): <p>The namespace of the requested package version. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::DescribePackageVersion::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::DescribePackageVersion::set_package): <p> The name of the requested package version. </p>
    ///   - [`package_version(impl Into<String>)`](crate::client::fluent_builders::DescribePackageVersion::package_version) / [`set_package_version(Option<String>)`](crate::client::fluent_builders::DescribePackageVersion::set_package_version): <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
    /// - On success, responds with [`DescribePackageVersionOutput`](crate::output::DescribePackageVersionOutput) with field(s):
    ///   - [`package_version(Option<PackageVersionDescription>)`](crate::output::DescribePackageVersionOutput::package_version): <p> A <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageVersionDescription.html">PackageVersionDescription</a> object that contains information about the requested package version. </p>
    /// - On failure, responds with [`SdkError<DescribePackageVersionError>`](crate::error::DescribePackageVersionError)
    pub fn describe_package_version(&self) -> fluent_builders::DescribePackageVersion {
        fluent_builders::DescribePackageVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeRepository`](crate::client::fluent_builders::DescribeRepository) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DescribeRepository::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DescribeRepository::set_domain): <p> The name of the domain that contains the repository to describe. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DescribeRepository::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DescribeRepository::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DescribeRepository::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DescribeRepository::set_repository): <p> A string that specifies the name of the requested repository. </p>
    /// - On success, responds with [`DescribeRepositoryOutput`](crate::output::DescribeRepositoryOutput) with field(s):
    ///   - [`repository(Option<RepositoryDescription>)`](crate::output::DescribeRepositoryOutput::repository): <p> A <code>RepositoryDescription</code> object that contains the requested repository information. </p>
    /// - On failure, responds with [`SdkError<DescribeRepositoryError>`](crate::error::DescribeRepositoryError)
    pub fn describe_repository(&self) -> fluent_builders::DescribeRepository {
        fluent_builders::DescribeRepository::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateExternalConnection`](crate::client::fluent_builders::DisassociateExternalConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::set_domain): <p>The name of the domain that contains the repository from which to remove the external repository. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::set_repository): <p>The name of the repository from which the external connection will be removed. </p>
    ///   - [`external_connection(impl Into<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::external_connection) / [`set_external_connection(Option<String>)`](crate::client::fluent_builders::DisassociateExternalConnection::set_external_connection): <p>The name of the external connection to be removed from the repository. </p>
    /// - On success, responds with [`DisassociateExternalConnectionOutput`](crate::output::DisassociateExternalConnectionOutput) with field(s):
    ///   - [`repository(Option<RepositoryDescription>)`](crate::output::DisassociateExternalConnectionOutput::repository): <p> The repository associated with the removed external connection. </p>
    /// - On failure, responds with [`SdkError<DisassociateExternalConnectionError>`](crate::error::DisassociateExternalConnectionError)
    pub fn disassociate_external_connection(
        &self,
    ) -> fluent_builders::DisassociateExternalConnection {
        fluent_builders::DisassociateExternalConnection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisposePackageVersions`](crate::client::fluent_builders::DisposePackageVersions) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::DisposePackageVersions::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::DisposePackageVersions::set_domain): <p> The name of the domain that contains the repository you want to dispose. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::DisposePackageVersions::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::DisposePackageVersions::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::DisposePackageVersions::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::DisposePackageVersions::set_repository): <p> The name of the repository that contains the package versions you want to dispose. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::DisposePackageVersions::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::DisposePackageVersions::set_format): <p> A format that specifies the type of package versions you want to dispose. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::DisposePackageVersions::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::DisposePackageVersions::set_namespace): <p>The namespace of the package versions to be disposed. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::DisposePackageVersions::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::DisposePackageVersions::set_package): <p> The name of the package with the versions you want to dispose. </p>
    ///   - [`versions(Vec<String>)`](crate::client::fluent_builders::DisposePackageVersions::versions) / [`set_versions(Option<Vec<String>>)`](crate::client::fluent_builders::DisposePackageVersions::set_versions): <p> The versions of the package you want to dispose. </p>
    ///   - [`version_revisions(HashMap<String, String>)`](crate::client::fluent_builders::DisposePackageVersions::version_revisions) / [`set_version_revisions(Option<HashMap<String, String>>)`](crate::client::fluent_builders::DisposePackageVersions::set_version_revisions): <p> The revisions of the package versions you want to dispose. </p>
    ///   - [`expected_status(PackageVersionStatus)`](crate::client::fluent_builders::DisposePackageVersions::expected_status) / [`set_expected_status(Option<PackageVersionStatus>)`](crate::client::fluent_builders::DisposePackageVersions::set_expected_status): <p> The expected status of the package version to dispose. </p>
    /// - On success, responds with [`DisposePackageVersionsOutput`](crate::output::DisposePackageVersionsOutput) with field(s):
    ///   - [`successful_versions(Option<HashMap<String, SuccessfulPackageVersionInfo>>)`](crate::output::DisposePackageVersionsOutput::successful_versions): <p> A list of the package versions that were successfully disposed. </p>
    ///   - [`failed_versions(Option<HashMap<String, PackageVersionError>>)`](crate::output::DisposePackageVersionsOutput::failed_versions): <p> A <code>PackageVersionError</code> object that contains a map of errors codes for the disposed package versions that failed. The possible error codes are: </p>  <ul>   <li> <p> <code>ALREADY_EXISTS</code> </p> </li>   <li> <p> <code>MISMATCHED_REVISION</code> </p> </li>   <li> <p> <code>MISMATCHED_STATUS</code> </p> </li>   <li> <p> <code>NOT_ALLOWED</code> </p> </li>   <li> <p> <code>NOT_FOUND</code> </p> </li>   <li> <p> <code>SKIPPED</code> </p> </li>  </ul>
    /// - On failure, responds with [`SdkError<DisposePackageVersionsError>`](crate::error::DisposePackageVersionsError)
    pub fn dispose_package_versions(&self) -> fluent_builders::DisposePackageVersions {
        fluent_builders::DisposePackageVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetAuthorizationToken`](crate::client::fluent_builders::GetAuthorizationToken) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::GetAuthorizationToken::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::GetAuthorizationToken::set_domain): <p> The name of the domain that is in scope for the generated authorization token. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::GetAuthorizationToken::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::GetAuthorizationToken::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`duration_seconds(i64)`](crate::client::fluent_builders::GetAuthorizationToken::duration_seconds) / [`set_duration_seconds(Option<i64>)`](crate::client::fluent_builders::GetAuthorizationToken::set_duration_seconds): <p>The time, in seconds, that the generated authorization token is valid. Valid values are <code>0</code> and any number between <code>900</code> (15 minutes) and <code>43200</code> (12 hours). A value of <code>0</code> will set the expiration of the authorization token to the same expiration of the user's role's temporary credentials.</p>
    /// - On success, responds with [`GetAuthorizationTokenOutput`](crate::output::GetAuthorizationTokenOutput) with field(s):
    ///   - [`authorization_token(Option<String>)`](crate::output::GetAuthorizationTokenOutput::authorization_token): <p> The returned authentication token. </p>
    ///   - [`expiration(Option<DateTime>)`](crate::output::GetAuthorizationTokenOutput::expiration): <p> A timestamp that specifies the date and time the authorization token expires. </p>
    /// - On failure, responds with [`SdkError<GetAuthorizationTokenError>`](crate::error::GetAuthorizationTokenError)
    pub fn get_authorization_token(&self) -> fluent_builders::GetAuthorizationToken {
        fluent_builders::GetAuthorizationToken::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetDomainPermissionsPolicy`](crate::client::fluent_builders::GetDomainPermissionsPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::GetDomainPermissionsPolicy::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::GetDomainPermissionsPolicy::set_domain): <p> The name of the domain to which the resource policy is attached. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::GetDomainPermissionsPolicy::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::GetDomainPermissionsPolicy::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    /// - On success, responds with [`GetDomainPermissionsPolicyOutput`](crate::output::GetDomainPermissionsPolicyOutput) with field(s):
    ///   - [`policy(Option<ResourcePolicy>)`](crate::output::GetDomainPermissionsPolicyOutput::policy): <p> The returned resource policy. </p>
    /// - On failure, responds with [`SdkError<GetDomainPermissionsPolicyError>`](crate::error::GetDomainPermissionsPolicyError)
    pub fn get_domain_permissions_policy(&self) -> fluent_builders::GetDomainPermissionsPolicy {
        fluent_builders::GetDomainPermissionsPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetPackageVersionAsset`](crate::client::fluent_builders::GetPackageVersionAsset) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_domain): <p> The name of the domain that contains the repository that contains the package version with the requested asset. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_repository): <p> The repository that contains the package version with the requested asset. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::GetPackageVersionAsset::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_format): <p> A format that specifies the type of the package version with the requested asset file. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_namespace): <p>The namespace of the package version with the requested asset file. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_package): <p> The name of the package that contains the requested asset. </p>
    ///   - [`package_version(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::package_version) / [`set_package_version(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_package_version): <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
    ///   - [`asset(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::asset) / [`set_asset(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_asset): <p> The name of the requested asset. </p>
    ///   - [`package_version_revision(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::package_version_revision) / [`set_package_version_revision(Option<String>)`](crate::client::fluent_builders::GetPackageVersionAsset::set_package_version_revision): <p> The name of the package version revision that contains the requested asset. </p>
    /// - On success, responds with [`GetPackageVersionAssetOutput`](crate::output::GetPackageVersionAssetOutput) with field(s):
    ///   - [`asset(ByteStream)`](crate::output::GetPackageVersionAssetOutput::asset): <p> The binary file, or asset, that is downloaded.</p>
    ///   - [`asset_name(Option<String>)`](crate::output::GetPackageVersionAssetOutput::asset_name): <p> The name of the asset that is downloaded. </p>
    ///   - [`package_version(Option<String>)`](crate::output::GetPackageVersionAssetOutput::package_version): <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
    ///   - [`package_version_revision(Option<String>)`](crate::output::GetPackageVersionAssetOutput::package_version_revision): <p> The name of the package version revision that contains the downloaded asset. </p>
    /// - On failure, responds with [`SdkError<GetPackageVersionAssetError>`](crate::error::GetPackageVersionAssetError)
    pub fn get_package_version_asset(&self) -> fluent_builders::GetPackageVersionAsset {
        fluent_builders::GetPackageVersionAsset::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetPackageVersionReadme`](crate::client::fluent_builders::GetPackageVersionReadme) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::set_domain): <p> The name of the domain that contains the repository that contains the package version with the requested readme file. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::set_repository): <p> The repository that contains the package with the requested readme file. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::GetPackageVersionReadme::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::GetPackageVersionReadme::set_format): <p> A format that specifies the type of the package version with the requested readme file. </p> <note>   <p>Although <code>maven</code> is listed as a valid value, CodeArtifact does not support displaying readme files for Maven packages.</p>  </note>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::set_namespace): <p>The namespace of the package version with the requested readme file. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::set_package): <p> The name of the package version that contains the requested readme file. </p>
    ///   - [`package_version(impl Into<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::package_version) / [`set_package_version(Option<String>)`](crate::client::fluent_builders::GetPackageVersionReadme::set_package_version): <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
    /// - On success, responds with [`GetPackageVersionReadmeOutput`](crate::output::GetPackageVersionReadmeOutput) with field(s):
    ///   - [`format(Option<PackageFormat>)`](crate::output::GetPackageVersionReadmeOutput::format): <p> The format of the package with the requested readme file. </p>
    ///   - [`namespace(Option<String>)`](crate::output::GetPackageVersionReadmeOutput::namespace): <p>The namespace of the package version with the requested readme file. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(Option<String>)`](crate::output::GetPackageVersionReadmeOutput::package): <p> The name of the package that contains the returned readme file. </p>
    ///   - [`version(Option<String>)`](crate::output::GetPackageVersionReadmeOutput::version): <p> The version of the package with the requested readme file. </p>
    ///   - [`version_revision(Option<String>)`](crate::output::GetPackageVersionReadmeOutput::version_revision): <p> The current revision associated with the package version. </p>
    ///   - [`readme(Option<String>)`](crate::output::GetPackageVersionReadmeOutput::readme): <p> The text of the returned readme file. </p>
    /// - On failure, responds with [`SdkError<GetPackageVersionReadmeError>`](crate::error::GetPackageVersionReadmeError)
    pub fn get_package_version_readme(&self) -> fluent_builders::GetPackageVersionReadme {
        fluent_builders::GetPackageVersionReadme::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetRepositoryEndpoint`](crate::client::fluent_builders::GetRepositoryEndpoint) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::GetRepositoryEndpoint::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::GetRepositoryEndpoint::set_domain): <p> The name of the domain that contains the repository. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::GetRepositoryEndpoint::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::GetRepositoryEndpoint::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain that contains the repository. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::GetRepositoryEndpoint::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::GetRepositoryEndpoint::set_repository): <p> The name of the repository. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::GetRepositoryEndpoint::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::GetRepositoryEndpoint::set_format): <p> Returns which endpoint of a repository to return. A repository has one endpoint for each package format. </p>
    /// - On success, responds with [`GetRepositoryEndpointOutput`](crate::output::GetRepositoryEndpointOutput) with field(s):
    ///   - [`repository_endpoint(Option<String>)`](crate::output::GetRepositoryEndpointOutput::repository_endpoint): <p> A string that specifies the URL of the returned endpoint. </p>
    /// - On failure, responds with [`SdkError<GetRepositoryEndpointError>`](crate::error::GetRepositoryEndpointError)
    pub fn get_repository_endpoint(&self) -> fluent_builders::GetRepositoryEndpoint {
        fluent_builders::GetRepositoryEndpoint::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetRepositoryPermissionsPolicy`](crate::client::fluent_builders::GetRepositoryPermissionsPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::GetRepositoryPermissionsPolicy::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::GetRepositoryPermissionsPolicy::set_domain): <p> The name of the domain containing the repository whose associated resource policy is to be retrieved. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::GetRepositoryPermissionsPolicy::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::GetRepositoryPermissionsPolicy::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::GetRepositoryPermissionsPolicy::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::GetRepositoryPermissionsPolicy::set_repository): <p> The name of the repository whose associated resource policy is to be retrieved. </p>
    /// - On success, responds with [`GetRepositoryPermissionsPolicyOutput`](crate::output::GetRepositoryPermissionsPolicyOutput) with field(s):
    ///   - [`policy(Option<ResourcePolicy>)`](crate::output::GetRepositoryPermissionsPolicyOutput::policy): <p> The returned resource policy. </p>
    /// - On failure, responds with [`SdkError<GetRepositoryPermissionsPolicyError>`](crate::error::GetRepositoryPermissionsPolicyError)
    pub fn get_repository_permissions_policy(
        &self,
    ) -> fluent_builders::GetRepositoryPermissionsPolicy {
        fluent_builders::GetRepositoryPermissionsPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDomains`](crate::client::fluent_builders::ListDomains) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDomains::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDomains::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListDomains::set_max_results): <p> The maximum number of results to return per page. </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDomains::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDomains::set_next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    /// - On success, responds with [`ListDomainsOutput`](crate::output::ListDomainsOutput) with field(s):
    ///   - [`domains(Option<Vec<DomainSummary>>)`](crate::output::ListDomainsOutput::domains): <p> The returned list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DomainSummary.html">DomainSummary</a> objects. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDomainsOutput::next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    /// - On failure, responds with [`SdkError<ListDomainsError>`](crate::error::ListDomainsError)
    pub fn list_domains(&self) -> fluent_builders::ListDomains {
        fluent_builders::ListDomains::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPackages`](crate::client::fluent_builders::ListPackages) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPackages::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::ListPackages::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::ListPackages::set_domain): <p> The name of the domain that contains the repository that contains the requested packages. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::ListPackages::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::ListPackages::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::ListPackages::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::ListPackages::set_repository): <p> The name of the repository that contains the requested packages. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::ListPackages::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::ListPackages::set_format): <p>The format used to filter requested packages. Only packages from the provided format will be returned.</p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::ListPackages::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::ListPackages::set_namespace): <p>The namespace prefix used to filter requested packages. Only packages with a namespace that starts with the provided string value are returned. Note that although this option is called <code>--namespace</code> and not <code>--namespace-prefix</code>, it has prefix-matching behavior.</p>  <p>Each package format uses namespace as follows:</p>  <ul>   <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package_prefix(impl Into<String>)`](crate::client::fluent_builders::ListPackages::package_prefix) / [`set_package_prefix(Option<String>)`](crate::client::fluent_builders::ListPackages::set_package_prefix): <p> A prefix used to filter requested packages. Only packages with names that start with <code>packagePrefix</code> are returned. </p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPackages::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListPackages::set_max_results): <p> The maximum number of results to return per page. </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPackages::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPackages::set_next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    ///   - [`publish(AllowPublish)`](crate::client::fluent_builders::ListPackages::publish) / [`set_publish(Option<AllowPublish>)`](crate::client::fluent_builders::ListPackages::set_publish): <p>The value of the <code>Publish</code> package origin control restriction used to filter requested packages. Only packages with the provided restriction are returned. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a>.</p>
    ///   - [`upstream(AllowUpstream)`](crate::client::fluent_builders::ListPackages::upstream) / [`set_upstream(Option<AllowUpstream>)`](crate::client::fluent_builders::ListPackages::set_upstream): <p>The value of the <code>Upstream</code> package origin control restriction used to filter requested packages. Only packages with the provided restriction are returned. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a>.</p>
    /// - On success, responds with [`ListPackagesOutput`](crate::output::ListPackagesOutput) with field(s):
    ///   - [`packages(Option<Vec<PackageSummary>>)`](crate::output::ListPackagesOutput::packages): <p> The list of returned <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageSummary.html">PackageSummary</a> objects. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPackagesOutput::next_token): <p> If there are additional results, this is the token for the next set of results. </p>
    /// - On failure, responds with [`SdkError<ListPackagesError>`](crate::error::ListPackagesError)
    pub fn list_packages(&self) -> fluent_builders::ListPackages {
        fluent_builders::ListPackages::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPackageVersionAssets`](crate::client::fluent_builders::ListPackageVersionAssets) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPackageVersionAssets::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_domain): <p> The name of the domain that contains the repository associated with the package version assets. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_repository): <p> The name of the repository that contains the package that contains the requested package version assets. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::ListPackageVersionAssets::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_format): <p> The format of the package that contains the requested package version assets. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_namespace): <p>The namespace of the package version that contains the requested package version assets. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_package): <p> The name of the package that contains the requested package version assets. </p>
    ///   - [`package_version(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::package_version) / [`set_package_version(Option<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_package_version): <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPackageVersionAssets::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_max_results): <p> The maximum number of results to return per page. </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPackageVersionAssets::set_next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    /// - On success, responds with [`ListPackageVersionAssetsOutput`](crate::output::ListPackageVersionAssetsOutput) with field(s):
    ///   - [`format(Option<PackageFormat>)`](crate::output::ListPackageVersionAssetsOutput::format): <p> The format of the package that contains the requested package version assets. </p>
    ///   - [`namespace(Option<String>)`](crate::output::ListPackageVersionAssetsOutput::namespace): <p>The namespace of the package version that contains the requested package version assets. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(Option<String>)`](crate::output::ListPackageVersionAssetsOutput::package): <p> The name of the package that contains the requested package version assets. </p>
    ///   - [`version(Option<String>)`](crate::output::ListPackageVersionAssetsOutput::version): <p> The version of the package associated with the requested assets. </p>
    ///   - [`version_revision(Option<String>)`](crate::output::ListPackageVersionAssetsOutput::version_revision): <p> The current revision associated with the package version. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPackageVersionAssetsOutput::next_token): <p> If there are additional results, this is the token for the next set of results. </p>
    ///   - [`assets(Option<Vec<AssetSummary>>)`](crate::output::ListPackageVersionAssetsOutput::assets): <p> The returned list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_AssetSummary.html">AssetSummary</a> objects. </p>
    /// - On failure, responds with [`SdkError<ListPackageVersionAssetsError>`](crate::error::ListPackageVersionAssetsError)
    pub fn list_package_version_assets(&self) -> fluent_builders::ListPackageVersionAssets {
        fluent_builders::ListPackageVersionAssets::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPackageVersionDependencies`](crate::client::fluent_builders::ListPackageVersionDependencies) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_domain): <p> The name of the domain that contains the repository that contains the requested package version dependencies. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_repository): <p> The name of the repository that contains the requested package version. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::ListPackageVersionDependencies::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_format): <p> The format of the package with the requested dependencies. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_namespace): <p>The namespace of the package version with the requested dependencies. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_package): <p> The name of the package versions' package. </p>
    ///   - [`package_version(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::package_version) / [`set_package_version(Option<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_package_version): <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPackageVersionDependencies::set_next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    /// - On success, responds with [`ListPackageVersionDependenciesOutput`](crate::output::ListPackageVersionDependenciesOutput) with field(s):
    ///   - [`format(Option<PackageFormat>)`](crate::output::ListPackageVersionDependenciesOutput::format): <p> A format that specifies the type of the package that contains the returned dependencies. </p>
    ///   - [`namespace(Option<String>)`](crate::output::ListPackageVersionDependenciesOutput::namespace): <p>The namespace of the package version that contains the returned dependencies. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(Option<String>)`](crate::output::ListPackageVersionDependenciesOutput::package): <p> The name of the package that contains the returned package versions dependencies. </p>
    ///   - [`version(Option<String>)`](crate::output::ListPackageVersionDependenciesOutput::version): <p> The version of the package that is specified in the request. </p>
    ///   - [`version_revision(Option<String>)`](crate::output::ListPackageVersionDependenciesOutput::version_revision): <p> The current revision associated with the package version. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPackageVersionDependenciesOutput::next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    ///   - [`dependencies(Option<Vec<PackageDependency>>)`](crate::output::ListPackageVersionDependenciesOutput::dependencies): <p> The returned list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDependency.html">PackageDependency</a> objects. </p>
    /// - On failure, responds with [`SdkError<ListPackageVersionDependenciesError>`](crate::error::ListPackageVersionDependenciesError)
    pub fn list_package_version_dependencies(
        &self,
    ) -> fluent_builders::ListPackageVersionDependencies {
        fluent_builders::ListPackageVersionDependencies::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPackageVersions`](crate::client::fluent_builders::ListPackageVersions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPackageVersions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersions::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::ListPackageVersions::set_domain): <p> The name of the domain that contains the repository that contains the requested package versions. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersions::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::ListPackageVersions::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersions::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::ListPackageVersions::set_repository): <p> The name of the repository that contains the requested package versions. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::ListPackageVersions::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::ListPackageVersions::set_format): <p> The format of the returned package versions. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersions::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::ListPackageVersions::set_namespace): <p>The namespace of the package that contains the requested package versions. The package component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersions::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::ListPackageVersions::set_package): <p> The name of the package for which you want to request package versions. </p>
    ///   - [`status(PackageVersionStatus)`](crate::client::fluent_builders::ListPackageVersions::status) / [`set_status(Option<PackageVersionStatus>)`](crate::client::fluent_builders::ListPackageVersions::set_status): <p> A string that filters the requested package versions by status. </p>
    ///   - [`sort_by(PackageVersionSortType)`](crate::client::fluent_builders::ListPackageVersions::sort_by) / [`set_sort_by(Option<PackageVersionSortType>)`](crate::client::fluent_builders::ListPackageVersions::set_sort_by): <p> How to sort the requested list of package versions. </p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPackageVersions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListPackageVersions::set_max_results): <p> The maximum number of results to return per page. </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPackageVersions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPackageVersions::set_next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    ///   - [`origin_type(PackageVersionOriginType)`](crate::client::fluent_builders::ListPackageVersions::origin_type) / [`set_origin_type(Option<PackageVersionOriginType>)`](crate::client::fluent_builders::ListPackageVersions::set_origin_type): <p>The <code>originType</code> used to filter package versions. Only package versions with the provided <code>originType</code> will be returned.</p>
    /// - On success, responds with [`ListPackageVersionsOutput`](crate::output::ListPackageVersionsOutput) with field(s):
    ///   - [`default_display_version(Option<String>)`](crate::output::ListPackageVersionsOutput::default_display_version): <p> The default package version to display. This depends on the package format: </p>  <ul>   <li> <p> For Maven and PyPI packages, it's the most recently published package version. </p> </li>   <li> <p> For npm packages, it's the version referenced by the <code>latest</code> tag. If the <code>latest</code> tag is not set, it's the most recently published package version. </p> </li>  </ul>
    ///   - [`format(Option<PackageFormat>)`](crate::output::ListPackageVersionsOutput::format): <p> A format of the package. </p>
    ///   - [`namespace(Option<String>)`](crate::output::ListPackageVersionsOutput::namespace): <p>The namespace of the package that contains the requested package versions. The package component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(Option<String>)`](crate::output::ListPackageVersionsOutput::package): <p> The name of the package. </p>
    ///   - [`versions(Option<Vec<PackageVersionSummary>>)`](crate::output::ListPackageVersionsOutput::versions): <p> The returned list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageVersionSummary.html">PackageVersionSummary</a> objects. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPackageVersionsOutput::next_token): <p> If there are additional results, this is the token for the next set of results. </p>
    /// - On failure, responds with [`SdkError<ListPackageVersionsError>`](crate::error::ListPackageVersionsError)
    pub fn list_package_versions(&self) -> fluent_builders::ListPackageVersions {
        fluent_builders::ListPackageVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRepositories`](crate::client::fluent_builders::ListRepositories) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRepositories::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`repository_prefix(impl Into<String>)`](crate::client::fluent_builders::ListRepositories::repository_prefix) / [`set_repository_prefix(Option<String>)`](crate::client::fluent_builders::ListRepositories::set_repository_prefix): <p> A prefix used to filter returned repositories. Only repositories with names that start with <code>repositoryPrefix</code> are returned.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRepositories::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRepositories::set_max_results): <p> The maximum number of results to return per page. </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRepositories::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRepositories::set_next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    /// - On success, responds with [`ListRepositoriesOutput`](crate::output::ListRepositoriesOutput) with field(s):
    ///   - [`repositories(Option<Vec<RepositorySummary>>)`](crate::output::ListRepositoriesOutput::repositories): <p> The returned list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_RepositorySummary.html">RepositorySummary</a> objects. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRepositoriesOutput::next_token): <p> If there are additional results, this is the token for the next set of results. </p>
    /// - On failure, responds with [`SdkError<ListRepositoriesError>`](crate::error::ListRepositoriesError)
    pub fn list_repositories(&self) -> fluent_builders::ListRepositories {
        fluent_builders::ListRepositories::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRepositoriesInDomain`](crate::client::fluent_builders::ListRepositoriesInDomain) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRepositoriesInDomain::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::set_domain): <p> The name of the domain that contains the returned list of repositories. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`administrator_account(impl Into<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::administrator_account) / [`set_administrator_account(Option<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::set_administrator_account): <p> Filter the list of repositories to only include those that are managed by the Amazon Web Services account ID. </p>
    ///   - [`repository_prefix(impl Into<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::repository_prefix) / [`set_repository_prefix(Option<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::set_repository_prefix): <p> A prefix used to filter returned repositories. Only repositories with names that start with <code>repositoryPrefix</code> are returned. </p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRepositoriesInDomain::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRepositoriesInDomain::set_max_results): <p> The maximum number of results to return per page. </p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRepositoriesInDomain::set_next_token): <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
    /// - On success, responds with [`ListRepositoriesInDomainOutput`](crate::output::ListRepositoriesInDomainOutput) with field(s):
    ///   - [`repositories(Option<Vec<RepositorySummary>>)`](crate::output::ListRepositoriesInDomainOutput::repositories): <p> The returned list of repositories. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRepositoriesInDomainOutput::next_token): <p> If there are additional results, this is the token for the next set of results. </p>
    /// - On failure, responds with [`SdkError<ListRepositoriesInDomainError>`](crate::error::ListRepositoriesInDomainError)
    pub fn list_repositories_in_domain(&self) -> fluent_builders::ListRepositoriesInDomain {
        fluent_builders::ListRepositoriesInDomain::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTagsForResource`](crate::client::fluent_builders::ListTagsForResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::ListTagsForResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::ListTagsForResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource to get tags for.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<Vec<Tag>>)`](crate::output::ListTagsForResourceOutput::tags): <p>A list of tag key and value pairs associated with the specified resource.</p>
    /// - On failure, responds with [`SdkError<ListTagsForResourceError>`](crate::error::ListTagsForResourceError)
    pub fn list_tags_for_resource(&self) -> fluent_builders::ListTagsForResource {
        fluent_builders::ListTagsForResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutDomainPermissionsPolicy`](crate::client::fluent_builders::PutDomainPermissionsPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::set_domain): <p> The name of the domain on which to set the resource policy. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`policy_revision(impl Into<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::policy_revision) / [`set_policy_revision(Option<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::set_policy_revision): <p> The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. </p>
    ///   - [`policy_document(impl Into<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::policy_document) / [`set_policy_document(Option<String>)`](crate::client::fluent_builders::PutDomainPermissionsPolicy::set_policy_document): <p> A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided domain. </p>
    /// - On success, responds with [`PutDomainPermissionsPolicyOutput`](crate::output::PutDomainPermissionsPolicyOutput) with field(s):
    ///   - [`policy(Option<ResourcePolicy>)`](crate::output::PutDomainPermissionsPolicyOutput::policy): <p> The resource policy that was set after processing the request. </p>
    /// - On failure, responds with [`SdkError<PutDomainPermissionsPolicyError>`](crate::error::PutDomainPermissionsPolicyError)
    pub fn put_domain_permissions_policy(&self) -> fluent_builders::PutDomainPermissionsPolicy {
        fluent_builders::PutDomainPermissionsPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutPackageOriginConfiguration`](crate::client::fluent_builders::PutPackageOriginConfiguration) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::set_domain): <p>The name of the domain that contains the repository that contains the package.</p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::set_repository): <p>The name of the repository that contains the package.</p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::PutPackageOriginConfiguration::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::set_format): <p>A format that specifies the type of the package to be updated.</p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::set_namespace): <p>The namespace of the package to be updated. The package component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::set_package): <p>The name of the package to be updated.</p>
    ///   - [`restrictions(PackageOriginRestrictions)`](crate::client::fluent_builders::PutPackageOriginConfiguration::restrictions) / [`set_restrictions(Option<PackageOriginRestrictions>)`](crate::client::fluent_builders::PutPackageOriginConfiguration::set_restrictions): <p>A <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a> object that contains information about the <code>upstream</code> and <code>publish</code> package origin restrictions. The <code>upstream</code> restriction determines if new package versions can be ingested or retained from external connections or upstream repositories. The <code>publish</code> restriction determines if new package versions can be published directly to the repository.</p>  <p>You must include both the desired <code>upstream</code> and <code>publish</code> restrictions.</p>
    /// - On success, responds with [`PutPackageOriginConfigurationOutput`](crate::output::PutPackageOriginConfigurationOutput) with field(s):
    ///   - [`origin_configuration(Option<PackageOriginConfiguration>)`](crate::output::PutPackageOriginConfigurationOutput::origin_configuration): <p>A <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginConfiguration.html">PackageOriginConfiguration</a> object that describes the origin configuration set for the package. It contains a <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a> object that describes how new versions of the package can be introduced to the repository.</p>
    /// - On failure, responds with [`SdkError<PutPackageOriginConfigurationError>`](crate::error::PutPackageOriginConfigurationError)
    pub fn put_package_origin_configuration(
        &self,
    ) -> fluent_builders::PutPackageOriginConfiguration {
        fluent_builders::PutPackageOriginConfiguration::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutRepositoryPermissionsPolicy`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::set_domain): <p> The name of the domain containing the repository to set the resource policy on. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::set_repository): <p> The name of the repository to set the resource policy on. </p>
    ///   - [`policy_revision(impl Into<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::policy_revision) / [`set_policy_revision(Option<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::set_policy_revision): <p> Sets the revision of the resource policy that specifies permissions to access the repository. This revision is used for optimistic locking, which prevents others from overwriting your changes to the repository's resource policy. </p>
    ///   - [`policy_document(impl Into<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::policy_document) / [`set_policy_document(Option<String>)`](crate::client::fluent_builders::PutRepositoryPermissionsPolicy::set_policy_document): <p> A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided repository. </p>
    /// - On success, responds with [`PutRepositoryPermissionsPolicyOutput`](crate::output::PutRepositoryPermissionsPolicyOutput) with field(s):
    ///   - [`policy(Option<ResourcePolicy>)`](crate::output::PutRepositoryPermissionsPolicyOutput::policy): <p> The resource policy that was set after processing the request. </p>
    /// - On failure, responds with [`SdkError<PutRepositoryPermissionsPolicyError>`](crate::error::PutRepositoryPermissionsPolicyError)
    pub fn put_repository_permissions_policy(
        &self,
    ) -> fluent_builders::PutRepositoryPermissionsPolicy {
        fluent_builders::PutRepositoryPermissionsPolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`TagResource`](crate::client::fluent_builders::TagResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::TagResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::TagResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource that you want to add or update tags for.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::TagResource::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::TagResource::set_tags): <p>The tags you want to modify or add to the resource.</p>
    /// - On success, responds with [`TagResourceOutput`](crate::output::TagResourceOutput)

    /// - On failure, responds with [`SdkError<TagResourceError>`](crate::error::TagResourceError)
    pub fn tag_resource(&self) -> fluent_builders::TagResource {
        fluent_builders::TagResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UntagResource`](crate::client::fluent_builders::UntagResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::UntagResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::UntagResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource that you want to remove tags from.</p>
    ///   - [`tag_keys(Vec<String>)`](crate::client::fluent_builders::UntagResource::tag_keys) / [`set_tag_keys(Option<Vec<String>>)`](crate::client::fluent_builders::UntagResource::set_tag_keys): <p>The tag key for each tag that you want to remove from the resource.</p>
    /// - On success, responds with [`UntagResourceOutput`](crate::output::UntagResourceOutput)

    /// - On failure, responds with [`SdkError<UntagResourceError>`](crate::error::UntagResourceError)
    pub fn untag_resource(&self) -> fluent_builders::UntagResource {
        fluent_builders::UntagResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdatePackageVersionsStatus`](crate::client::fluent_builders::UpdatePackageVersionsStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_domain): <p> The name of the domain that contains the repository that contains the package versions with a status to be updated. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_repository): <p> The repository that contains the package versions with the status you want to update. </p>
    ///   - [`format(PackageFormat)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::format) / [`set_format(Option<PackageFormat>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_format): <p> A format that specifies the type of the package with the statuses to update. </p>
    ///   - [`namespace(impl Into<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::namespace) / [`set_namespace(Option<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_namespace): <p>The namespace of the package version to be updated. The package version component that specifies its namespace depends on its type. For example:</p>  <ul>   <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>   <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>   <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>  </ul>
    ///   - [`package(impl Into<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::package) / [`set_package(Option<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_package): <p> The name of the package with the version statuses to update. </p>
    ///   - [`versions(Vec<String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::versions) / [`set_versions(Option<Vec<String>>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_versions): <p> An array of strings that specify the versions of the package with the statuses to update. </p>
    ///   - [`version_revisions(HashMap<String, String>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::version_revisions) / [`set_version_revisions(Option<HashMap<String, String>>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_version_revisions): <p> A map of package versions and package version revisions. The map <code>key</code> is the package version (for example, <code>3.5.2</code>), and the map <code>value</code> is the package version revision. </p>
    ///   - [`expected_status(PackageVersionStatus)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::expected_status) / [`set_expected_status(Option<PackageVersionStatus>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_expected_status): <p> The package version’s expected status before it is updated. If <code>expectedStatus</code> is provided, the package version's status is updated only if its status at the time <code>UpdatePackageVersionsStatus</code> is called matches <code>expectedStatus</code>. </p>
    ///   - [`target_status(PackageVersionStatus)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::target_status) / [`set_target_status(Option<PackageVersionStatus>)`](crate::client::fluent_builders::UpdatePackageVersionsStatus::set_target_status): <p> The status you want to change the package version status to. </p>
    /// - On success, responds with [`UpdatePackageVersionsStatusOutput`](crate::output::UpdatePackageVersionsStatusOutput) with field(s):
    ///   - [`successful_versions(Option<HashMap<String, SuccessfulPackageVersionInfo>>)`](crate::output::UpdatePackageVersionsStatusOutput::successful_versions): <p> A list of <code>PackageVersionError</code> objects, one for each package version with a status that failed to update. </p>
    ///   - [`failed_versions(Option<HashMap<String, PackageVersionError>>)`](crate::output::UpdatePackageVersionsStatusOutput::failed_versions): <p> A list of <code>SuccessfulPackageVersionInfo</code> objects, one for each package version with a status that successfully updated. </p>
    /// - On failure, responds with [`SdkError<UpdatePackageVersionsStatusError>`](crate::error::UpdatePackageVersionsStatusError)
    pub fn update_package_versions_status(&self) -> fluent_builders::UpdatePackageVersionsStatus {
        fluent_builders::UpdatePackageVersionsStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRepository`](crate::client::fluent_builders::UpdateRepository) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`domain(impl Into<String>)`](crate::client::fluent_builders::UpdateRepository::domain) / [`set_domain(Option<String>)`](crate::client::fluent_builders::UpdateRepository::set_domain): <p> The name of the domain associated with the repository to update. </p>
    ///   - [`domain_owner(impl Into<String>)`](crate::client::fluent_builders::UpdateRepository::domain_owner) / [`set_domain_owner(Option<String>)`](crate::client::fluent_builders::UpdateRepository::set_domain_owner): <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
    ///   - [`repository(impl Into<String>)`](crate::client::fluent_builders::UpdateRepository::repository) / [`set_repository(Option<String>)`](crate::client::fluent_builders::UpdateRepository::set_repository): <p> The name of the repository to update. </p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateRepository::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateRepository::set_description): <p> An updated repository description. </p>
    ///   - [`upstreams(Vec<UpstreamRepository>)`](crate::client::fluent_builders::UpdateRepository::upstreams) / [`set_upstreams(Option<Vec<UpstreamRepository>>)`](crate::client::fluent_builders::UpdateRepository::set_upstreams): <p> A list of upstream repositories to associate with the repository. The order of the upstream repositories in the list determines their priority order when CodeArtifact looks for a requested package version. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
    /// - On success, responds with [`UpdateRepositoryOutput`](crate::output::UpdateRepositoryOutput) with field(s):
    ///   - [`repository(Option<RepositoryDescription>)`](crate::output::UpdateRepositoryOutput::repository): <p> The updated repository. </p>
    /// - On failure, responds with [`SdkError<UpdateRepositoryError>`](crate::error::UpdateRepositoryError)
    pub fn update_repository(&self) -> fluent_builders::UpdateRepository {
        fluent_builders::UpdateRepository::new(self.handle.clone())
    }
}
pub mod fluent_builders {

    //! Utilities to ergonomically construct a request to the service.
    //!
    //! Fluent builders are created through the [`Client`](crate::client::Client) by calling
    //! one if its operation methods. After parameters are set using the builder methods,
    //! the `send` method can be called to initiate the request.
    /// Fluent builder constructing a request to `AssociateExternalConnection`.
    ///
    /// <p>Adds an existing external connection to a repository. One external connection is allowed per repository.</p> <note>
    /// <p>A repository can have one or more upstream repositories, or an external connection.</p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateExternalConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_external_connection_input::Builder,
    }
    impl AssociateExternalConnection {
        /// Creates a new `AssociateExternalConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateExternalConnection,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateExternalConnectionError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::AssociateExternalConnectionOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateExternalConnectionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the domain that contains the repository.</p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p>The name of the domain that contains the repository.</p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository to which the external connection is added. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository to which the external connection is added. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> The name of the external connection to add to the repository. The following values are supported: </p>
        /// <ul>
        /// <li> <p> <code>public:npmjs</code> - for the npm public repository. </p> </li>
        /// <li> <p> <code>public:nuget-org</code> - for the NuGet Gallery. </p> </li>
        /// <li> <p> <code>public:pypi</code> - for the Python Package Index. </p> </li>
        /// <li> <p> <code>public:maven-central</code> - for Maven Central. </p> </li>
        /// <li> <p> <code>public:maven-googleandroid</code> - for the Google Android repository. </p> </li>
        /// <li> <p> <code>public:maven-gradleplugins</code> - for the Gradle plugins repository. </p> </li>
        /// <li> <p> <code>public:maven-commonsware</code> - for the CommonsWare Android repository. </p> </li>
        /// </ul>
        pub fn external_connection(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.external_connection(input.into());
            self
        }
        /// <p> The name of the external connection to add to the repository. The following values are supported: </p>
        /// <ul>
        /// <li> <p> <code>public:npmjs</code> - for the npm public repository. </p> </li>
        /// <li> <p> <code>public:nuget-org</code> - for the NuGet Gallery. </p> </li>
        /// <li> <p> <code>public:pypi</code> - for the Python Package Index. </p> </li>
        /// <li> <p> <code>public:maven-central</code> - for Maven Central. </p> </li>
        /// <li> <p> <code>public:maven-googleandroid</code> - for the Google Android repository. </p> </li>
        /// <li> <p> <code>public:maven-gradleplugins</code> - for the Gradle plugins repository. </p> </li>
        /// <li> <p> <code>public:maven-commonsware</code> - for the CommonsWare Android repository. </p> </li>
        /// </ul>
        pub fn set_external_connection(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_external_connection(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CopyPackageVersions`.
    ///
    /// <p> Copies package versions from one repository to another repository in the same domain. </p> <note>
    /// <p> You must specify <code>versions</code> or <code>versionRevisions</code>. You cannot specify both. </p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CopyPackageVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::copy_package_versions_input::Builder,
    }
    impl CopyPackageVersions {
        /// Creates a new `CopyPackageVersions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CopyPackageVersions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CopyPackageVersionsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CopyPackageVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::CopyPackageVersionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the source and destination repositories. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the source and destination repositories. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the package versions to be copied. </p>
        pub fn source_repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the package versions to be copied. </p>
        pub fn set_source_repository(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_repository(input);
            self
        }
        /// <p> The name of the repository into which package versions are copied. </p>
        pub fn destination_repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.destination_repository(input.into());
            self
        }
        /// <p> The name of the repository into which package versions are copied. </p>
        pub fn set_destination_repository(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_destination_repository(input);
            self
        }
        /// <p> The format of the package versions to be copied. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> The format of the package versions to be copied. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package versions to be copied. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. The namespace is required when copying Maven package versions. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package versions to be copied. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. The namespace is required when copying Maven package versions. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package that contains the versions to be copied. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package that contains the versions to be copied. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// Appends an item to `versions`.
        ///
        /// To override the contents of this collection use [`set_versions`](Self::set_versions).
        ///
        /// <p> The versions of the package to be copied. </p> <note>
        /// <p> You must specify <code>versions</code> or <code>versionRevisions</code>. You cannot specify both. </p>
        /// </note>
        pub fn versions(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.versions(input.into());
            self
        }
        /// <p> The versions of the package to be copied. </p> <note>
        /// <p> You must specify <code>versions</code> or <code>versionRevisions</code>. You cannot specify both. </p>
        /// </note>
        pub fn set_versions(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_versions(input);
            self
        }
        /// Adds a key-value pair to `versionRevisions`.
        ///
        /// To override the contents of this collection use [`set_version_revisions`](Self::set_version_revisions).
        ///
        /// <p> A list of key-value pairs. The keys are package versions and the values are package version revisions. A <code>CopyPackageVersion</code> operation succeeds if the specified versions in the source repository match the specified package version revision. </p> <note>
        /// <p> You must specify <code>versions</code> or <code>versionRevisions</code>. You cannot specify both. </p>
        /// </note>
        pub fn version_revisions(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.version_revisions(k.into(), v.into());
            self
        }
        /// <p> A list of key-value pairs. The keys are package versions and the values are package version revisions. A <code>CopyPackageVersion</code> operation succeeds if the specified versions in the source repository match the specified package version revision. </p> <note>
        /// <p> You must specify <code>versions</code> or <code>versionRevisions</code>. You cannot specify both. </p>
        /// </note>
        pub fn set_version_revisions(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_version_revisions(input);
            self
        }
        /// <p> Set to true to overwrite a package version that already exists in the destination repository. If set to false and the package version already exists in the destination repository, the package version is returned in the <code>failedVersions</code> field of the response with an <code>ALREADY_EXISTS</code> error code. </p>
        pub fn allow_overwrite(mut self, input: bool) -> Self {
            self.inner = self.inner.allow_overwrite(input);
            self
        }
        /// <p> Set to true to overwrite a package version that already exists in the destination repository. If set to false and the package version already exists in the destination repository, the package version is returned in the <code>failedVersions</code> field of the response with an <code>ALREADY_EXISTS</code> error code. </p>
        pub fn set_allow_overwrite(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_allow_overwrite(input);
            self
        }
        /// <p> Set to true to copy packages from repositories that are upstream from the source repository to the destination repository. The default setting is false. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
        pub fn include_from_upstream(mut self, input: bool) -> Self {
            self.inner = self.inner.include_from_upstream(input);
            self
        }
        /// <p> Set to true to copy packages from repositories that are upstream from the source repository to the destination repository. The default setting is false. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
        pub fn set_include_from_upstream(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_include_from_upstream(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateDomain`.
    ///
    /// <p> Creates a domain. CodeArtifact <i>domains</i> make it easier to manage multiple repositories across an organization. You can use a domain to apply permissions across many repositories owned by different Amazon Web Services accounts. An asset is stored only once in a domain, even if it's in multiple repositories. </p>
    /// <p>Although you can have multiple domains, we recommend a single production domain that contains all published artifacts so that your development teams can find and share packages. You can use a second pre-production domain to test changes to the production domain configuration. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateDomain {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_domain_input::Builder,
    }
    impl CreateDomain {
        /// Creates a new `CreateDomain`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateDomain,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateDomainError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateDomainOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateDomainError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain to create. All domain names in an Amazon Web Services Region that are in the same Amazon Web Services account must be unique. The domain name is used as the prefix in DNS hostnames. Do not use sensitive information in a domain name because it is publicly discoverable. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain to create. All domain names in an Amazon Web Services Region that are in the same Amazon Web Services account must be unique. The domain name is used as the prefix in DNS hostnames. Do not use sensitive information in a domain name because it is publicly discoverable. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The encryption key for the domain. This is used to encrypt content stored in a domain. An encryption key can be a key ID, a key Amazon Resource Name (ARN), a key alias, or a key alias ARN. To specify an <code>encryptionKey</code>, your IAM role must have <code>kms:DescribeKey</code> and <code>kms:CreateGrant</code> permissions on the encryption key that is used. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestSyntax">DescribeKey</a> in the <i>Key Management Service API Reference</i> and <a href="https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html">Key Management Service API Permissions Reference</a> in the <i>Key Management Service Developer Guide</i>. </p> <important>
        /// <p> CodeArtifact supports only symmetric CMKs. Do not associate an asymmetric CMK with your domain. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using symmetric and asymmetric keys</a> in the <i>Key Management Service Developer Guide</i>. </p>
        /// </important>
        pub fn encryption_key(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.encryption_key(input.into());
            self
        }
        /// <p> The encryption key for the domain. This is used to encrypt content stored in a domain. An encryption key can be a key ID, a key Amazon Resource Name (ARN), a key alias, or a key alias ARN. To specify an <code>encryptionKey</code>, your IAM role must have <code>kms:DescribeKey</code> and <code>kms:CreateGrant</code> permissions on the encryption key that is used. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestSyntax">DescribeKey</a> in the <i>Key Management Service API Reference</i> and <a href="https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html">Key Management Service API Permissions Reference</a> in the <i>Key Management Service Developer Guide</i>. </p> <important>
        /// <p> CodeArtifact supports only symmetric CMKs. Do not associate an asymmetric CMK with your domain. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Using symmetric and asymmetric keys</a> in the <i>Key Management Service Developer Guide</i>. </p>
        /// </important>
        pub fn set_encryption_key(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_encryption_key(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>One or more tag key-value pairs for the domain.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>One or more tag key-value pairs for the domain.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateRepository`.
    ///
    /// <p> Creates a repository. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateRepository {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_repository_input::Builder,
    }
    impl CreateRepository {
        /// Creates a new `CreateRepository`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateRepository,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateRepositoryError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateRepositoryOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateRepositoryError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the created repository. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the created repository. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository to create. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository to create. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> A description of the created repository. </p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p> A description of the created repository. </p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// Appends an item to `upstreams`.
        ///
        /// To override the contents of this collection use [`set_upstreams`](Self::set_upstreams).
        ///
        /// <p> A list of upstream repositories to associate with the repository. The order of the upstream repositories in the list determines their priority order when CodeArtifact looks for a requested package version. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
        pub fn upstreams(mut self, input: crate::model::UpstreamRepository) -> Self {
            self.inner = self.inner.upstreams(input);
            self
        }
        /// <p> A list of upstream repositories to associate with the repository. The order of the upstream repositories in the list determines their priority order when CodeArtifact looks for a requested package version. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
        pub fn set_upstreams(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UpstreamRepository>>,
        ) -> Self {
            self.inner = self.inner.set_upstreams(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>One or more tag key-value pairs for the repository.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>One or more tag key-value pairs for the repository.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteDomain`.
    ///
    /// <p> Deletes a domain. You cannot delete a domain that contains repositories. If you want to delete a domain with repositories, first delete its repositories. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteDomain {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_domain_input::Builder,
    }
    impl DeleteDomain {
        /// Creates a new `DeleteDomain`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteDomain,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteDomainError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteDomainOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteDomainError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain to delete. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain to delete. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteDomainPermissionsPolicy`.
    ///
    /// <p> Deletes the resource policy set on a domain. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteDomainPermissionsPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_domain_permissions_policy_input::Builder,
    }
    impl DeleteDomainPermissionsPolicy {
        /// Creates a new `DeleteDomainPermissionsPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteDomainPermissionsPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteDomainPermissionsPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteDomainPermissionsPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteDomainPermissionsPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain associated with the resource policy to be deleted. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain associated with the resource policy to be deleted. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The current revision of the resource policy to be deleted. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. </p>
        pub fn policy_revision(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy_revision(input.into());
            self
        }
        /// <p> The current revision of the resource policy to be deleted. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. </p>
        pub fn set_policy_revision(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_policy_revision(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeletePackageVersions`.
    ///
    /// <p> Deletes one or more versions of a package. A deleted package version cannot be restored in your repository. If you want to remove a package version from your repository and be able to restore it later, set its status to <code>Archived</code>. Archived packages cannot be downloaded from a repository and don't show up with list package APIs (for example, <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersions.html">ListPackageVersions</a>), but you can restore them using <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html">UpdatePackageVersionsStatus</a>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeletePackageVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_package_versions_input::Builder,
    }
    impl DeletePackageVersions {
        /// Creates a new `DeletePackageVersions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeletePackageVersions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeletePackageVersionsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeletePackageVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::DeletePackageVersionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the package to delete. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the package to delete. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the package versions to delete. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the package versions to delete. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> The format of the package versions to delete. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> The format of the package versions to delete. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package versions to be deleted. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. The namespace is required when deleting Maven package versions. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package versions to be deleted. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. The namespace is required when deleting Maven package versions. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package with the versions to delete. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package with the versions to delete. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// Appends an item to `versions`.
        ///
        /// To override the contents of this collection use [`set_versions`](Self::set_versions).
        ///
        /// <p> An array of strings that specify the versions of the package to delete. </p>
        pub fn versions(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.versions(input.into());
            self
        }
        /// <p> An array of strings that specify the versions of the package to delete. </p>
        pub fn set_versions(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_versions(input);
            self
        }
        /// <p> The expected status of the package version to delete. </p>
        pub fn expected_status(mut self, input: crate::model::PackageVersionStatus) -> Self {
            self.inner = self.inner.expected_status(input);
            self
        }
        /// <p> The expected status of the package version to delete. </p>
        pub fn set_expected_status(
            mut self,
            input: std::option::Option<crate::model::PackageVersionStatus>,
        ) -> Self {
            self.inner = self.inner.set_expected_status(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteRepository`.
    ///
    /// <p> Deletes a repository. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteRepository {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_repository_input::Builder,
    }
    impl DeleteRepository {
        /// Creates a new `DeleteRepository`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteRepository,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteRepositoryError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteRepositoryOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteRepositoryError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository to delete. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository to delete. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository to delete. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository to delete. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteRepositoryPermissionsPolicy`.
    ///
    /// <p> Deletes the resource policy that is set on a repository. After a resource policy is deleted, the permissions allowed and denied by the deleted policy are removed. The effect of deleting a resource policy might not be immediate. </p> <important>
    /// <p> Use <code>DeleteRepositoryPermissionsPolicy</code> with caution. After a policy is deleted, Amazon Web Services users, roles, and accounts lose permissions to perform the repository actions granted by the deleted policy. </p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteRepositoryPermissionsPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_repository_permissions_policy_input::Builder,
    }
    impl DeleteRepositoryPermissionsPolicy {
        /// Creates a new `DeleteRepositoryPermissionsPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteRepositoryPermissionsPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteRepositoryPermissionsPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteRepositoryPermissionsPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteRepositoryPermissionsPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository associated with the resource policy to be deleted. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository associated with the resource policy to be deleted. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that is associated with the resource policy to be deleted </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that is associated with the resource policy to be deleted </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> The revision of the repository's resource policy to be deleted. This revision is used for optimistic locking, which prevents others from accidentally overwriting your changes to the repository's resource policy. </p>
        pub fn policy_revision(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy_revision(input.into());
            self
        }
        /// <p> The revision of the repository's resource policy to be deleted. This revision is used for optimistic locking, which prevents others from accidentally overwriting your changes to the repository's resource policy. </p>
        pub fn set_policy_revision(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_policy_revision(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeDomain`.
    ///
    /// <p> Returns a <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DomainDescription.html">DomainDescription</a> object that contains information about the requested domain. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeDomain {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_domain_input::Builder,
    }
    impl DescribeDomain {
        /// Creates a new `DescribeDomain`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeDomain,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeDomainError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DescribeDomainOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeDomainError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> A string that specifies the name of the requested domain. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> A string that specifies the name of the requested domain. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribePackage`.
    ///
    /// <p> Returns a <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDescription.html">PackageDescription</a> object that contains information about the requested package.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribePackage {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_package_input::Builder,
    }
    impl DescribePackage {
        /// Creates a new `DescribePackage`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribePackage,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribePackageError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DescribePackageOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribePackageError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the domain that contains the repository that contains the package.</p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p>The name of the domain that contains the repository that contains the package.</p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p>The name of the repository that contains the requested package. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p>The name of the repository that contains the requested package. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p>A format that specifies the type of the requested package.</p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p>A format that specifies the type of the requested package.</p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the requested package. The package component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. The namespace is required when requesting Maven packages. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the requested package. The package component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. The namespace is required when requesting Maven packages. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p>The name of the requested package.</p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p>The name of the requested package.</p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribePackageVersion`.
    ///
    /// <p> Returns a <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageVersionDescription.html">PackageVersionDescription</a> object that contains information about the requested package version. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribePackageVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_package_version_input::Builder,
    }
    impl DescribePackageVersion {
        /// Creates a new `DescribePackageVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribePackageVersion,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribePackageVersionError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DescribePackageVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribePackageVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository that contains the package version. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository that contains the package version. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the package version. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the package version. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> A format that specifies the type of the requested package version. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> A format that specifies the type of the requested package version. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the requested package version. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the requested package version. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the requested package version. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the requested package version. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn package_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package_version(input.into());
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn set_package_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_package_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeRepository`.
    ///
    /// <p> Returns a <code>RepositoryDescription</code> object that contains detailed information about the requested repository. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeRepository {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_repository_input::Builder,
    }
    impl DescribeRepository {
        /// Creates a new `DescribeRepository`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeRepository,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeRepositoryError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DescribeRepositoryOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeRepositoryError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository to describe. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository to describe. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> A string that specifies the name of the requested repository. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> A string that specifies the name of the requested repository. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateExternalConnection`.
    ///
    /// <p> Removes an existing external connection from a repository. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateExternalConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_external_connection_input::Builder,
    }
    impl DisassociateExternalConnection {
        /// Creates a new `DisassociateExternalConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateExternalConnection,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateExternalConnectionError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DisassociateExternalConnectionOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateExternalConnectionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the domain that contains the repository from which to remove the external repository. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p>The name of the domain that contains the repository from which to remove the external repository. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p>The name of the repository from which the external connection will be removed. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p>The name of the repository from which the external connection will be removed. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p>The name of the external connection to be removed from the repository. </p>
        pub fn external_connection(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.external_connection(input.into());
            self
        }
        /// <p>The name of the external connection to be removed from the repository. </p>
        pub fn set_external_connection(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_external_connection(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisposePackageVersions`.
    ///
    /// <p> Deletes the assets in package versions and sets the package versions' status to <code>Disposed</code>. A disposed package version cannot be restored in your repository because its assets are deleted. </p>
    /// <p> To view all disposed package versions in a repository, use <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersions.html">ListPackageVersions</a> and set the <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersions.html#API_ListPackageVersions_RequestSyntax">status</a> parameter to <code>Disposed</code>. </p>
    /// <p> To view information about a disposed package version, use <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DescribePackageVersion.html">DescribePackageVersion</a>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisposePackageVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::dispose_package_versions_input::Builder,
    }
    impl DisposePackageVersions {
        /// Creates a new `DisposePackageVersions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisposePackageVersions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisposePackageVersionsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DisposePackageVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::DisposePackageVersionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository you want to dispose. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository you want to dispose. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the package versions you want to dispose. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the package versions you want to dispose. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> A format that specifies the type of package versions you want to dispose. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> A format that specifies the type of package versions you want to dispose. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package versions to be disposed. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package versions to be disposed. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package with the versions you want to dispose. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package with the versions you want to dispose. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// Appends an item to `versions`.
        ///
        /// To override the contents of this collection use [`set_versions`](Self::set_versions).
        ///
        /// <p> The versions of the package you want to dispose. </p>
        pub fn versions(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.versions(input.into());
            self
        }
        /// <p> The versions of the package you want to dispose. </p>
        pub fn set_versions(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_versions(input);
            self
        }
        /// Adds a key-value pair to `versionRevisions`.
        ///
        /// To override the contents of this collection use [`set_version_revisions`](Self::set_version_revisions).
        ///
        /// <p> The revisions of the package versions you want to dispose. </p>
        pub fn version_revisions(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.version_revisions(k.into(), v.into());
            self
        }
        /// <p> The revisions of the package versions you want to dispose. </p>
        pub fn set_version_revisions(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_version_revisions(input);
            self
        }
        /// <p> The expected status of the package version to dispose. </p>
        pub fn expected_status(mut self, input: crate::model::PackageVersionStatus) -> Self {
            self.inner = self.inner.expected_status(input);
            self
        }
        /// <p> The expected status of the package version to dispose. </p>
        pub fn set_expected_status(
            mut self,
            input: std::option::Option<crate::model::PackageVersionStatus>,
        ) -> Self {
            self.inner = self.inner.set_expected_status(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetAuthorizationToken`.
    ///
    /// <p> Generates a temporary authorization token for accessing repositories in the domain. This API requires the <code>codeartifact:GetAuthorizationToken</code> and <code>sts:GetServiceBearerToken</code> permissions. For more information about authorization tokens, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/tokens-authentication.html">CodeArtifact authentication and tokens</a>. </p> <note>
    /// <p>CodeArtifact authorization tokens are valid for a period of 12 hours when created with the <code>login</code> command. You can call <code>login</code> periodically to refresh the token. When you create an authorization token with the <code>GetAuthorizationToken</code> API, you can set a custom authorization period, up to a maximum of 12 hours, with the <code>durationSeconds</code> parameter.</p>
    /// <p>The authorization period begins after <code>login</code> or <code>GetAuthorizationToken</code> is called. If <code>login</code> or <code>GetAuthorizationToken</code> is called while assuming a role, the token lifetime is independent of the maximum session duration of the role. For example, if you call <code>sts assume-role</code> and specify a session duration of 15 minutes, then generate a CodeArtifact authorization token, the token will be valid for the full authorization period even though this is longer than the 15-minute session duration.</p>
    /// <p>See <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html">Using IAM Roles</a> for more information on controlling session duration. </p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetAuthorizationToken {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_authorization_token_input::Builder,
    }
    impl GetAuthorizationToken {
        /// Creates a new `GetAuthorizationToken`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetAuthorizationToken,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetAuthorizationTokenError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetAuthorizationTokenOutput,
            aws_smithy_http::result::SdkError<crate::error::GetAuthorizationTokenError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that is in scope for the generated authorization token. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that is in scope for the generated authorization token. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p>The time, in seconds, that the generated authorization token is valid. Valid values are <code>0</code> and any number between <code>900</code> (15 minutes) and <code>43200</code> (12 hours). A value of <code>0</code> will set the expiration of the authorization token to the same expiration of the user's role's temporary credentials.</p>
        pub fn duration_seconds(mut self, input: i64) -> Self {
            self.inner = self.inner.duration_seconds(input);
            self
        }
        /// <p>The time, in seconds, that the generated authorization token is valid. Valid values are <code>0</code> and any number between <code>900</code> (15 minutes) and <code>43200</code> (12 hours). A value of <code>0</code> will set the expiration of the authorization token to the same expiration of the user's role's temporary credentials.</p>
        pub fn set_duration_seconds(mut self, input: std::option::Option<i64>) -> Self {
            self.inner = self.inner.set_duration_seconds(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetDomainPermissionsPolicy`.
    ///
    /// <p> Returns the resource policy attached to the specified domain. </p> <note>
    /// <p> The policy is a resource-based policy, not an identity-based policy. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html">Identity-based policies and resource-based policies </a> in the <i>IAM User Guide</i>. </p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetDomainPermissionsPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_domain_permissions_policy_input::Builder,
    }
    impl GetDomainPermissionsPolicy {
        /// Creates a new `GetDomainPermissionsPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetDomainPermissionsPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetDomainPermissionsPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetDomainPermissionsPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::GetDomainPermissionsPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain to which the resource policy is attached. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain to which the resource policy is attached. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetPackageVersionAsset`.
    ///
    /// <p> Returns an asset (or file) that is in a package. For example, for a Maven package version, use <code>GetPackageVersionAsset</code> to download a <code>JAR</code> file, a <code>POM</code> file, or any other assets in the package version. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetPackageVersionAsset {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_package_version_asset_input::Builder,
    }
    impl GetPackageVersionAsset {
        /// Creates a new `GetPackageVersionAsset`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetPackageVersionAsset,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetPackageVersionAssetError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetPackageVersionAssetOutput,
            aws_smithy_http::result::SdkError<crate::error::GetPackageVersionAssetError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository that contains the package version with the requested asset. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository that contains the package version with the requested asset. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The repository that contains the package version with the requested asset. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The repository that contains the package version with the requested asset. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> A format that specifies the type of the package version with the requested asset file. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> A format that specifies the type of the package version with the requested asset file. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package version with the requested asset file. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package version with the requested asset file. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package that contains the requested asset. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package that contains the requested asset. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn package_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package_version(input.into());
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn set_package_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_package_version(input);
            self
        }
        /// <p> The name of the requested asset. </p>
        pub fn asset(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.asset(input.into());
            self
        }
        /// <p> The name of the requested asset. </p>
        pub fn set_asset(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_asset(input);
            self
        }
        /// <p> The name of the package version revision that contains the requested asset. </p>
        pub fn package_version_revision(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package_version_revision(input.into());
            self
        }
        /// <p> The name of the package version revision that contains the requested asset. </p>
        pub fn set_package_version_revision(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_package_version_revision(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetPackageVersionReadme`.
    ///
    /// <p> Gets the readme file or descriptive text for a package version. </p>
    /// <p> The returned text might contain formatting. For example, it might contain formatting for Markdown or reStructuredText. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetPackageVersionReadme {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_package_version_readme_input::Builder,
    }
    impl GetPackageVersionReadme {
        /// Creates a new `GetPackageVersionReadme`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetPackageVersionReadme,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetPackageVersionReadmeError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetPackageVersionReadmeOutput,
            aws_smithy_http::result::SdkError<crate::error::GetPackageVersionReadmeError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository that contains the package version with the requested readme file. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository that contains the package version with the requested readme file. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The repository that contains the package with the requested readme file. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The repository that contains the package with the requested readme file. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> A format that specifies the type of the package version with the requested readme file. </p> <note>
        /// <p>Although <code>maven</code> is listed as a valid value, CodeArtifact does not support displaying readme files for Maven packages.</p>
        /// </note>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> A format that specifies the type of the package version with the requested readme file. </p> <note>
        /// <p>Although <code>maven</code> is listed as a valid value, CodeArtifact does not support displaying readme files for Maven packages.</p>
        /// </note>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package version with the requested readme file. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package version with the requested readme file. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package version that contains the requested readme file. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package version that contains the requested readme file. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn package_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package_version(input.into());
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn set_package_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_package_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetRepositoryEndpoint`.
    ///
    /// <p> Returns the endpoint of a repository for a specific package format. A repository has one endpoint for each package format: </p>
    /// <ul>
    /// <li> <p> <code>maven</code> </p> </li>
    /// <li> <p> <code>npm</code> </p> </li>
    /// <li> <p> <code>nuget</code> </p> </li>
    /// <li> <p> <code>pypi</code> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetRepositoryEndpoint {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_repository_endpoint_input::Builder,
    }
    impl GetRepositoryEndpoint {
        /// Creates a new `GetRepositoryEndpoint`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetRepositoryEndpoint,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetRepositoryEndpointError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetRepositoryEndpointOutput,
            aws_smithy_http::result::SdkError<crate::error::GetRepositoryEndpointError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain that contains the repository. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain that contains the repository. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> Returns which endpoint of a repository to return. A repository has one endpoint for each package format. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> Returns which endpoint of a repository to return. A repository has one endpoint for each package format. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetRepositoryPermissionsPolicy`.
    ///
    /// <p> Returns the resource policy that is set on a repository. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetRepositoryPermissionsPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_repository_permissions_policy_input::Builder,
    }
    impl GetRepositoryPermissionsPolicy {
        /// Creates a new `GetRepositoryPermissionsPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetRepositoryPermissionsPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetRepositoryPermissionsPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetRepositoryPermissionsPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::GetRepositoryPermissionsPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain containing the repository whose associated resource policy is to be retrieved. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain containing the repository whose associated resource policy is to be retrieved. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository whose associated resource policy is to be retrieved. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository whose associated resource policy is to be retrieved. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListDomains`.
    ///
    /// <p> Returns a list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageVersionDescription.html">DomainSummary</a> objects for all domains owned by the Amazon Web Services account that makes this call. Each returned <code>DomainSummary</code> object contains information about a domain. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDomains {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_domains_input::Builder,
    }
    impl ListDomains {
        /// Creates a new `ListDomains`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListDomains,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDomainsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListDomainsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDomainsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListDomainsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDomainsPaginator {
            crate::paginator::ListDomainsPaginator::new(self.handle, self.inner)
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPackages`.
    ///
    /// <p> Returns a list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageSummary.html">PackageSummary</a> objects for packages in a repository that match the request parameters. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPackages {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_packages_input::Builder,
    }
    impl ListPackages {
        /// Creates a new `ListPackages`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPackages,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPackagesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListPackagesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPackagesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPackagesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPackagesPaginator {
            crate::paginator::ListPackagesPaginator::new(self.handle, self.inner)
        }
        /// <p> The name of the domain that contains the repository that contains the requested packages. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository that contains the requested packages. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the requested packages. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the requested packages. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p>The format used to filter requested packages. Only packages from the provided format will be returned.</p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p>The format used to filter requested packages. Only packages from the provided format will be returned.</p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace prefix used to filter requested packages. Only packages with a namespace that starts with the provided string value are returned. Note that although this option is called <code>--namespace</code> and not <code>--namespace-prefix</code>, it has prefix-matching behavior.</p>
        /// <p>Each package format uses namespace as follows:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace prefix used to filter requested packages. Only packages with a namespace that starts with the provided string value are returned. Note that although this option is called <code>--namespace</code> and not <code>--namespace-prefix</code>, it has prefix-matching behavior.</p>
        /// <p>Each package format uses namespace as follows:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> A prefix used to filter requested packages. Only packages with names that start with <code>packagePrefix</code> are returned. </p>
        pub fn package_prefix(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package_prefix(input.into());
            self
        }
        /// <p> A prefix used to filter requested packages. Only packages with names that start with <code>packagePrefix</code> are returned. </p>
        pub fn set_package_prefix(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_package_prefix(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The value of the <code>Publish</code> package origin control restriction used to filter requested packages. Only packages with the provided restriction are returned. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a>.</p>
        pub fn publish(mut self, input: crate::model::AllowPublish) -> Self {
            self.inner = self.inner.publish(input);
            self
        }
        /// <p>The value of the <code>Publish</code> package origin control restriction used to filter requested packages. Only packages with the provided restriction are returned. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a>.</p>
        pub fn set_publish(
            mut self,
            input: std::option::Option<crate::model::AllowPublish>,
        ) -> Self {
            self.inner = self.inner.set_publish(input);
            self
        }
        /// <p>The value of the <code>Upstream</code> package origin control restriction used to filter requested packages. Only packages with the provided restriction are returned. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a>.</p>
        pub fn upstream(mut self, input: crate::model::AllowUpstream) -> Self {
            self.inner = self.inner.upstream(input);
            self
        }
        /// <p>The value of the <code>Upstream</code> package origin control restriction used to filter requested packages. Only packages with the provided restriction are returned. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a>.</p>
        pub fn set_upstream(
            mut self,
            input: std::option::Option<crate::model::AllowUpstream>,
        ) -> Self {
            self.inner = self.inner.set_upstream(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPackageVersionAssets`.
    ///
    /// <p> Returns a list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_AssetSummary.html">AssetSummary</a> objects for assets in a package version. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPackageVersionAssets {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_package_version_assets_input::Builder,
    }
    impl ListPackageVersionAssets {
        /// Creates a new `ListPackageVersionAssets`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPackageVersionAssets,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPackageVersionAssetsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListPackageVersionAssetsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPackageVersionAssetsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPackageVersionAssetsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPackageVersionAssetsPaginator {
            crate::paginator::ListPackageVersionAssetsPaginator::new(self.handle, self.inner)
        }
        /// <p> The name of the domain that contains the repository associated with the package version assets. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository associated with the package version assets. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the package that contains the requested package version assets. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the package that contains the requested package version assets. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> The format of the package that contains the requested package version assets. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> The format of the package that contains the requested package version assets. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package version that contains the requested package version assets. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package version that contains the requested package version assets. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package that contains the requested package version assets. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package that contains the requested package version assets. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn package_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package_version(input.into());
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn set_package_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_package_version(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPackageVersionDependencies`.
    ///
    /// <p> Returns the direct dependencies for a package version. The dependencies are returned as <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDependency.html">PackageDependency</a> objects. CodeArtifact extracts the dependencies for a package version from the metadata file for the package format (for example, the <code>package.json</code> file for npm packages and the <code>pom.xml</code> file for Maven). Any package version dependencies that are not listed in the configuration file are not returned. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPackageVersionDependencies {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_package_version_dependencies_input::Builder,
    }
    impl ListPackageVersionDependencies {
        /// Creates a new `ListPackageVersionDependencies`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPackageVersionDependencies,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPackageVersionDependenciesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListPackageVersionDependenciesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPackageVersionDependenciesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository that contains the requested package version dependencies. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository that contains the requested package version dependencies. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the requested package version. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the requested package version. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> The format of the package with the requested dependencies. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> The format of the package with the requested dependencies. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package version with the requested dependencies. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package version with the requested dependencies. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package versions' package. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package versions' package. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn package_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package_version(input.into());
            self
        }
        /// <p> A string that contains the package version (for example, <code>3.5.2</code>). </p>
        pub fn set_package_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_package_version(input);
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPackageVersions`.
    ///
    /// <p> Returns a list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageVersionSummary.html">PackageVersionSummary</a> objects for package versions in a repository that match the request parameters. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPackageVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_package_versions_input::Builder,
    }
    impl ListPackageVersions {
        /// Creates a new `ListPackageVersions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPackageVersions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPackageVersionsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListPackageVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPackageVersionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPackageVersionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPackageVersionsPaginator {
            crate::paginator::ListPackageVersionsPaginator::new(self.handle, self.inner)
        }
        /// <p> The name of the domain that contains the repository that contains the requested package versions. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository that contains the requested package versions. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository that contains the requested package versions. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository that contains the requested package versions. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> The format of the returned package versions. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> The format of the returned package versions. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package that contains the requested package versions. The package component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package that contains the requested package versions. The package component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package for which you want to request package versions. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package for which you want to request package versions. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// <p> A string that filters the requested package versions by status. </p>
        pub fn status(mut self, input: crate::model::PackageVersionStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p> A string that filters the requested package versions by status. </p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::PackageVersionStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// <p> How to sort the requested list of package versions. </p>
        pub fn sort_by(mut self, input: crate::model::PackageVersionSortType) -> Self {
            self.inner = self.inner.sort_by(input);
            self
        }
        /// <p> How to sort the requested list of package versions. </p>
        pub fn set_sort_by(
            mut self,
            input: std::option::Option<crate::model::PackageVersionSortType>,
        ) -> Self {
            self.inner = self.inner.set_sort_by(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The <code>originType</code> used to filter package versions. Only package versions with the provided <code>originType</code> will be returned.</p>
        pub fn origin_type(mut self, input: crate::model::PackageVersionOriginType) -> Self {
            self.inner = self.inner.origin_type(input);
            self
        }
        /// <p>The <code>originType</code> used to filter package versions. Only package versions with the provided <code>originType</code> will be returned.</p>
        pub fn set_origin_type(
            mut self,
            input: std::option::Option<crate::model::PackageVersionOriginType>,
        ) -> Self {
            self.inner = self.inner.set_origin_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRepositories`.
    ///
    /// <p> Returns a list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_RepositorySummary.html">RepositorySummary</a> objects. Each <code>RepositorySummary</code> contains information about a repository in the specified Amazon Web Services account and that matches the input parameters. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRepositories {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_repositories_input::Builder,
    }
    impl ListRepositories {
        /// Creates a new `ListRepositories`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListRepositories,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListRepositoriesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListRepositoriesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRepositoriesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListRepositoriesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRepositoriesPaginator {
            crate::paginator::ListRepositoriesPaginator::new(self.handle, self.inner)
        }
        /// <p> A prefix used to filter returned repositories. Only repositories with names that start with <code>repositoryPrefix</code> are returned.</p>
        pub fn repository_prefix(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_prefix(input.into());
            self
        }
        /// <p> A prefix used to filter returned repositories. Only repositories with names that start with <code>repositoryPrefix</code> are returned.</p>
        pub fn set_repository_prefix(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_prefix(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRepositoriesInDomain`.
    ///
    /// <p> Returns a list of <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_RepositorySummary.html">RepositorySummary</a> objects. Each <code>RepositorySummary</code> contains information about a repository in the specified domain and that matches the input parameters. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRepositoriesInDomain {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_repositories_in_domain_input::Builder,
    }
    impl ListRepositoriesInDomain {
        /// Creates a new `ListRepositoriesInDomain`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListRepositoriesInDomain,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListRepositoriesInDomainError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListRepositoriesInDomainOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRepositoriesInDomainError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListRepositoriesInDomainPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRepositoriesInDomainPaginator {
            crate::paginator::ListRepositoriesInDomainPaginator::new(self.handle, self.inner)
        }
        /// <p> The name of the domain that contains the returned list of repositories. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the returned list of repositories. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> Filter the list of repositories to only include those that are managed by the Amazon Web Services account ID. </p>
        pub fn administrator_account(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.administrator_account(input.into());
            self
        }
        /// <p> Filter the list of repositories to only include those that are managed by the Amazon Web Services account ID. </p>
        pub fn set_administrator_account(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_administrator_account(input);
            self
        }
        /// <p> A prefix used to filter returned repositories. Only repositories with names that start with <code>repositoryPrefix</code> are returned. </p>
        pub fn repository_prefix(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_prefix(input.into());
            self
        }
        /// <p> A prefix used to filter returned repositories. Only repositories with names that start with <code>repositoryPrefix</code> are returned. </p>
        pub fn set_repository_prefix(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_prefix(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p> The maximum number of results to return per page. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p> The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTagsForResource`.
    ///
    /// <p>Gets information about Amazon Web Services tags for a specified Amazon Resource Name (ARN) in CodeArtifact.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTagsForResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_tags_for_resource_input::Builder,
    }
    impl ListTagsForResource {
        /// Creates a new `ListTagsForResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListTagsForResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListTagsForResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource to get tags for.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource to get tags for.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `PutDomainPermissionsPolicy`.
    ///
    /// <p> Sets a resource policy on a domain that specifies permissions to access it. </p>
    /// <p> When you call <code>PutDomainPermissionsPolicy</code>, the resource policy on the domain is ignored when evaluting permissions. This ensures that the owner of a domain cannot lock themselves out of the domain, which would prevent them from being able to update the resource policy. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutDomainPermissionsPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_domain_permissions_policy_input::Builder,
    }
    impl PutDomainPermissionsPolicy {
        /// Creates a new `PutDomainPermissionsPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::PutDomainPermissionsPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::PutDomainPermissionsPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::PutDomainPermissionsPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::PutDomainPermissionsPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain on which to set the resource policy. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain on which to set the resource policy. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. </p>
        pub fn policy_revision(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy_revision(input.into());
            self
        }
        /// <p> The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. </p>
        pub fn set_policy_revision(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_policy_revision(input);
            self
        }
        /// <p> A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided domain. </p>
        pub fn policy_document(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy_document(input.into());
            self
        }
        /// <p> A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided domain. </p>
        pub fn set_policy_document(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_policy_document(input);
            self
        }
    }
    /// Fluent builder constructing a request to `PutPackageOriginConfiguration`.
    ///
    /// <p>Sets the package origin configuration for a package.</p>
    /// <p>The package origin configuration determines how new versions of a package can be added to a repository. You can allow or block direct publishing of new package versions, or ingestion and retaining of new package versions from an external connection or upstream source. For more information about package origin controls and configuration, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/package-origin-controls.html">Editing package origin controls</a> in the <i>CodeArtifact User Guide</i>.</p>
    /// <p> <code>PutPackageOriginConfiguration</code> can be called on a package that doesn't yet exist in the repository. When called on a package that does not exist, a package is created in the repository with no versions and the requested restrictions are set on the package. This can be used to preemptively block ingesting or retaining any versions from external connections or upstream repositories, or to block publishing any versions of the package into the repository before connecting any package managers or publishers to the repository.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutPackageOriginConfiguration {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_package_origin_configuration_input::Builder,
    }
    impl PutPackageOriginConfiguration {
        /// Creates a new `PutPackageOriginConfiguration`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::PutPackageOriginConfiguration,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::PutPackageOriginConfigurationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::PutPackageOriginConfigurationOutput,
            aws_smithy_http::result::SdkError<crate::error::PutPackageOriginConfigurationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the domain that contains the repository that contains the package.</p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p>The name of the domain that contains the repository that contains the package.</p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p>The name of the repository that contains the package.</p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p>The name of the repository that contains the package.</p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p>A format that specifies the type of the package to be updated.</p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p>A format that specifies the type of the package to be updated.</p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package to be updated. The package component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package to be updated. The package component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet packages do not contain a corresponding component, packages of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p>The name of the package to be updated.</p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p>The name of the package to be updated.</p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// <p>A <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a> object that contains information about the <code>upstream</code> and <code>publish</code> package origin restrictions. The <code>upstream</code> restriction determines if new package versions can be ingested or retained from external connections or upstream repositories. The <code>publish</code> restriction determines if new package versions can be published directly to the repository.</p>
        /// <p>You must include both the desired <code>upstream</code> and <code>publish</code> restrictions.</p>
        pub fn restrictions(mut self, input: crate::model::PackageOriginRestrictions) -> Self {
            self.inner = self.inner.restrictions(input);
            self
        }
        /// <p>A <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageOriginRestrictions.html">PackageOriginRestrictions</a> object that contains information about the <code>upstream</code> and <code>publish</code> package origin restrictions. The <code>upstream</code> restriction determines if new package versions can be ingested or retained from external connections or upstream repositories. The <code>publish</code> restriction determines if new package versions can be published directly to the repository.</p>
        /// <p>You must include both the desired <code>upstream</code> and <code>publish</code> restrictions.</p>
        pub fn set_restrictions(
            mut self,
            input: std::option::Option<crate::model::PackageOriginRestrictions>,
        ) -> Self {
            self.inner = self.inner.set_restrictions(input);
            self
        }
    }
    /// Fluent builder constructing a request to `PutRepositoryPermissionsPolicy`.
    ///
    /// <p> Sets the resource policy on a repository that specifies permissions to access it. </p>
    /// <p> When you call <code>PutRepositoryPermissionsPolicy</code>, the resource policy on the repository is ignored when evaluting permissions. This ensures that the owner of a repository cannot lock themselves out of the repository, which would prevent them from being able to update the resource policy. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutRepositoryPermissionsPolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_repository_permissions_policy_input::Builder,
    }
    impl PutRepositoryPermissionsPolicy {
        /// Creates a new `PutRepositoryPermissionsPolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::PutRepositoryPermissionsPolicy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::PutRepositoryPermissionsPolicyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::PutRepositoryPermissionsPolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::PutRepositoryPermissionsPolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain containing the repository to set the resource policy on. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain containing the repository to set the resource policy on. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository to set the resource policy on. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository to set the resource policy on. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> Sets the revision of the resource policy that specifies permissions to access the repository. This revision is used for optimistic locking, which prevents others from overwriting your changes to the repository's resource policy. </p>
        pub fn policy_revision(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy_revision(input.into());
            self
        }
        /// <p> Sets the revision of the resource policy that specifies permissions to access the repository. This revision is used for optimistic locking, which prevents others from overwriting your changes to the repository's resource policy. </p>
        pub fn set_policy_revision(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_policy_revision(input);
            self
        }
        /// <p> A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided repository. </p>
        pub fn policy_document(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy_document(input.into());
            self
        }
        /// <p> A valid displayable JSON Aspen policy string to be set as the access control resource policy on the provided repository. </p>
        pub fn set_policy_document(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_policy_document(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>Adds or updates tags for a resource in CodeArtifact.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct TagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::tag_resource_input::Builder,
    }
    impl TagResource {
        /// Creates a new `TagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::TagResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::TagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource that you want to add or update tags for.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource that you want to add or update tags for.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags you want to modify or add to the resource.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>The tags you want to modify or add to the resource.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UntagResource`.
    ///
    /// <p>Removes tags from a resource in CodeArtifact.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UntagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::untag_resource_input::Builder,
    }
    impl UntagResource {
        /// Creates a new `UntagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UntagResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UntagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource that you want to remove tags from.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource that you want to remove tags from.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Appends an item to `tagKeys`.
        ///
        /// To override the contents of this collection use [`set_tag_keys`](Self::set_tag_keys).
        ///
        /// <p>The tag key for each tag that you want to remove from the resource.</p>
        pub fn tag_keys(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_keys(input.into());
            self
        }
        /// <p>The tag key for each tag that you want to remove from the resource.</p>
        pub fn set_tag_keys(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_tag_keys(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdatePackageVersionsStatus`.
    ///
    /// <p> Updates the status of one or more versions of a package. Using <code>UpdatePackageVersionsStatus</code>, you can update the status of package versions to <code>Archived</code>, <code>Published</code>, or <code>Unlisted</code>. To set the status of a package version to <code>Disposed</code>, use <a href="https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DisposePackageVersions.html">DisposePackageVersions</a>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdatePackageVersionsStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_package_versions_status_input::Builder,
    }
    impl UpdatePackageVersionsStatus {
        /// Creates a new `UpdatePackageVersionsStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdatePackageVersionsStatus,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdatePackageVersionsStatusError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdatePackageVersionsStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdatePackageVersionsStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain that contains the repository that contains the package versions with a status to be updated. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain that contains the repository that contains the package versions with a status to be updated. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The repository that contains the package versions with the status you want to update. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The repository that contains the package versions with the status you want to update. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> A format that specifies the type of the package with the statuses to update. </p>
        pub fn format(mut self, input: crate::model::PackageFormat) -> Self {
            self.inner = self.inner.format(input);
            self
        }
        /// <p> A format that specifies the type of the package with the statuses to update. </p>
        pub fn set_format(
            mut self,
            input: std::option::Option<crate::model::PackageFormat>,
        ) -> Self {
            self.inner = self.inner.set_format(input);
            self
        }
        /// <p>The namespace of the package version to be updated. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn namespace(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace(input.into());
            self
        }
        /// <p>The namespace of the package version to be updated. The package version component that specifies its namespace depends on its type. For example:</p>
        /// <ul>
        /// <li> <p> The namespace of a Maven package version is its <code>groupId</code>. </p> </li>
        /// <li> <p> The namespace of an npm package version is its <code>scope</code>. </p> </li>
        /// <li> <p> Python and NuGet package versions do not contain a corresponding component, package versions of those formats do not have a namespace. </p> </li>
        /// </ul>
        pub fn set_namespace(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_namespace(input);
            self
        }
        /// <p> The name of the package with the version statuses to update. </p>
        pub fn package(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.package(input.into());
            self
        }
        /// <p> The name of the package with the version statuses to update. </p>
        pub fn set_package(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_package(input);
            self
        }
        /// Appends an item to `versions`.
        ///
        /// To override the contents of this collection use [`set_versions`](Self::set_versions).
        ///
        /// <p> An array of strings that specify the versions of the package with the statuses to update. </p>
        pub fn versions(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.versions(input.into());
            self
        }
        /// <p> An array of strings that specify the versions of the package with the statuses to update. </p>
        pub fn set_versions(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_versions(input);
            self
        }
        /// Adds a key-value pair to `versionRevisions`.
        ///
        /// To override the contents of this collection use [`set_version_revisions`](Self::set_version_revisions).
        ///
        /// <p> A map of package versions and package version revisions. The map <code>key</code> is the package version (for example, <code>3.5.2</code>), and the map <code>value</code> is the package version revision. </p>
        pub fn version_revisions(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.version_revisions(k.into(), v.into());
            self
        }
        /// <p> A map of package versions and package version revisions. The map <code>key</code> is the package version (for example, <code>3.5.2</code>), and the map <code>value</code> is the package version revision. </p>
        pub fn set_version_revisions(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_version_revisions(input);
            self
        }
        /// <p> The package version’s expected status before it is updated. If <code>expectedStatus</code> is provided, the package version's status is updated only if its status at the time <code>UpdatePackageVersionsStatus</code> is called matches <code>expectedStatus</code>. </p>
        pub fn expected_status(mut self, input: crate::model::PackageVersionStatus) -> Self {
            self.inner = self.inner.expected_status(input);
            self
        }
        /// <p> The package version’s expected status before it is updated. If <code>expectedStatus</code> is provided, the package version's status is updated only if its status at the time <code>UpdatePackageVersionsStatus</code> is called matches <code>expectedStatus</code>. </p>
        pub fn set_expected_status(
            mut self,
            input: std::option::Option<crate::model::PackageVersionStatus>,
        ) -> Self {
            self.inner = self.inner.set_expected_status(input);
            self
        }
        /// <p> The status you want to change the package version status to. </p>
        pub fn target_status(mut self, input: crate::model::PackageVersionStatus) -> Self {
            self.inner = self.inner.target_status(input);
            self
        }
        /// <p> The status you want to change the package version status to. </p>
        pub fn set_target_status(
            mut self,
            input: std::option::Option<crate::model::PackageVersionStatus>,
        ) -> Self {
            self.inner = self.inner.set_target_status(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRepository`.
    ///
    /// <p> Update the properties of a repository. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRepository {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_repository_input::Builder,
    }
    impl UpdateRepository {
        /// Creates a new `UpdateRepository`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateRepository,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateRepositoryError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateRepositoryOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateRepositoryError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p> The name of the domain associated with the repository to update. </p>
        pub fn domain(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain(input.into());
            self
        }
        /// <p> The name of the domain associated with the repository to update. </p>
        pub fn set_domain(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn domain_owner(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.domain_owner(input.into());
            self
        }
        /// <p> The 12-digit account number of the Amazon Web Services account that owns the domain. It does not include dashes or spaces. </p>
        pub fn set_domain_owner(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_domain_owner(input);
            self
        }
        /// <p> The name of the repository to update. </p>
        pub fn repository(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository(input.into());
            self
        }
        /// <p> The name of the repository to update. </p>
        pub fn set_repository(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_repository(input);
            self
        }
        /// <p> An updated repository description. </p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p> An updated repository description. </p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// Appends an item to `upstreams`.
        ///
        /// To override the contents of this collection use [`set_upstreams`](Self::set_upstreams).
        ///
        /// <p> A list of upstream repositories to associate with the repository. The order of the upstream repositories in the list determines their priority order when CodeArtifact looks for a requested package version. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
        pub fn upstreams(mut self, input: crate::model::UpstreamRepository) -> Self {
            self.inner = self.inner.upstreams(input);
            self
        }
        /// <p> A list of upstream repositories to associate with the repository. The order of the upstream repositories in the list determines their priority order when CodeArtifact looks for a requested package version. For more information, see <a href="https://docs.aws.amazon.com/codeartifact/latest/ug/repos-upstream.html">Working with upstream repositories</a>. </p>
        pub fn set_upstreams(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UpstreamRepository>>,
        ) -> Self {
            self.inner = self.inner.set_upstreams(input);
            self
        }
    }
}

impl Client {
    /// Creates a new client from an [SDK Config](aws_types::sdk_config::SdkConfig).
    ///
    /// # Panics
    ///
    /// - This method will panic if the `sdk_config` is missing an async sleep implementation. If you experience this panic, set
    ///     the `sleep_impl` on the Config passed into this function to fix it.
    /// - This method will panic if the `sdk_config` is missing an HTTP connector. If you experience this panic, set the
    ///     `http_connector` on the Config passed into this function to fix it.
    pub fn new(sdk_config: &aws_types::sdk_config::SdkConfig) -> Self {
        Self::from_conf(sdk_config.into())
    }

    /// Creates a new client from the service [`Config`](crate::Config).
    ///
    /// # Panics
    ///
    /// - This method will panic if the `conf` is missing an async sleep implementation. If you experience this panic, set
    ///     the `sleep_impl` on the Config passed into this function to fix it.
    /// - This method will panic if the `conf` is missing an HTTP connector. If you experience this panic, set the
    ///     `http_connector` on the Config passed into this function to fix it.
    pub fn from_conf(conf: crate::Config) -> Self {
        let retry_config = conf
            .retry_config()
            .cloned()
            .unwrap_or_else(aws_smithy_types::retry::RetryConfig::disabled);
        let timeout_config = conf
            .timeout_config()
            .cloned()
            .unwrap_or_else(aws_smithy_types::timeout::TimeoutConfig::disabled);
        let sleep_impl = conf.sleep_impl();
        if (retry_config.has_retry() || timeout_config.has_timeouts()) && sleep_impl.is_none() {
            panic!("An async sleep implementation is required for retries or timeouts to work. \
                                    Set the `sleep_impl` on the Config passed into this function to fix this panic.");
        }

        let connector = conf.http_connector().and_then(|c| {
            let timeout_config = conf
                .timeout_config()
                .cloned()
                .unwrap_or_else(aws_smithy_types::timeout::TimeoutConfig::disabled);
            let connector_settings =
                aws_smithy_client::http_connector::ConnectorSettings::from_timeout_config(
                    &timeout_config,
                );
            c.connector(&connector_settings, conf.sleep_impl())
        });

        let builder = aws_smithy_client::Builder::new();

        let builder = match connector {
            // Use provided connector
            Some(c) => builder.connector(c),
            None => {
                #[cfg(any(feature = "rustls", feature = "native-tls"))]
                {
                    // Use default connector based on enabled features
                    builder.dyn_https_connector(
                        aws_smithy_client::http_connector::ConnectorSettings::from_timeout_config(
                            &timeout_config,
                        ),
                    )
                }
                #[cfg(not(any(feature = "rustls", feature = "native-tls")))]
                {
                    panic!("No HTTP connector was available. Enable the `rustls` or `native-tls` crate feature or set a connector to fix this.");
                }
            }
        };
        let mut builder = builder
            .middleware(aws_smithy_client::erase::DynMiddleware::new(
                crate::middleware::DefaultMiddleware::new(),
            ))
            .retry_config(retry_config.into())
            .operation_timeout_config(timeout_config.into());
        builder.set_sleep_impl(sleep_impl);
        let client = builder.build();

        Self {
            handle: std::sync::Arc::new(Handle { client, conf }),
        }
    }
}