// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

// Package codeartifact provides the client and types for making API
// requests to CodeArtifact.
//
// CodeArtifact is a fully managed artifact repository compatible with language-native
// package managers and build tools such as npm, Apache Maven, pip, and dotnet.
// You can use CodeArtifact to share packages with development teams and pull
// packages. Packages can be pulled from both public and CodeArtifact repositories.
// You can also create an upstream relationship between a CodeArtifact repository
// and another repository, which effectively merges their contents from the
// point of view of a package manager client.
//
// # CodeArtifact Components
//
// Use the information in this guide to help you work with the following CodeArtifact
// components:
//
//   - Repository: A CodeArtifact repository contains a set of package versions
//     (https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html#welcome-concepts-package-version),
//     each of which maps to a set of assets, or files. Repositories are polyglot,
//     so a single repository can contain packages of any supported type. Each
//     repository exposes endpoints for fetching and publishing packages using
//     tools like the npm CLI, the Maven CLI ( mvn ), Python CLIs ( pip and twine),
//     and NuGet CLIs (nuget and dotnet).
//
//   - Domain: Repositories are aggregated into a higher-level entity known
//     as a domain. All package assets and metadata are stored in the domain,
//     but are consumed through repositories. A given package asset, such as
//     a Maven JAR file, is stored once per domain, no matter how many repositories
//     it's present in. All of the assets and metadata in a domain are encrypted
//     with the same customer master key (CMK) stored in Key Management Service
//     (KMS). Each repository is a member of a single domain and can't be moved
//     to a different domain. The domain allows organizational policy to be applied
//     across multiple repositories, such as which accounts can access repositories
//     in the domain, and which public repositories can be used as sources of
//     packages. Although an organization can have multiple domains, we recommend
//     a single production domain that contains all published artifacts so that
//     teams can find and share packages across their organization.
//
//   - Package: A package is a bundle of software and the metadata required
//     to resolve dependencies and install the software. CodeArtifact supports
//     npm (https://docs.aws.amazon.com/codeartifact/latest/ug/using-npm.html),
//     PyPI (https://docs.aws.amazon.com/codeartifact/latest/ug/using-python.html),
//     Maven (https://docs.aws.amazon.com/codeartifact/latest/ug/using-maven),
//     and NuGet (https://docs.aws.amazon.com/codeartifact/latest/ug/using-nuget)
//     package formats. In CodeArtifact, a package consists of: A name (for example,
//     webpack is the name of a popular npm package) An optional namespace (for
//     example, @types in @types/node) A set of versions (for example, 1.0.0,
//     1.0.1, 1.0.2, etc.) Package-level metadata (for example, npm tags)
//
//   - Package version: A version of a package, such as @types/node 12.6.9.
//     The version number format and semantics vary for different package formats.
//     For example, npm package versions must conform to the Semantic Versioning
//     specification (https://semver.org/). In CodeArtifact, a package version
//     consists of the version identifier, metadata at the package version level,
//     and a set of assets.
//
//   - Upstream repository: One repository is upstream of another when the
//     package versions in it can be accessed from the repository endpoint of
//     the downstream repository, effectively merging the contents of the two
//     repositories from the point of view of a client. CodeArtifact allows creating
//     an upstream relationship between two repositories.
//
//   - Asset: An individual file stored in CodeArtifact associated with a package
//     version, such as an npm .tgz file or Maven POM and JAR files.
//
// CodeArtifact supports these operations:
//
//   - AssociateExternalConnection: Adds an existing external connection to
//     a repository.
//
//   - CopyPackageVersions: Copies package versions from one repository to
//     another repository in the same domain.
//
//   - CreateDomain: Creates a domain
//
//   - CreateRepository: Creates a CodeArtifact repository in a domain.
//
//   - DeleteDomain: Deletes a domain. You cannot delete a domain that contains
//     repositories.
//
//   - DeleteDomainPermissionsPolicy: Deletes the resource policy that is set
//     on a domain.
//
//   - DeletePackage: Deletes a package and all associated package versions.
//
//   - DeletePackageVersions: Deletes versions of a package. After a package
//     has been deleted, it can be republished, but its assets and metadata cannot
//     be restored because they have been permanently removed from storage.
//
//   - DeleteRepository: Deletes a repository.
//
//   - DeleteRepositoryPermissionsPolicy: Deletes the resource policy that
//     is set on a repository.
//
//   - DescribeDomain: Returns a DomainDescription object that contains information
//     about the requested domain.
//
//   - DescribePackage: Returns a PackageDescription (https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDescription.html)
//     object that contains details about a package.
//
//   - DescribePackageVersion: Returns a PackageVersionDescription (https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageVersionDescription.html)
//     object that contains details about a package version.
//
//   - DescribeRepository: Returns a RepositoryDescription object that contains
//     detailed information about the requested repository.
//
//   - DisposePackageVersions: Disposes versions of a package. A package version
//     with the status Disposed cannot be restored because they have been permanently
//     removed from storage.
//
//   - DisassociateExternalConnection: Removes an existing external connection
//     from a repository.
//
//   - GetAuthorizationToken: Generates a temporary authorization token for
//     accessing repositories in the domain. The token expires the authorization
//     period has passed. The default authorization period is 12 hours and can
//     be customized to any length with a maximum of 12 hours.
//
//   - GetDomainPermissionsPolicy: Returns the policy of a resource that is
//     attached to the specified domain.
//
//   - GetPackageVersionAsset: Returns the contents of an asset that is in
//     a package version.
//
//   - GetPackageVersionReadme: Gets the readme file or descriptive text for
//     a package version.
//
//   - GetRepositoryEndpoint: Returns the endpoint of a repository for a specific
//     package format. A repository has one endpoint for each package format:
//     maven npm nuget pypi
//
//   - GetRepositoryPermissionsPolicy: Returns the resource policy that is
//     set on a repository.
//
//   - ListDomains: Returns a list of DomainSummary objects. Each returned
//     DomainSummary object contains information about a domain.
//
//   - ListPackages: Lists the packages in a repository.
//
//   - ListPackageVersionAssets: Lists the assets for a given package version.
//
//   - ListPackageVersionDependencies: Returns a list of the direct dependencies
//     for a package version.
//
//   - ListPackageVersions: Returns a list of package versions for a specified
//     package in a repository.
//
//   - ListRepositories: Returns a list of repositories owned by the Amazon
//     Web Services account that called this method.
//
//   - ListRepositoriesInDomain: Returns a list of the repositories in a domain.
//
//   - PublishPackageVersion: Creates a new package version containing one
//     or more assets.
//
//   - PutDomainPermissionsPolicy: Attaches a resource policy to a domain.
//
//   - PutPackageOriginConfiguration: Sets the package origin configuration
//     for a package, which determine how new versions of the package can be
//     added to a specific repository.
//
//   - PutRepositoryPermissionsPolicy: Sets the resource policy on a repository
//     that specifies permissions to access it.
//
//   - UpdatePackageVersionsStatus: Updates the status of one or more versions
//     of a package.
//
//   - UpdateRepository: Updates the properties of a repository.
//
// See https://docs.aws.amazon.com/goto/WebAPI/codeartifact-2018-09-22 for more information on this service.
//
// See codeartifact package documentation for more information.
// https://docs.aws.amazon.com/sdk-for-go/api/service/codeartifact/
//
// # Using the Client
//
// To contact CodeArtifact with the SDK use the New function to create
// a new service client. With that client you can make API requests to the service.
// These clients are safe to use concurrently.
//
// See the SDK's documentation for more information on how to use the SDK.
// https://docs.aws.amazon.com/sdk-for-go/api/
//
// See aws.Config documentation for more information on configuring SDK clients.
// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config
//
// See the CodeArtifact client CodeArtifact for more
// information on creating client for this service.
// https://docs.aws.amazon.com/sdk-for-go/api/service/codeartifact/#New
package codeartifact
