---
schema_version: "1"
id: 5b6fcc7d87eddffc574fe64493aacf07e34a184727e91dbd49141d7c2c76b2c1
title: CLI for Exchange Assets
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/anypoint-cli/3.x/exchange-assets.md
canonical_url: https://docs.mulesoft.com/anypoint-cli/3.x/exchange-assets
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c80e5b1652a11a25f5690f98b6ee63192e2f83161da6668f0b5d396df414f200
description: MuleSoft Documentation Site
release: 3.x
latest: false
---
---
product: Anypoint CLI
version: 3.x
---

# CLI for Exchange Assets

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

<table><colgroup><col> <col></colgroup><thead><tr><th>Command</th><th>Description</th></tr></thead><tbody><tr><td><div><div><p><a href="#exchange-asset-upload">exchange asset upload</a></p></div></div></td><td><div><div><p>Uploads an Exchange asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-uploadv2">exchange asset uploadv2</a></p></div></div></td><td><div><div><p>Uploads an Exchange asset using Exchange Experience API v2</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-mutabledataupload">exchange asset mutableDataUpload</a></p></div></div></td><td><div><div><p>Modifies mutable data of an existing Exchange asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-updatestatus">exchange asset updateStatus</a></p></div></div></td><td><div><div><p>Modifies status of an existent Exchange asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-modify">exchange asset modify</a></p></div></div></td><td><div><div><p>Modifies an Exchange asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-download">exchange asset download</a></p></div></div></td><td><div><div><p>Downloads an Exchange asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-list">exchange asset list</a></p></div></div></td><td><div><div><p>Lists all assets</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-page-download">exchange asset page download</a></p></div></div></td><td><div><div><p>Downloads an asset’s description page from Exchange</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-page-modify">exchange asset page modify</a></p></div></div></td><td><div><div><p>Changes an asset’s description page from Exchange</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-page-upload">exchange asset page upload</a></p></div></div></td><td><div><div><p>Uploads an asset’s description page from Exchange</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-page-update">exchange asset page update</a></p></div></div></td><td><div><div><p>Updates an asset’s description page from Exchange</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-page-delete">exchange asset page delete</a></p></div></div></td><td><div><div><p>Deletes an asset’s description page from Exchange</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-page-list">exchange asset page list</a></p></div></div></td><td><div><div><p>List all pages for a given asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-copy">exchange asset copy</a></p></div></div></td><td><div><div><p>Copies an Exchange asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-delete">exchange asset delete</a></p></div></div></td><td><div><div><p>Deletes an asset from Exchange</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-deprecate">exchange asset deprecate</a></p></div></div></td><td><div><div><p>Deprecates an asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-undeprecate">exchange asset undeprecate</a></p></div></div></td><td><div><div><p>Undeprecate an asset</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-describe">exchange asset describe</a></p></div></div></td><td><div><div><p>Show a given asset’s information</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-resource-upload">exchange asset resource upload</a></p></div></div></td><td><div><div><p>Uploads a resource to an asset portal</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-resource-list">exchange asset resource list</a></p></div></div></td><td><div><div><p>Lists published resources in the asset portal</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-resource-download">exchange asset resource download</a></p></div></div></td><td><div><div><p>Downloads resource from the asset portal</p></div></div></td></tr><tr><td><div><div><p><a href="#exchange-asset-resource-delete">exchange asset resource delete</a></p></div></div></td><td><div><div><p>Deletes resource from the asset portal</p></div></div></td></tr></tbody></table>

## exchange asset upload

\> exchange asset upload \[options\] <assetIdentifier> \[filePath\]

This command uploads an OAS, RAML, WSDL, HTTP, or custom asset using the IDs passed in
`<assetIdentifier>`.  
If `<filePath>` points to a ZIP archive file, that archive must include an `exchange.json` file
describing the asset.  
Argument `assetIdentifier` should be formatted as follows: `<group_id>/<asset_id>/<version>`.

Besides the default `--help`, `-f`/`--fields` and `-o`/`--output` options, this command also
accepts:

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Option</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><div><div><p><code>--apiVersion</code></p></div></div></td><td><div><div><p>Asset API version</p></div></div></td><td rowspan="4"><div><div><p><code>exchange asset upload --apiVersion 1.0 --name testProject --classifier custom</code></p></div><div><p><code>exchange asset upload --mainFile 'api.yml'</code></p></div></div></td></tr><tr><td><div><div><p><code>--name</code></p></div></div></td><td><div><div><p>Asset name</p></div></div></td></tr><tr><td><div><div><p><code>--mainFile</code></p></div></div></td><td><div><div><p>Main file of the API asset</p></div></div></td></tr><tr><td><div><div><p><code>--classifier</code></p></div></div></td><td><div><div><p>Valid asset classifiers are <code>oas</code>, <code>raml</code>, <code>wsdl</code>, <code>http</code>, and <code>custom</code>.</p></div></div></td></tr></tbody></table>

## exchange asset uploadv2

\> exchange asset uploadv2 \[properties\] <assetIdentifier>

This command uploads a rest-api, soap-api, http-api, raml-fragment, custom, app, template, example,
policy, extension, external-library or connector asset using the ID passed in <assetIdentifier>.

Use the following format for the _assetIdentifier_ argument:

`([_groupID_]/)_assetID_/_version_`

If _group\_id_ is not specified, it defaults to the currently selected organization ID.

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Option</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><div><div><p><code>--name</code></p></div></div></td><td><div><div><p>Asset name (required if no pom file is specified)</p></div></div></td><td rowspan="3"><div><div><p><code>exchange asset uploadv2 --name "Raml Asset" --description "RAML" --properties.apiVersion v1 --properties.mainFile api.raml --files.raml.zip /…​./file-path/raml.zip raml-asset/1.0.0</code></p></div></div></td></tr><tr><td><div><div><p><code>--description</code></p></div></div></td><td><div><div><p>Asset description</p></div></div></td></tr><tr><td><div><div><p><code>--properties</code></p></div></div></td><td><div><div><p>Asset properties</p></div><div><p>For example:</p></div><div><ul><li><p><code>properties.mainFile main.yaml</code></p></li><li><p><code>properties.apiVersion v1</code></p></li><li><p><code>properties.assetLink http://api.com</code></p></li></ul></div></div></td></tr><tr><td><div><div><p><code>--files</code></p></div></div></td><td><div><div><p>Asset file, identified as <code>classifier.packaging</code> or <code>packaging</code>, for example, <code>files.raml.zip …​/file-path/raml.zip</code></p></div><div><p>To send multiple files, use the same option multiple times:</p></div><div><p><code>--files.custom.zip custom.zip --files.pom.xml pom.xml</code></p></div></div></td><td><div><div><p><code>exchange asset uploadv2 --files.mule-application.jar /…​./file-path/mule-app.jar --files.pom /…​./file-path/mule-app.pom fa7b266c-3817-4cbb-ae49-7f3cc6c8cd9e/my-mule-app/1.0.0</code></p></div></div></td></tr><tr><td><div><div><p><code>--type</code></p></div></div></td><td><div><div><p>Asset type</p></div><div><p>Required if no file is specified.</p></div><div><p>Supported Values:</p></div><div><ul><li><p><code>rest-api</code></p></li><li><p><code>soap-api</code></p></li><li><p><code>http-api</code></p></li><li><p><code>raml-fragment</code></p></li><li><p><code>custom</code></p></li><li><p><code>connector</code></p></li><li><p><code>template</code></p></li><li><p><code>example</code></p></li><li><p><code>policy</code></p></li><li><p><code>app</code></p></li><li><p><code>extension</code></p></li><li><p><code>external-library</code></p></li><li><p><code>ruleset</code></p></li></ul></div><div><p>If it is uploaded, the type is inferred from the classifier of the file.</p></div><div><p>Depending on the type of asset, some possible classifier values are:</p></div><div><ul><li><p>REST API</p><div><ul><li><p><code>oas</code> (with <code>zip</code>, <code>yaml</code>, or <code>json</code> as packaging)</p></li><li><p><code>raml</code> (with <code>zip</code> or <code>raml</code> as packaging)</p></li></ul></div></li><li><p>RAML Fragment</p><div><ul><li><p><code>raml-fragment</code> (with <code>zip</code> or <code>raml</code> as packaging)</p></li></ul></div></li><li><p>SOAP API</p><div><ul><li><p><code>wsdl</code> (with <code>zip</code>, <code>wsld</code>, or <code>xml</code> as packaging)</p></li></ul></div></li><li><p>Custom</p><div><ul><li><p><code>custom</code></p></li></ul></div></li><li><p>Application</p><div><ul><li><p><code>mule-application</code> (with <code>jar</code> as packaging)</p></li></ul></div></li><li><p>Policy</p><div><ul><li><p><code>mule-policy</code> (with <code>jar</code> as packaging) + <code>policy-definition</code> (with <code>yaml</code> as packaging)</p></li></ul></div></li><li><p>Example</p><div><ul><li><p><code>mule-application-example</code> (with <code>jar</code> as packaging)</p></li></ul></div></li><li><p>Template</p><div><ul><li><p><code>mule-application-template</code> (with <code>jar</code> as packaging)</p></li></ul></div></li><li><p>Extension</p><div><ul><li><p><code>mule-plugin</code> (with <code>jar</code> as packaging)</p></li></ul></div></li><li><p>Connector</p><div><ul><li><p><code>studio-plugin</code> (with <code>zip</code> as packaging) + file with no classifier and packaging <code>jar</code></p></li></ul></div></li><li><p>External Library</p><div><ul><li><p><code>external-library</code> (with <code>jar</code> as packaging)</p></li></ul></div></li></ul></div></div></td><td><div></div></td></tr><tr><td><div><div><p><code>--categories</code></p></div></div></td><td><div><div><p>Categories</p></div></div></td><td><div><div><p><code>categories.someKey value</code></p></div><div><p><code>categories.anotherKey anotherValue</code></p></div></div></td></tr><tr><td><div><div><p><code>--fields</code></p></div></div></td><td><div><div><p>Fields</p></div></div></td><td><div><div><p><code>fields.someKey value</code></p></div><div><p><code>fields.anotherKey anotherValue</code></p></div></div></td></tr><tr><td><div><div><p><code>--keywords</code></p></div></div></td><td><div><div><p>Keywords (comma-separated)</p></div></div></td><td><div><div><p><code>raml,rest-api,someKeyword</code></p></div></div></td></tr><tr><td><div><div><p><code>--tags</code></p></div></div></td><td><div><div><p>Tags (comma-separated)</p></div></div></td><td><div><div><p><code>api,tag1,tag2</code></p></div></div></td></tr><tr><td><div><div><p><code>--dependencies</code></p></div></div></td><td><div><div><p>Asset dependencies (comma-separated)</p></div></div></td><td><div><div><p><code>groupID:assetID:version,groupID2:assetID:version</code></p></div></div></td></tr><tr><td><div><div><p><code>--status</code></p></div></div></td><td><div><div><p>Asset status</p></div><div><p>Supported Values:</p></div><div><ul><li><p><code>development</code></p></li><li><p><code>published</code></p></li></ul></div><div><p>Default value:</p></div><div><ul><li><p><code>published</code></p></li></ul></div></div></td><td><div></div></td></tr></tbody></table>

## exchange asset mutableDataUpload

\> exchange asset mutableDataUpload \[properties\] <assetIdentifier>

This command modifies the mutable data of an already created asset, including tags, categories,
fields, and documentation.

Use the following format for the _assetIdentifier_ argument:

`[_<groupID>_]/_<assetID>_/_<version>_`

If _group\_id_ is not specified, it defaults to the currently selected organization ID.

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Option</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><div><div><p><code>--docs</code></p></div></div></td><td><div><div><p>Documentation file. (Should specify the "zip" file path. Example: "--docs /…​/file-path/docs.zip")</p></div></div></td><td><div><div><p><code>exchange asset mutableDataUpload --docs /Users/llucas/Desktop/examples/docs.zip --tags "tag1,tag2" --categories.beach sun --fields.central park fa7b266c-3817-4cbb-ae49-7f3cc6c8cd9e/asset-id/1.0.0</code></p></div></div></td></tr><tr><td><div><div><p><code>--categories</code></p></div></div></td><td><div><div><p>Categories</p></div></div></td><td><div><div><p><code>categories.someKey value</code></p></div><div><p><code>categories.anotherKey anotherValue</code></p></div></div></td></tr><tr><td><div><div><p><code>--fields</code></p></div></div></td><td><div><div><p>Fields</p></div></div></td><td><div><div><p><code>fields.someKey value</code></p></div><div><p><code>fields.anotherKey anotherValue</code></p></div></div></td></tr><tr><td><div><div><p><code>--tags</code></p></div></div></td><td><div><div><p>Tags (comma-separated)</p></div></div></td><td><div><div><p><code>api,tag1,tag2</code></p></div></div></td></tr></tbody></table>

## exchange asset updateStatus

\> exchange asset updateStatus \[properties\] <assetIdentifier>

This command modifies the status of an already created asset.

Use the following format for the _assetIdentifier_ argument:

`[_<groupID>_]/_<assetID>_/_<version>_`

If _group\_id_ is not specified, it defaults to the currently selected organization ID.

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Command</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><div><div><p><code>--status</code></p></div></div></td><td><div><div><p>Asset status</p></div><div><p>Supported Values:</p></div><div><ul><li><p><code>published</code></p></li><li><p><code>deprecated</code></p></li></ul></div></div></td><td><div><div><p><code>exchange asset updateStatus --status deprecated</code></p></div></div></td></tr></tbody></table>

Valid transitions are:

<table><colgroup><col> <col></colgroup><thead><tr><th>From</th><th>To</th></tr></thead><tbody><tr><td><div><div><p><code>development</code></p></div></div></td><td><div><div><p><code>published</code></p></div></div></td></tr><tr><td><div><div><p><code>published</code></p></div></div></td><td><div><div><p><code>deprecated</code></p></div></div></td></tr><tr><td><div><div><p><code>deprecated</code></p></div></div></td><td><div><div><p><code>published</code></p></div></div></td></tr></tbody></table>

Note that the `published` state corresponds to the `stable` state

## exchange asset modify

\> exchange asset modify \[options\] <assetIdentifier>

This command modifies the Exchange asset identified with `<assetIdentifier>`.  
Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

Besides the default `--help`, `-f`/`--fields` and `-o`/`--output` options, this command also takes:

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Option</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><div><div><p><code>--name</code></p></div></div></td><td><div><div><p>New asset name</p></div></div></td><td rowspan="2"><div><div><p><code>exchange asset modify --name newName --tags test,sample</code></p></div></div></td></tr><tr><td><div><div><p><code>--tags</code></p></div></div></td><td><div><div><p>Comma-separated tags for the asset</p></div></div></td></tr></tbody></table>

## exchange asset download

\> exchange asset download \[options\] <assetIdentifier> <directory>

This command downloads the Exchange asset identified with `<assetIdentifier>` to the directory
passed in `<directory>`.  
Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset list

\> exchange asset list \[options\] \[searchText\]

This command lists all assets in Exchange.

> [!TIP] You can specify keywords in searchText to limit results to APIs containing those specific
> keywords.

Besides the default `--help`, `-f`/`--fields` and `-o`/`--output` options, this command also takes:

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Option</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><div><div><p><code>--limit</code></p></div></div></td><td><div><div><p>Number of results to retrieve</p></div></div></td><td><div><div><p><code>exchange asset list --limit 2</code></p></div></div></td></tr><tr><td><div><div><p><code>--offset</code></p></div></div></td><td><div><div><p>Offsets the number of APIs passed</p></div></div></td><td><div><div><p><code>exchange asset list --offset 3</code></p></div></div></td></tr><tr><td><div><div><p><code>--organizationId</code></p></div></div></td><td><div><div><p>Filters by organization id</p></div></div></td><td><div><div><p><code>exchange asset list --organizationId a12b3c45-de6f-789g-hi01-j2klm3nop4q5</code></p></div></div></td></tr></tbody></table>

## exchange asset page download

\> exchange asset page download \[options\] <assetIdentifier> <directory> \[pageName\]

This command downloads the description page specified in `<pageName>` for the Exchange asset
identified with `<assetIdentifier>` to the directory passed in `<directory>`.  
If \[pageName\] is not specified, this command downloads all pages.

> [!NOTE] This command only supports published pages.

Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.  
The description page in downloaded in Markdown format. When `name` is not specified, all pages are
downloaded.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset page modify

\> exchange asset page modify \[options\] <assetIdentifier> <pageName>

This command modifies the description page specified in `<pageName>`, for the Exchange asset
identified with `<assetIdentifier>`.

> [!NOTE] This command only supports published pages.

Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.  
Besides the default `--help`, `-f`/`--fields` and `-o`/`--output` options, this command also takes
the `--name` option to set a new asset page name.

## exchange asset page upload

\> exchange asset page upload \[options\] <assetIdentifier> <pageName> <mdPath>

This command uploads an asset description page from the path passed in `<mdPath>` using the name
specified in `<pageName>` to the Exchange asset identified with `<assetIdentifier>`.  
Naming the page "home" makes the uploaded page the main description page for the Exchange asset.

> [!CAUTION] This command publishes all active drafts as part of the operation.

Argument `assetIdentifier` should be formatted as follows: `[group_id]/<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.  
This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset page update

\> exchange asset page update \[options\] <assetIdentifier> <pageName> <mdPath>

This command updates the content of an asset description page from the path passed in `<mdPath>`
using the name specified in `<pageName>` to the Exchange asset identified with
`<assetIdentifier>`.  
Naming the page "home" makes the updated page the main description page for the Exchange asset.

> [!CAUTION] This command publishes all active drafts as part of the operation.

Argument `assetIdentifier` should be formatted as follows: `[group_id]/<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.  
This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset page delete

\> exchange asset page delete \[options\] <assetIdentifier> <pageName>

This command deletes the description page specified in `<pageName>`, for the asset identified with
`<assetIdentifier>`.

> [!WARNING] This command does not prompt twice before deleting. If you send a delete instruction,
> it does not ask for confirmation.

> [!NOTE] This command only supports published pages.

Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.  
This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset page list

\> exchange asset page list <assetIdentifier>

This command lists all pages for the asset passed in `<assetIdentifier>`.  
Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

> [!NOTE] This command only supports published pages.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset copy

\> exchange asset copy \[options\] <source> <target>

This command copies the Exchange asset from `<source>` to `<target>`.  
Arguments `<source>` and `<target>` should be formatted as follows:
`([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

This command accepts the default options `--help`, `-f/--fields`, and `-o/--output`, and also:

<table><colgroup><col> <col> <col></colgroup><thead><tr><th>Option</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><div><div><p><code>--targetOrganizationId</code></p></div></div></td><td><div><div><p>Organization ID to copy asset into</p></div></div></td><td><div><div><p><code>exchange asset copy --targetOrganizationId organization_id source_group_id/source_asset_id/source_version target_group_id/target_asset_id/target_version</code></p></div></div></td></tr></tbody></table>

## exchange asset delete

\> exchange asset delete \[options\] <assetIdentifier>

This command deletes the Exchange asset passed in `<assetIdentifier>`.

> [!WARNING] This command does not prompt twice before deleting. If you send a delete instruction,
> it does not ask for confirmation.

Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.  
This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset deprecate

\> exchange asset deprecate <assetIdentifier>

This command deprecates the asset passed in `<assetIdentifier>`.

Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset undeprecate

\> exchange asset undeprecate <assetIdentifier>

This command undeprecates the asset passed in `<assetIdentifier>`.

Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset describe

\> exchange asset describe <assetIdentifier>

This command describes the asset passed in `<assetIdentifier>`.

Argument `assetIdentifier` should be formatted as follows: `([group_id]/)<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset resource upload

\> exchange asset resource upload \[options\] <assetIdentifier> <filepath>

This command uploads the resource specified in `<filepath>` to a page in the asset portal described
in `<assetIdentifier>`.

You can use this command for any page of your `<assetIdentifier>` asset.

Supported file extensions for `<filepath>` are: `jpeg`, `jpg`, `jpe`, `gif`, `bmp`, `png`, `webp`,
`ico`, `svg`, `tiff`, `tif`.

The argument `assetIdentifier` should be formatted as follows: `[group_id]/<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

The successful output command will be a markdown codesnippet.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset resource list

\> exchange asset resource list \[options\] <assetIdentifier>

This command lists the resources in the asset portal of the asset specified in `<assetIdentifier>`.

Argument `assetIdentifier` should be formatted as follows: `[group_id]/<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

> [!NOTE] This command lists published resources by default.  
> You can use the `--draft` option to list draft resources from the asset portal.

Besides the default `--help`, `-f`/`--fields` and `-o`/`--output` options, this command also takes
the `--draft` option to list non-published resources in the asset portal.

## exchange asset resource download

\> exchange asset resource download \[options\] <assetIdentifier> <resourcePath> <filePath>

This command downloads the published resource specified in `<resourcePath>` from the asset portal of
the asset specified in `<assetIdentifier>` to the file specified in `<filePath>`.

Argument `assetIdentifier` should be formatted as follows: `[group_id]/<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

Argument `<resourcePath>` must be a published resource.  
You can list all published resources using the [asset resource list](#exchange-asset-resource-list)
command.

> [!NOTE] This command only supports published resources.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.

## exchange asset resource delete

\> exchange asset resource delete \[options\] <assetIdentifier> <resourcePath>

This command deletes the resource specified in `<resourcePath>` from the asset portal of the asset
specified in `<assetIdentifier>` by publishing a new portal in which `resourcePath` has been
deleted.

Argument `<assetIdentifier>` should be formatted as follows: `[group_id]/<asset_id>/<version>`.  
If `group_id` is not specified, it defaults to the currently selected Organization ID.

Argument `<resourcePath>` must be a published resource.  
You can list all published resources using the [asset resource list](#exchange-asset-resource-list)
command.

> [!CAUTION] This command publishes all active drafts as part of the operation.

This command accepts only the default options: `--help`, `-f`/`--fields` and `-o`/`--output`.
