diff --git a/src/content/formats/npm-registry.mdx b/src/content/formats/npm-registry.mdx index fdec7563..ba5c8619 100644 --- a/src/content/formats/npm-registry.mdx +++ b/src/content/formats/npm-registry.mdx @@ -3,17 +3,17 @@ import { Tag, Note, BlockImage, Video } from '@/components'; # npm Registry -Cloudsmith provides public & private registries for npm (JavaScript) +Cloudsmith provides public & private registries for npm (JavaScript). -npm is an extremely popular package manager for [JavaScript](https://en.wikipedia.org/wiki/JavaScript), and is used for creating and using packaged [Node.js](https://en.wikipedia.org/wiki/Node.js) modules. A public index of packages is available from npm, inc. on [npmjs.org](https://npmjs.org). npm, Inc. also develop and maintain the official `npm` client, ecosystem and tooling. +npm is an extremely popular package manager for [JavaScript](https://en.wikipedia.org/wiki/JavaScript), and is used for creating and using packaged [Node.js](https://en.wikipedia.org/wiki/Node.js) modules. A public index of packages is available from npm, Inc. on [npmjs.org](https://npmjs.org). npm, Inc. also develops and maintains the official `npm` client, ecosystem, and tooling. For more information on npm, please see: - [npm](https://npmjs.org): The official website for npm -Cloudsmith is proud to support fully-featured registries for managing your own private and public npm packages. We provide a high-level of compatibility with the official npmjs API meaning you can use the [official CLI client](https://docs.npmjs.com/cli/npm) - `npm` - for installing, managing, and publishing npm packages to Cloudsmith. Or if you prefer you can use the Cloudsmith UI, API or CLI - `cloudsmith`. +Cloudsmith is proud to support fully-featured registries for managing your own private and public npm packages. We provide a high level of compatibility with the official npmjs API, meaning you can use the [official CLI client](https://docs.npmjs.com/cli/npm) - `npm` - for installing, managing, and publishing npm packages to Cloudsmith. Or, if you prefer, you can use the Cloudsmith UI, API, or CLI - `cloudsmith`. The Cloudsmith npm registry has been fully tested with the following: @@ -21,7 +21,7 @@ The Cloudsmith npm registry has been fully tested with the following: - `node` version: v6.11.3 - `yarn` version: v1.9.4 -It is likely that it will work for other environments, including older and more recent versions. If you encounter any issues please [let us know](https://cloudsmith.com/company/contact-us). +It is likely that it will work for other environments, including older and more recent versions. If you encounter any issues, please [let us know](https://cloudsmith.com/company/contact-us). The examples in this document are generic. Cloudsmith provides contextual setup instructions within each repository, complete with copy and paste snippets (with your namespace/repo/rsa-key pre-configured). @@ -60,7 +60,7 @@ To authenticate for native publishing, you can either use `npm login` or create npm Version 9 introduced a change which consolidated the legacy authentication types. -Please see the official NPM release notes **[here](https://github.blog/changelog/2022-10-24-npm-v9-0-0-released/)** for further details. +Please see the official npm release notes **[here](https://github.blog/changelog/2022-10-24-npm-v9-0-0-released/)** for further details. Use `npm login`: @@ -149,16 +149,16 @@ You can find further information in the npm documentation on [scoped packages](h ## Distribution Tags -Distribution tags allow npm packages to be tagged with a mnemonic that is associated with a specific package version. +Distribution tags allow npm packages to be tagged with an alias that is associated with a specific package version. Cloudsmith has full support for distribution tags and (mostly) follows the same rules for them as on npmjs.com: 1. A specific tag can point at one version of a package only. 2. A package version may have multiple unique tags. -3. Unless specified otherwise, the default tag for the last package published is latest. -4. When a package that is **latest** is deleted, the tag is moved to the next applicable version by [semver](https://semver.npmjs.com/). +3. Unless specified otherwise, Cloudsmith assigns the `latest` tag to the semantically highest version of a package. +4. When a package that is `latest` is deleted, the tag is moved to the next applicable version by semantic versioning ([SemVer](https://semver.npmjs.com/)). 5. When a package is copied/moved to another repository, its tags are carried with it. -6. If the **latest** package is moved/deleted, then existing packages are sorted via SemVer to determine the next latest. +6. If the `latest` package is moved/deleted, then existing packages are sorted via SemVer to determine the next latest. You can inspect a package to see what tags it has: @@ -179,7 +179,21 @@ You can also remove tags from a package: npm dist-tags rm PACKAGE_NAME TAG --registry=https://npm.cloudsmith.io/OWNER/REPOSITORY/ ``` -You can find out more about [distribution tags](https://docs.npmjs.com/adding-dist-tags-to-packages) in the npm documentation (external link). +For more information about distribution tags, see [npm Docs: Adding dist-tags to packages](https://docs.npmjs.com/adding-dist-tags-to-packages). + +### Upstream Tag Precedence + +By default, Cloudsmith assigns the `latest` tag to the semantically highest version of a package within the native npm responses. If you have an upstream configured and want the `latest` tag defined on the upstream to take precedence, you can enable the **NPM upstream tags take precedence** option in your repository settings. This ensures that the `latest` tag from the upstream registry is used instead of the one calculated by Cloudsmith. + +With the **NPM upstream tags take precedence** option enabled, Cloudsmith's npm metadata logic uses SemVer as the baseline, then checks for the `latest` dist-tag in the upstream registry and applies it as an override. + + +This override occurs only if the tag’s corresponding version is present within the versions to be returned to the user. If not, then the `latest` tag defaults to the semantically highest version. + + +For information about enabling the **NPM upstream tags take precedence** option in the web app, see [Repository Settings](/repositories/repository-settings). + +For information about enabling npm upstream tag precedence via the Cloudsmith API, please refer to [Repos Create](https://docs.cloudsmith.com/api/repos/create) for creating a new repository, or [Repos Partial Update](https://docs.cloudsmith.com/api/repos/partial-update) for updating an existing one. # Download / Install a Package @@ -363,7 +377,7 @@ Please see our [Security Scanning](/policy-management/vulnerability-policy) docu Configurable Proxying Caching -You can configure upstream NPM repositories you wish to use as additional package sources for your Cloudsmith repository. You can also choose to cache any requested packages for future use. +You can configure upstream npm repositories you wish to use as additional package sources for your Cloudsmith repository. You can also choose to cache any requested packages for future use. Please see our [Upstream Proxying](/repositories/upstreams) documentation for further instructions diff --git a/src/content/repositories/images/repository-settings/1502bb19617cd22e2d99ddc9fa939b9277a70d734a873d547c5efa8bf6c8d1b4-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro.png b/src/content/repositories/images/repository-settings/1502bb19617cd22e2d99ddc9fa939b9277a70d734a873d547c5efa8bf6c8d1b4-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro.png deleted file mode 100644 index 569e3b0a..00000000 Binary files a/src/content/repositories/images/repository-settings/1502bb19617cd22e2d99ddc9fa939b9277a70d734a873d547c5efa8bf6c8d1b4-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro.png and /dev/null differ diff --git a/src/content/repositories/images/repository-settings/32fd74ae6dcff4f8d1a4b6b673cd140762961c549b7abdf99da9a92d54c7df3e-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1.png b/src/content/repositories/images/repository-settings/32fd74ae6dcff4f8d1a4b6b673cd140762961c549b7abdf99da9a92d54c7df3e-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1.png deleted file mode 100644 index 79dc9abd..00000000 Binary files a/src/content/repositories/images/repository-settings/32fd74ae6dcff4f8d1a4b6b673cd140762961c549b7abdf99da9a92d54c7df3e-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1.png and /dev/null differ diff --git a/src/content/repositories/images/repository-settings/5f1d2af67e122e069635226dcf071ba5ee9f2d3f07791b1df09776a34af1b3ce-app.cloudsmith.com_demo_product-b_rpm_cloudsmith-rpm-example_1.0-1_COhhH8fjPOlhiPad_Pro_2.png b/src/content/repositories/images/repository-settings/5f1d2af67e122e069635226dcf071ba5ee9f2d3f07791b1df09776a34af1b3ce-app.cloudsmith.com_demo_product-b_rpm_cloudsmith-rpm-example_1.0-1_COhhH8fjPOlhiPad_Pro_2.png deleted file mode 100644 index 483fd884..00000000 Binary files a/src/content/repositories/images/repository-settings/5f1d2af67e122e069635226dcf071ba5ee9f2d3f07791b1df09776a34af1b3ce-app.cloudsmith.com_demo_product-b_rpm_cloudsmith-rpm-example_1.0-1_COhhH8fjPOlhiPad_Pro_2.png and /dev/null differ diff --git a/src/content/repositories/images/repository-settings/751782b2e9b2b313056137fec7e3e98f5e9c21a9038fca5d77b0ebc49d74c385-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_3.png b/src/content/repositories/images/repository-settings/751782b2e9b2b313056137fec7e3e98f5e9c21a9038fca5d77b0ebc49d74c385-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_3.png deleted file mode 100644 index 0912bcb1..00000000 Binary files a/src/content/repositories/images/repository-settings/751782b2e9b2b313056137fec7e3e98f5e9c21a9038fca5d77b0ebc49d74c385-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_3.png and /dev/null differ diff --git a/src/content/repositories/images/repository-settings/7f03773cfbd0a4312bd325b6ae48f05903d82c4707f3e96c3733bd915721e50a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1_2.png b/src/content/repositories/images/repository-settings/7f03773cfbd0a4312bd325b6ae48f05903d82c4707f3e96c3733bd915721e50a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1_2.png deleted file mode 100644 index b656827f..00000000 Binary files a/src/content/repositories/images/repository-settings/7f03773cfbd0a4312bd325b6ae48f05903d82c4707f3e96c3733bd915721e50a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1_2.png and /dev/null differ diff --git a/src/content/repositories/images/repository-settings/a5b356e11c9ad0d3ff02db63dad097428f8f5fa2409b33e5d89573e30ca83d0a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_2.png b/src/content/repositories/images/repository-settings/a5b356e11c9ad0d3ff02db63dad097428f8f5fa2409b33e5d89573e30ca83d0a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_2.png deleted file mode 100644 index 9dea4a77..00000000 Binary files a/src/content/repositories/images/repository-settings/a5b356e11c9ad0d3ff02db63dad097428f8f5fa2409b33e5d89573e30ca83d0a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_2.png and /dev/null differ diff --git a/src/content/repositories/images/repository-settings/dangerous-actions.png b/src/content/repositories/images/repository-settings/dangerous-actions.png new file mode 100644 index 00000000..9ccab805 Binary files /dev/null and b/src/content/repositories/images/repository-settings/dangerous-actions.png differ diff --git a/src/content/repositories/images/repository-settings/general-settings.png b/src/content/repositories/images/repository-settings/general-settings.png new file mode 100644 index 00000000..b4f15bf7 Binary files /dev/null and b/src/content/repositories/images/repository-settings/general-settings.png differ diff --git a/src/content/repositories/images/repository-settings/miscellaneous-settings.png b/src/content/repositories/images/repository-settings/miscellaneous-settings.png new file mode 100644 index 00000000..855cd480 Binary files /dev/null and b/src/content/repositories/images/repository-settings/miscellaneous-settings.png differ diff --git a/src/content/repositories/images/repository-settings/potentially-dangerous-actions.png b/src/content/repositories/images/repository-settings/potentially-dangerous-actions.png new file mode 100644 index 00000000..34d2462e Binary files /dev/null and b/src/content/repositories/images/repository-settings/potentially-dangerous-actions.png differ diff --git a/src/content/repositories/images/repository-settings/repo-privileges.png b/src/content/repositories/images/repository-settings/repo-privileges.png new file mode 100644 index 00000000..276b9867 Binary files /dev/null and b/src/content/repositories/images/repository-settings/repo-privileges.png differ diff --git a/src/content/repositories/images/repository-settings/user-self-privileges.png b/src/content/repositories/images/repository-settings/user-self-privileges.png new file mode 100644 index 00000000..9dc5f145 Binary files /dev/null and b/src/content/repositories/images/repository-settings/user-self-privileges.png differ diff --git a/src/content/repositories/repository-settings.mdx b/src/content/repositories/repository-settings.mdx index af102410..ecb3ae30 100644 --- a/src/content/repositories/repository-settings.mdx +++ b/src/content/repositories/repository-settings.mdx @@ -1,95 +1,131 @@ import { Note, BlockImage } from '@/components' -import img_rpm_cloudsmith_rpm_example_1_0_1_COhhH8fjPOlhiPad_Pro_2 from './images/repository-settings/5f1d2af67e122e069635226dcf071ba5ee9f2d3f07791b1df09776a34af1b3ce-app.cloudsmith.com_demo_product-b_rpm_cloudsmith-rpm-example_1.0-1_COhhH8fjPOlhiPad_Pro_2.png' -import img_repo_settingsiPad_Pro from './images/repository-settings/1502bb19617cd22e2d99ddc9fa939b9277a70d734a873d547c5efa8bf6c8d1b4-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro.png' -import img_repo_settingsiPad_Pro_1 from './images/repository-settings/32fd74ae6dcff4f8d1a4b6b673cd140762961c549b7abdf99da9a92d54c7df3e-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1.png' -import img_repo_settingsiPad_Pro_1_2 from './images/repository-settings/7f03773cfbd0a4312bd325b6ae48f05903d82c4707f3e96c3733bd915721e50a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_1_2.png' -import img_repo_settingsiPad_Pro_2 from './images/repository-settings/a5b356e11c9ad0d3ff02db63dad097428f8f5fa2409b33e5d89573e30ca83d0a-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_2.png' -import img_repo_settingsiPad_Pro_3 from './images/repository-settings/751782b2e9b2b313056137fec7e3e98f5e9c21a9038fca5d77b0ebc49d74c385-app.cloudsmith.com_demo_examples-repo_settingsiPad_Pro_3.png' +import generalSettings from './images/repository-settings/general-settings.png' +import repoPrivileges from './images/repository-settings/repo-privileges.png' +import userSelfPrivileges from './images/repository-settings/user-self-privileges.png' +import miscellaneousSettings from './images/repository-settings/miscellaneous-settings.png' +import potentiallyDangerousActions from './images/repository-settings/potentially-dangerous-actions.png' +import dangerousActions from './images/repository-settings/dangerous-actions.png' # Repository Settings -## Repository Name and Description +## Repository Display Name and Description -You can change the name or description of a repository at any time. +You can change the display name or description of a repository at any time. -Please be aware that the name is just a descriptive name, it is not the repository slug / identifier. Changing the name of the repository will not result in breaking any configurations used by client programs or other users. +The repository display name is just a descriptive value and is not the repository slug/identifier. Changing the repository display name will not affect configurations used by client programs or other users. - + -To change the repository slug / identifier, see the section on [Potentially Unsafe Actions](/repositories/repository-settings#potentially-unsafe-actions). +For information about changing the repository slug/identifier, see [Potentially Dangerous Actions](/repositories/repository-settings#potentially-dangerous-actions). - When changing or modifying any repository settings please be sure to click the blue "Update Settings" button to apply your changes. + When changing or modifying repository settings, you must click the **Update settings** button to apply your changes. ## Repository Privileges - +Repository privileges let you configure which permissions are required to perform actions on a repository. -Repository privileges allow you to configure what permissions are required to perform actions on the repository. + -You assign a permission level to a Team or User when you grant them access to the repository (see [Access Controls](/repositories/repository-privileges#access-control) for information on granting access to a repository), and then you can set precisely what actions that permission level can perform using the repository privileges +You assign a permission level to a team or user when you grant them access to a repository. After that, you can use the repository privileges to set precisely which actions that permission level can perform. For more information about granting access to a repository, see [Access Control](/repositories/repository-privileges#access-control). -For Example: -If you wanted a Team or User to only be able to set or use Entitlement Tokens, then you could set the permission level required for **Set/Use Entitlements** to **Read**, and set all other action to **Write** or above. +**Example:** -Then in the repository [Access Controls](/repositories/repository-privileges#access-control), you would set the Team or User to only have **Read** permissions on the repository. As a result, they would be able to set or use Entitlement Tokens, but would not have permission for any other repository actions. +If you want a team to only be able to see or use entitlement tokens, then you could set the permission level required for **See/Use entitlements** to **Read**, and all other actions to **Write** or higher. -*** +In the repository **Access control** settings, you would then set the team to have only **Read** permissions on the repository. As a result, they would be able to see and use entitlement tokens, but would not have permission to perform any other repository actions. -## User / Self Privileges +## User/Self Privileges - + +These settings override the repository privilege level setting. + + + + +**User entitlements enabled** -**User Entitlements Enabled** If checked, users can use and manage their own user-specific entitlement token for the repository (if the repository is a private repository). If not checked, user-specific entitlement tokens are disabled for all users. -**Copy / Move / Delete / Resync** -If checked, users can copy/move/delete and resync packages that they have uploaded. This assumes that they still have **write** privileges for the repository. These override the repository privilege level setting for the repository. +**Scan / Copy / Move / Delete / Resync** + +If checked, users with **Write** access to the repository can scan, copy, move, delete, and resync packages that they have uploaded. ## Miscellaneous Settings - + + +**Use/configure noarch packages** + +If checked, noarch packages (if supported) are enabled in installations/configurations. A noarch package is one that is not tied to specific system architecture (like i686). + +**Serve index for generic packages** + +Lists all available generic packages in the repository through an index. + +**Serve index for raw packages** + +If checked, HTML and JSON indexes will be generated that list all available raw packages in the repository. -**Use/Configure NoArch Packages** -Enables noarch packages (if supported by the package type) in installations/configurations. A noarch package is one that is not tied to a specific system architecture (like i686) +**Use/configure source packages** -**Use/Configure Source Packages** If checked, source packages (if supported) are enabled in installations/configurations. A source package is one that contains source code rather than built binaries. -**Index Package File Contents** -Enables the indexing of files within a package. This will increase the synchronization time for a package but it is recommended to keep this enabled unless synchronization time is significantly impacted. +**Display generated GPG signatures for the raw package index?** -**Replace Packages By Default** -Enables uploaded packages to overwrite/replace any others with the same attributes (e.g version) by default. This only applies if the user has the required privilege for republishing AND has the required privilege to delete packages that they do not own. +If checked, the HTML and JSON indexes will display raw package GPG signatures alongside the index packages. -**Contextual Authentication Realm** -If checked, missing credentials for this repository where basic authentication is required shall present an enriched value in the 'WWW-Authenticate' header containing the namespace and repository. This can be useful for tools such as SBT, where the authentication realm is used to distinguish and disambiguate credentials. +**Index package file contents** -**Strict Npm Validation** -Enables strict validation of npm packages to ensure that they match the specification. If you have packages that are old or slightly off-spec, you can disable this, but we can't guarantee that the packages will work with the npm CLI or other tooling. +If checked, files contained in packages will be indexed, which increases the synchronization time required for packages. It is recommended that you keep this setting enabled unless the synchronization time is significantly impacted. -**Serve index for raw packages** -Enables the generation of HTML and JSON indexes that list all available raw packages in the repository +**Replace packages by default** -**Display generated GPG signatures for the raw package index** -If checked, the HTML and JSON indexes will display raw package GPG signatures alongside the index packages. +If checked, uploaded packages will overwrite/replace any others with the same attributes (e.g. version) by default. This only applies if the user has the required privilege for republishing AND has the required privilege to delete packages that they do not own. -**Docker Auth Refresh Enabled** -Enables the issuing of refresh tokens in addition to access tokens for Docker authentication. This allows unlimited extension of the lifetime of access tokens. +**Docker auth refresh** -**Use Debian Labels** -Enables a 'Label' field in Debian-based repositories. It will contain a string that identifies the entitlement token used to authenticate the repository in the form of `source=t-`; or `source=none` if no token was used. You can use this to help with pinning. +If checked, refresh tokens will be issued in addition to access tokens for Docker authentication. This allows unlimited extension of the lifetime of access tokens. + +**Use Debian repository labels** + +If checked, a `Label` field will be present in Debian-based repositories. It will contain a string that identifies the entitlement token used to authenticate the repository, in the form of `source=t-`, or `source=none` if no token was used. You can use this to help with pinning. + +**Scan for vulnerabilities** -**Scan for Vulnerabilities** If checked, vulnerability scanning will be enabled for all supported packages within this repository. -**Use crates.io as default Cargo upstream** -Enables the assumption that Cargo crates which do not set an explicit value for 'registry' will be available from crates.io. If not enabled, dependencies with unspecified 'registry' values will be assumed to be available in the registry being uploaded to. Disable this if you want to ensure that dependencies are only ever installed from Cloudsmith unless explicitly specified as belonging to another registry. +**Contextual authentication realm** + +If checked, missing credentials for this repository where basic authentication is required shall present an enriched value in the 'WWW-Authenticate' header containing the namespace and repository. This can be useful for tools such as sbt, where the authentication realm is used to distinguish and disambiguate credentials. + +**Use crates.io as default Cargo upstream** + +If checked, dependencies of uploaded Cargo crates which do not set an explicit value for `registry` will be assumed to be available from crates.io. If unchecked, dependencies with unspecified `registry` values will be assumed to be available in the registry being uploaded to. + +Uncheck this if you want to ensure that dependencies are only ever installed from Cloudsmith unless explicitly specified as belonging to another registry. + +**Strict npm validation** + +If checked, npm packages will be validated strictly to ensure that they match the specification. You can turn this on if you want to guarantee that the packages will work correctly with npm-cli and other tools. + +**Apply "Latest" tag for pre-release versions** + +If checked, packages pushed with a pre-release component on that version will be marked with the `latest` tag. If unchecked, a repository containing ONLY pre-release versions will have no version marked `latest`, which may result in incompatibility with native tools. -**Apply Latest Tag for Pre-Release Versions** -If checked, packages pushed with a pre-release component on that version will be marked with the 'latest' tag. Please note, if unchecked, a repository containing ONLY pre-release versions will have no version marked latest which may cause incompatibility with native tools. +**NuGet native signing** + +When enabled, all pushed (or pulled from upstream) NuGet packages and artifacts will be signed using the repository's X.509 RSA certificate. Additionally, the NuGet RepositorySignature index will list all of the repository's signing certificates, including those from configured upstreams. + +**Cosign signing** + +When enabled, all pushed (or pulled from upstream) OCI packages and artifacts will be signed using cosign with the repository's ECDSA key. This generates a distinct cosign signature artifact per artifact. + +**NPM upstream tags take precedence** + +If checked, npm distribution tags from configured upstreams will take precedence over matching local tags when fetching natively. When upstream and local repositories have the same tag name, such as `latest`, the upstream tag is used instead of the local one, even if the local repository has a semantically higher version. ## Custom GPG Signing Key @@ -107,31 +143,53 @@ If your custom RSA key is encrypted, please also provide the passphrase for it. Adding a custom GPG or RSA key will take effect immediately, but will not affect any existing packages that were signed with the previous key. Packages signed with the previous key will still be available and the previous key can still be fetched. +## Potentially Dangerous Actions -## Potentially Unsafe Actions + +The actions in this section are reversible, but may have broader impacts. - +For example, renaming a repository slug/identifier will break configurations that use the original slug/identifier. Transferring a repository to a new storage region may affect region-specific compliance requirements. -## Dangerous Actions - - - The following actions are marked as dangerous. +Exercise caution before making changes here. -The following actions are marked as dangerous as initiating can affect a user's or customer's ability to access a repository. + + +**Start broadcasting** + +Broadcasting a repository creates a public page where users can browse, search, and download repository packages. You can customize the branding of the page and control which package information to display. +Broadcasting doesn't make any changes to your repository, and can be changed or turned off at any point. + +For more information, see [Broadcasts](/software-distribution/broadcasts). + +**Rename repository slug/identifier** -For example, a Repository Transfer will require the repository users to update their configuration and may require coordination with your user base. Alternatively, a Repository Delete is irreversible will prevent exiting users from accessing it. In both situations, it's worth considering your users' impact and what communication is required before using these actions. +The repository slug/identifier is what clients and users see in the URI when connecting to a repository. Renaming the slug/identifier will immediately impact any existing clients/users. - +The slug/identifier rename occurs immediately, but you can rename it back if you change your mind. -### Transferring a repository +**Transfer repository to a new storage region** + +Transferring a repository to a new storage region will move all packages and files to a storage location in the selected region. + +During the transfer, you will be unable to upload any new packages or change existing ones. Downloads will continue to work normally. + + +Storage in the non-default region is available only to users on Ultra and Enterprise plans. + + +## Dangerous Actions + + +Actions in this section may result in data loss. + +A repository deletion is irreversible and will prevent existing users from accessing the repository. Before performing a repository deletion, confirm the potential user impact and any communication required. + -A repository transfer is initiated from within the repository settings of the repository you wish to transfer. The action to perform the transfer is listed under "Actions (Danger)". + -When you initiate a repository transfer, the owner of the destination account/namespace will be notified that there is a transfer pending approval, and they then need to confirm that the transfer is accepted on the receiving repository. +You can restore deleted packages from the **Recently deleted packages** section on the **Deleted** tab of the repository. -Once the destination account/namespace has accepted the transfer, the repository will then be transferred to the destination account/namespace immediately. +For more information, see [Recently Deleted Packages](/artifact-management/recently-deleted-packages). -The repository storage size will immediately count towards the storage limits for the destination account/namespace. Any Entitlement Tokens associated with the repository will also be transferred. -Collaborators for the repository will be reset and any existing clients of the repository will need to update their URIs to point to the new location.