# mulesoft Exchange - Full Documentation --- product: Exchange --- # About Exchange Cookies > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Exchange uses cookies to save user settings, enhance the user experience, and improve performance. In general, websites use multiple types of cookie: - Required cookies necessary for the site to work correctly - Functional cookies necessary for certain site functionality - Functional cookies that are not necessary for any site functionality - Advertising cookies Exchange requires some cookies to work correctly, including cookies for session details and authentication information. Exchange normally uses functional cookies, including cookies for site analytics. However, Exchange does not require any functional cookies for site functionality. Content in Exchange documentation often uses advertising cookies. If a video embedded in an Exchange portal is hosted on a third-party site such as YouTube that uses advertising cookies, then the video is not visible to a website visitor who disables advertising cookies, and the visitor sees a message explaining this. ## Cookie Consent Management Exchange provides public portal website visitors with cookie consent management and full documentation of all cookies, in compliance with marketing and privacy regulations. Some countries require that websites use non-essential cookies only after the website visitor has granted explicit consent. When a user in a country with this requirement visits an Exchange public portal for the first time, Exchange notifies the user about the cookies stored in the browser, and the user accepts the default settings or opens the cookie consent manager to configure their cookie settings. Exchange finds the user’s country by IP address. The Exchange cookie preferences button enables users in all countries to open the cookie consent manager and review or modify their settings at any time. The cookie consent manager shows settings for required cookies, functional cookies, and advertising cookies, and general information about cookies. Website visitors use the cookie consent manager to view the cookies the site uses, view descriptions of all individual cookies and understand what these cookies are doing, and enable or disable functional and advertising cookies. ## Vanity Domains If you enable a vanity domain for your Exchange public portal, enable cookie consent management with the [public portal vanity domain instructions](https://docs.mulesoft.com/exchange/portal-vanity-domain). ## Cookies Used by Exchange
Cookie NameDurationCookie typeDescription

__cfduid

Session

Required

Helps Cloudflare detect malicious visitors to our customers' websites and minimizes blocking legitimate users.

__tld__

Session

Functional

Tracks visitors on multiple websites and presents advertising relevant to the visitor’s preferences.

_csrf

Session

Required

Helps prevent Cross-Site Request Forgery attacks for site security.

_ga

730 days

Functional

Calculates visitor, session, and campaign data for site analytics.

_gat

Session

Functional

Throttles the request rate to limit the collection of data on high traffic sites.

_gid

1 day

Functional

Registers a unique ID to generate statistical data on how the visitor uses the website.

ajs%3Acookies

365 days

Functional

Supports use, service performance, and functionality of websites.

ajs%3Atest

365 days

Functional

Counts visits and tracks other metrics related to website traffic for performance analytics.

ajs_anonymous_id

365 days

Funuctional

Counts how many people visit the site for site analytics.

ajs_group_id

365 days

Functional

Tracks visitor usage and events within the website.

ajs_user_id

365 days

Functional

Helps track visitor usage, events, and target marketing, and sometimes also measures application performance and stability.

amplitude_cookie_test

Session

Functional

Detects whether partner data synchronization is functioning and currently running.

amplitude_id_7856322d613393b800727439f0954eb9mulesoft.com

3650 days

Functional

Uses Amplitude to identify unique user visits for accurate web analytics.

amplitude_idundefinedmulesoft.com

Session

Functional

Uses Amplitude to identify unique user visits for accurate web analytics.

amplitude_testmulesoft.com

Session

Functional

Uses Amplitude to identify unique user visits for accurate web analytics.

exchange.sess

Session

Required

Maintains a user session within Exchange. No personal information is stored in the cookie.

exchange.sess.sig

Session

Required

Stores the signature used to validate the Exchange session cookie.

exchange.loginCSRFToken

Session

Required

Prevents login Cross-Site Request Forgery attacks.

IDE

729 days

Advertising

Supports the Doubleclick platform, a real time bidding advertising exchange.

JSESSIONID

Session

Functional

Supports the New Relic platform for monitoring performance of web and mobile applications.

mulesoft.sess

Session

Required

Maintains a user session within Anypoint Platform. No personal information is stored in the cookie.

mulesoft.sess.sig

Session

Required

Stores the signature used to validate the Anypoint Platform session cookie.

test_cookie

Session

Advertising

Supports the Doubleclick platform, a real time bidding advertising exchange.

XSRF-TOKEN

Session

Required

Helps prevent Cross-Site Request Forgery attacks for site security.

zarget_visitor_info

365 days

Functional

Supports analytics and customization.

--- product: Exchange --- # Adding a Scanner for Amazon API Gateway > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync APIs from Amazon API Gateway into Anypoint Exchange and to discover and read policies from API configurations. Once imported, you can apply governance rulesets and publish them to your developer portal. The scanner discovers policies attached to supported Amazon API Gateway API, stage, route, and integration configurations and shows discovered policies in the enhanced MuleSoft experience as policies applied per imported API. Policies outside the supported scanner coverage aren’t currently scanned. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: For discovering and importing APIs: - Exchange Administrator permission - Knowledge about the Amazon Web Services region where the services are deployed. - AWS access key ID - AWS secret access key Additional requirements for discovering and reading policies: - IAM policy with read permissions for Amazon API Gateway: - `apigateway:GET` - `apigateway:GET*` actions on REST and HTTP API resources - Resource scope: - `arn:aws:apigateway:{region}::/restapis/*` - `arn:aws:apigateway:{region}::/apis/*` For web application firewall (WAF) policies, the scanner also uses `software.amazon.awssdk:wafv2` and `software.amazon.awssdk:route53`. Example custom IAM policy for read-only access: ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["apigateway:GET"], "Resource": "*" } ] } ``` ## Policy Coverage for Amazon API Gateway The scanner reads and extracts these policy areas from AWS API Gateway configurations:
Policy areaWhat the scanner reads

Authentication and authorization

IAM signature enforcement (aws-iam), Cognito/custom authorizers (cognito-authorizer), and API key requirements (api-key-required).

Rate limiting and quotas

Usage plan throttles and quotas, stage and method throttles, and account-level default throttle settings.

Network and access control

Resource policies (including IP-filter conditions), mutual TLS settings, and CORS-related request filtering.

Application firewall and threat protection

WAF Web ACLs, WAF IP filtering rules, WAF size restrictions, and WAF bot control rules.

Traffic, resilience, and optimization

Canary settings, Route53 health-check associations, and API cache settings.

Request and response processing

Integration timeout settings, header mappings, VTL mapping templates, request validators, and integration type patterns (including Step Functions and mock integrations).

Observability

Access logging, X-Ray tracing, and CloudWatch metrics.

Policies that aren’t represented in this supported coverage list aren’t currently scanned by this Amazon API Gateway scanner. The scanner doesn’t currently read these policy areas:
Policy area not scannedReason

JWT check (jwt-check)

JWT authorizers are tied to HTTP API v2 patterns and aren’t covered by this scanner’s current API model.

Attribute-based access control (attribute-based-access-control)

There isn’t a reliable API-to-policy linkage signal in the current scanner flow.

Tokenization (tokenization)

This is typically enforced in downstream services (for example, Lambda/KMS usage), not directly in API Gateway configuration.

PII protection (pii-protection)

This is typically implemented in downstream processing services, not as direct API Gateway policy configuration.

## Add a Scanner for Amazon API Gateway 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Amazon.

Platform

Select API Gateway.

Service Type

REST APIs selected by default.

Authentication Method

Access key selected by default.

AWS Access Key ID

Enter the access key ID.

AWS Secret Access Key

Enter the secret access key.

AWS Region

Select a region.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [AWS scanners](https://docs.mulesoft.com/exchange/aws-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Amazon Bedrock > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Amazon Bedrock into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Knowledge about the Amazon Web Services region where the agents are deployed. - Amazon Bedrock access key ID - Amazon Bedrock secret access key - Ensure you have these Amazon Bedrock permissions: - bedrock:ListAgents - bedrock:GetAgent - bedrock:ListAgentAliases - bedrock:GetAgentAlias - bedrock:ListAgentVersions - bedrock:GetAgentVersion - To make sure the scanner discovers the agent, assign an alias and link that alias to a version. The scanner ignores agents without an invocable URL. ## Add a Scanner for Amazon Bedrock 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Amazon.

Platform

Select AWS Bedrock.

Authentication Method

Select Access key.

Access Key ID

Enter the access key ID.

Secret Access Key

Enter the secret access key.

AWS Region

Select a region.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Amazon Scanners](https://docs.mulesoft.com/exchange/aws-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Amazon Bedrock AgentCore MCP > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync MCP servers from Amazon Bedrock AgentCore MCP Gateway into Exchange. Then you can govern the MCP servers and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: For discovering and importing MCP servers: - An active AWS account to register and host MCP servers - Amazon access key ID - Amazon secret access key - Amazon region - Exchange Administrator permission - An IAM user with an inline policy that allows these permissions: - bedrock-agentcore:ListAgentRuntimes - bedrock-agentcore:GetAgentRuntime - bedrock-agentcore:ListAgentRuntimeVersions - bedrock-agentcore:ListAgentRuntimeEndpoints - bedrock-agentcore:InvokeAgentRuntime For more information, see the [Amazon Bedrock documentation](https://docs.aws.amazon.com/bedrock-agentcore/). ## Add a Scanner for Amazon AgentCore 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. In **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Amazon.

Platform

Select AWS AgentCore.

Service Type

Select MCPs.

Authentication Method

Select Access key.

Access Key ID

Enter the access key ID.

Secret Access Key

Enter the secret access key.

AWS Region

Select a region.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Amazon scanners](https://docs.mulesoft.com/exchange/aws-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [MCP scanners](https://docs.mulesoft.com/exchange/mcp-scanners) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Amazon Bedrock AgentCore Runtime > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Agent Runtime into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin This setup requires specific configurations and access privileges in Amazon Bedrock to enable the scanner to access and list Amazon Bedrock AgentCore agents. - Prerequisites: - An active AWS account to register and host agents. - Access to Amazon Bedrock AgentCore in the AWS Console. - An AWS app registration in the AWS Console to generate credentials. - Required Configuration Values: - **AWS Region** for endpoint URL construction (for example, `[https://bedrock..amazonaws.com](https://bedrock.\.amazonaws.com)`). - **Agent Endpoint and Version** because created agents must have an assigned endpoint and version to be discoverable. - **Access Key and Secret Access Key** generated for the Identity and Access Management (IAM) user. - Required Permissions and Roles: - An IAM user with an inline policy that allows: - `bedrock-agentcore:ListAgentRuntimes` - `bedrock-agentcore:ListAgentRuntimeEndpoints` - `bedrock-agentcore:GetAgentCard` - `bedrock-agentcore:GetAgentRuntime` - `bedrock-agentcore:ListAgentRuntimeVersions` - Standard Bedrock permissions are also required: - `bedrock:GetAgent` - `bedrock:ListAgents` - Required Authentication: - IAM Signature (SigV4) is the default authentication method for AWS users. - OAuth 2.0 is available for AgentCore through `CreateOauth2CredentialProvider`. - Scanner Configuration Scope and Limitations: - Agents must be published with an active endpoint for scanner discovery. - Security reviews indicate medium server-side request forgery (SSRF) risk if a user-supplied region is not validated during URL construction. - Basic AgentCore agents do not expose A2A cards, but AgentCore supports A2A cards when agents expose them. For more information, see the [Amazon Bedrock documentation](https://docs.aws.amazon.com/bedrock-agentcore/). ## Add a Scanner for Amazon Bedrock AgentCore 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. In **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Amazon.

Platform

Select AWS AgentCore.

Asset Type

Only agents are supported.

Authentication Method

Select Access key.

Access Key ID

Enter the access key ID.

Secret Access Key

Enter the secret access key.

AWS Region

Select a region.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Amazon Scanners](https://docs.mulesoft.com/exchange/aws-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Anthropic Claude Managed Agents > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Claude Managed Agents into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Paid Anthropic account - Claude API key ## Add a Scanner for Anthropic Claude Managed Agents 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Anthropic.

Platform

Select Anthropic Claude.

Service Type

Agents selected by default.

Authentication Method

Select Access Keys.

API Key

Enter the API key.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Azure API Management > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync APIs from Azure API Management into Anypoint Exchange and to discover and read policies from API configurations. Once imported, you can apply governance rulesets and publish them to your developer portal. The scanner discovers policies attached to supported Azure API Management API and operation configurations and shows discovered policies in the enhanced MuleSoft experience as policies applied per imported API. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: For discovering and importing APIs: - Exchange Administrator permission - Tenant ID - Client ID - Client Secret - Subscription ID - Resource Group - Service Name Additional requirements for discovering and reading policies: - API Management Service Reader role permission, scoped to the API Management resource or resource group - OAuth scope: `[https://management.azure.com/.default](https://management.azure.com/.default)` ## Add a Scanner for Azure API Management 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Microsoft.

Platform

Select Azure API Management.

Service Type

REST APIs selected by default.

Authentication Method

OAuth selected by default.

Tenant ID

Enter the tenant ID.

Client ID

Enter the client ID.

Client Secret

Enter the client secret.

Subscription ID

Enter the subscription ID.

Resource Group

Enter the resource group.

Service Name

Enter the service name.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Microsoft scanners](https://docs.mulesoft.com/exchange/microsoft-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Azure API Management MCP Server > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync MCPs from Azure API Management into Anypoint Exchange. Once imported, you can apply governance rulesets and publish them to your developer portal. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - **Exchange Administrator** permission - API Management Service Reader Role permission - Tenant ID - Client ID - Client Secret - Subscription ID - Resource Group - Service Name ## Add a Scanner for Azure API Management MCP Server 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Microsoft.

Platform

Select Azure API Management.

Service Type

MCPs selected by default.

Authentication Method

OAuth selected by default.

Tenant ID

Enter the tenant ID.

Client ID

Enter the client ID.

Client Secret

Enter the client secret.

Subscription ID

Enter the subscription ID.

Resource Group

Enter the resource group.

Service Name

Enter the service name.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Microsoft Platform Scanners](https://docs.mulesoft.com/exchange/microsoft-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Databricks Agent Bricks > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Databricks Agent Bricks into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Databricks Workspace access - Workspace URL - Databricks client ID - Databricks client secret - Service Principal requires CAN\_QUERY permission on each serving endpoint to enable full discovery and invocation. Use the Databricks Permissions API: ```json PATCH /api/2.0/permissions/serving-endpoints/{endpoint_id} { "access_control_list": [ { "service_principal_name": "", "permission_level": "CAN_QUERY" } ] } ```
API EndpointRequired Permission

GET /api/2.0/serving-endpoints

CAN_VIEW or higher

GET /api/2.0/serving-endpoints/{name}

CAN_VIEW or higher

GET /api/2.0/serving-endpoints/{name}/openapi

CAN_VIEW or higher

POST /serving-endpoints/{name}/invocations

CAN_QUERY or higher

## Agent Discoverability Not all Databricks endpoints are discoverable by the scanner. Before running a scan, confirm that the scanner can discover your agent. === What the Scanner Discovers
RequirementRequired Value

Deployment type

Model Serving Endpoint

Model source

Custom model registered in Unity Catalog

Entity name pattern

catalog.schema.model_name (for example, ml_catalog.agents.customer_support_v2)

Endpoint state

READY

### What the Scanner Doesn’t Discover
Agent TypeExclusion Reason

Foundation models (GPT, Claude, Llama, Gemini, and so on)

These are platform-provided models, not custom agents.

External models

These are hosted outside Databricks.

Knowledge Assistants (Agent Builder)

These use a foundation model internally and aren’t registered as a custom Unity Catalog model.

Databricks Apps

These use a different deployment path and aren’t Model Serving Endpoints.

### Make an Agent Discoverable If you built your agent with Databricks Agent Builder (for example, a Knowledge Assistant), it isn’t discovered automatically. To make it scannable: 1. Log the agent with MLflow, the Databricks framework for model logging and tracking. Use `mlflow.langchain.log_model()` or `mlflow.pyfunc.log_model()` in a notebook. 2. Register the model in Unity Catalog. Register the model under a catalog and schema (for example, `my_catalog.my_schema.knowledge_assistant_mulesoft`). 3. Deploy the model as a Serving Endpoint. Create a Model Serving Endpoint from the registered Unity Catalog model. 4. Grant permissions to the scanner service principal. The service principal used in the scanner must have at least **CAN\_QUERY** on the endpoint. After this deployment, the scanner discovers the agent in the next scan. ### Quick Check Run this API call with your service principal credentials to verify what the scanner can see: `GET [https:///api/2.0/serving-endpoints](https://\/api/2.0/serving-endpoints)` Look for your agent in the response. If `served_entities[0].entity_name` follows the `catalog.schema.model_name` pattern, the scanner discovers it. ## Add a Scanner for Databricks Agent Bricks 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Databricks.

Platform

Select Agent Bricks.

Service Type

Select Agents selected by default.

Authentication Method

OAuth selected by default.

Workspace URL

Enter the workspace URL.

Client ID

Enter the client ID.

Client Secret

Enter the client secret.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Databricks MCP Server > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync MCPs from Databricks into Exchange. Then you can govern the MCPs and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - **Exchange Administrator** permission - Databricks Workspace access - Workspace URL - Databricks Client ID - Databricks Client secret - Service Principal requires CAN\_QUERY permission on each serving endpoint to enable full discovery and invocation. Use the Databricks Permissions API: ```json PATCH /api/2.0/permissions/serving-endpoints/{endpoint_id} { "access_control_list": [ { "service_principal_name": "", "permission_level": "CAN_QUERY" } ] } ```
API EndpointRequired Permission

GET /api/2.0/serving-endpoints

CAN_VIEW or higher

GET /api/2.0/serving-endpoints/{name}

CAN_VIEW or higher

GET /api/2.0/serving-endpoints/{name}/openapi

CAN_VIEW or higher

POST /serving-endpoints/{name}/invocations

CAN_QUERY or higher

## Add a Scanner for Databricks MCP Server 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Databricks.

Platform

Select Agent Bricks.

Service Type

Select MCPs selected by default.

Authentication Method

OAuth selected by default.

Workspace URL

Enter the workspace URL.

Client ID

Enter the client ID.

Client Secret

Enter the client secret.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for GoDaddy ANS > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from GoDaddy ANS into Exchange. Then you can govern the agents and consume them in other applications. GoDaddy agents are verified by GoDaddy to be safe and secure. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - GoDaddy ANS API key - GoDaddy ANS API secret You enter your GoDaddy ANS credentials when configuring the scanner in Exchange. For more information, see the GoDaddy ANS documentation. ## Add a Scanner for GoDaddy ANS 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select Auto-resolve.

5. From **Connection Configuration**, complete these fields:
FieldValue

Agent Provider

Select GoDaddy ANS.

Authentication Method

Select SSO Key.

API Key

Enter the API key.

API Secret

Enter the API secret.

Environment

Select an environment.

Agent Display Name Filter

Enter a name to partially match and include specific agents.

Agent FQDN Filter

Enter a fully qualified domain name (FQDN) for an exact match to include specific agents. For example, agent.example.com.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [GoDaddy scanners](https://docs.mulesoft.com/exchange/godaddy-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Google Apigee > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync APIs from Google Apigee into Anypoint Exchange and to discover and read policies from API configurations. Once imported, you can apply governance rulesets and publish them to your developer portal. The scanner discovers policies attached to supported Apigee API proxy configurations and shows discovered policies in the enhanced MuleSoft experience as policies applied per imported API. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: For discovering and importing APIs: - Exchange Administrator permission - Apigee Read-only Admin permission - Google Cloud Platform (GCP) project ID - Service account email - Private key Additional requirements for discovering and reading policies: - Viewer role, or a specific Apigee permission role, assigned to the service account ## Add a Scanner for Google Apigee 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Google.

Platform

Select Google Apigee.

Service Type

REST APIs selected by default.

Authentication Method

Service Account selected by default.

GCP Project ID

Enter the Google Cloud Platform project ID.

Service Account Email

Enter the service account email.

Private Key

Enter the private key.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Google scanners](https://docs.mulesoft.com/exchange/google-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Google Gemini Agent Enterprise Platform > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Google Gemini Agent Enterprise Platform into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Vertex AI Viewer permission - Google Cloud Platform project ID Service acccount email - Google private key ## Add a Scanner for Google Gemini Enterprise Platform 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Google.

Platform

Select Gemini Enterprise Platform.

Service Type

Agents selected by default.

Authentication Method

Select Service Account.

GCP Project ID

Enter the Google Cloud Platform project ID.

Service Account Email

Enter the email address.

Private Key

Enter the private key.

Location

Select a location.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Google scanners](https://docs.mulesoft.com/exchange/google-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Kong Gateway > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync APIs from Kong Gateway into Anypoint Exchange and to discover and read policies from API configurations. Once imported, you can apply governance rulesets and publish them to your developer portal. In Kong, policies are called plugins. The scanner discovers plugins attached to Kong Gateway services and routes, and the enhanced MuleSoft experience shows those discovered plugins as policies. Plugins applied directly at the service instance level are not currently scanned. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Kong Control Plane Viewer permission - Kong Gateway region - Personal access token (PAT) Credential scope required for discovering and reading policies: - Kong Admin API read Setup for OpenAPI Specifications: Before you run the scanner, link each Kong Gateway service to a Catalog API that has an attached OpenAPI Specification (OAS) so that discovery produces accurate, typed API definitions. For the required workflow and route-discovery limitations, see [OpenAPI Specifications](#kong-gateway-scanner-openapi-specifications). ## OpenAPI Specifications To discover accurate, typed API definitions from Kong Gateway, link each Kong Gateway service to a Catalog API that has an attached OpenAPI Specification (OAS). The scanner reads the OAS from the linked Catalog API to build a complete, typed service definition. Uploading an OAS file directly to a Kong Gateway service only creates Kong routes—it doesn’t store a spec or endpoint definition that the scanner can read. Without a Catalog-linked spec, Kong infers routes from the gateway configuration. Inferred routes are untyped and produce a lower-quality service definition and degraded MCP bridging. To attach an OAS so the scanner can read it: 1. In the Kong **Catalog** section, create an API. 2. Attach the OAS spec to the Catalog API. 3. Link the Catalog API to a gateway service in Kong Gateway. For more information, see the [Kong API catalog documentation](https://developer.konghq.com/api-catalog/). > [!NOTE] If a Kong Gateway service isn’t linked to a Catalog API with an attached OAS, only the > first route per path is discovered. For example, if the `/items` path has both `GET` and `POST` > routes, only one of those routes appears in the discovered definition. Link the service to a > Catalog API with an attached OAS to discover all routes and methods for each path. ## Add a Scanner for Kong Gateway 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Kong.

Platform

Select Kong Gateway.

Service Type

REST APIs selected by default.

Authentication Method

Service Account selected by default.

Kong Gateway Region

Select the Kong Gateway region.

Personal Access Token

Enter the personal access token.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## Protocol to Asset Type Mapping When the scanner discovers an API in Kong Gateway, it assigns an asset type in Exchange based on the API’s Kong protocol and plugins. The scanner identifies gRPC APIs by their protocol alone and does not check plugins for these APIs. For HTTP APIs, the scanner checks the API’s plugins because both REST and GraphQL APIs use the HTTP protocol. If the API has a `graphql-*` plugin, the scanner classifies it as a GraphQL API. Otherwise, the scanner classifies it as a REST API.
ProtocolPluginAsset type

grpc / grpcs

No matching plugin

gRPC

http / https

graphql-*

GraphQL

No matching plugin

REST

The scanner currently detects gRPC and GraphQL protocols only. > [!NOTE] APIs that use other protocols or plugins, such as Model Context Protocol (MCP), WebSocket, > or Simple Object Access Protocol (SOAP), are registered in Exchange as asset type REST for now. > MuleSoft plans to support these protocols in a future release. ## Rescanning Behavior The scanner assigns an asset type to an API the first time it discovers that API in Exchange. Later scans do not update that asset type, even if the API’s protocol changes in Kong Gateway. To change an asset’s type, remove the asset from Exchange, and let the scanner import it again. ## See Also - [Kong scanners](https://docs.mulesoft.com/exchange/kong-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Kong MCP Server > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync MCP servers from Kong Gateway into Anypoint Exchange. Then you can govern the MCP servers and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Kong Control Plane Viewer permission - Kong Gateway region - Personal access token (PAT) Credential scope required for discovering MCP servers: - Kong Admin API read ## Add a Scanner for Kong MCP Server 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Kong.

Platform

Select Kong Gateway.

Service Type

Select MCPs.

Authentication Method

Service Account selected by default.

Kong Gateway Region

Select the Kong Gateway region.

Personal Access Token

Enter the personal access token.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [MCP Scanners](https://docs.mulesoft.com/exchange/mcp-scanners) - [Kong Scanners](https://docs.mulesoft.com/exchange/kong-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for LangChain LangSmith > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from LangSmith into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Plus plan (or higher) workspace in LangSmith - LangSmith API key for the workspace - LangSmith workspace ID ## Add a Scanner for LangChain LangSmith 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select LangChain.

Platform

Select LangSmith.

Service Type

Agents is selected by default.

Authentication Method

Access Keys selected by default.

LangSmith API Key

Enter the API key.

Workspace ID

Enter the workspace ID.

Region

Select the region for your workspace: US or EU. Default is the US region.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Microsoft Azure Copilot > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Microsoft Azure Copilot into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin This setup requires specific configurations and access privileges in Microsoft Copilot Studio and Power Platform so the scanner can access and list agents. - Prerequisites - An App Registration must be completed in the Azure Portal to generate necessary credentials. - Required Configuration Values: - Power Platform tenant ID - Power Platform client ID (Application ID) - Power Platform client secret - Required Permissions and Roles: Add the registered application as an Application User in Power Platform admin center and assign it the Copilot Studio Scanner Role security role. - Required Scope: Set the scope to Dataverse Environment URL, `[https://.crm.dynamics.com](https://\.crm.dynamics.com)`. ## High-level Steps to Configure Microsoft Copilot Studio To configure Microsoft Copilot Studio before you add a scanner, review these high-level steps. For details, see the [Microsoft Copilot Studio documentation](https://learn.microsoft.com/en-us/microsoft-copilot-studio/). 1. Create an app registration: 1. Create a new app registration, select the account types, and register the application. 2. Create client secrets and copy the values. 3. Record these configuration values from the registered application. These values are required when adding a scanner in Exchange: - Client ID (Application ID) - Client Secret - Tenant ID (Directory ID) 2. Configure permissions: 1. In Power Platform, go to **Environments** and select the environment. 2. Create a custom security role with read-only permission to the `bot` and `botcomponents` tables: 1. Go to **Security roles** and add a new role. 2. Add or select these values in the **Create New Role** panel, and then save:
FieldValue

Role Name

Copilot Studio Scanner Role

Business Unit

Select the business unit.

Description

Read-only access to scan Copilot Studio agent metadata.

Applies To

Copilot Studio scanning and auditing.

Summary of Core Table Privileges

Read access to the bot and botcomponents tables.

3. From the Details page, enter `bot` to locate the Agent and Agent Component table records. 4. Select **Organization Access** from the **Read** column for both Agent and Agent Component, and then save. 3. In Power Platform admin center, create a new app user by selecting **Application users** and adding the app you created. 4. Select the **Business Unit** and edit the **Security Role** by selecting the **Copilot Studio Scanner Role** that you created. 3. After you complete these steps, add the scanner in Exchange. ## Add a Scanner for Microsoft Copilot Studio 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select Auto-resolve.

5. From **Connection Configuration**, complete these fields:
FieldValue

Agent Provider

Select Microsoft Azure Copilot.

Authentication Method

Select an option.

Tenant ID

Enter the tenant ID.

Client ID

Enter the client ID.

Client Secret

Enter the client secret.

Scope

Enter the URL.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Microsoft scanners](https://docs.mulesoft.com/exchange/microsoft-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Microsoft Foundry > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Microsoft Foundry into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin This setup requires specific configurations and access privileges within the Azure environment to enable the agent scanner to access and list Microsoft Foundry agents. - Prerequisites - An Active Azure Subscription is required for creating a Microsoft Foundry project. - An Azure App Registration must be completed in the Azure portal to generate necessary credentials in the Azure portal. - A new project created using the resource type, Microsoft Foundry resource. - Required Configuration Values These values, which are obtained during the Azure App registration setup, are required for scanner configuration: - Tenant ID (Directory ID) - Client ID (Application ID) - Client Secret - Required Permissions and Roles: - The application principal from the prerequisite step must be assigned the Cognitive Services User role within the Azure portal to grant the scanner access. - Scanner Configuration Limitations: Agent listing is project-specific: - The user must provide all corresponding Project IDs during scanner configuration if agents are spread across multiple projects. - A new scanner configuration is required for every new project created. For more information, see the [Microsoft Foundry documentation](https://learn.microsoft.com/en-us/azure/ai-foundry/). ## Add a Scanner for Microsoft Foundry 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. In **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Azure AI Foundry.

Asset Type

Only agents are supported.

Authentication Method

Select OAuth 2 Client Credentials.

Tenant ID

Enter the application ID.

Client ID

Enter the directory ID.

Client Secret

Enter the client secret.

Project Endpoints

Enter the project endpoint URLs separated by commas. Confirm you are using the public endpoint, not a private or VNet-restricted endpoint. If the connection fails, verify your endpoint type matches your network configuration, as private endpoints may not be accessible to the scanner running on AWS infrastructure.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Microsoft scanners](https://docs.mulesoft.com/exchange/microsoft-scanners) - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Salesforce Agentforce Agents > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Salesforce Agentforce into Anypoint Exchange. Once imported, you can apply governance rulesets and publish them to your developer portal. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - [Enable the connection to a Salesforce organization](https://docs.mulesoft.com/access-management/managing-connected-salesforce-orgs#enable-disable-connection) that has an established tenant relationship with your Anypoint Platform organization. - [Enable Agentforce in Anypoint Platform](https://docs.mulesoft.com/access-management/enabling-generative-ai#enable-einstein-anypoint) Accept the terms and conditions and set a default organization for Agentforce. - **Exchange Administrator** permission ## Add a Scanner for Salesforce Agentforce 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and local time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Salesforce.

Platform

Select Salesforce Agentforce.

Service Type

Agents selected by default.

Authentication Method

Salesforce Connection selected by default.

Salesforce Connection

Select the Salesforce connection.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for ServiceNow AI Agents > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from ServiceNow AI Agents into Exchange. Then you can govern the agents and consume them in other applications. The scanner imports only native ServiceNow AI Agent Studio agents. Agents registered in ServiceNow from external systems are not imported. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - AI Asset Governance enabled and synced on your ServiceNow instance - A ServiceNow Table API integration user with read access to the `alm_ai_*` tables - An Application Registry entry in ServiceNow, which generates the OAuth client ID and client secret pair that the scanner uses to authenticate The scanner authenticates to ServiceNow by using the OAuth 2.0 client credentials grant. You enter the instance URL, client ID, and client secret when configuring the scanner in Exchange. To create an Application Registry entry and obtain the client ID and client secret, see the ServiceNow documentation. > [!NOTE] If AI Asset Governance is not enabled and synced on your ServiceNow instance, the scanner > returns zero agents even when agents exist. Verify that AI Asset Governance is enabled and synced > before you run the scanner. ## Add a Scanner for ServiceNow AI Agents 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Ask to review or Auto-resolve.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select ServiceNow.

Platform

Select ServiceNow AI Agents.

Service Type

Agents selected by default.

Authentication Method

OAuth selected by default.

Instance URL

Enter the ServiceNow instance URL, for example, https://<instance>.service-now.com.

Client ID

Enter the OAuth client ID.

Client Secret

Enter the OAuth client secret.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [ServiceNow Scanners](https://docs.mulesoft.com/exchange/servicenow-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Snowflake Cortex AI > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync agents from Snowflake Cortex AI into Exchange. Then you can govern the agents and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Snowflake Enterprise edition account with Cortex agents enabled - Snowflake user with the ACCOUNTADMIN role for one-time setup - Snowflake account URL - Snowflake programmatic access token (PAT) generated during one-time setup ## Set Up Snowflake for the Scanner Complete these steps once in Snowflake before adding the scanner. After setup, the scanner authenticates as a service user with a least-privilege custom role. Use the ACCOUNTADMIN role only for the initial grants in this section. 1. Create a custom scanner role and grant it access to Cortex agents. Sign in to Snowflake as a user with the ACCOUNTADMIN role and run: ```sql USE ROLE ACCOUNTADMIN; CREATE ROLE ANYPOINT_SCANNER_ROLE; GRANT DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER TO ROLE ANYPOINT_SCANNER_ROLE; ``` 2. Create or reuse a warehouse for the scanner. - To create a new warehouse: ```sql CREATE WAREHOUSE COMPUTE_WH WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 60 INITIALLY_SUSPENDED = TRUE; GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE ANYPOINT_SCANNER_ROLE; ``` - To reuse an existing warehouse, grant usage on it: ```sql GRANT USAGE ON WAREHOUSE TO ROLE ANYPOINT_SCANNER_ROLE; ``` 3. Create a service user for the scanner and assign the scanner role. ```sql CREATE USER ANYPOINT_SCANNER TYPE = SERVICE DEFAULT_ROLE = ANYPOINT_SCANNER_ROLE DEFAULT_WAREHOUSE = COMPUTE_WH; GRANT ROLE ANYPOINT_SCANNER_ROLE TO USER ANYPOINT_SCANNER; ``` 4. Grant the scanner role read access to the databases and schemas that contain Cortex agents you want to scan. Run this block for each database and schema you want to scan, replacing `` and ``: ```sql GRANT USAGE ON DATABASE TO ROLE ANYPOINT_SCANNER_ROLE; GRANT USAGE ON SCHEMA . TO ROLE ANYPOINT_SCANNER_ROLE; GRANT USAGE ON ALL AGENTS IN SCHEMA . TO ROLE ANYPOINT_SCANNER_ROLE; GRANT USAGE ON FUTURE AGENTS IN SCHEMA . TO ROLE ANYPOINT_SCANNER_ROLE; ``` 5. Restrict the service user to the scanner’s egress IP ranges. This step reduces the service user’s attack surface. Replace `` with the CIDR blocks that MuleSoft provides: ```sql CREATE NETWORK RULE ANYPOINT_SCANNER_NR MODE = INGRESS TYPE = IPV4 VALUE_LIST = (''); CREATE NETWORK POLICY ANYPOINT_SCANNER_NP ALLOWED_NETWORK_RULE_LIST = (ANYPOINT_SCANNER_NR); ALTER USER ANYPOINT_SCANNER SET NETWORK_POLICY = ANYPOINT_SCANNER_NP; ``` 6. Generate a programmatic access token (PAT) for the service user. 1. In Snowsight, click **Governance & security** 2. Click **Users & roles**. 3. Open the `ANYPOINT_SCANNER` user. 4. Click **Programmatic access tokens** 5. Click **Generate new token**. 6. In **Name**, enter `anypoint_scanner`. 7. In **Expires in**, set an expiry that follows your secret-rotation policy. The Snowflake maximum is 365 days. 8. For **Role**, select **One specific role**, and then select `ANYPOINT_SCANNER_ROLE`. 9. Click **Generate**, and copy the token immediately. Snowflake displays the token only once. Use this token in the **Programmatic Access Token** field when you add the scanner. ## Add a Scanner for Snowflake Cortex AI 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Snowflake.

Platform

Select Cortex AI.

Service Type

Agents is selected by default.

Authentication Method

Service Account selected by default.

Account URL

Enter the account URL.

Programmatic Access Token

Enter the programmatic access token.

Database Filter

To filter by database, enter the database name, or a comma-separated list of database names.

Schema Filter

To filter by schema, enter the schema name, or a comma-separated list of schema names.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Amazon Scanners](https://docs.mulesoft.com/exchange/aws-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding a Scanner for Snowflake MCP Server > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Add a scanner to discover, import, and sync MCP servers from Snowflake MCP Server into Exchange. Then you can govern the servers and consume them in other applications. ## Before You Begin Before adding the scanner, verify that you have these prerequisites: - Exchange Administrator permission - Snowflake ACCOUNTADMIN role permission - Snowflake Enterprise edition account with MCP servers enabled - Snowflake account URL - Snowflake programmatic access token (PAT) ## Add a Scanner for Snowflake MCP 1. Verify that you are in the business group where you want to add the scanner. 2. From the sidebar in Exchange, click **Scanners**. 3. Enter a name for the scanner. 4. From **Scanner Run Configuration**, complete these fields or options:
Field/OptionValue

Run Schedule

Select a frequency and time.

Sync Review

Select an option: Auto-resolve or Ask to review.

5. From **Connection Configuration**, complete these fields:
FieldValue

Provider

Select Snowflake.

Platform

Select Snowflake MCP Server.

Service Type

Select MCPs.

Authentication Method

Service Account selected by default.

Account URL

Enter the Snowflake account URL.

Programmatic Access Token

Enter the programmatic access token.

Database Filter

To filter by database, enter the database name, or a comma-separated list of database names.

Schema Filter

To filter by schema, enter the schema name, or a comma-separated list of schema names.

6. Click **Test Connection**. If the connection fails, review the **Connection Configuration** settings. Update the settings, and then test the connection again. 7. To send email notifications: 1. Select **Advanced Settings** and turn on **Send Email Notifications**. 2. Enter an email address. 8. Click **Add Scanner**. ## See Also - [Snowflake Platform Scanners](https://docs.mulesoft.com/exchange/snowflake-scanners) - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [MCP Scanners](https://docs.mulesoft.com/exchange/mcp-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Adding Policy Implementation Files to Published Policy Definition > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When a policy definition asset is published in Exchange, the asset details page displays a **Pending** flag next to **Implementations** in the left navigation bar. The flag indicates that the policy implementation has not been added. Add the policy implementation files to the policy definition to enable the policy to be available in runtime. The required implementation files are a binary file such as a WebAssembly (WASM) file for Omni Gateway or JAR for Mule 4 runtime and a YAML metadata file. Before adding the policy implementation files, ensure that the policy definition asset is in the Stable state. To add the policy implementation files: 1. In Exchange, select the policy asset to open the asset details page. 2. Click **Implementations** in the left navigation bar. 3. Click **Add implementation**. 4. Enter the name for the implementation. 5. Click **Choose file** to select the JAR or WebAssembly file. 6. Click **Choose file** to select the YAML file. 7. To edit the GroupId, AssetId, Version, and API version, click **Advanced**. Exchange generates the group ID, asset ID, and version. You can change these values. You can also change an API asset’s version and API version separately. The advanced settings are most often used to change the asset version. 8. Click **Add implementation**. The implementation displays in the **Manage implementations** table. From this table, manage the implementation versions of a policy asset. See [Manage Versions](https://docs.mulesoft.com/exchange/manage-versions) for more information. --- product: Exchange --- # Administrator Tasks > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Exchange administrators have permissions to perform these tasks: - [Discover and catalog external agents](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) Use agent scanners to automatically discover and catalog agents from outside Anypoint Platform. - [Importing Agentforce Agents](https://docs.mulesoft.com/exchange/importing-agentforce-agents) Import Agentforce agents into Exchange to include them in business groups. - [Share an asset](https://docs.mulesoft.com/exchange/to-share-an-asset) Share an asset to publish an API asset to a public portal, or to grant access to an asset to specific users in your organization, to everyone in your organization, or to everyone in a chosen external organization. - [Publish an API to a public portal](https://docs.mulesoft.com/exchange/to-share-api-asset-to-portal) Publish APIs to a public portal for external users. - [Saving Searches](https://docs.mulesoft.com/exchange/to-save-searches) Save and maintain searches for assets within a business group. - [Use API Manager to add the Request Access button](https://docs.mulesoft.com/exchange/to-enable-the-request-access-button) Specify which API assets can be shared with users. - [Set User Access Permissions](https://docs.mulesoft.com/exchange/to-set-permissions) Grant the Exchange Administrator, Contributor, Viewer, or Creator permissions to members of your organization, and optionally provide access for individual assets. - [About Exchange cookies](https://docs.mulesoft.com/exchange/cookies) Find information about Exchange cookies, cookie configuration, and cookies for vanity domains. - [Migrate Exchange 1 assets to Exchange 2](https://docs.mulesoft.com/exchange/migrate) Move assets from Exchange 1. --- product: Exchange --- # Agent Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Agent scanners connect external agent platforms to Anypoint Platform. They discover, import, and catalog agents into Exchange so you can govern them and use them from other applications. Supported agent scanners: - [Adding a Scanner for Amazon Bedrock](https://docs.mulesoft.com/exchange/adding-amazon-bedrock-scanner) - [Adding a Scanner for Amazon Bedrock AgentCore Runtime](https://docs.mulesoft.com/exchange/adding-bedrock-agentcore-scanner) - [Adding a Scanner for Anthropic Claude Managed Agents](https://docs.mulesoft.com/exchange/adding-claude-scanner) - [Adding a Scanner for Databricks Agent Bricks](https://docs.mulesoft.com/exchange/adding-databricks-agent-bricks-scanner) - [Adding a Scanner for GoDaddy ANS](https://docs.mulesoft.com/exchange/adding-godaddy-scanner) - [Adding a Scanner for Google Gemini Agent Enterprise Platform](https://docs.mulesoft.com/exchange/adding-google-vertex-scanner) - [Adding a Scanner for LangChain LangSmith](https://docs.mulesoft.com/exchange/adding-langsmith-scanner) - [Adding a Scanner for Microsoft Azure Copilot](https://docs.mulesoft.com/exchange/adding-microsoft-copilot-scanner) - [Adding a Scanner for Microsoft Foundry](https://docs.mulesoft.com/exchange/adding-microsoft-foundry-scanner) - [Adding a Scanner for Salesforce Agentforce Agents](https://docs.mulesoft.com/exchange/adding-agentforce-scanner) - [Adding a Scanner for ServiceNow AI Agents](https://docs.mulesoft.com/exchange/adding-servicenow-scanner) - [Adding a Scanner for Snowflake Cortex AI](https://docs.mulesoft.com/exchange/adding-snowflake-cortex-ai-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Amazon Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your organization standardizes on Amazon, use this page to see which Exchange scanners apply to Amazon services. Step-by-step setup lives in each linked topic; this page only maps scanners to Amazon. ## Agent Scanners - [Add a scanner for Amazon Bedrock](https://docs.mulesoft.com/exchange/adding-amazon-bedrock-scanner) - [Add a scanner for Amazon Bedrock AgentCore](https://docs.mulesoft.com/exchange/adding-bedrock-agentcore-scanner) ## API Scanners - [Add a scanner for Amazon API Gateway](https://docs.mulesoft.com/exchange/adding-amazon-gateway-scanner) ## MCP Scanners - [Add a scanner for Amazon Bedrock AgentCore MCP Server](https://docs.mulesoft.com/exchange/adding-agentcore-mcp-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [API Scanners](https://docs.mulesoft.com/exchange/api-scanners) - [MCP Scanners](https://docs.mulesoft.com/exchange/mcp-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Anthropic Platform Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your agents are hosted on Anthropic, use this page to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## Agent Scanners - [Add a scanner for Anthropic Claude managed agents](https://docs.mulesoft.com/exchange/adding-claude-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Anypoint Exchange Overview > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Exchange is a curated catalog of reusable assets. See [Asset Types](https://docs.mulesoft.com/exchange/asset-types) for more information about each type of asset that’s supported. You can catalog (publish), share, discover, learn about, and reuse assets within your organization of developers to facilitate collaboration, boost productivity, and promote standards. ![Exchange catalog showing assets provided by MuleSoft](/mulesoft/current/en-us/exchange/_images/exchange-landing-page.png) Use Exchange to discover, share, and incorporate assets and resources into your applications, and view asset usage and engagement metrics. You can create developer portals, view and test APIs, simulate sending data to APIs by using the mocking service, and create assets. Exchange assets are accessible from many places, such as Anypoint Studio (connectors, templates, and examples), API Manager (APIs, API groups, and policies), or Runtime Manager (applications). You can publish assets from agent network projects such as agents, brokers, and MCP servers, as well as APIs from Anypoint Code Builder and Design Center to Exchange. ## MuleSoft Assets Assets in the **Provided by MuleSoft** organization are created by MuleSoft and its partners and certified by MuleSoft. These assets are publicly available to all customers. Exchange automatically discovers, translates, and publishes publicly hosted MCP servers from the [official MCP registry](https://registry.modelcontextprotocol.io/) into **Provided by MuleSoft**. Exchange labels these assets as **Publicly Available**. Find the assets using the **provider-managed** tag. These assets are maintained by their original providers, not by MuleSoft. When you create an instance from publicly available assets, the instance is created within your private organization in Exchange and managed like any other instance in API Manager. You can also request access to running instances from publicly available assets. However, assets that are created by an organization other than **Provided by MuleSoft** and published in that organization’s instance of Exchange are private and not visible outside that organization. Customers are responsible for any private assets they publish within their Exchange instance. ## Agent Fabric Assets Agent Fabric is an enterprise platform for discovering, orchestrating, governing, and observing AI agents and tools. It serves as a central control plane and registry for agent assets in Anypoint Exchange. The registry contains AI assets, including agents, Large Language Models (LLMs), and Model Context Protocol (MCP) servers. Find these assets on the **Agents & Tools** tab. For more information, see [Learn About Agent Fabric](https://docs.mulesoft.com/general/learning-map-agent-fabric). Verified agents show a verified badge if they are registered and verified via GoDaddy Agent Naming Service (ANS) in API Manager, which also appears on the agent details page and in the **Instances** list. ![Exchange catalog showing assets in Agents & Tools](/mulesoft/current/en-us/exchange/_images/ex-agents-and-tools.png) You create agent network projects in Anypoint Code Builder to define, validate, and publish brokers, LLMs, and MCP servers to allow agents to use the assets in your Agent Fabric. Anypoint Code Builder publishes agent network projects and their associated assets to Exchange. Exchange tags them as **brokers** for identification. See [Building Agent Networks for Agent Fabric](https://docs.mulesoft.com/agent-network/latest/af-agent-networks) in the Anypoint Code Builder documentation. AI assets are added to the registry via these methods: - [Registering them manually](https://docs.mulesoft.com/exchange/to-create-an-asset). Manually create and publish assets directly in Exchange. For MCPs, enter an MCP server URL or load a schema from a file. - [Discovering and cataloging external agents using scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents). Discover and catalog agents from external providers into Exchange using scanners. - [Importing Agentforce agents from Settings](https://docs.mulesoft.com/exchange/importing-agentforce-agents) Import Agentforce agents from Salesforce into Exchange from Settings. - [Creating agent network projects in Anypoint Code Builder and publishing them to Exchange](https://docs.mulesoft.com/agent-network/latest/af-agent-networks). Use Anypoint Code Builder to create agent network projects that define, validate, and publish brokers, agents, large language models (LLMs), and MCP servers. Anypoint Code Builder publishes agent network projects and their associated assets to the agent registry in Exchange with a **Broker** label. ## Anypoint Exchange Spotlight Video Watch the Anypoint Exchange Product Spotlight video to see a quick overview of Exchange. ![](https://play.vidyard.com/AMb7MEyBVUxwpJWvaSCEWH.jpg) ## View Assets by Business Group A system administrator groups individuals within an organization into business groups. Each group has its own Exchange assets. To view the business groups, log in to Anypoint Platform and click a group name from the taskbar: ![List of business groups](/mulesoft/current/en-us/exchange/_images/ex2-biz-groups.png) An Exchange administrator sets the groups that this menu displays for each user. If you can’t find an asset in the current business group scopes, search in other scopes. In the navigation menu, click **All assets** (assets provided by MuleSoft and your own root organization), **Provided by MuleSoft**, or a business group scope. ## Get Started You can get started either by searching for an existing asset or creating a new one. 1. From [Exchange](https://anypoint.mulesoft.com/exchange/), either search by asset type or enter the name of a known asset in the **Search assets** field. 2. Select an asset from the search results view. 3. Review the description of the asset. To create assets, log in to Exchange, then see [Workflow: Publish Assets](https://docs.mulesoft.com/exchange/workflow-sharing-assets) for more information. ## Test APIs You can test APIs using the mocking service. 1. Click the **All Types** filter, select the REST APIs option, and click **Apply**. 2. Click the asset and notice how the API functions appear in the left navigation bar. 3. Click a function and more information appears. At the right side of the screen, you can test the API by entering sample values to send to the API and get responses from the API. ## Language Support Using multiple languages with Unicode is supported fully throughout Exchange and in all metadata fields, including asset names, descriptions, markdown pages, categories, tags, and reviews. ## Anypoint Exchange on Control Planes All features of Anypoint Exchange are supported Canada, Japan, India, Australia, and United Kingdom control planes with these exceptions: - [Usage and engagement metrics](https://docs.mulesoft.com/exchange/usage-and-engagement-metrics) aren’t supported. - Amazon CloudFront isn’t configured on control planes. To download files from Canada, Japan, India, Australia, or United Kingdom control planes, use these URLs: - Canada S3 Bucket URL: https://exchange-asset-manager-d1937357035a847d2ec3.s3.ca-central-1.amazonaws.com - Japan S3 Bucket URL: https://exchange-asset-manager-bf62561aafed7e20740f.s3.ap-northeast-1.amazonaws.com - India S3 Bucket URL: https://exchange-asset-manager-a2e86fbaee6d85765a10.s3.ap-south-1.amazonaws.com - Australia S3 Bucket URL: https://exchange-asset-manager-1fe7d550c2397312a1b5.s3.ap-southeast-2.amazonaws.com - United Kingdom S3 Bucket URL: https://exchange-asset-manager-2d14a46096b613e686dd.s3.eu-west-2.amazonaws.com/ ## See Also - [Discovering and Importing External Agents With Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Fabric](https://docs.mulesoft.com/general/learning-map-agent-fabric) - [Agent Network Projects](https://docs.mulesoft.com/agent-network/latest/af-agent-networks) - [Anypoint Exchange Release Notes](https://docs.mulesoft.com/release-notes/exchange/anypoint-exchange-release-notes) - [MuleSoft Trailblazer Community](https://trailhead.salesforce.com/trailblazer-community/neighborhoods/mulesoft) - [Salesforce Help](https://help.salesforce.com) --- product: Exchange --- # Anypoint Exchange Release Notes > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Exchange provides a user interface consisting of asset cards that you can filter and click to provide information on connectors, APIs, examples, templates, and custom assets. The following release notes are provided for Exchange: - [Exchange Release Notes](https://docs.mulesoft.com/release-notes/exchange/anypoint-exchange-release-notes) - [Exchange 2 REST Connect Release Notes](https://docs.mulesoft.com/release-notes/connector/rest-connect-release-notes) ## See Also - [Anypoint Exchange Overview](https://docs.mulesoft.com/exchange/) - [Known Issues](https://help.salesforce.com/s/issues) --- product: Exchange --- # API Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt API scanners connect external API gateways to Anypoint Platform, enabling you to discover, import, and sync APIs from external platforms directly into Anypoint Exchange. Once synced, you can enforce governance policies across all connected gateways. These are the supported API gateway scanners: - [Amazon API Gateway](https://docs.mulesoft.com/exchange/adding-amazon-gateway-scanner) - [Azure API Management](https://docs.mulesoft.com/exchange/adding-azure-api-management-scanner) - [Google Apigee API Gateway](https://docs.mulesoft.com/exchange/adding-apigee-scanner) - [Kong API Gateway](https://docs.mulesoft.com/exchange/adding-kong-gateway-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Asset Details > For the full documentation index, see: https://docs.mulesoft.com/llms.txt The asset details page provides comprehensive information about an asset. You can view version-agnostic information, share the asset with others, publish it on the public portal, and download a copy of the asset. You can also view code, manage versions and lifecycle states, add categories and tags, generate and edit asset documentation, and test API endpoints. See [Workflow: Publish Assets](https://docs.mulesoft.com/exchange/workflow-sharing-assets) for more information about performing these functions. Select an asset in Exchange to view the asset details page: ![The asset details of the Exchange XAPI](/mulesoft/current/en-us/exchange/_images/exchange-asset-detail-view.png) The navigation bar lists: - Additional pages - Saved search terms - Application names - Instances - The HTTP functions in the REST specification (for a REST API) - Conformance Status - Agents show card details - Brokers show access list and card details - MCP servers show details and tools - Terms and conditions and APIs using this policy (for a policy) - Settings The asset detail page provides this information: - Asset name - Description - Asset type - Broker show as asset subtype - Agents show protocol - Organization - Contact name - Contact email - Asset creation date - Last updated date - Version - Categories and tags of the asset - Lifecycle state - Managed and unmanaged instances and includes whether agent instances are verified via GoDaddy Agent Naming Service (ANS) - Share by inviting users to have access - Conformance state - APIs show download specifications and view code - Add a new version These actions trigger an update to the last updated date on the asset details page: - Create a new asset - Create a new asset version - Update any version agnostic property: - Name - Description - Icon - Contact name - Contact email For REST APIs, use the API console to create example calls and mock data to test the API. For more information, see [Simulating Data in REST APIs](https://docs.mulesoft.com/exchange/ex2-to-simulate-api-data). For GraphQL APIs, use the GraphQL console to view GraphQL schemas and write and run queries. For more information, see [Viewing GraphQL API Schemas and Run Queries](https://docs.mulesoft.com/exchange/view-graphql-api-schemas-and-run-queries). From the asset details page, you can collapse and expand metadata such as version, last published, and categories and tags. See version information by clicking **View versions**. Administrators can use **Manage versions** to add a new version of the asset, view version details, and delete a version. See [Manage Versions](https://docs.mulesoft.com/exchange/manage-versions) for more information. The documentation page displays the asset documentation. An administrator or asset owner can edit documentation by clicking **Edit documentation** from the asset details page. You can generate documentation for REST APIs without documentation by clicking **Generate documentation**. For more information, see [Generating API Documentation with Generative AI](https://docs.mulesoft.com/exchange/generating-documentation-with-ai). ![Asset details page showing the Edit documentation and the Generate documentation buttons](/mulesoft/current/en-us/exchange/_images/ex-generate-doc.png) ## View REST API Elements in an Asset View RAML, OAS, or AsyncAPI API specification information, including resources and the methods in each resource, in the left navigation bar. 1. Click a method button: ![An API spec showing method resources](/mulesoft/current/en-us/exchange/_images/ex2-rest-ftns.png) 2. Experiment with the API in the right side of a method view. This is similar to using a program such as Postman to specify custom HTTP headers and test each API’s method using the API’s endpoint. 3. To connect the API to one of your applications and use the API to send and receive data, click **Request access**. ## Search API Specification and Pages The assets details page enables you to find specific information within the pages and API specification of an asset using the CTRL+F or the command+F keyboard shortcut. In Exchange, this enhanced shortcut overrides the native browser shortcut, which only searches for words and phrases on the current page. To quickly find the information you need, use this enhanced shortcut to search the content of every page and the API specification of an asset. To search pages and the API specification using the enhanced find shortcut: 1. In the asset details page, press CTRL+F or Command+F. 2. In the **Search content** box, enter a search term or phrase. 3. Click a search result from the list. 4. Use the arrows to move through all the occurrences of the search term within the search results. 5. Click the **X** to close the Search content box. The enhanced keyboard shortcut looks for terms or phrases in: - Pages - Home - Additional pages - Specification - Summary - Endpoints - Documentation - Types - Security When you enter a search term or phrase in the search box, the search results box displays the sections within Pages and Specification that contain the search terms entered. Click the search result to open the page with the search term or phrase highlighted. The search result shows the number of search-term matches in each page. Use the arrows to move up or down in the list of search results and to the next page. For example, enter the term `ruleset` in the **Search content** box. From Pages, there are three search results for ruleset in the Home page. Click **Home** to open the page. Use the arrows to find all of the highlighted instances of ruleset in the Home page. ![Search results for the term ruleset highlighted in the documentation](/mulesoft/current/en-us/exchange/_images/ex-search-spec-and-pages.png) ## View Instances View the instances of APIs and other assets in the **Instances** list on the asset details page. Instances are managed or unmanaged (non-managed). Managed instances are managed in API Manager. For example, when you register an API in API Manager, it creates a managed instance. This instance is linked to a specific runtime (like Mule Gateway or Omni Gateway). Its environments (sandbox and production) appear automatically in the **Instances** list. The list includes the instance name, version, environment, URL, visibility, and whether an agent instance is verified via GoDaddy Agent Naming Service (ANS). Unmanaged (external) instances run outside Anypoint Platform. These instances are primarily for discovery—helping your team find all APIs in one catalog even if they aren’t governed in API Manager. Instances for brokers are created in YAML in Anypoint Code Builder. After the agent network project is published to Exchange, the instances appear in the **Instances** list. To view instances: 1. Select an asset in Exchange. 2. In the navigation bar, select **Instances**. 3. The **Instances** list displays the instances of the asset. ## View Conformance Status You can view governance conformance status in Exchange for versions of API specifications. The status is one of the following: - **Conformant**: The API specification is conformant to governance rulesets against which it has been validated. - **Not Conformant**: The API specification is not conformant to governance rulesets against which it has been validated. - **Not Validated**: The API specification is not validated against governance rulesets. Conformance status can be viewed in Exchange as follows: - A conformance badge is displayed for a selected version of an API. - In the **Manage Versions** page, a **Conformance** column shows conformance status for each version of the API. - A **Conformance Status** page appears for all REST APIs and AsyncAPIs. If a selected version of an API has been validated against governance rulesets, the conformance status page gives conformance information and gives options to fix nonconformant versions. The Conformance Status page also shows the filter criteria that resulted in the API being validated against the listed rulesets. To view conformance status: 1. Select an API asset that is of a type supported by Anypoint API Governance. 2. Review the conformance badge. 3. To view conformance by version, click **Manage Versions**. Review the **Conformance** column, which shows the governance conformance status for each version. 4. To view conformance details, select **Conformance Status** in the navigation bar. From the conformance status page, you can: - Select the version of the API that you want to view. - For validated APIs, view the lists of centralized governance rulesets and additional rulesets against which the APIs have been validated. - If there are more rulesets than are shown on the initial page, click the **Show All** link to show the full list. - Click the external link icon for a ruleset to view that ruleset’s page in Exchange. - For nonconformant APIs, click one of the following: - **Fix in Design Center** After your API specification opens in Design Center, add the listed rulesets as dependencies and view the conformance messages in the **Project Errors** section to fix and republish your API specification. If the asset is published directly on Exchange without an existing version in the Design Center, a read-only version of the project opens. To fix conformance issues, [download the asset from Exchange](https://docs.mulesoft.com/exchange/to-download-an-asset), then [import it to Design Center](https://docs.mulesoft.com/design-center/design-create-publish-api-specs-from-file), and [publish it to Exchange](https://docs.mulesoft.com/design-center/design-publish) with the same ID and a new minor version. - **See instructions for Anypoint CLI** Follow the instructions on the page to copy, update, and run the Anypoint CLI commands to add the listed rulesets as dependencies and fix and republish your API specification. ## View Governed APIs for a Ruleset In a ruleset’s **Governed APIs** page, you can view the list of centrally-governed APIs to which the ruleset applies. Developers can use the **Governed APIs** list as follows to help improve the quality of the rulesets and APIs that they develop: - When their APIs fail a ruleset, they can see which other APIs successfully conform to the ruleset so that they can fix their APIs. - When they search for available rulesets to use for their API, they can see which APIs are conformant to a specific ruleset to evaluate how helpful the ruleset is. API consumers can use the **Governed APIs** list when they need to create an API service or application that is conformant to a certain set of standards or rules. They can: - Ensure there is a ruleset in Exchange that has the rules they need. - See which APIs pass the rules for a ruleset so that they can ensure their application is consuming only the conformant APIs. Depending on the access you have to the APIs in Exchange, you might see only the APIs that are conformant to the ruleset. This ensures that vulnerabilities are not exposed to consumers who do not have proper access to the APIs. Organization administrators and contributors can see the conformant and non-conformant APIs for their organization. To view the governed API list for a ruleset: 1. Select a ruleset asset that is used in an API Governance profile. 2. Select **Governed APIs** in the navigation bar to see whether each listed API version passes all the rules in the ruleset. 3. Select from the filter menus to refine the list of APIs. Default settings are: - All APIs - Your root organization - Any Ruleset Status 4. To view an API’s **Conformance Status** details, click the open external link icon (![open external link icon](/mulesoft/current/en-us/exchange/_images/open-external-link-icon.png)). ## See Also - [Permissions Available in Anypoint Platform for Exchange](https://docs.mulesoft.com/access-management/permissions-by-product#exchange) - [Configuring Instances](https://docs.mulesoft.com/exchange/to-configure-api-settings) - [Generating API Documentation with Generative AI](https://docs.mulesoft.com/exchange/generating-documentation-with-ai) --- product: Exchange --- # Asset Types > For the full documentation index, see: https://docs.mulesoft.com/llms.txt The following asset types are supported in Exchange: - Agent Networks An agent network is a coordinated group of agents, brokers, LLMs, and MCP servers that acts as a central hub for defining, validating, and executing agentic processes across your enterprise. This asset is read-only. To make changes, edit the agent network project YAML file in Anypoint Code Builder. Agent networks and their agents, brokers, LLMs, and MCP servers are published as individual assets in Exchange. You can view them in the **Agents & Tools** section of Exchange. - Agents Programs that perform tasks autonomously or semiautonomously. AI agents can use the Agent2Agent (A2A) protocol to communicate and collaborate with each other to perform tasks. When agent network projects created in Anypoint Code Builder are published to Exchange, the individual agentic assets defined in the agent network project YAML file are registered as either agents or MCP servers. Brokers, which are published with the agent asset type, are automatically tagged as brokers for easy identification. - API Groups A set of APIs bundled into a single asset. - API Spec Fragments A part of an API specification that is reused to build a complete API specification. - AsyncAPI Specifications An AsyncAPI specification file that specifies an event-driven API. Exchange supports AsyncAPI 2.0 and 2.6. AsyncAPI 2.6 supports specs with Avro schemas. The file type for AsyncAPIs with Avro schemas is AVSC. - Connectors Packaged connectivity to an Anypoint Platform endpoint using third-party APIs and standard integration protocols. Use connectors within your application’s flows to send and receive data using a protocol or specific API. Anypoint Studio comes with many bundled connectors, and Exchange has many more. - Custom A description and an optional file to explain aspects of your system, to provide instructional videos, or to describe product or organizational documentation. - DataWeave Libraries Packaged modules and mappings to share and reuse across applications. - Examples Applications that are ready to run in Anypoint Studio and demonstrate a use case or solution. - GraphQL API A schema definition that contains the object types and definitions that are used to interact with the API through the GraphQL specification. GraphQL enables you to query an API that supports this language in a much more flexible way than REST. - gRPC API A Protocol Buffers (.proto) specification that defines a gRPC API—its services and message contracts. gRPC is RPC-based and supports unary and streaming calls. Interface definitions use the proto3 syntax, with message payloads expressed as Protobuf message schemas, and the .proto file type. - HTTP APIs A placeholder for an endpoint for use by private Exchange users who want to manage the endpoint with API Manager. Instead of requesting access to multiple APIs to satisfy a use case, a developer can access the group in one step. - LLMs (Large Language Models) AI assets for processing, understanding, and generating human readable language. Only OpenAI is supported for the broker. The LLM asset type defines only the provider and contract information. The model and connectivity details are defined separately in the YAML configuration file created in Anypoint Code Builder. - MCP Servers Applications or APIs exposed through the Model Context Protocol (MCP). MCP is an open protocol designed to standardize how applications provide context and capabilities to LLMs and AI agents. - Mule Applications Applications that perform system integrations. These applications are published and consumed using APIs and don’t appear in the Exchange UI. Use the Exchange Maven Facade API or REST API to publish and manage Mule application assets. For more information, see: - [Exchange Platform APIs](https://docs.mulesoft.com/exchange/about-platform-apis) - [Publish Assets Using the Exchange API](https://docs.mulesoft.com/exchange/exchange-api) - [Publishing Assets Using Maven](https://docs.mulesoft.com/exchange/to-publish-assets-maven) - Policies Configuration modules to extend the functionality of an API and enforce capabilities such as security. - REST APIs RAML or OAS files that specify APIs referenced by an HTTP Request connector to expose metadata to Anypoint Studio. Exchange supports OAS 2.0, 3.0, and 3.1. - RPA Templates - RPA Activity Templates Activity templates are reusable code within RPA to standardize the most used activity steps and make them available to other developers in the organization. File type is `.calw`. - RPA Process templates Templates for RPA processes that can be imported into RPA Builder as projects and are customizable before deploying to RPA bots. Process templates are built on common patterns for RPA to build automation faster. File type is `.crpa`. - Ruleset YAML files that describe a ruleset. - SOAP APIs A WSDL file that specifies an API. - Templates Packaged integration patterns built on best practices to address common use cases. Complete the template’s use case or solution by supplying your own information, customizing, or extending the templates as needed. ## See Also - [Asset Details](https://docs.mulesoft.com/exchange/asset-details) --- product: Exchange --- # Asset Usage and Engagement Metrics Dashboard > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Exchange administrators can use the dashboard to view usage and engagement metrics for API specification fragments and REST APIs. The dashboard provides a holistic view of asset usage and consumption within the organization. The usage metrics measure how many times an asset is downloaded from Exchange, imported from API Designer and Anypoint Studio, and the number of dependents and contracts. The asset engagement score is a composite metric that administrators and asset owners can use to measure the usage of the assets in Exchange. The results of this engagement are the different consumption actions that end-users make across different points of need within Exchange. The engagement score reflects the usage of the asset in the context of the usage of API specification fragments and REST APIs in the customer’s root organization and business groups. The dashboard displays the metrics for the top 50 assets, ranked by the most consumption events, for a period of the last 7 days, 30 days, or 90 days. You can filter the top assets by API specification fragments and REST API types and by one or more organizations. The metric data can be exported into a CSV file. The following graphic shows the Usage and engagement metrics dashboard: ![The dashboard of usage and engagement metrics for the ten most recent REST APIs](/mulesoft/current/en-us/exchange/_images/ex-metrics-dashboard.png) The following data is collected and analyzed: - Rank Assets ranked by the highest number of consumption events for RAML fragments and REST APIs. - Name The name of the asset. - Organization The name of the business organization that the asset belongs to. - Created on The date that the asset was created. - Last updated The date that the asset was last updated. - Engagement score The engagement score reflects the usage of the asset in the context of usage of API specification fragments and REST APIs in the customer’s root organization and business groups. - Downloads The number of times the asset was downloaded. You can sort by ascending or descending order. - Imports from API Designer The number of times the asset was imported from API Designer. You can sort by ascending or descending order. - Imports from Studio The number of times the asset was imported in to Studio. - All-time Stats - Dependents The number of dependent assets from the time the version was created. - Contracts The number of approved contracts from the time the version was created. ## View Asset Usage and Engagement Metrics Use the dashboard to view metrics for your assets and the filter options from the dashboard to refine API specification fragments or REST API assets. You can select date ranges and filter by asset type and organization. 1. In the navigation bar in Exchange, click **Asset engagement**. ![Asset engagement option in navigation bar](/mulesoft/current/en-us/exchange/_images/ex-nav-asset-engagement.png) 2. Select a date range from 7 days, 30 days, or 90 days. The default date range is the last 7 days. 3. If you want to filter by asset type, select an option from **Asset type**. 4. If you want to filter by an organization, click **My Organizations**. ![Filter options for My Organizations](/mulesoft/current/en-us/exchange/_images/ex-my-organizations.png) 5. Enter the name of an organization in the **Search** box to search for an organization. 6. Select one or more organizations and click **Apply** to filter assets by organization. 7. If you want to view metrics for a specific asset in the list of the dashboard, click the link next to the asset name. The asset details page displays the usage and engagement metric information for the asset. 8. If you want to view the dependents of an asset, click the **Dependents** row, which contains one or more dependents. The dialog displays the list of the version’s dependents for that asset. 9. If you want to export the usage data, click **Export to CSV**. ## See Also - [Metrics for a Specific Asset and Version](https://docs.mulesoft.com/exchange/metrics-for-a-specific-asset-version) --- product: Exchange --- # Asset Versions > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Each asset in Exchange is versioned. You can manage which versions are visible by deprecating a version to hide it, and delete versions if needed. All versions of an asset always have the same type. APIs also have a consumer-facing API version that appears in an asset’s detail screen. API providers define this version. Exchange asset versions follow the [Semantic Versioning](https://semver.org/) model of major, minor, and patch releases. For example, if an asset is version 2.4.6, then its major version is 2.x.x, its minor version is 2.4.x, and its patch version is 2.4.6. To select a minor version of an asset, use the menu next to the asset name at the top of the asset portal. To select a patch version of an asset, use the version list at the right. RAML versions are automatically generated for all OAS assets published since [January 12, 2019](https://docs.mulesoft.com/release-notes/exchange/anypoint-exchange-release-notes#january-2019). OAS 2.0 versions are automatically generated for all RAML assets published since that date. ## Choose a Version Number When Publishing When you publish a new asset version through the API, you can let Exchange determine the next available version number instead of specifying it manually. The `nextAvailableVersion` endpoint in Exchange API v2 returns the next version number that is free to publish. Use the `versionOrder` parameter to control which part of the semantic version increments:
ValueResult

MAJOR

Returns the next available major version, such as 3.0.0.

MINOR

Returns the next available minor version, such as 2.5.0.

PATCH

Returns the next available patch version, such as 2.4.7.

All three values are valid for any asset type. REST APIs and SOAP APIs commonly publish major, minor, and patch versions. HTTP APIs and API Groups usually publish only major versions, but the endpoint returns a minor or patch version when you request one explicitly. ### Reserved Version Numbers for Deleted Versions When you soft-delete an asset version, its combination of `groupId`, `assetId`, and `version` (GAV) remains permanently reserved. This behavior applies to every asset type, including API Groups. The `nextAvailableVersion` endpoint skips reserved version numbers and never reuses them, even though a soft-deleted version no longer appears in the catalog. To make a specific version number available again, enable GAV reuse and then hard-delete that version. Enabling GAV reuse frees only the version numbers that you hard-delete; it does not free an asset’s entire version history. To free every version number for an asset, delete every version of the asset. > [!NOTE] If you republish a version number that belongs to a soft-deleted version, Exchange returns > a `409 Conflict` response with the message > `There is a deleted asset with the same version number.` > > To resolve the conflict, do one of the following: > > - Use the `nextAvailableVersion` endpoint to publish at the next free version number. > > - Manually choose a higher version number that is not reserved. > > - Enable GAV reuse, hard-delete the conflicting version, and then republish. ## Asset Limits An asset’s version format must use semantic versioning. Asset fields have these length limits:
FieldMaximum LengthMinimum Length

Name

256

1

Description

256

0

versionGroup

256

1

Combined groupId, assetId, and version

215

NA

Exchange prevents resource exhaustion attacks by limiting the number of asset versions that can be published. Each version of an asset counts individually toward this limit. For example, an asset published at versions 1.0.0 and 1.0.1 counts as two asset versions. Incomplete asset versions also count toward the limit. The limit is 500 asset versions for root organizations with trial accounts, and 100,000 (one hundred thousand) asset versions for root organizations with all other account types. The limit of dependencies for an asset is 100. For example, in Anypoint API Designer a RAML is limited to 100 RAML Fragment dependencies, and in Anypoint API Manager an API Group is limited to 100 REST API dependencies. This count does not include deleted asset versions or assets generated by Exchange such as [REST Connect Connector Generator](https://docs.mulesoft.com/exchange/to-deploy-using-rest-connect). When a root organization reaches 80% of its asset version limit, Exchange shows a warning. When a root organization reaches its asset version limit, Exchange shows an error. Also, using the **Publish new asset** button on the home page or the **Add new version** button on the asset detail page shows an error explaining that the limit is reached and no more asset versions can be added. Check the limit of your root organization with a curl command like this: curl -X GET \\ https://anypoint.mulesoft.com/exchange/api/v1/organizations/ROOT\_ORGANIZATION\_ID/limits \\ -H 'Authorization: bearer ANYPOINT\_TOKEN' Replace `ROOT_ORGANIZATION_ID` with your root organization ID, and replace `ANYPOINT_TOKEN` with the authorization token that has permissions for the root organization. Get lists of assets with a curl command like this: curl -X POST \\ https://anypoint.mulesoft.com/graph/api/v1/graphql \\ -H 'content-type: application/json' \\ -H 'Authorization: bearer ANYPOINT\_TOKEN' \\ -d '{"query":"{assets(query: { rootOrganizationId:\\"ROOT\_ORGANIZATION\_ID\\", limit: 20, offset: 10 }) {groupId assetId version}}"}' Replace `ROOT_ORGANIZATION_ID` with your root organization ID, and replace `ANYPOINT_TOKEN` with the authorization token that has permissions for the root organization. Vary the `limit` and `offset` values as needed. See [Search Using the Graph API](https://docs.mulesoft.com/exchange/to-search-with-graph-api) for more information about searching for assets. --- product: Exchange --- # Autocataloging APIs Using API Catalog CLI > For the full documentation index, see: https://docs.mulesoft.com/llms.txt API Catalog CLI enables you to discover and catalog your API definitions, documentation files, and associated metadata as part of an automated process. You can embed the publish asset command in your automation tools, such as a CI/CD pipeline or custom scripts, to automatically trigger the publishing of your API assets to Exchange. API Catalog CLI is agnostic of CI/CD tools and runtime environments. With API Catalog CLI you can: - Identify all APIs in a project directory structure and create a [descriptor file](#apicat-descriptor-file) to use to publish the APIs to Exchange. - Identify all new and changed APIs and update the descriptor file on an ongoing basis. - [Conditionally trigger](#apicat-trigger-cond) the publish based on criteria such as branches and tags. - [Conditionally set the asset version strategy](#apicat-version-strategy-cond) based on criteria such as branches and tags. - Publish APIs described in the descriptor file by running commands either at a command prompt or as part of your CI/CD pipelines or custom scripts. ## Supported APIs The API Catalog CLI supports: 1. Event-driven APIs (AsyncAPI 2.0 JSON and AsyncAPI 2.0 YAML format) 2. REST APIs (OAS 2.0 JSON, OAS 2.0 YAML, OAS 3.0 JSON, OAS 3.0 YAML, OAS 3.1 JSON, OAS 3.1 YAML, RAML 0.8, and RAML 1.0 format) ## API Catalog CLI Concepts Review the following concepts before using API Catalog CLI. ### Descriptor File A descriptor file has the metadata Exchange needs to catalog a set of APIs within a directory and its subdirectory structure. This file’s schema supports metadata specific to API Catalog CLI and can include in-line or referenced metadata from `exchange.json` files. ### Trigger Conditions Trigger conditions are set in descriptor files to enable the automated publication process to determine which APIs to publish during a run of the API Catalog CLI `publish-assets` command using the `--trigger-criteria` flag. ### Version Strategy Conditions Version strategy conditions are set in descriptor files to enable the automated publication process to determine the version strategy for APIs during a run of the API Catalog CLI `publish-assets` command using the `--version-strategy-criteria` flag. ## See Also - [Getting Started with API Catalog CLI](https://docs.mulesoft.com/exchange/apicat-get-started) - [Creating or Updating Descriptor Files Using the CLI](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-cli) - [Publish Assets](https://docs.mulesoft.com/exchange/about-sharing-assets) --- product: Exchange --- # Changing the Version of an API Asset > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Exchange lets you create API assets for: - REST API (RAML or OAS) - HTTP API - SOAP API This document describes how to change the version for any of these assets. Each API asset contains a **Version** field for the asset version, and an **API version** field for the version of the API specification. For RAML, OAS, and SOAP assets, the API specification version is coded inside the specification itself. Exchange asset versions follow the [Semantic Versioning](https://semver.org/) model of major, minor, and patch releases, but `build metadata` is not supported. For example, if an asset is version 2.4.6, then its major version is 2.x.x, its minor version is 2.4.x, and its patch version is 2.4.6. An HTTP API asset is an endpoint, to which you can provide only policies or proxies. HTTP APIs have only major version increases and do not have minor or patch version changes. When creating a new version of an asset, the name, icon, and description of the previous version are used. To change these properties use the instructions in [Describe an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset). Any changes to the name, icon, or description apply to all versions of the asset. > [!NOTE] New asset versions count toward your organization’s > [asset limit](https://docs.mulesoft.com/exchange/to-create-an-asset#asset-limits). ## Deploy a New API Asset You can deploy an API asset directly into Exchange using the **Publish new asset** button. In the **Publish a new asset** window, the Advanced section enables you to specify the version of the asset in the **Version** field, and the version of the API specification in the **API version** field. Only change the API version when an updated API specification has changes that are not backward compatible from the new version to the old version. ## Change RAML or OAS Version For RAML and OAS API specifications within Exchange, change the version number from within Exchange using the **Add version** button. 1. From the asset details pane, click **Add version**. 2. (Required) Select a **Method** for the API specification. 3. (Required) From **File upload** click **Choose file**. For OAS, choose an OAS file with the .yaml or .json file types. For RAML, choose a RAML file with the .raml file type. Zip files are also accepted with the file to upload residing in the zip file’s root directory. 4. Specify the **Main file** if the uploaded file is a zip. Otherwise, Exchange uses the same file name as the file you upload. 5. (Required) In **Version** , enter a new version for the asset. 6. (Required) In **the \*API version**, enter the version of the API specification. The Version and API version values must agree. You can only choose minor version updates for a given API version. To set a major Version number, also increase the API version. If you choose minor or patch version updates, the API versions should not changed. 7. (Optional) Select a **Lifecycle state**. Default is **Stable**. 8. Click **Publish** You can also change the version using the **Manage versions** button. See [Manage Versions](https://docs.mulesoft.com/exchange/manage-versions) for more information. Change the version number for RAMLs as described in the next sections. ### Change a RAML Version from Its Specification Change the `version:` element in your RAML specification. You can use a text editor or API Designer in the Design Center feature of Anypoint Platform. When you update the version element in the RAML specification and publish to Exchange, the publish menu automatically picks up the change from the `version:` element. ### Change a RAML Version When you Publish to Exchange 1. From Design Center, open your API. No changes are necessary. 2. Click **Publish to Exchange**. 3. Change the **API Version** value. You can also change the Asset Version (the version of the Exchange asset). When a REST API based on a RAML file is created from Design Center and published to Exchange, the API version is retrieved from the version property in the RAML file. When publishing a new API version of an existing REST API, Exchange enforces an update of the major section of an asset’s version. ## Multiple API and Asset Versions Each Exchange asset can have multiple asset versions. The REST, SOAP, and HTTP API also contain an API version. For each API version, multiple asset versions can be published. These asset versions need to have the same major version. For example, after publishing multiple versions of the same API, the versions could appear as follows:
API VersionAsset Version

v1

1.0.0

v1

1.0.1

v1

1.1.1

v2

2.0.0

v2

2.0.2

v3

3.1.0

However, these example values are not allowed in Exchange:
API VersionAsset Version

v1

1.0.0

v2

1.0.1

## Best Practices for API Versioning An API should be designed for long term use, but because change is inevitable, the API can never be completely stable. It is important is to manage the changes through a comprehensive versioning strategy. This includes a multiple month deprecation schedule and documentation that is up to date and describes the change in sufficient level of detail. Not all changes require a new version. APIs designed for backward compatibility normally do not require major changes and should use minor or patch changes. It is not always possible to design APIs in that way. The table below outlines when to introduce a new version and when a new version is not required. Typically when one clicks **Add new API operation** a minor version increase occurs.
Type of ChangeChanges Requiring a New Major VersionChanges Not Requiring a New Major Version

Service contract

  • Remove API endpoint

  • Change in the effect of an API operation

  • Change in the response type of an API operation

  • Add new required operation argument

Add new API operation

Data contract

  • Remove an existing element (or attribute)

  • Add new required element (or required attribute)

  • Change an existing element (or attribute)

  • Add an optional element (or attribute)

  • Add a derived element type

Representation format

Remove existing representation

Add new representation

Accessibility

Restrict permissions

Relax permissions

### When to Introduce a New Major Version You should introduce a new major version for: - Quality of service (QoS) When a change affects the quality of service, such as response time and availability, the change might not be backward compatible with the API’s applications, so you might need to change the API’s major version and API version. - Output message domain value changes Applications that use the API depend on the domain of values of fields in response messages. For instance, the API might return only certain products or specific payment methods. If the API starts returning values outside of a domain, it can adversely affect existing consumers. In this case, consider introducing a new major version and a new API version. ### When to Change Version Numbers - Major versions When introducing a change in the structure of the API that requires the user of the API to adapt the interface on the consumer side, such as a new required operation argument - Minor versions When introducing a backward compatible change to the API that does not require an API user to change, such as a new optional element - Patch versions When introducing a backward compatible bug fix or documentation update See [Semantic Versioning](https://semver.org/) for more information. ### API Version in Application URL Include the API version in the application URL so that consumers can choose which version they want to call. - For on-premises deployment, the version is in the base URI and appears in the URL: `http://www.example.org/v1/api/customer/1234` ### Naming Conventions Use these rules to define an API version: - Specify the version with a v prefix. - Use a simple ordinal number, for example, v1, v2, and so on. - Avoid using dot notation, for example, v1.2. - Only specify the major version as part of the URL. ## Document an API Version Exchange provides documentation pages with information about an asset for API consumers. You can create different documentation pages for each minor asset version. Select a minor asset version to edit with the menu next to the version. --- product: Exchange --- # Configuring Command Autocompletion > For the full documentation index, see: https://docs.mulesoft.com/llms.txt The `api-catalog-cli autocomplete` command enables you to configure completion for API Catalog CLI commands. To configure command autocompletion: - If you are using a Bash shell: 1. Run `api-catalog autocomplete bash`. This creates a cache and displays configuration and test instructions. 2. Follow the instructions that are displayed by the command: 1. Add the autocomplete env var to your bash profile and source it $ printf "eval $(api-catalog autocomplete:script bash)" >> ~/.bashrc; source ~/.bashrc NOTE: If your terminal starts as a login shell you may need to print the init script into ~/.bash\_profile or ~/.profile. 2. Test it out, e.g.: $ api-catalog # Command completion $ api-catalog \[command\] -- # Flag completion - If you are using a Z shell: 1. Run `api-catalog autocomplete zsh`. This creates a cache and displays configuration and test instructions. 2. Follow the instructions that are displayed by the command: 1. Add the autocomplete env var to your zsh profile and source it $ printf "eval $(api-catalog autocomplete:script zsh)" >> ~/.zshrc; source ~/.zshrc NOTE: After sourcing, you can run \`$ compaudit -D\` to ensure that no permissions conflicts are present 2. Test it out, e.g.: $ api-catalog # Command completion $ api-catalog \[command\] -- # Flag completion ## api-catalog autocomplete $ api-catalog autocomplete \[flags\] This command accepts the following flags:
FlagDescription

blank

Displays instructions for configuring autocompletion

bash

Installs autocompletion using Bash shell settings

zsh

Installs autocompletion using Z shell settings

-r, --refresh cache

Removes the current autocompletion configuration. Use this before running the command with a different shell type.

**Examples** $ api-catalog autocomplete $ api-catalog autocomplete bash $ api-catalog autocomplete zsh $ api-catalog autocomplete --refresh-cache > [!WARNING] The API Catalog CLI autocomplete plugin is not currently supported in Windows. --- product: Exchange --- # Configuring Instances > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Use Anypoint Exchange to configure whether instances are public or private in a private Exchange instance or in an Exchange public portal. For example, configure public or private visibility for proxies or policies associated with your asset and set in API Manager. After you register an API or other assets from Exchange in API Manager, the instances for the asset appear in Exchange in the **Instances** list on the asset details page. You can also verify agent instances via GoDaddy Agent Naming Service (ANS) during the registration process in API Manager. Implement GoDaddy’s trust layer to verify and secure trusted agents across Anypoint Platform. Verified agents appear in the **Agents & Tools** list and on asset details pages with a verified badge. Managed instances in Exchange show if an agent is verified in the **Instances** list on the asset details page. Instances for brokers are created in the YAML in Anypoint Code Builder. After the agent network project is published to Exchange, the instances appear in the **Instances** list. Exchange also declares instances for assets managed by other asset management programs besides Anypoint Platform. Visibility for each instance is either private or public. Users can see a private instance if the asset is shared with them or if they have an Anypoint Platform permission that grants access. All users accessing an Exchange public portal can see all public instances. All instances in an Exchange public portal are read-only. In a private Exchange instance, asset administrators have access to change the visibility of instances, and to add, edit, and delete instances. REST APIs provide a mocking service with data to test API features. The mocking service is always public. ## Configure Non-Managed Instances Configure assets with instances not managed by API Manager. Add, edit, and delete non-managed instances that are serving AsyncAPIs, GraphQL APIs, REST APIs, HTTP APIs, agents, MCP servers, and LLMs. Add these manually on the asset’s **Instances** page by providing a display name and base URL so developers know where the API is hosted. You can change the name, URL, and visibility of non-managed instances and services. - Add a non-managed instance: 1. Select the asset. 2. In the navigation bar, select **Instances**. 3. Click **Add new instance**. 4. In the **Non-managed instances** section, enter the instance name and URL. 5. Select a visibility option and click ![The checkmark icon.](/mulesoft/current/en-us/exchange/_images/ex-checkmark-icon.png). - Edit a non-managed instance: 1. Click ![The pencil icon](/mulesoft/current/en-us/exchange/_images/ex-pencil-icon.png). 2. Make your changes and click ![The checkmark icon](/mulesoft/current/en-us/exchange/_images/ex-checkmark-icon.png). - Delete a non-managed instance by clicking ![The trash can icon.](/mulesoft/current/en-us/exchange/_images/ex-trash-can-icon.png) and then clicking **Delete instance**. ## See Also - [Register Agents with GoDaddy ANS](https://docs.mulesoft.com/api-manager/latest/godaddy-ans-registration) - [View Instances](https://docs.mulesoft.com/exchange/asset-details#view-instances) - [Simulate Calls to an API](https://docs.mulesoft.com/design-center/design-mocking-service) --- product: Exchange --- # Connected Application Authentication > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Connected application authentication enables access to Exchange using OAuth 2.0 client credentials, so you can execute Exchange requests without sending user credentials. ## Create a Connected Application To create a new connected application: 1. Log in to Anypoint Platform. 2. Go to **Access Management** > **Connected Apps** > **Create App**. 3. Select **App acts on its own behalf (client credentials)**. 4. Click **Add Scopes** and add the appropriate Exchange scopes: - **Exchange Administrator** or **Exchange Contributor** for read and write access - **Exchange Viewer** for read-only access 5. Select the business groups and environments for the scopes, and click **Add Scopes**. 6. Click **Save** and copy the client ID and client secret of the connected application. For more information about creating connected apps, see [Creating Connected Apps in Anypoint Platform](https://docs.mulesoft.com/access-management/creating-connected-apps-dev). ## Obtain a Bearer Token Use the OAuth 2.0 `client_credentials` grant type to obtain a bearer token for the connected application. Replace `CLIENT_ID` and `CLIENT_SECRET` with your client ID and secret: ```console curl --location --request POST 'https://anypoint.mulesoft.com/accounts/api/v2/oauth2/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=CLIENT_ID' \ --data-urlencode 'client_secret=CLIENT_SECRET' \ --data-urlencode 'grant_type=client_credentials' ``` You receive a response similar to: ```json { "access_token": "YOUR_BEARER_TOKEN", "token_type": "bearer" } ``` Use this bearer token in Exchange API calls by including it in the `Authorization` header: ```console curl -H 'Authorization: bearer YOUR_BEARER_TOKEN' \ https://anypoint.mulesoft.com/exchange/api/v2/assets ``` ## Basic Authentication for Maven Facade and Graph API The Exchange Maven Facade API and the Exchange Graph API also support a basic authentication shortcut using connected application credentials directly. To use this method, define the username as `~~~Client~~~` and the password as `clientID~?~clientSecret`. Replace `clientID` with the client ID and `clientSecret` with the client secret. For example, in a Maven `settings.xml` file: ```xml Repository ~~~Client~~~ clientID~?~clientSecret ``` For the Exchange Experience API, MuleSoft recommends using the [bearer token method](#obtain-a-bearer-token). ## See Also - [Getting the Bearer Token for a Connected App in Anypoint Platform](https://docs.mulesoft.com/access-management/connected-app-bearer-token-example) - [Connected Apps in Anypoint Platform](https://docs.mulesoft.com/access-management/connected-apps-overview) - [Publishing Assets Using the Exchange API](https://docs.mulesoft.com/exchange/exchange-api) - [Publishing Assets Using Maven](https://docs.mulesoft.com/exchange/to-publish-assets-maven) --- product: Exchange --- # Consuming an API > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Exchange provides significant features for API providers to easily publish and share APIs with developers inside and outside of an organization. Exchange helps API consumers understand API functionality and test features with: - API console to view API functions. This console appears to the right of a REST API detail screen. - A mocking service to simulate data to an API. - GraphQL console to view GraphQL schemas and run queries. ## See Also - [View REST API Elements in an Asset](https://docs.mulesoft.com/exchange/asset-details#view-rest-api-elements-in-an-asset) - [Simulating Data in REST APIs](https://docs.mulesoft.com/exchange/ex2-to-simulate-api-data) - [Viewing GraphQL API Schemas and Run Queries](https://docs.mulesoft.com/exchange/view-graphql-api-schemas-and-run-queries) --- product: Exchange --- # Creating an Asset > For the full documentation index, see: https://docs.mulesoft.com/llms.txt To share assets in an Anypoint Exchange private instance or the Exchange public portal, create an asset of that type. The method for creating an asset depends on its type. Once the asset type is defined, it is permanent and can’t be changed.
Asset TypeCreation Method

OAS, RAML, RAML fragments, AsyncAPI, HTTP, WSDL, agents, LLMs, MCP servers, rulesets, custom

Exchange Publish new asset dialog

REST APIs, API spec fragments

Anypoint Code Builder, Design Center, or the Exchange Experience API

RAML, OAS API specifications

Anypoint Platform CLI. For example: exchange asset upload --classifier raml --apiVersion v1 --name HelloWorld --mainFile helloworld.raml helloworld/1.0.0 /Users/nmouso/Downloads/helloworld.raml.zip

Examples, templates

Mavenize feature in Anypoint Studio

Connectors, policies, examples, templates

Maven

API groups

Anypoint API Manager

Mule applications

Anypoint Runtime Fabric (not visible in the Exchange UI)

External libraries

Exchange Maven Facade API (not visible in the Exchange UI)

Exchange fully supports RAML fragments. Currently, Exchange does not support importing and managing OAS 3.x components as Exchange dependencies inside a specification. > [!NOTE] Exchange does not resolve dynamic references (`$dynamicRef` and `$dynamicAnchor`) in OAS > 3.1 API specifications and does not apply custom `$schema` dialects. ## Create an Agent Agents are programs that perform tasks autonomously or semiautonomously. AI agents can use the Agent2Agent (A2A) protocol to communicate and collaborate with each other to perform tasks. Agent schema files must be in JSON format. They define the structure and capabilities of the agent asset. When creating an agent asset, upload the schema file you want to use. The required objects for an A2A spec are defined in the [A2A spec](https://a2a-protocol.org/dev/specification/). ### Protocol Types When you create an agent asset, select a protocol type: - **A2A v1.0 card**: Publishes the agent card with the `a2a_v1` protocol value and the `a2a-v1-card` classifier. Use this for agents that comply with A2A Protocol v1.0.0. - **A2A v0.3 card**: Publishes the agent card with the `a2a` protocol value and the `a2a-card` classifier. Use this for agents that comply with A2A Protocol v0.3.0. - **Other card**: Publishes the agent card as a generic JSON file. The file must be valid JSON but does not require specific A2A properties. > [!NOTE] The **A2A v1.0 card** and **A2A v0.3 card** labels are visible when the feature flag is > enabled. With the flag off, the options are **A2A card** and **Other card**. A single asset version can carry both an A2A v0.3 card and an A2A v1.0 card. Each card is published separately under its own classifier. Exchange does not auto-convert between v0.3 and v1.0. ### A2A v1.0 Agent Card An A2A v1.0 agent card declares the agent’s identity, capabilities, supported transports, security requirements, and skills. The v1.0 card uses the `supportedInterfaces` array to declare transport bindings. Each entry in `supportedInterfaces` contains: - `url`: The endpoint URL for this transport. - `protocolBinding`: The transport protocol (for example, `JSONRPC`, `HTTP+JSON`, or `GRPC`). - `protocolVersion`: The A2A protocol version supported at this endpoint. - `tenant`: The tenant identifier for multi-tenant deployments. Example A2A v1.0 card ```json { "name": "Weather Agent", "description": "Provides current weather conditions and forecasts for any location.", "url": "https://weather-agent.example.com/a2a", "version": "1.0.0", "provider": { "organization": "Example Corp", "url": "https://example.com" }, "supportedInterfaces": [ { "url": "https://weather-agent.example.com/a2a", "protocolBinding": "JSONRPC", "protocolVersion": "1.0.0", "tenant": "example-org" }, { "url": "https://weather-agent.example.com/a2a/rest", "protocolBinding": "HTTP+JSON", "protocolVersion": "1.0.0", "tenant": "example-org" } ], "capabilities": { "streaming": true, "pushNotifications": false, "stateTransitionHistory": false }, "securitySchemes": { "oauth2": { "type": "oauth2", "description": "OAuth 2.0 client credentials for Anypoint Platform authentication." } }, "skills": [ { "id": "get-weather", "name": "Get Weather", "description": "Get the current weather conditions for a specified location.", "examples": [ "What is the weather like in New York?", "Is it going to rain in San Francisco today?" ], "inputModes": ["application/json", "text/plain"], "outputModes": ["application/json"], "tags": ["weather", "geolocation"] } ] } ``` ### A2A v0.3 Agent Card An A2A v0.3 agent card uses the original A2A protocol structure with JSON-RPC as the only transport. The v0.3 card uses `preferredTransport` and `additionalInterfaces` to declare transport bindings. Example A2A v0.3 card ```json { "protocolVersion": "0.2.9", "name": "Some Company Agent", "description": "Some Company Agent provides all the capabilities that can offer to its customers.", "url": "${registry.url}/company-agent", "capabilities": {}, "version": "1.0.0", "provider": { "organization": "Some Company Inc.", "url": "https://weather-agent.ch.anypoint.com" }, "securitySchemes": { "anypointClientCredentials": { "type": "apiKey", "in": "header", "name": "clientSecret", "description": "The client secret for Anypoint Platform authentication." } }, "defaultInputModes": ["application/json", "text/plain"], "defaultOutputModes": ["application/json", "image/png"], "skills": [ { "id": "weather", "name": "Returns the weather for a given location", "description": "Get the current weather conditions for a specified location.", "examples": [ "What is the weather like in New York?", "Is it going to rain in San Francisco today?" ], "inputModes": ["application/json", "text/plain"], "outputModes": ["application/json", "application/vnd.geo+json", "text/html"], "tags": ["weather", "geolocation"] } ] } ``` ### Card Details After you publish an agent card, the Card Details page in Exchange displays different fields depending on the protocol version. #### A2A v1.0 Card Details - Name - Description - URL - Protocol version - Supported interfaces (protocol binding, URL, protocol version, and tenant for each) - Signature (shown only for signed cards) - Provider - Security schemes - Capabilities (streaming, push notifications, state transition history) - Skills (with descriptions, input/output modes, and examples) #### A2A v0.3 Card Details - Name - Description - URL - Protocol version - Preferred transport - Additional interfaces - Provider - Security schemes - Capabilities - Skills ### Create an Agent Asset 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. Select the **Agent** asset type from the dropdown list. 4. Select a protocol type: - **A2A v1.0 card**: For agents using A2A Protocol v1.0.0. - **A2A v0.3 card**: For agents using A2A Protocol v0.3.0. - **Other card**: For agent cards that do not follow a specific A2A protocol version. 5. Click **Choose file** to upload a `.json` file for the agent card. 6. Click **Publish**. ## Create an API Asset An API asset specifies an interface completely, including its functions, descriptions, how to handle return codes, and dependencies. Creating an asset sets the asset type, which cannot be changed. All versions of an asset always have the same type. To create an API asset: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. Select the asset type from the drop-down list: - REST API - RAML: Provide a RAML API specification file. RAML specifications must be a RAML file (`.raml`). - REST API - OAS: Provide an OAS API specification file. OAS specifications can be either a YAML (`.yaml`) or JSON (`.json`) file. Exchange supports OAS 2.0, OAS 3.0, and OAS 3.1 specifications. - SOAP API - WSDL: Provide a WSDL API specification file. SOAP specifications file can be either a WSDL (`.wsdl`) or XML (`.xml`) file. - AsyncAPI: Provide an AsyncAPI specification file in a YAML (`.yaml`) or JSON (`.json`) file. - AsyncAPI with Avro schemas: Provide an Avro fragment in an AVSC (`.avsc`) file. - API Spec Fragment - RAML: Provide an API Fragment RAML specification file. Fragment specifications must be a RAML file (`.raml`). - API Spec Fragment - JSON: Provide an API Fragment JSON specification (`.json`) file. - API Spec Fragment - OAS: Provide an API Fragment OpenAPI specification file either JSON or YAML. - gRPC API: Provide a gRPC API specification file in a .proto file. - HTTP API: This asset does not require a file. This asset type provides an API endpoint that is defined by API Manager. 4. For assets that require a file: 1. Select **Choose File** to locate the API specification file. 2. Select the main file of the API. If the file is a ZIP, the selected main file must be in the root directory of the ZIP file. If the file is not a ZIP or if the file is a ZIP file with only one main file, then the main file is selected automatically. 5. If you want to edit the **GroupId**, **AssetId**, **Version**, and **API version** (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version (GAV) for you, and you can change these values as needed. You can change an API’s asset version and version separately. Use the advanced settings to change the asset version. 6. Select an option for **Lifecycle state**. The default is **Stable**. 7. Click **Publish**. To create a ZIP file and put the items in a folder into the root directory of the ZIP file, use a command like this. Replace `myfolder` with the name of your folder and `name.zip` with the name for the new ZIP file. ```none cd myfolder; zip -r name.zip. ``` Do not use a command such as `zip -r name.zip myfolder`, which puts the folder into the root directory of the ZIP file. This causes an error message such as `The zip file does not contain a .raml file in the root directory`. ## Create an API Group Asset An API Group is an asset that enables organizations to publish a group of API instances as a single unit, so that developer client applications can access the APIs as a group, using one client ID and, optionally, client secret. API Groups are created in Anypoint API Manager and published to Exchange. API Groups have major versions, such as 1.0.0, 2.0.0, or 3.0.0, but no minor or patch versions. Every version of an API Group has one or more API Group instances. Each API Group instance is a group of API instances that all have the same identity provider and the same environment type, either production or sandbox. An API Group instance can contain API instances from multiple business groups. Creating an API Group requires having the Group Administrator permission, as well as the Asset Administrator permission for each of the APIs in the group. This ensures that a group creator can change the underlying APIs between private and public visibility levels. If an API Group has any private APIs, you see a warning when publishing the API Group to your public portal. The public portal never shows private content. To ensure that all content in the API Group is published to the public portal, go to each API’s page in Exchange and make the API public, and then publish the API Group. Warnings are also shown when publishing an API Group to your public portal if all of its API Group instances are private, and when making an API Group instance public if all of its API instances are private. ## Create a Custom Asset A custom asset lets you share information about any aspect of your organization such as announcements, documentation, videos, and sharing files. You can add an optional file to your Custom asset that users can download. The file is stored in Exchange. Exchange only permits the following file types as the optional file in a custom asset: Images: `.jpg, .jpeg, .png, .gif, .svg` Documents: `.docx, .pdf, .pptx, .rtf, .vsdx, .vssx` Compressed files: `.zip, .tgz, .jar, .gz, .7z` Text files: `.txt, .json, .raml, .yaml, .yml, .md, .csv, .xml, .xsd, .wsdl, .html, .pom, .log, .sql` A file without a file type is not allowed. All file types are case insensitive. SVG files are limited to 100 KB or less. MuleSoft recommends deleting all old Custom assets containing files of types that are not permitted. For any Custom asset containing a non-supported file, delete the asset to remove the file. To create a custom asset: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. Select the asset type **Custom** from the drop-down list. 4. To upload a file, click **Choose file**. 5. To edit the **GroupId**, **AssetId**, and **Version** (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version for you, and you can change these values as needed. Use the advanced settings to change the asset version. 6. Select an option for **Lifecycle state**. The default is **Stable**. 7. Click **Publish**. ## Create Custom Policy Definition Asset Policies enforce regulations to help manage security, control traffic, and improve API adoption. For example, a policy can control authentication, access, and service level agreement (SLA). You can create a policy definition based on your specific business requirements. Develop custom policy definitions and apply them to APIs to extend existing functionality or define new ones. To publish a custom policy definition: 1. In Exchange, click **Publish new asset**. 2. Enter a name for the asset. 3. Select the **Policy** asset type from the drop-down list. 4. Click **Choose File** to select a JSON schema or YAML file. 5. To edit the **GroupId**, **AssetId**, **Version**, and API version (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version (GAV). You can change these values. You can also change an API asset’s version and API version separately. The advanced settings are most often used to change the asset version. 6. From Lifecycle state, select **Stable**. The policy must be in the Stable state to upload the implementation file in a later step. 7. Click **Publish**. **Pending** status appears next to **Implementations** in the left navigation bar. To implement the policy so that it is available at runtime, follow the steps in [Add Policy Implementation Files to Published Policy Definition](https://docs.mulesoft.com/exchange/add-policy-implementation-files-to-published-policy-definition). ## Create a GraphQL API A GraphQL API schema is a collection of operations and object types that are composed of fields. A GraphQL API allows a client to fetch only the object types and fields needed instead of fetching a fixed response like in a REST API. There are two types of schemas that you can upload: - GraphQL API schema - GraphQL Apollo API schema A GraphQL API schema designed with Apollo GraphQL specific directives and structure, also known as the schema definition language (SDL). To create a GraphQL API: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. From the drop-down list, select the asset type **GraphQL API**. 4. Select which GraphQL API schema to upload, GraphQL API schema or GraphQL Apollo API schema. 5. To select a file to upload, click **Choose file**. 6. To edit the advanced settings, **GroupId**, **AssetId**, and **Version** (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version for you, and you can change these values as needed. Use the advanced settings to change the asset version. 7. Select an option for **Lifecycle state**. The default is **Stable**. 8. Click **Publish**. ## Create a Large Language Model Only OpenAI and Gemini are supported. To use an OpenAI or Gemini LLM in your broker, you must have OpenAI or Gemini LLM access in your organization. Configure the LLM asset using one of these methods: - Automatic Publication: Define the LLM directly within the YAML configuration file in Anypoint Code Builder to automatically publish the LLM asset to Exchange. - Manual Creation: Manually create the LLM asset in Exchange, and then reference it in the YAML configuration file within Anypoint Code Builder. It’s possible to have more than one LLM asset in your organization. 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. Select the **LLM** asset type from the dropdown list. 4. Enter the name of the platform and select it from the list. 5. Click **Publish**. ## Create an MCP Server MCP servers provide the protocols and specifications for seamless integration between different AI systems and tools. MCP server schema files are in JSON format. They define the tools, data structures, and authentication. Upload the schema file to use when creating an MCP server asset or use the MCP server’s URL to fetch the schema information. The minimum required property for an MCP server schema file is `transport` over HTTP. If you declare `capabilities`, you must have all four capability flags: `tools`, `resources`, `prompts`, and `logging`. If you provide `tools`, `resources`, or `prompts`, each element must include the fields that the MCP specification requires for its type: - Each tool requires `name` and `inputSchema`. - Each resource requires `name` and `uri`. - Each prompt requires `name`. This is a sample JSON file with the minimum required `transport` property. ```json { "transport": { "kind": "streamableHttp", "path": "/events" } } ``` Example MCP server schema file ```json { "protocolVersion": "2025-03-26", "transport": { "kind": "streamableHttp", "path": "/mcp/path" }, "provider": { "organization": "Some company AI", "url": "https://company.com" }, "capabilities": { "tools": true, "resources": true, "prompts": true, "logging": true }, "logging": { "level": "info" }, "tools": [ { "name": "searchDocuments", "description": "Searches documents by keyword and returns matched snippets.", "annotations": { "title": "Search Documents", "readOnlyHint": true, "openWorldHint": true, "idempotentHint": true }, "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "description": "Search query text" }, "limit": { "type": "integer", "description": "Maximum number of results" } }, "required": ["query"] } }, { "name": "updateRecord", "description": "Updates a record by ID.", "annotations": { "title": "Update Record", "destructiveHint": true, "readOnlyHint": false, "idempotentHint": false, "openWorldHint": false }, "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Record identifier" }, "payload": { "type": "object", "description": "Fields to update" } }, "required": ["id", "payload"] } } ], "resources": [ { "name": "Project README", "uri": "file:///workspace/README.md", "description": "Primary project documentation.", "mimeType": "text/markdown", "size": 2048, "annotations": { "audience": ["assistant", "user"], "priority": 0.9 } } ], "prompts": [ { "name": "summarize", "description": "Summarize a given text.", "arguments": [ { "name": "text", "description": "Text to summarize", "required": true }, { "name": "tone", "description": "Desired tone (e.g., concise, friendly)", "required": false } ] } ] } ``` MuleSoft uses a customized, UTF‑8–compatible version of the official MCP schema. It reuses select standard definitions from the official specification but it’s not identical to it. MuleSoft MCP server schema file ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "MCP Asset Schema", "$ref": "#/definitions/MCPServer", "definitions": { "MCPServer": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#Server"] }, "type": "object", "required": ["transport"], "additionalProperties": false, "properties": { "protocolVersion": { "type": "string", "enum": ["2024-11-05", "2025-03-26", "2025-06-18"], "description": "The version of the protocol being used. This is used to determine the structure and capabilities of the data." }, "transport": { "$ref": "#/definitions/MCPTransport", "description": "The transport protocol used for communication. This defines how the data is transmitted between the client and server." }, "provider": { "$ref": "#/definitions/MCPProvider", "description": "The service provider of the MCP server." }, "capabilities": { "$ref": "#/definitions/ServerCapabilities" }, "logging": { "type": "object", "properties": {}, "description": "Present if the server supports sending log messages to the client.", "additionalProperties": true }, "tools": { "type": "array", "items": { "$ref": "#/definitions/Tool" }, "description": "A list of tools available in the mcp api. Each tool has a name, description, and input schema that defines the expected input format." }, "resources": { "type": "array", "items": { "$ref": "#/definitions/Resource" }, "description": "A list of resources available in the mcp api. Each resource has a URI, name, description, MIME type, and annotations that provide additional metadata." }, "resourceTemplates": { "type": "array", "items": { "$ref": "#/definitions/ResourceTemplate" }, "description": "A list of resources available in the mcp api. Each resource has a URI, name, description, MIME type, and annotations that provide additional metadata." }, "prompts": { "type": "array", "items": { "$ref": "#/definitions/Prompt" }, "description": "A list of prompts available in the mcp api. Each prompt has a name, description, and arguments that define the expected input format for the prompt." }, "platform": { "type": "string", "description": "The platform the mcp server is running" }, "securitySchemes": { "additionalProperties": { "$ref": "a2a.json#/definitions/SecurityScheme" }, "description": "Security scheme details used for authenticating with this agent.", "type": "object" } } }, "ServerCapabilities": { "type": "object", "description": "Capabilities that a server may support. Known capabilities are defined here, in this schema, but this is not a closed set: any server can define its own, additional capabilities.", "properties": { "completions": { "additionalProperties": true, "description": "Present if the server supports argument autocompletion suggestions.", "properties": {}, "type": "object" }, "experimental": { "additionalProperties": { "additionalProperties": true, "properties": {}, "type": "object" }, "description": "Experimental, non-standard capabilities that the server supports.", "type": "object" }, "logging": { "anyOf": [ { "additionalProperties": true, "description": "Present if the server supports sending log messages to the client.", "properties": {}, "type": "object" }, { "type": "boolean", "description": "Deprecated: True if the server supports sending log messages to the client." } ] }, "prompts": { "anyOf": [ { "description": "Present if the server offers any prompt templates.", "properties": { "listChanged": { "description": "Whether this server supports notifications for changes to the prompt list.", "type": "boolean" } }, "type": "object" }, { "type": "boolean", "description": "Deprecated: True if the server offers any prompt templates. " } ] }, "resources": { "anyOf": [ { "description": "Present if the server offers any resources to read.", "properties": { "listChanged": { "description": "Whether this server supports notifications for changes to the resource list.", "type": "boolean" }, "subscribe": { "description": "Whether this server supports subscribing to resource updates.", "type": "boolean" } }, "type": "object" }, { "type": "boolean", "description": "Deprecated: True if the server offers any resources to read. " } ] }, "tools": { "anyOf": [ { "description": "Present if the server offers any tools to call.", "properties": { "listChanged": { "description": "Whether this server supports notifications for changes to the tool list.", "type": "boolean" } }, "type": "object" }, { "type": "boolean", "description": "Deprecated: True if the server offers any tools to call." } ] } } }, "ResourceTemplate": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#ResourceTemplate"] }, "description": "A template description for resources available on the server.", "properties": { "_meta": { "additionalProperties": {}, "description": "See [General fields: `_meta`](/specification/2025-06-18/basic/index#meta) for notes on `_meta` usage.", "type": "object" }, "annotations": { "$ref": "#/definitions/Annotations", "description": "Optional annotations for the client." }, "description": { "description": "A description of what this template is for.\n\nThis can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a \"hint\" to the model.", "type": "string" }, "mimeType": { "description": "The MIME type for all resources that match this template. This should only be included if all resources matching this template have the same type.", "type": "string" }, "name": { "description": "Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn't present).", "type": "string" }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable and easily understood,\neven by those unfamiliar with domain-specific terminology.\n\nIf not provided, the name should be used for display (except for Tool,\nwhere `annotations.title` should be given precedence over using `name`,\nif present).", "type": "string" }, "uriTemplate": { "description": "A URI template (according to RFC 6570) that can be used to construct resource URIs.", "format": "uri-template", "type": "string" } }, "required": ["name", "uriTemplate"], "type": "object" }, "MCPProvider": { "description": "Represents the service provider of an MCP server.", "examples": [ { "organization": "Google", "url": "https://ai.google.dev" } ], "properties": { "organization": { "description": "MCP provider's organization name.", "type": "string" }, "url": { "description": "MCP provider's URL.", "type": "string" } }, "required": ["organization", "url"], "type": "object" }, "SseTransport": { "@context": { "@type": [ "http://anypoint.com/vocabs/mcp#Transport", "http://anypoint.com/vocabs/mcp#SseTransport" ], "@base": "http://anypoint.com/vocabs/mcp#" }, "required": ["kind", "ssePath"], "properties": { "kind": { "type": "string", "const": "sse" }, "ssePath": { "type": "string", "description": "Path to the SSE endpoint" }, "messagesPath": { "type": "string", "description": "Path to the messages endpoint" } }, "additionalProperties": false }, "StdioTransport": { "@context": { "@type": [ "http://anypoint.com/vocabs/mcp#Transport", "http://anypoint.com/vocabs/mcp#StdioTransport" ], "@base": "http://anypoint.com/vocabs/mcp#" }, "required": ["kind"], "properties": { "kind": { "type": "string", "const": "stdio" }, "instructions": { "type": "string", "description": "The instructions to run the mcp server" } }, "additionalProperties": false }, "StreamableHttpTransport": { "@context": { "@type": [ "http://anypoint.com/vocabs/mcp#Transport", "http://anypoint.com/vocabs/mcp#StreamableHttpTransport" ], "@base": "http://anypoint.com/vocabs/mcp#" }, "required": ["kind"], "properties": { "kind": { "type": "string", "const": "streamableHttp" }, "path": { "type": "string", "description": "Path to the mcp endpoint" } }, "additionalProperties": false }, "MCPTransport": { "type": "object", "oneOf": [ { "$ref": "#/definitions/SseTransport" }, { "$ref": "#/definitions/StreamableHttpTransport" }, { "$ref": "#/definitions/StdioTransport" } ] }, "Tool": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#Tool"] }, "description": "Definition for a tool the client can call.", "properties": { "_meta": { "additionalProperties": {}, "description": "See [General fields: `_meta`](/specification/2025-06-18/basic/index#meta) for notes on `_meta` usage.", "type": "object" }, "annotations": { "$ref": "#/definitions/ToolAnnotations", "description": "Optional additional tool information.\n\nDisplay name precedence order is: title, annotations.title, then name." }, "description": { "description": "A human-readable description of the tool.\n\nThis can be used by clients to improve the LLM's understanding of available tools. It can be thought of like a \"hint\" to the model.", "type": "string" }, "inputSchema": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#ToolInputSchema"] }, "description": "A JSON Schema object defining the expected parameters for the tool.", "properties": { "properties": { "additionalProperties": { "additionalProperties": true, "properties": {}, "type": "object" }, "type": "object" }, "required": { "items": { "type": "string" }, "type": "array" }, "type": { "const": "object", "type": "string" } }, "required": ["type"], "type": "object" }, "name": { "description": "Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn't present).", "type": "string" }, "outputSchema": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#ToolOutputSchema"] }, "description": "An optional JSON Schema object defining the structure of the tool's output returned in\nthe structuredContent field of a CallToolResult.", "properties": { "properties": { "additionalProperties": { "additionalProperties": true, "properties": {}, "type": "object" }, "type": "object" }, "required": { "items": { "type": "string" }, "type": "array" }, "type": { "const": "object", "type": "string" } }, "required": ["type"], "type": "object" }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable and easily understood,\neven by those unfamiliar with domain-specific terminology.\n\nIf not provided, the name should be used for display (except for Tool,\nwhere `annotations.title` should be given precedence over using `name`,\nif present).", "type": "string" } }, "required": ["inputSchema", "name"], "type": "object" }, "ToolAnnotations": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#ToolAnnotations"] }, "description": "Additional properties describing a Tool to clients.\n\nNOTE: all properties in ToolAnnotations are **hints**.\nThey are not guaranteed to provide a faithful description of\ntool behavior (including descriptive properties like `title`).\n\nClients should never make tool use decisions based on ToolAnnotations\nreceived from untrusted servers.", "properties": { "destructiveHint": { "description": "If true, the tool may perform destructive updates to its environment.\nIf false, the tool performs only additive updates.\n\n(This property is meaningful only when `readOnlyHint == false`)\n\nDefault: true", "type": "boolean" }, "idempotentHint": { "description": "If true, calling the tool repeatedly with the same arguments\nwill have no additional effect on its environment.\n\n(This property is meaningful only when `readOnlyHint == false`)\n\nDefault: false", "type": "boolean" }, "openWorldHint": { "description": "If true, this tool may interact with an \"open world\" of external\nentities. If false, the tool's domain of interaction is closed.\nFor example, the world of a web search tool is open, whereas that\nof a memory tool is not.\n\nDefault: true", "type": "boolean" }, "readOnlyHint": { "description": "If true, the tool does not modify its environment.\n\nDefault: false", "type": "boolean" }, "title": { "description": "A human-readable title for the tool.", "type": "string" } }, "type": "object" }, "Prompt": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#Prompt"] }, "description": "A prompt or prompt template that the server offers.", "properties": { "_meta": { "additionalProperties": {}, "description": "See [General fields: `_meta`](/specification/2025-06-18/basic/index#meta) for notes on `_meta` usage.", "type": "object" }, "arguments": { "description": "A list of arguments to use for templating the prompt.", "items": { "$ref": "#/definitions/PromptArgument" }, "type": "array" }, "description": { "description": "An optional description of what this prompt provides", "type": "string" }, "name": { "description": "Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn't present).", "type": "string" }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable and easily understood,\neven by those unfamiliar with domain-specific terminology.\n\nIf not provided, the name should be used for display (except for Tool,\nwhere `annotations.title` should be given precedence over using `name`,\nif present).", "type": "string" } }, "required": ["name"], "type": "object" }, "PromptArgument": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#PromptArgument"] }, "description": "Describes an argument that a prompt can accept.", "properties": { "description": { "description": "A human-readable description of the argument.", "type": "string" }, "name": { "description": "Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn't present).", "type": "string" }, "required": { "description": "Whether this argument must be provided.", "type": "boolean" }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable and easily understood,\neven by those unfamiliar with domain-specific terminology.\n\nIf not provided, the name should be used for display (except for Tool,\nwhere `annotations.title` should be given precedence over using `name`,\nif present).", "type": "string" } }, "required": ["name"], "type": "object" }, "Resource": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#Resource"] }, "description": "A known resource that the server is capable of reading.", "properties": { "_meta": { "additionalProperties": {}, "description": "See [General fields: `_meta`](/specification/2025-06-18/basic/index#meta) for notes on `_meta` usage.", "type": "object" }, "annotations": { "$ref": "#/definitions/Annotations", "description": "Optional annotations for the client." }, "description": { "description": "A description of what this resource represents.\n\nThis can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a \"hint\" to the model.", "type": "string" }, "mimeType": { "description": "The MIME type of this resource, if known.", "type": "string" }, "name": { "description": "Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn't present).", "type": "string" }, "size": { "description": "The size of the raw resource content, in bytes (i.e., before base64 encoding or any tokenization), if known.\n\nThis can be used by Hosts to display file sizes and estimate context window usage.", "type": "integer" }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable and easily understood,\neven by those unfamiliar with domain-specific terminology.\n\nIf not provided, the name should be used for display (except for Tool,\nwhere `annotations.title` should be given precedence over using `name`,\nif present).", "type": "string" }, "uri": { "description": "The URI of this resource.", "format": "uri", "type": "string" } }, "required": ["name", "uri"], "type": "object" }, "Annotations": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#Annotations"] }, "description": "Optional annotations for the client. The client can use annotations to inform how objects are used or displayed", "properties": { "audience": { "description": "Describes who the intended customer of this object or data is.\n\nIt can include multiple entries to indicate content useful for multiple audiences (e.g., `[\"user\", \"assistant\"]`).", "items": { "$ref": "#/definitions/Role" }, "type": "array" }, "priority": { "description": "Describes how important this data is for operating the server.\n\nA value of 1 means \"most important,\" and indicates that the data is\neffectively required, while 0 means \"least important,\" and indicates that\nthe data is entirely optional.", "maximum": 1, "minimum": 0, "type": "number" } }, "type": "object" }, "Role": { "@context": { "@type": ["http://anypoint.com/vocabs/mcp#Role"] }, "description": "The sender or recipient of messages and data in a conversation.", "enum": ["assistant", "user"], "type": "string" } } } ``` To create an MCP server asset: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. Select the **MCP** asset type from the dropdown list. 4. To upload a schema file: 1. From **Method**, select **Upload MCP file**. 2. Click **Choose file** to upload a schema file in JSON format. 5. To use a URL to retrieve MCP schema information: 1. From **Method**, select **Fetch MCP URL**. 2. Enter the URL of the MCP server. 3. If needed, enter the asset credentials. 4. To test the connection, click **Test Connection**. 5. To view the schema, click **Preview**. 6. Enter the name of the platform and then select it from the list. 7. Click **Publish**. 8. To create an instance of this asset, click **Instances** in the sidebar and click **Go to API Manager**. ## Create an RPA Activity Template Asset Activity templates are reusable code within RPA that standardize the most used activity steps and make them available to other developers in the organization. These templates are `.cawl` files that are imported in the RPA Activity library for developers to use as part of their RPA processes. To create an RPA activity template asset: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. From the drop-down list, select the asset type **RPA Activity Template**. 4. To select a `.cawl` file to upload, click **Choose file**. 5. To edit the advanced settings, **GroupId**, **AssetId**, and **Version** (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version for you, and you can change these values as needed. Use the advanced settings to change the asset version. 6. Select an option for **Lifecycle state**. The default is **Stable**. 7. Click **Publish**. ## Create an RPA Process Template Asset Templates for RPA processes are imported into RPA Builder as projects and are customizable before deploying to RPA bots. Process templates are built on common patterns for RPA to build automation faster. These templates are `.crpa` files that are exported from RPA Builder to share with other developers. To create an RPA activity template asset: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. From the drop-down list, select the asset type **RPA Process Template**. 4. To select a `.crpa` file to upload, click **Choose file**. 5. To edit the advanced settings, **GroupId**, **AssetId**, and **Version** (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version for you, and you can change these values as needed. Use the advanced settings to change the asset version. 6. Select an option for **Lifecycle state**. The default is **Stable**. 7. Click **Publish**. ## Create a Ruleset Asset Rulesets are a group of rules or guidelines that define an application, for example best practices or industry-specific standards. Add a zip file with multiple YAML files that describe the new ruleset. To create a ruleset asset: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. From the drop-down list, select the asset type **Ruleset**. 4. To upload, click **Choose file**. 5. To edit the advanced settings, **GroupId**, **AssetId**, and **Version** (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version for you, and you can change these values as needed. Use the advanced settings to change the asset version. 6. Select an option for **Lifecycle state**. The default is **Stable**. 7. Click **Publish**. ## Create an AsyncAPI Asset An AsyncAPI is an AsyncAPI specification file that specifies an event-driven API. You can create AsyncAPIs with Avro schemas. The file type for Avro schemas is AVSC (.avsc). To create an AsyncAPI: 1. In Exchange, select **Publish new asset**. 2. Enter a name for the asset. 3. From the drop-down list, select the asset type **AsyncAPI**. 4. To select a file to upload, click **Choose file**. 5. To edit the advanced settings, **GroupId**, **AssetId**, and **Version** (GAV), click **Advanced**. Exchange generates the group ID, asset ID, and version for you, and you can change these values as needed. Use the advanced settings to change the asset version. 6. Select an option for **Lifecycle state**. The default is **Stable**. 7. Click **Publish**. ## Asset Name, Icon, and Description Properties You can create assets in Anypoint Code Builder, API Designer, or Exchange. After the asset is created, the name, icon, and description properties can only be changed in the Exchange asset details page as described in [Editing an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset). ### Properties of Assets Created in Anypoint Code Builder When an asset is published from Anypoint Code Builder to Exchange, the asset name is the one used in the exchange.json file. The name, icon, and description properties can only be changed in the Exchange asset details page. ### Properties of Assets Created in API Designer API Designer reads and uses the name of the asset from the RAML specification. Before the asset is published in Exchange, you can edit the name in API Designer. After the asset is published in Exchange, the name is used as the asset portal name. Any publication from API Designer to update the version of an asset in Exchange has the name field disabled, and shows the name from Exchange. The name, icon, and description properties can only be changed in the Exchange asset details page. ### Properties of Assets Created in Exchange When you create an asset in Exchange, you enter the name. The name can’t be changed when adding a new version in Exchange. The name, icon, and description properties can only be changed in the Exchange asset details page. ## Create a New Version of an Existing Asset If you have contributor or admin access to an asset, you can add a new version for an existing asset: 1. In Exchange, open the asset list and select the asset. 2. Click **Add version**. 3. For API assets, follow the steps for the corresponding API asset type: - REST API - RAML: Provide a RAML API specification file. RAML specifications must be a RAML file (.raml). - REST API - OAS: Provide an OAS API specification file. OAS specifications can be either a YAML (.yaml) or JSON (.json) file. Exchange supports OAS 2.0, OAS 3.0, and OAS 3.1 specifications. - SOAP API - WSDL: Provide a WSDL API specification file. SOAP specifications file can be either a WSDL (.wsdl) or XML (.xml) file. - API Spec Fragment - RAML: Provide an API Fragment RAML specification file. Fragment specifications must be a RAML file (.raml). - AsyncAPI: Provide a JSON (.json) or YAML (.yml) file. - AsyncAPI spec with Avro schema: Provide an Avro fragment spec. Fragment specification must be an AVSC (.avsc) file. - HTTP API - This asset does not require a file. This type of asset provides an API endpoint that is defined by API Manager. 4. For RAML, API Spec Fragment, OAS, and WSDL assets: - Select **Choose File** to locate the API specification file. - Select the main file of the API. 5. If you want to select a file to upload, click **Choose file**. 6. Enter the version for the asset. 7. Select an option for **Lifecycle state**. The default is **Stable**. 8. Click **Publish**. The new version of the asset has the same name, icon, and description as the previous version. Any changes to these properties apply to all versions of the asset. ## See Also - [Publishing API Projects to Exchange](https://docs.mulesoft.com/anypoint-code-builder/des-publish-api-spec-to-exchange) - [Publishing API Specifications From API Designer to Exchange](https://docs.mulesoft.com/design-center/design-publish) - [Publishing Assets Using Maven](https://docs.mulesoft.com/exchange/to-publish-assets-maven) - [Asset Details](https://docs.mulesoft.com/exchange/asset-details) - [Editing an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset) --- product: Exchange --- # Creating or Updating Descriptor Files Manually > For the full documentation index, see: https://docs.mulesoft.com/llms.txt > [!NOTE] Where possible, we changed noninclusive terms to align with our company value of Equality. > We maintained certain terms to avoid any effect on customer implementations. > [!WARNING] To create or update Descriptor files manually, you have to save your files using UTF-8 > character encoding format. Encoding problems may occur when the encoding of the Descriptor file > doesn’t match the expected encoding of API Catalog CLI. The `create-descriptor` and `update-descriptor` commands identify the APIs to catalog and output the essential information needed to catalog them. If you want to add more descriptor information, the most efficient approach is to first create or update the descriptor file using the CLI, and then manually update the file with information that cannot be generated automatically. Use the following information about the descriptor YAML schema to decide what to add. ## Descriptor YAML Schema Following are the YAML tags used to describe the APIs you want to catalog. ## Catalog Descriptor Line The descriptor file must start with the following line. The descriptor version corresponds with the version of API Catalog CLI that you are running. The following example shows the required starting line for API Catalog CLI 1.0.0. --- #%Catalog Descriptor 1.0 --- ## triggerConditions The `triggerConditions` section of the YAML file enables you to set conditions to determine which of the set of APIs described in the descriptor file to publish. If you add this section to the descriptor file, APIs are published only when the `api-catalog publish-asset` command is run with `--trigger-criteria` flags with matching values for each of the trigger conditions. This enables you use the same `api-catalog publish-asset` command in your CI/CD scripts for each of your branches or environments and pass parameters to the command to control which of the APIs are published. You can set trigger conditions for specific APIs or for all APIs described in the descriptor file (global). If both types of conditions are used, the specific override the global. Following is an example `triggerConditions` section: --- triggerConditions: branches: - main - release/(.\*) tags: - support - release/(.\*) --- The preceding example enables a run of the `api-catalog publish-asset` command to publish the APIs described by the descriptor file only if the command has all of the following `--trigger-criteria` flag values: - `branches` are `main` or have `release/` in the text - `tags` are `support` or have `release/` in the text The `triggerConditions` sections are matched to `--trigger-criteria` flags as follows: - If only the global `triggerConditions` section is included in the descriptor file, no APIs are published by the `api-catalog publish-asset` command unless all of the trigger conditions are matched by `--trigger-criteria` flag values. - If `triggerConditions` sections are included for specific APIs, the specific APIs are published only if their trigger conditions are matched by `--trigger-criteria` flag values. - If both global and API level trigger conditions are included, the API level conditions override the global level conditions. For an example `publish-asset` command using the `--trigger-criteria` flag, see [Trigger the Publish Using Conditions](https://docs.mulesoft.com/exchange/apicat-publish-using-api-catalog-cli#trigger-conditions). ## versionStrategyConditions The `versionStrategyConditions` section of the YAML file enables you to set conditions to determine the version strategy of the set of APIs described in the descriptor file. If you add this section to the descriptor file, the version strategy of the APIs are set when the `api-catalog publish-asset` command is run with `--version-strategy-criteria` flags with matching values for each of the version strategy conditions. This enables you use the same `api-catalog publish-asset` command in your CI/CD scripts for each of your branches or environments and pass parameters to the command to control the version strategy of the APIs that are published. You can set version strategy conditions for specific APIs or for all APIs described in the descriptor file (global). If both types of conditions are used, the specific override the global. Following is an example `versionStrategyConditions` section: versionStrategyConditions: minorIncrease: branch: - main tags: - support snapshot: branch: - develop The `versionStrategyConditions` sections are matched to `--version-strategy-criteria` flags as follows: - If a `--version-strategy-criteria` flag set in the `publish-asset` command matches a `versionStrategyConditions` setting, that version strategy is used. - If there are `versionStrategyConditions` matches at both global and API level, the API level conditions override the global level conditions. - If there are no conditions matched and there is a `versionStrategy` option set in the descriptor file, that version strategy is used. - If there is no `versionStrategy` option set and no `versionStrategyConditions` matches, the default version strategy, `patchIncrease`, is used. For an example `publish-asset` command using the `--version-strategy-criteria` flag, see [Set Version Strategy Using Conditions](https://docs.mulesoft.com/exchange/apicat-publish-using-api-catalog-cli#versionStrategyConditions). ## contact The `contact` section of the schema includes the name and email ID for main contact for the autocataloging. If none are included, these default to `unknown`. ## projects The `projects` section of the schema lists the API projects to be cataloged along with the details needed to catalog them. main The location of the specification file that describes the API. assetId Specifies the ID of the asset to be published in Exchange. documentation A list of key and value pairs that specify the name of the documentation page and file location for the API. These pairs define the order of the documentation pages in Anypoint Platform. Format: : If this option is not specified, no documentation pages are imported. categories A list of key and value pairs that specify the category name and value. These pairs are validated against the categories that exist in the Anypoint Platform organization. Format: : If this option is not specified, no categories are added. customFields A list of key and value pairs that specify the field and value. These pairs are validated against the custom fields and field types that exist in the Anypoint Platform organization. Format: : If this option is not specified, no custom fields are added. tags A list of free text strings. If this option is not specified, no tags are added. version The version of the API. If this is not specified, the version is set by the version strategy. versionStrategy You can set the versioning strategy for the assets at the global or API project level. If a version strategy is not specified, the patch version is incremented by one. Following are the possible values: - **majorIncrease:** Searches for the latest version that matches the `version` field in the descriptor and increases the major version. If the asset is in the development lifecycle state, the version is increased and the asset stays in development. If the asset is a stable version, a new stable version is published. - **minorIncrease:** Searches for the latest version that matches the `version` field in the descriptor and increases the minor version. If the asset is in the development lifecycle state, the version is increased and the asset stays in development. If the asset is a stable version, a new stable version is published. - **patchIncrease (Default):** Searches for the latest version that matches the `version` field in the descriptor and increases a patch version. If the asset is in the development lifecycle state, the version is increased and the asset stays in development. If the asset is a stable version, a new stable version is published. - **Snapshot**: Publishes a development asset with the version specified in the descriptor file. If the asset does not exist, it creates it with the state `development`. If the asset exists, it republishes it and keeps it in `development`. - **Fixed**: Publishes a stable asset with the version specified in the descriptor file. If the asset does not exist, it creates it. If the asset exists, and is in development, it promotes it to `stable`. If the asset is in `stable` state and this version is already published, it fails. For more information on asset versioning in Exchange, see [Change the Version of an API Asset](https://docs.mulesoft.com/exchange/to-change-raml-version). apiVersion The API version for the asset. If the API version is not specified in the descriptor file, the version from the specification file is used. If the API version is specified in both files, the value in the descriptor file is used. The value must be specified in one of the files. Example: v1 ref As an alternative to describing the APIs in your project using the preceding tags in the `projects` section, you can use the `ref` tag to reference `exchange.json` files for each API as shown in the following example: projects: - ref: api-spec/async-spec.exchange.json - ref: api-spec/codat.exchange.json - ref: api-spec/oas-3-spec.exchange.json - ref: api-spec/oas-spec.exchange.json ## Example Descriptor File With Manual Updates Following is an example descriptor file with manual updates that describes the cataloging information for two APIs. ```yaml #%Catalog Descriptor 1.0 (1) triggerConditions: (2) branches: - main - release/(.*) tags: - support - release/(.*) contact: (3) name: 'John Doe' email: 'john.doe@org.com' versionStrategyConditions: majorIncrease: branches: - master tags: - support fixed: branches: - develop projects: (4) - main: api-spec/codat.json assetId: my-awesome-api contact: name: 'Jane Doe' email: 'jane.doe@org.com' documentation: add: documentation/add.md customFields: custom: value another: field tags: - codat - gcp version: 2.0.0 versionStrategy: majorIncrease versionStrategyConditions: minorIncrease: branches: - main tags: - support snapshot: branches: - develop apiVersion: v3 - main: api-spec/billing-api.json assetId: my-awesome-billing-api triggerConditions: user: - admin tags: - finance - aws categories: API Type: - System API - Experience API Organization: - Finance - Billing version: 1.0.0 versionStrategy: minorIncrease apiVersion: v1 ```
1Provides the starting line for the descriptor file
2Sets trigger conditions
3Provides the contact name and email ID
4Specifies the API information to be published
## See Also - [Using API Catalog CLI](https://docs.mulesoft.com/exchange/apicat-use-api-catalog-cli) - [Publishing Assets Using API Catalog CLI](https://docs.mulesoft.com/exchange/apicat-publish-using-api-catalog-cli) - [Creating or Updating Descriptor Files Using the CLI](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-cli) --- product: Exchange --- # Creating or Updating Descriptor Files Using the CLI > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Before you run the commands to publish your APIs, you must create a descriptor file that has the information Exchange needs to catalog the APIs. Typically you create the file using the CLI and then update the file manually to set more options to control how the assets are published. The output descriptor information includes the following for each API: - API definition file name - Asset ID - Asset version - API version ## Create a Descriptor File Use the `api-catalog create-descriptor` command to identify and output the API catalog descriptor YAML results to a designated file. The command outputs cataloging information for all API definitions it finds in the full directory tree relative to the current working directory. ### api-catalog create-descriptor \> api-catalog create-descriptor \[flags\] This command accepts the following flags:
FlagDescription

-d, --file=file

Default: catalog.yaml

The name and location in which to save the generated catalog descriptor file

--external

Generates an exchange.json file for each API described in the descriptor file and adds a reference to each of those in the descriptor file using the ref tag in the projects section

To create a descriptor file using the CLI: 1. Navigate to the directory path that contains the APIs you want to catalog. 2. Run the `api-catalog create-descriptor` command. The following example creates a descriptor file called `mydescriptor.yaml` in the current path: \> api-catalog create-descriptor -d mydescriptor.yaml Example output that is written to the descriptor file: #%Catalog Descriptor 1.0 projects: - main: async-spec.json assetId: async-api version: 2.0.0 apiVersion: v2 - main: codat.json assetId: codat-api version: 1.0.0 apiVersion: v1 - main: oas-3-spec.json assetId: oas-3-api version: 3.0.0 apiVersion: v3 If you use the `--external` flag, an `exchange.json` file is generated for each of your APIs and the descriptor file has references to each of those as shown in the following example: \> api-catalog create-descriptor -d mydescriptor.yaml --external Example output that is written to the descriptor file: #%Catalog Descriptor 1.0 projects: - ref: api-spec/async-spec.exchange.json - ref: api-spec/codat.exchange.json - ref: api-spec/oas-3-spec.exchange.json The presence and content of the designated descriptor file affects the result of the command as follows: - No file or empty file: The command discovers the APIs and writes the results to standard output and to a file named `catalog.yaml`. - Existing file with content: The command fails and shows an error message that says the descriptor file already exists. ### Link Documentation Pages and Images through a Descriptor File You can add documentation pages and images to your APIs by adding a Markdown file in the descriptor. You can visualize the image in the documentation page created for the Exchange Asset. Example descriptor file: #%Catalog Descriptor 1.0 projects: - main: sources/api.raml documentation: - Summary: Summary.md - Use Cases: Use\_Cases.md assetId: version-basic-api apiVersion: v4 version: 4.0.0 With the `Summary.md` file containing a link to an image (.png, .jpg) and a documentation Markdown file: This is a caching service that can be used to retrieve picklist values from publishers who wish to provide a caching service for their picklist fields. !\[muley logo\](https://docs.mulesoft.com/exchange/muleyLogo.png) \[Read all the Use Cases\](https://docs.mulesoft.com/exchange/Use/_Cases.md) The presence and content of the designated descriptor file affect the result of the command as follows: - No documentation entry for the referenced file in the descriptor catalog: the link to move between pages in the asset portal doesn’t work. ## Update a Descriptor File Use the `api-catalog update-descriptor` command to update the API catalog descriptor YAML results in a designated file. The command adds and updates cataloging information for all new and updated API definitions it finds in the full directory tree relative to the current working directory. This command cannot be used to update descriptor files created using the `--external` flag. ### api-catalog update-descriptor \> api-catalog update-descriptor \[flags\] This command accepts the following flag:
FlagDescription

-d, --descriptor-file=descriptor-file

Default: catalog.yaml

The name and location in which to save the updated catalog descriptor file information

To update a descriptor file using the CLI: 1. Navigate to the directory path that contains the APIs you want to catalog. 2. Run the `api-catalog update-descriptor` command. The following example updates a descriptor file called `mydescriptor.yaml` in the current path: \> api-catalog update-descriptor -d mydescriptor.yaml The presence and content of the designated descriptor file affects the result of the command as follows: - No file or empty file: An error message is shown because the update requires that a valid descriptor file exists. - Existing file with content: The command compares the APIs in the directory path to the list of APIs in the descriptor file and updates the descriptor file with new and updated API information. - File with `ref` tags in the `projects` section: The command gives a parsing error, as the `update-descriptor` command does not support descriptor files with references to external `exchange.json` files. ## See Also - [General Use of Commands and Flags](https://docs.mulesoft.com/exchange/apicat-use-api-catalog-cli) - [Publishing Assets Using API Catalog CLI](https://docs.mulesoft.com/exchange/apicat-publish-using-api-catalog-cli) - [Creating or Updating Descriptor Files Manually](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-manually#manual-descriptor) --- product: Exchange --- # Customizing an Exchange Public Portal > For the full documentation index, see: https://docs.mulesoft.com/llms.txt If you have Exchange Administrator or Organization Owner access, you can customize the appearance of an Exchange Public Portal. Access the public portal and click **Customize** at the right of the navigation bar. ## Portal Default Settings If you need to revert portal customizations back to their default settings, use these values: - Background color: #262728 - Text color: #FFFFFF - Text color (active): #00A2DF - [Welcome section Hero image](https://cdn.anypoint.mulesoft.com/artifacts/exchange-ui/images/hero-image-default.png) > [!NOTE] Open the image in a browser and right click to save the image to your computer. In > Exchange, you can upload the image to replace the image in your portal from the image on your > computer. - Welcome section text color: #FFFFFF ## Banner Text After you click **Customize**, click in the banner text. Delete text you want to change, and add new text. ## Top Bar Customizations You can change the appearance of the top navigation bar. ### Logo Image Choose a logo image file. If the image in the file is larger than 60 pixels high, Exchange resizes the image to 60 pixels high. Exchange resizes the image proportionally. For example, Exchange resizes a 500 by 500 pixel image to 60 by 60 pixels. The image file format can be `bmp`, `gif`, `ico`, `jpe`, `jpeg`, `jpg`, `png`, `svg`, `tif`, `tiff`, or `webp`. SVG files are limited to 100 KB or less. ### Favicon for the Browser Tab Choose a favicon image to appear in the browser tab for the public portal. The maximum size for the image depends on browser requirements. The favicon.ico file can contain up to 5 sizes, such as 16x16, 32x32, 64x64, 128x128, and 512x512. ### Background Color Choose an red-green-blue (RGB) hexadecimal value for the color of the top taskbar. ### Text Color Specify the hexadecimal RGB color for the top bar text. The colors are in the range of #FFFFFF for white to #000000 for black. At least 3 hex characters must be specified, for example, specifying #F42 generates a value of #FF4422. The field is not case sensitive. ### Active Text Color Specify the hexadecimal RGB color for the top bar text when the text is selected with a mouseover. The colors are in the range of #FFFFFF for white to #000000 for black. At least 3 hex characters must be specified, for example, specifying #F42 generates a value of #FF4422. The field is not case sensitive. ## Hero Image Banner Choose an image for the banner for the public portal. The hero image file format can be `bmp`, `gif`, `ico`, `jpe`, `jpeg`, `jpg`, `png`, `svg`, `tif`, `tiff`, or `webp`. The maximum file size for the banner image is 2 MB. The banner image can also be an animated GIF file. The image you specify is stretched to fit the window size as determined by the browser’s window size. The height is fixed to 220px. SVG files are limited to 100 KB or less. ### Banner Text Color Specify the hexadecimal red-green-blue color for the banner text. The colors are in the range of #FFFFFF for white to #000000 for black. At least 3 hex characters must be specified, for example, specifying #F42 generates a value of #FF4422. The field is not case sensitive. ## Custom Page Custom pages appear as tabs at the top of the public portal. Use the Exchange Visual or Markdown editor to add text, images, or videos to a page. To delete a custom page, click **Delete Page**. If this button is not visible resize the public portal browser window to display the **Delete Page** button. To change the order of the custom page tabs, drag the entries in the **Custom pages** list into the desired order. ## Login Page Users can always access an organization’s Exchange public portal by using the Anypoint Platform login. The option to use a third-party identity provider (IdP) such as Okta can be added to the login page by using Anypoint Platform [identity management](https://docs.mulesoft.com/access-management/external-identity). Many organizations offer single sign-on (SSO) with a third-party IdP for internal users and the Anypoint Platform login for external users. External users log in to onboard, obtain client IDs and client secrets, provide comments, and rate APIs. The public portal customization for the organization’s branding applies to the login page, including the background color, text color, active text color, and logo. ## See Also - [Public Portal Vanity Domain](https://docs.mulesoft.com/exchange/portal-vanity-domain) - [Describe an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset) - https://stackoverflow.com/questions/4014823/does-a-favicon-have-to-be-32x32-or-16x16\[Stack Overflow Favicon discussion\] --- product: Exchange --- # Databricks Platform Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your agents are hosted on Databricks, use this page to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## Agent Scanners - [Add a scanner for Databricks Agent Bricks](https://docs.mulesoft.com/exchange/adding-databricks-agent-bricks-scanner) ## MCP Scanners - [Add a scanner for Databricks MCP Server](https://docs.mulesoft.com/exchange/adding-databricks-mcp-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Deleting an Asset > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Keep your asset catalog maintained by deleting outdated or redundant assets. This makes it easier for consumers to find and reuse the assets they need. When deleting assets, admins determine if the GAV (group ID, asset ID, and version) information of the deleted asset can be reused for a different asset. Therefore, when you delete an asset, you might not be able to reuse its GAV for a new asset. An asset can’t be restored or undeleted. If you try to delete an asset version with dependent assets, Exchange shows a warning. Remove the dependencies and then delete the asset version. If you try to delete an API or policy asset version with dependent API instances, Exchange shows a warning. Remove the dependencies and then delete the asset version. The **API instances** page displays each API asset’s instances. You can’t delete a policy asset that is applied to any managed API instances. On the policy asset’s page, the **APIs using this policy** tab shows which API instances have that policy applied. Use API Manager to remove the policy from the instances, and then delete the policy. To delete a patch version of an asset: 1. In the asset details, click **Manage versions**. 2. Click the three dots menu and select **Delete version**. When GAV reuse is enabled, you have the option to reuse the GAV for another asset. If you don’t select this option, the GAV for that asset won’t be available for reuse. If you do select it, the GAV can be reused for another asset. 3. Click **Delete asset**. To delete an entire asset, delete all of its patch versions. ## Review GAV Information for Deleted Assets You can review details about deleted assets. Find out which GAV information is unavailable for reuse using this endpoint: `/api/v2/organizations/:organizationId/softDeleted?limit=40&offset=0` The limit and offset query parameters are optional. The default limit value is 20. The default offset value is 0. Identify unavailable GAVs of deleted assets for cleanup and permanent deletion. Then, you can make GAVs reusable by permanently deleting the asset using this example API call: ```console DELETE '/api/v2/assets/:groupId/:assetId/:version' --header 'x-delete-type: hard-delete' --header 'Authorization: *** ``` ## See Also - [Managing Asset Deletion](https://docs.mulesoft.com/exchange/managing-asset-deletion) - [To Change a RAML Version](https://docs.mulesoft.com/exchange/to-change-raml-version) --- product: Exchange --- # Discovering and Cataloging External Services with Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Use scanners to automatically discover, import, and catalog services from outside Anypoint Platform. Scanners connect to external provider platforms and pull in metadata for agents, APIs, and Model Context Protocol (MCP) servers your teams rely on. They give enterprise-grade governance and visibility through MuleSoft Agent Fabric by synchronizing that metadata with the Agent Fabric registry in Anypoint Exchange. What each scan imports depends on the provider: some ecosystems expose agents; others also surface API definitions or MCP endpoints that Exchange can represent as catalog services. Scanners extract metadata, map it into Exchange-friendly forms (including the canonical Agent-to-Agent (A2A) representation for agentic services where applicable), and keep the catalog aligned with the source. The system detects updates and resolves conflicts to maintain a single source of truth. Create a scanner to connect to a supported external platform and configure how often it runs. Schedule scans at specific intervals, set up the connection, and opt into email notifications. After a scan completes, review a summary of imported services and the scan history. Imported services appear in the Exchange catalog in the views that match their type—for example **Agents & Tools** for agents, MCP servers, and related agentic services, and the usual API experiences for API specifications your provider exposes to the scanner. Scanners detect new and missing services and metadata changes. Later scans overwrite metadata from Exchange with values from the source and can restore services removed from Exchange while the scanner still sees them externally. To keep local edits, change the service in the provider’s source of truth. After you add a scanner to a business group, you can’t move the scanner or its managed services to another group. Click **Scanners** in the sidebar to see all scanners for the group. The list shows the scanner status, name, provider, service type,last run status, next run, and counts of added or updated services. ![Scanners page showing a list of scanners](/mulesoft/current/en-us/exchange/_images/scanner-list.png) Exchange supports these scanner types: - Agents - APIs - MCP servers ## Find a Scanner By scanner type - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [API Scanners](https://docs.mulesoft.com/exchange/api-scanners) - [MCP Scanners](https://docs.mulesoft.com/exchange/mcp-scanners) By provider - [Amazon Scanners](https://docs.mulesoft.com/exchange/aws-scanners) - [Anthropic Platform Scanners](https://docs.mulesoft.com/exchange/anthropic-scanners) - [Databricks Platform Scanners](https://docs.mulesoft.com/exchange/databricks-scanners) - [GoDaddy Scanners](https://docs.mulesoft.com/exchange/godaddy-scanners) - [Google Scanners](https://docs.mulesoft.com/exchange/google-scanners) - [Kong Scanners](https://docs.mulesoft.com/exchange/kong-scanners) - [LangChain Platform Scanners](https://docs.mulesoft.com/exchange/langchain-scanners) - [Microsoft Platform Scanners](https://docs.mulesoft.com/exchange/microsoft-scanners) - [Salesforce Agentforce Scanners](https://docs.mulesoft.com/exchange/agentforce-scanners) - [ServiceNow Scanners](https://docs.mulesoft.com/exchange/servicenow-scanners) - [Snowflake Platform Scanners](https://docs.mulesoft.com/exchange/snowflake-scanners) ## Security and Data Retention Sensitive information, such as API keys and tokens, is stored in Anypoint Security secrets manager. To maintain compliance, create credentials with least privilege. The system retains scan logs and statuses for at least 90 days and never deletes the most recent successful run. Scanners enforce these limits: - Frequency: Once daily - Retrieval: 1,200 services per runtime limit - Capacity: 10,000 services - Runtime: 6 hours If a scan exceeds the runtime limit, the scanner saves the progress and continues the scan the next time it runs. ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. --- product: Exchange --- # Documenting an API > For the full documentation index, see: https://docs.mulesoft.com/llms.txt To increase usability and adoption, create documentation using Einstein generative AI, document APIs using API Notebook, and configure API instances. - [Generating API Documentation with Generative AI](https://docs.mulesoft.com/exchange/generating-documentation-with-ai) Create API documentation by using Einstein generative AI. - [Documenting an Asset Using API Notebook](https://docs.mulesoft.com/exchange/to-use-api-notebook) > [!NOTE] This feature of the product has reached > [End of Life](https://www.salesforce.com/en-us/wp-content/uploads/sites/4/documents/legal/Agreements/versioning-back-support-policy.pdf). Create API Notebooks to document each function in your API and provide a test area so that users can experiment with sending different values to the API and receiving output. After creating your API Notebook, create an API instance to control whether the notebook is private or public. ## See Also - [Editing an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset) --- product: Exchange --- # Documenting an Asset Using API Notebook > For the full documentation index, see: https://docs.mulesoft.com/llms.txt API Notebook lets you document an API’s functionality with explanations that accompany code windows. Users can change the code and execute it by clicking the Play button in each code block. You can create a new API Notebook from the Exchange editor and use JavaScript code in the code blocks. Use API Designer in Anypoint Platform to improve and test your RAML, OAS, or AsyncAPI API specification, and to publish the API specification to Anypoint Exchange. > [!NOTE] An OAS specification is converted into RAML so you can follow the RAML conventions in API > Notebook. Also, the RAMl specification is converted when you upload an OAS. 1. Click the asset to view details. 2. Click **Edit documentation** and click the API Notebook icon ![API Notebook icon in the editor](/mulesoft/current/en-us/exchange/_images/ex2-api-notebook-icon.png) in the editor. 3. Add a description for the asset. 4. In the Visual editor, the API Notebook icon creates a panel where you can add JavaScript code items. Enter the first letter of the function you want to add and Notebook lists the available functions starting with that letter. If you are using Markdown, each notebook entry is enclosed in a block of 3 tick marks, for example: ````javascript ```notebook // Authenticate client API.authenticate(myclient); ```; ```` ## API Notebook Program Flow for External APIs If you are accessing an external API such as the Instagram API, fetch the client using the Anypoint Asset Portal Service at the `https://anypoint.mulesoft.com/exchange/api/v1/health` URL. The fetch code is: ```javascript fetch("https://anypoint.mulesoft.com/exchange/api/v1/health").then((res) => res.json()); ``` Enable users to authenticate with the API: ```text // Authenticate Instagram. // This asks you to authenticate with your personal account. // Don't worry, we have no idea who you are. API.authenticate(instagramApi); ``` You can then construct your notebook to use the API. ## API Notebook Program Flow for API Manager APIs 1. Create a client in the notebook to initialize access to your API using the API.createClient function. Syntax: `API.createClient('CLIENT_NAME', 'URL_TO_API_MANAGER_API');` 2. Authenticate the client with Anypoint Platform using the API.authenticate function. Syntax: `API.authenticate(CLIENT_NAME);` 3. Create your notebook based on the functionality in your REST API. Each function is based on the names of your RAML descriptor blocks. For example, for the `getdetails` client and with a block called `/info`, to document the GET call, the function description in the notebook is: `getdetails.info.get();` You can add extra parameters to function call with an array, for example: `me.function.post[{ orgId: 'myorg'}) …​]` 4. Test the API in Exchange by setting elements in the code blocks and clicking Play. Ensure all code blocks work without causing errors in the code. > [!NOTE] The create and authentication calls must be in separate notebook calls: > > ````javascript > ```notebook > fetch(’https://anypoint.mulesoft.com/exchange/api/v1/health').then((res) => res.json()) > API.createClient(‘github’, ‘https://anypoint.mulesoft.com/apiplatform/repository/v2/organizations/ORG_ID/public/apis/7782/versions/7918/files/root’); > > ``````notebook > > API.authenticate(github); > ```(edited); > ```` ## Create API Instance After creating your API Notebook you can optionally create an API instance to control whether the notebook is private or public. By setting the notebook’s instance to private, others in your organization can review it. When you are ready, you can set the API instance to make the API Notebook public. See [Configuring Instances](https://docs.mulesoft.com/exchange/to-configure-api-settings) for more information about API instances. > [!NOTE] API Notebooks are independent of the use of an API instance. If you don’t use a base URI > in your RAML, or use an API instance, you can use the mocking service to generate test data. ## API Notebook Security API notebooks run plain JavaScript in the browser. To ensure sensitive data does not leak, API Notebook disables certain JavaScript functionality: - All global functions, including `alert` and `prompt` - All global variables, including `window`, `document`, `localStorage`, and `XMLHttpRequest` ## See Also - https://docs.mulesoft.com/design-center/v/1.0/upload-raml-task\[Upload an Existing RAML File to Exchange\]. --- product: Exchange --- # Downloading an Asset > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Download lets you download a copy of the asset, or in the case of a Custom asset, the optional file attached to the asset when it was created. After creating a REST asset, Exchange generates a Mule 4 connector. Exchange also generates an OAS 2.0 version for RAML assets, and a RAML version for OAS 2.0, OAS 3.0, and OAS 3.1 assets. After you create a new REST asset, it can take a few minutes for these assets to appear in the **Download** menu. When you change the asset name, description, labels, or categories of the REST asset, Exchange updates these attributes for the generated connectors. RAML versions have been automatically generated for all OAS assets published since [January 12, 2019](https://docs.mulesoft.com/release-notes/exchange/anypoint-exchange-release-notes#january-2019), and OAS 2.0 versions have been automatically generated for all RAML assets published since that date. If you find an older asset that does not include one of these versions, you can generate all versions by downloading the asset and uploading it again. Click **Download** from the asset details pane. The results vary by file type: - REST API RAML If you choose **As RAML**, the original RAML file downloads as a zip file. If you choose **As OAS**, Exchange downloads the API specification as a zip file containing a JSON file for the specification in OAS 2.0 format. If you choose **As Mule 4 connector**, it downloads as a jar file you can add to a Studio 7 Mule project. - REST API OAS If you choose **As RAML**, Exchange downloads the API specification as a zip file containing a RAML file for the specification. If you choose **As OAS**, it downloads as a zip file containing a file in the original format of either JSON or YAML and the original OAS version, for example OAS 3.1. If you choose **As Mule 4 connector**, it downloads as a jar file you can add to a Studio 7 Mule project. - SOAP API WSDL Downloads as a WSDL file. - Connector Downloads as a jar file. - Template Downloads as a jar or zip file. - Example Downloads as a zip file. - Policy If you choose **As Mule policy**, Exchange downloads the policy as a JAR file. If you choose **As Policy definition**, Exchange downloads the definition YAML file. - Custom with a file Downloads the same format file that you uploaded, but the file name is based on your application name. For example, if you upload a text file for the Inventory Distribution project, Exchange downloads `inventory-distribution.txt`. - Custom without a file The **Download** button does not appear. - API Group The **Download** button does not appear. - AsyncAPI Downloads the API specification as a zip file containing a YAML file for the specification and a JSON file that contains the metadata of the asset. --- product: Exchange --- # Editing an Asset > For the full documentation index, see: https://docs.mulesoft.com/llms.txt You can edit an asset’s portal, change its name, icon, description, tags, categories, and custom fields; and add portal pages with content. Each page has a maximum limit of 1,024,000 characters in Markdown format. All versions of an asset have the same name, icon, description, and computed average rating. Each minor version of an asset has its own tags, categories, custom fields, and content pages, including an optional page of terms and conditions. In Exchange, open the asset list and select the asset. Exchange shows the asset portal. ## Edit Asset Portal Information You can change the asset icon, name, description, contact name, and contact email. 1. Click the edit pen icon in the asset details page. 2. To change the icon, click the edit pen icon, select an image file, then click **Open**. 3. To change the asset portal name, enter the new asset portal name. 4. To change the description, enter a new asset description in the **Description** field. 5. To change the contact name or email, enter a new contact name and email in the corresponding field. 6. To cancel the changes, click the **X** icon. 7. To save the changes, click the **check** icon. > [!NOTE] Before the August 2019 release, the versions of an asset could have different names or > icons. After the August 2019 release, a updated asset information applies to all versions of the > asset. ## Add and Remove Categories When searching for assets, categories can be used to filter the search results. 1. In the asset details pane, click **Add categories**. If there are already categories added for the asset, click **Categories**. 2. Click **Add category** and select from the list of categories. 3. Click **Add value** and select from the list of values. 4. To remove a category, click the trash can icon. 5. To remove a value from a category, click the **X** from the value text. ## Add and Remove Asset Tags When searching for assets, tags can be used to filter the search results. Tags can only be lower case, and upper case tags are converted to lowercase. Special characters are permitted. 1. In the asset details pane, click **Add tags**. If there are already tags added for the asset, click **Tags**. 2. Click **Add a tag** and select from the list of tags. 3. Press the enter or return key on your keyboard. 4. To remove tags, click **Tags**, then click the **X** next to the tag text. ## Edit Asset Documentation You can change the documentation for an asset. 1. Select **Edit documentation**. 2. Enter the new portal content. 3. In the editor, you can change the appearance of text and insert code samples, block quotes, and horizontal lines. 4. Add images and videos as described below. 5. After you write the main page, click **Save** to save as a draft or **Publish**. You can edit and save a draft any number of times before publishing. Drafts are not visible to other users until they are published. 6. Add secondary pages and terms and conditions as described below. 7. After you edit and save all your pages, click **Publish** to publish the portal. 8. Your asset portal is now visible to everyone in the organization. ### Add an Image You can copy and paste an image directly into the Exchange page: 1. Click **Edit documentation**. 2. Select **Visual** tab. 3. If your image is on your computer, drag the image to the Exchange page, or copy and paste to the Exchange page. If the image is on a web server, copy the image and paste it into the Exchange page. Alternatively, select the image icon in the editor and provide a URL to an illustration available on the web. In the **Markdown** tab, use this syntax to reference a web served image: `![some alt text](http://www.example.com/image/png.png)` Images uploaded before May 2019 can be accessed without authentication, and images uploaded after May 2019 require authentication. To disable unauthenticated access to an image uploaded before May 2019, download it, delete it, and upload it again. ### Add Secondary Pages You can add more pages to the asset portal. 1. Select **Edit documentation**. 2. In the left navigation bar, click **Add New Page**. 3. Press the enter or return key on your keyboard to create the page. You can create as many pages as needed. 4. To delete a page, click **Delete Page**. 5. In Exchange Portals, click **Add Content Pages**. 6. Add a description to the page. Secondary pages support the same options as the main page. 7. To save a draft of a new page, click **Save**. Secondary pages are listed in the left navigation bar. 8. To edit a draft, select the name of the page from the list in the left navigation bar and click **Edit** 9. To cancel your edits, click **Cancel**. 10. After you edit and save all your pages, click **Publish** for each page that you want to publish. In **Editing draft** mode, you can reorder pages by clicking the page name and dragging the page up or down in the left navigation bar. All page names are validated: - Page name length must be from 1 to 128 characters. - A page name cannot be the reserved name `home`. - Page names cannot be the name of an existing page. - Page names cannot contain these characters: `@` `*` `+` `/` `_` `\` - Page names cannot start with `.` The required page **Home** has the URL `pages/home`, and the optional page **Terms and conditions** has the URL `pages/.terms`. For other new pages, Exchange sets a URL that contains a page ID of three alphanumeric characters, a hyphen, and three more alphanumeric characters, such as `pages/1a2-b3c/Formats`. Changing the page name from **Formats** to **Formatting** changes the URL to `pages/1a2-b3c/Formatting`, and the old URL automatically redirects to the new URL. Pages created before the October 31, 2022 update have URLs with no page ID, such as `pages/Messages`. Changing the page name from **Messages** to **Messaging** changes the URL to the new format, such as `pages/de4-56f/Messaging`, and the old URL automatically redirects to the new URL. For backward compatibility with the Anypoint CLI, each page with a URL with the new format has an automatic redirect, from a URL with the old format, such as `pages/Pagename`, to the new URL, such as `pages/78g-h9i/Pagename`. A link to another page contains the link text in square brackets and the URL in parentheses: `[the page about messaging](https://docs.mulesoft.com/exchange/pages/de4-56f/Messaging)` ### Specify Terms and Conditions Terms and conditions can be added for API assets only. Users are prompted to accept the terms and conditions when requesting API access. 1. Select an asset and click **Edit documentation**. 2. In the left navigation bar, click **Add Terms and Conditions**. 3. Use the editor to specify the terms and conditions for this asset. 4. To save the terms and conditions page as a draft, click **Save**. 5. To delete the terms and conditions page, click **Delete Page**. 6. To publish the terms and conditions page, click **Publish**. ### API Groups If any API in an API Group has a terms and conditions page, then the API Group has a terms and conditions page that cannot be deleted and that shows the terms and conditions of the underlying APIs. Optionally, you may add more terms and conditions to the API Group’s terms and conditions page. ### Editor Notes - To use the link control, type text, select the text, and click the link control to specify the link URL. - If your Exchange session times out while you’re editing, select all the text on the page and copy it to your clipboard. Then after you log back in, you can paste the content back into the page and save your draft. When a timeout occurs, unsaved content is purged. - You can access international characters by pressing and holding a character. - If you are editing descriptions for many assets, instead of clicking an asset to open it from Exchange, instead right-click the asset and click Open Link in New Window to open the asset in a new browser window. Otherwise, after you publish an asset, control returns to the start of the filter/search list. - Keyboard shortcuts (work in Visual and Markdown): Bold: ctrl-b/cmd-b, Italics: ctrl-i/cmd-i, Heading: ctrl-d/cmd-d, Blockquote: ctrl-e/cmd-e, Code Block: ctrl-j/cmd-j, Numbered List: ctrl-o/cmd-o, Bullet List: ctrl-u/cmd-u, Insert Link: ctrl-k/cmd-k. ### Markdown Notes - Anypoint Exchange uses GitHub Markdown. - Maximum limit of 1,024,000 Markdown characters per page. - Basic HTML 5 code elements are supported in Markdown, such as div, button, a, ul, ol, table, p, span, pre, and code. - Insert a link: `[MuleSoft.com](http://www.mulesoft.com)` or: ```text [MuleSoft.com][1] [1]: https://mulesoft.com ``` - Insert a YouTube video: `![linkname](https://www.youtube.com/embed/YOUR_YOUTUBE_ID_HERE)` For example: `![](https://www.youtube.com/embed/K3tuHUZ1J04)` - Use syntax highlighting: ````text ```javascript const myBool = true; const myNumber = 5; const myString = "abc"; ``` ```` ## See More - [Generating API Documentation with Generative AI](https://docs.mulesoft.com/exchange/generating-documentation-with-ai) --- product: Exchange --- # Enabling and Disabling a Public Portal > For the full documentation index, see: https://docs.mulesoft.com/llms.txt All public portals in Exchange are enabled by default. You can sign in to your portal, view assets, and share new assets. Enabled portals do not require authorization to view asset details or download a specification. If you do not want the portal to be publicly shared, you can manually disable it. You must be an Exchange administrator to enable or disable a public portal. > [!NOTE] The code examples for enabling and disabling a public portal show you how to obtain an > access token with Multi-Factor Authentication (MFA) disabled. To determine whether your public portal is enable or disable, use the following request: curl "https://anypoint.mulesoft.com/exchange/api/v2/portals/YOUR\_ORGANIZATION\_DOMAIN/status" ## Enable a Public Portal To start using your organization’s public portal and sharing assets publicly, you must enable the portal. 1. Get an access token from an Anypoint Platform user account that has the Organization Administrator permission in the root organization: ```console ACCESS_TOKEN=$(curl https://anypoint.mulesoft.com/accounts/login -XPOST -d "username=YOUR_USERNAME&password=YOUR_PASSWORD" | jq -r ".access_token") ``` 2. Use the access token to change the status of your organization’s public portal to enabled status: curl -X PUT https://anypoint.mulesoft.com/exchange/api/v2/portals/YOUR\_ORGANIZATION\_DOMAIN/status -d "enabled" -H "content-type: text/plain" -H "authorization: bearer $ACCESS\_TOKEN" ## Disable a Public Portal If you do not want to publicly share any information about your assets, disable your public portal. **Note**: To disable your organization’s public portal, all the assets that are shared in the public portal must be set to private. See [Remove an Asset from a Public Portal](https://docs.mulesoft.com/exchange/to-share-api-asset-to-portal#remove-an-asset-from-a-public-portal) for instructions. To view which assets are shared in the public portal, use the following request: ```console curl 'https://anypoint.mulesoft.com/exchange/api/v2/portals/YOUR_ORGANIZATION_DOMAIN/assets' | jq '.[] | [.groupId,.assetId]' ``` To disable a public portal: 1. Ensure that all assets are private. 2. Get an access token from an Anypoint Platform user account that has the Organization Administrator permission in the root organization: ```console ACCESS_TOKEN=$(curl https://anypoint.mulesoft.com/accounts/login -XPOST -d "username=YOUR_USERNAME&password=YOUR_PASSWORD" | jq -r ".access_token") ``` 3. Use the following access token to change the status of your organization’s public portal to enabled: ```console curl -X PUT https://anypoint.mulesoft.com/exchange/api/v2/portals/YOUR_ORGANIZATION_DOMAIN/status -d "disabled" -H "content-type: text/plain" -H "authorization: bearer $ACCESS_TOKEN" ``` ## See Also - [Customizing an Exchange Public Portal](https://docs.mulesoft.com/exchange/to-customize-portal) --- product: Exchange --- # Enabling the Request Access Button > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Users specify what applications can have access to an API by clicking the **Request access** button. Exchange Administrators see **Request access** in the **More options** menu ![The More Options icon](/mulesoft/current/en-us/exchange/_images/ex2-more-options-icon.png). Enabling the **Request access** button requires the Exchange Administrator permission. To show the **Request access** button, create an API asset and then configure it: 1. In API Manager, click **Manage API** > **Manage API from Exchange** to open the API. 2. Use the URL of your API asset in Exchange as the Implementation URI in API Manager. 3. After opening your API in API Manager, you can view the API Instance ID value as well as other useful information. 4. In Exchange, the **Request access** button appears in the three dots menu. In API Manager, the API’s Status is marked as unregistered. To register the API, deploy the API to Anypoint Runtime Manager. Changing the API Status to registered is not required to make the API usable in Exchange. ## Request Access Display Criteria To display the **Request access** button on an Exchange public portal: 1. Publish a REST, SOAP, or HTTP API in Exchange. A REST API can be either an OAS or RAML API specification. 2. Create an instance of the API in API Manager. 3. Set the instance as public in **API instances**. 4. If the instance’s URL is not present, set the instance’s URL in **API instances**. If the instance is private, then the portal displays the **Request access** button only to logged-in users. If the instance is public, then the portal displays the **Request access** button to all users. If a logged-out user requests access, then Exchange prompts them to log in. --- product: Exchange --- # Exchange Platform APIs > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Exchange provides several APIs to help you manage assets: - **Exchange API** (v2, REST): Publish and consume assets, and retrieve metadata for Agent Fabric assets. - **Exchange Maven Facade API** (v3, Maven only): Publish and consume assets from Maven clients. - **Exchange Graph API**: Search for assets. The Maven Facade API supports Maven plugin clients only, not REST clients. The Maven Facade also enables you to publish federated assets. Exchange APIs: - [Exchange API](https://dev-portal.mulesoft.com/apis/exchange-experience.html#overview) - [Exchange Maven Facade API](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-maven-facade-api-http/) - [Exchange Graph API](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-graph-http/) Topics: - [Publishing Assets Using the Exchange API](https://docs.mulesoft.com/exchange/exchange-api) - [Publishing Assets Using Maven](https://docs.mulesoft.com/exchange/to-publish-assets-maven) - [Searching the Graph API](https://docs.mulesoft.com/exchange/to-search-with-graph-api) - [Retrieving Asset Metadata Using an MCP Server Endpoint](https://docs.mulesoft.com/exchange/retrieve-asset-metadata-using-mcp) ## See Also - [Anypoint Platform APIs - Developer Portal](https://dev-portal.mulesoft.com/index.html) - [Consuming an API](https://docs.mulesoft.com/exchange/about-api-use) - [Configuring Instances](https://docs.mulesoft.com/exchange/to-configure-api-settings) --- product: Exchange --- # Exchange Public Portals > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Exchange public portals are accessible to anyone using the internet, enabling developers outside of an organization to access that organization’s REST, SOAP, and HTTP APIs. Users who are not logged in can download assets from public portals. Exchange public portals replace what used to be known as _developer portals_. You can customize the appearance and the content of the portal by adding a logo, banner image, text, or a favicon for the browser tab. ## Share an Asset or Update the Asset Description As an Exchange administrator, you can edit the description of an asset in your organization so that users outside the organization can identify it, and then share the asset by publishing to a public portal: 1. Locate the asset in your organization’s Exchange instance. 2. Edit the asset description and then publish the asset. 3. Verify the change by returning to the public portal and clicking the asset. ## How Users from Other Organizations Access Your Portal Anyone can view a public portal without logging in. Anypoint users can click the **Login** button on any page to use features such as reviewing assets, downloading assets, creating a client application to request API access, and accessing an API. Anypoint users who belong to other Anypoint organizations and not your organization are _external users_ of your organization’s portal. An organization administrator can see only the basic profile of an external user. A basic profile has only these fields: - **Name** - **Username** - **Email** - **Primary Organization** The first time an external user attempts to log in to your public portal, the portal requests permission for read-only access to this basic profile. When the user approves this request, they are logged in to your public portal and their information is added to the **External Users** tab. To view this tab in Anypoint Platform click **Access Management** > **Users** > **External Users**. As your organization’s administrator, you can enable or disable each external user on that tab. Users are enabled by default. If you disable them, they cannot log in to your public portal. Users in your organization can access features that external users cannot, such as deploying an application. You can invite an external user to join your organization so they can use these features. ## See Also - [Customize an Exchange Public Portal](https://docs.mulesoft.com/exchange/to-customize-portal) - [Public Portal Vanity Domain](https://docs.mulesoft.com/exchange/portal-vanity-domain) --- product: Exchange --- # FAQ > For the full documentation index, see: https://docs.mulesoft.com/llms.txt This topic lists frequently asked questions and provides answers. ## What is the expected workflow for reviewing and publishing drafts? Exchange provides a drafts feature. Content in the draft state is hidden until the draft is published. One user can create drafts and share the URLs with a second user, and the second user can review and publish these pages. All contributors have the same permissions, including the permission to publish drafts. The separation of duties is not enforced by Exchange and must be observed by the users. Users can delete a draft, which discards all changes made in the draft. ## Where is the latest version of the Developer Portal? The MuleSoft Developer Portal is at [https://dev-portal.mulesoft.com/index.html](https://dev-portal.mulesoft.com/index.html). ## How do I create an API Portal? If you are an Anypoint Platform Organization Administrator or Exchange Administrator, when you first log into Exchange, Exchange creates a Public Portal for you. The link to the portal appears in the left navigation bar. After you add API assets to the portal, it becomes visible to the Internet. See [Why don’t my assets appear in my Public Portal?](#whynoinpp) for how to add assets to the portal. The URL for your portal is in the form `https://anypoint.mulesoft.com/exchange/portals/YOUR_LOGIN_NAME/`. ## Why don’t my assets appear in my Public Portal? You can add SOAP API, HTTP API, AsyncAPI, and OAS or RAML REST API assets to the Public Portal by clicking the Share button and clicking Add to the public portal. When you share an asset to the Public Portal, the asset is then public and visible by anyone on the internet at the URL of your Public Portal. ## How do I remove an asset from a Public Portal? Click the asset in Exchange and click Share. Click Add to the Public Portal. Click the API version field checkbox to uncheck the field. Click Share. In Exchange, refresh the browser screen and you can see that the Visibility setting in the asset’s Overview has changed to Private. ## When I rename an asset, why does Exchange use the old name? After changing the name for an asset, press the Return (or Enter) key on your keyboard. If you don’t press Return, Exchange reverts the asset name back to what it was before you changed it. ## Can I add a JSON snippet to Exchange and refer to the snippets from another JSON schema? You can use RAML data types, but not a JSON referenced by another JSON schema. ## Why is the CSS missing in Exchange assets in Windows 7 using Studio 6? Exchange only works in Windows with the latest versions of Chrome, Firefox, and Internet Explorer 11. IE 9 is not supported and displays Exchange incorrectly. ## When I push a custom connector through Maven to Exchange, how can I define a custom icon? You can upload an SVG icon with the icon classifier using a PUT to the Exchange REST API. Exchange adds the round border around the icon. You need to pass the authorization header with a bearer and access token. For example, add the icon file to the HTTP body and use a PUT such as: https://maven.anypoint.mulesoft.com/api/v1/organizations/:organizationId/maven/:groupId/:assetId/:version/:assetId-:version-icon.svg ## Can I integrate publication of assets to Exchange as part of a CI and CD pipeline? You can use the [Exchange Experience API](https://dev-portal.mulesoft.com/apis/exchange-experience.html#overview) to detect the difference if it exists so you don’t republish to Exchange when there is no change. ## Is there an API to download RAML files from Exchange? You can use the [Graph API (preferred)](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-graph-http/), or the [Exchange Experience API](https://dev-portal.mulesoft.com/apis/exchange-experience.html#overview). ## How do I change an API’s owner? You can use this REST API command: ```console curl -X POST \ https://anypoint.mulesoft.com/apiplatform/repository/v2/organizations//apis//permissions \ -H 'authorization: Bearer ' \ -H 'content-type: application/json' \ -d '{"userId":""}' ``` ## Why does Exchange use both v2 and v3 endpoints? Exchange has multiple APIs, and each has its own version: - The **Exchange API** (REST) is version 2. Its endpoints are on `anypoint.mulesoft.com/exchange/api/v2/`. Use this API to publish and manage assets over HTTP. - The **Exchange Maven Facade API** is version 3. Its endpoints are on `maven.anypoint.mulesoft.com/api/v3/`. Use this API only from a Maven client, such as the Mule Maven plugin. It’s not a REST API. If you’re configuring `` in a Maven POM, use the `/api/v3/` URL. If you are calling Exchange over REST, keep using the `/api/v2/` URL. Don’t mix versions within the same POM (for example, a parent POM using v2 and a child using v3 fails to deploy). For details, see [Publishing Assets Using Maven](https://docs.mulesoft.com/exchange/to-publish-assets-maven) and [Publishing Assets Using the Exchange API](https://docs.mulesoft.com/exchange/exchange-api). --- product: Exchange --- # General Use of Commands and Flags > For the full documentation index, see: https://docs.mulesoft.com/llms.txt After you have installed API Catalog CLI and configured permissions, you can use API Catalog CLI commands to autocatalog your APIs. Several options are available to [authenticate](#authentication) to Anypoint Platform as you run the commands. ## List of API Catalog Commands API Catalog CLI includes the following commands:
CommandDescription

Configures autocompletion for API Catalog commands

Creates or deletes a credentials configuration file

Creates a descriptor file

Updates a descriptor file

Publishes assets to Exchange

## View Command Help Use the help option to list the commands or command flags and their descriptions. The following examples show how to use the help option: api-catalog help api-catalog create-descriptor --help ## General and Authentication Flags Following are the general and authentication flags for commands that authenticate to Anypoint Platform:
FlagDescription

--client_id=client_id

or

ANYPOINT_CLIENT_ID environment variable

Connected app client ID

--client_secret

or

ANYPOINT_CLIENT_SECRET environment variable

Prompt for the connected app secret for the client ID

--collectMetrics

or

COLLECT_METRICS environment variable

Not currently used

--environment=environment

or

ANYPOINT_ENV environment variable

The name of the Anypoint Platform environment where the APIs are cataloged

--host=host

or

ANYPOINT_HOST environment variable

Default:

anypoint.mulesoft.com

The Anypoint Platform base URL without the protocol

For the US Anypoint Platform, use:

anypoint.mulesoft.com

For the European Anypoint Platform, use:

eu1.anypoint.mulesoft.com

--organization=organization

or

ANYPOINT_ORG environment variable

The ID of the Anypoint Platform organization where the APIs are cataloged

-o, --output=output

Not currently used

-p, --password

or

ANYPOINT_PASSWORD environment variable

Anypoint user password

-u, --username=username

or

ANYPOINT_USERNAME environment variable

Anypoint username

## Authentication To authenticate to Anypoint Platform while running the API Catalog CLI, you must use one of the following authentication combinations: - Username and password - Client ID and client secret - Bearer token (command line only) You must also specify host, environment, and organization unless you are logging in to the defaults. You can pass Anypoint Platform credentials using the following methods: - [Using single signon (SSO)](#single-signon) - [Using a credentials configuration file](#credentials-file) - [Using command line flags](#command-line-options) - [Using environment variables](#env-variables) Configuration settings are overridden as follows: - Command line flags override all other methods. - Environment variables are used if command line flags are not specified and override any credentials configuration file settings. - Credentials configuration file options are used if no command line flags or environment variables are set. ### SSO If you have configured Anypoint Platform to use SSO with the system on which you are running API Catalog CLI, when you run an API Catalog CLI command with no authentication flags, the command logs in to Anypoint Platform through SSO. For information on configuring login through SSO, see [About Identity Management](https://docs.mulesoft.com/access-management/external-identity). ### Credentials Configuration File If you are not using SSO, the most secure way to pass credentials to your Anypoint Platform CLI installation is through the credentials configuration file. You can authenticate to Anypoint Platform by running the `api-catalog conf` command to add your credentials to a configuration file. After you have created the configuration file with valid credentials, you can run the `api-catalog` commands without specifying any credentials flags and the authentication is done using the configuration file values. You can set authentication values in the configuration file using a combination of the following authentication keys: username password client\_id client\_secret host environment organization To create your configuration file: - Run the `api-catalog conf` command with the key value pair you want to use. For example, the following command sets the username and password: $ api-catalog conf username myuser $ api-catalog conf password mypwd The commands store the credential information in the `config.json` file in the following locations: - MacOS: `~/Library/Preferences/@mulesoft/api-catalog-cli-nodejs/config.json` - Windows: `%LOCALAPPDATA%\mycli` - Unix: `~/.config/mycli` **Examples:** - Set a value for a bearer token: $ api-catalog conf bearer b71cab22-e5cc-43c4-90ed-5a1124b6ae1f - Set values for username and password: $ api-catalog conf username myuser $ api-catalog conf password mypwd - Set values for a specific host, organization, and environment: $ api-catalog conf host myco.anypoint.mulesoft.com $ api-catalog conf environment ec7d16cb-43fd-4796-8b4f-5cff7294fcf9 $ api-catalog conf organization 8a840abc-e63a-4f8d-87ad-24052eda3018 - Set values for client ID and client secret: $ api-catalog conf client\_id myClientID $ api-catalog conf client\_secret myCLientSecret Example `config.json` contents after running the above commands: { "bearer": "b71cab22-e5cc-43c4-90ed-5a1124b6ae1f", "username": "myuser", "password": "mypwd", "host": "myco.anypoint.mulesoft.com", "environment": "ec7d16cb-43fd-4796-8b4f-5cff7294fcf9", "organization": "8a840abc-e63a-4f8d-87ad-24052eda3018", "client\_id": "1787c36ab544466698e380131040faad", "client\_secret": "2dA616efca1E4181A2A77BBF046868BE" } #### api-catalog conf Manage authentication credentials in a configuration file (config.json) by adding and removing key value pairs. Set one key value pair per command execution. \> api-catalog conf \[flags\] `` The authentication key name. Possible key names are: username password client\_id client\_secret host environment organization `` The value for the specified authentication key. This command accepts the following flags:
FlagDescription

-d, --delete

Deletes the config file entry for the given key

-h, --help

Shows the help for this command

-k, --key=key

Shows the value that corresponds with the given key

-v, --value=value

Shows the key that corresponds with the given value

### Command Line Flags You can authenticate to Anypoint Platform through the command line by running the `api-catalog` command with a combination of the following flags: \--username --password --client\_id --client\_secret --bearer --organization --environment **Examples:** - Authenticate on the command line using username and password $ api-catalog --username myUserName --password myPassword --organization=myOrgId publish-asset - Authenticate on the command line using client ID and client secret $ api-catalog --client\_id myClientID myClientSecret --organization=myOrgId publish-asset - Authenticate on the command line using a bearer token You can generate a bearer token in Anypoint Platform and pass it to API Catalog CLI directly. When you provide a bearer token, API Catalog CLI ignores any provided user or client credentials. $ api-catalog --bearer myBearerToken --organization=myOrgId publish-asset Your Anypoint Platform session expires when the bearer token expires. For information about generating a bearer token, see [How to Generate Your Authorization Bearer Token for Anypoint Platform](https://help.salesforce.com/s/articleView?id=001115323&type=1). ### Environment Variables You can authenticate to Anypoint Platform by setting a combination of the following environment variables before running an `api-catalog` command: ANYPOINT\_USERNAME ANYPOINT\_PASSWORD ANYPOINT\_CLIENT\_ID ANYPOINT\_CLIENT\_SECRET ANYPOINT\_ORG ANYPOINT\_ENV ANYPOINT\_HOST **Examples:** - Authenticate by setting the environment variables for username and password $ export ANYPOINT\_USERNAME=myUserName $ export ANYPOINT\_PASSWORD=myPassword $ export ANYPOINT\_ORG=myOrgId - Authenticate by setting the environment variables for client ID and client secret $ export ANYPOINT\_CLIENT\_ID=myClientID $ export ANYPOINT\_CLIENT\_SECRET=myCLientSecret $ export ANYPOINT\_ORG=myOrgId --- product: Exchange --- # Generating API Documentation with Generative AI > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Use generative AI to generate API documentation for REST, SOAP, AsyncAPI, GraphQL, gRPC APIs, MCP, and Agents in Exchange, streamlining how your organization manages APIs. AI simplifies your processes by creating consistent, accurate, and current content, which frees you to focus on strategic tasks and enhances developer satisfaction. You can create documentation for API assets that don’t have any documentation. From the asset details page in Exchange, generate the documentation, then manually edit and improve the documentation. After that, publish it to make it available to everyone in your organization. This release supports: - REST APIs (RAML, OAS 2.0/3.0/3.1) - SOAP APIs - AsyncAPI - GraphQL API - gRPC API - MCP - Agents Generate documentation for these APIs whether they are created using a single specification file or multiple specification files. Fragments aren’t supported. ## Documentation Structure AI-generated documentation in Anypoint Exchange standardizes API documentation, addressing inconsistency and incompleteness. AI standardizes the structure and format of the generated documentation across each API including fonts, headers, and text size. Generated documentation includes: - Overview and purpose of the API - Authentication requirements and security details - Base URL and environments - Detailed endpoint documentation including: - Request and response examples - Query parameters - Path parameters - Request body schemas - Response codes and examples - Error handling and status codes - Best practices for implementation - Sample code snippets ## Before You Begin Before generating API documentation with Generative AI, you must have these: - Generate Asset Documentation with AI permission. - Salesforce org account with Agentforce enabled in Anypoint Platform. To enable Agentforce in Anypoint Platform, see [Enable Agentforce for Your Anypoint Platform Organization](https://docs.mulesoft.com/access-management/enabling-generative-ai#enable-einstein-anypoint). - When you upload a zip file, Anypoint Exchange extracts its content before processing. The extracted size of your API specification must not exceed 1.2 MB, and the zip file must not contain more than 50 files. ## Generate API Documentation with Generative AI Generate documentation for API assets that don’t have any documentation. You can edit and save a draft as many times as you like before publishing. > [!IMPORTANT] Drafts aren’t visible to others until you publish them. You must publish the > documentation for it to be available to your organization. 1. Select the API from the catalog and click **Generate documentation** from the asset details page. ![Generate documentation button on asset details page](/mulesoft/current/en-us/exchange/_images/ex-generate-doc.png) 2. Review the generated documentation in draft mode. 3. To edit the AI-generated documentation, click **Edit** in draft mode, make your changes, and save the draft. 4. Click **Publish** to make the documentation visible to everyone in your organization. ![AI-generated documentation in draft mode with Edit documentation option](/mulesoft/current/en-us/exchange/_images/ex-auto-generate-api-doc.png) For more information about editing asset documentation, see [to-describe-an-asset.adoc#edit-asset-documentation](https://docs.mulesoft.com/exchange/to-describe-an-asset#edit-asset-documentation). --- product: Exchange --- # Getting Started with API Catalog CLI > For the full documentation index, see: https://docs.mulesoft.com/llms.txt After you become familiar with the API Catalog CLI concepts covered in [Autocataloging APIs Using API Catalog CLI](https://docs.mulesoft.com/exchange/apicat-about-api-catalog-cli), you are ready to get started autocataloging your APIs. ## Before You Begin To grant permission to run the API Catalog CLI commands that interact with Anypoint Platform: - Enable **API Catalog Contributor**. - If you are authenticating using a connected app, set the **View Environment** scope to the main environment for your organization. > [!NOTE] Permissions must be set in **Access Management** by an Anypoint Platform user with > administrative permission. See the Access Management documentation for details on [managing permissions](https://docs.mulesoft.com/access-management/managing-permissions). ## Get Started with API Catalog CLI To get started with API Catalog CLI: 1. [Install](https://docs.mulesoft.com/exchange/apicat-install-api-catalog-cli) API Catalog CLI. 2. [Get familiar with the general use of API Catalog](https://docs.mulesoft.com/exchange/apicat-use-api-catalog-cli), such as how to pass authentication information and how to use the general command flags. 3. [Create a descriptor file](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-cli) to identify the APIs to publish. 4. [Catalog an asset](https://docs.mulesoft.com/exchange/apicat-publish-using-api-catalog-cli) using API Catalog CLI and view it in Anypoint Exchange. > [!TIP] Consider testing the process end-to-end locally by running the commands at a command prompt > before adding the commands to your CI/CD pipeline or custom scripts. ## See Also - [Autocataloging APIs Using API Catalog CLI](https://docs.mulesoft.com/exchange/apicat-about-api-catalog-cli) --- product: Exchange --- # GoDaddy Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your agents are hosted on GoDaddy ANS, use this page to open the scanner setup topic. ## Agent Scanners - [Add a scanner for GoDaddy ANS](https://docs.mulesoft.com/exchange/adding-godaddy-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Google Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your organization uses Google Cloud or Google API management products, use this page to find the right Exchange scanner. Procedures are in the linked topics; this page is only a map. ## Agent Scanners - [Add a scanner for Google Vertex AI](https://docs.mulesoft.com/exchange/adding-google-vertex-scanner) ## API Scanners - [Add a scanner for Google Apigee](https://docs.mulesoft.com/exchange/adding-apigee-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Assets with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [API scanners](https://docs.mulesoft.com/exchange/api-scanners) - [Managing Scanners](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Importing Agentforce Agents > For the full documentation index, see: https://docs.mulesoft.com/llms.txt > [!NOTE] Importing Agentforce agents from **Settings** is no longer supported. To import Agentforce > agents, create an Agentforce scanner. For more information, see > [Adding a Scanner for Salesforce Agentforce Agents](https://docs.mulesoft.com/exchange/adding-agentforce-scanner). Organizations can import their Agentforce agents into Exchange to include them in business groups. Importing from the same Salesforce organization into a different business group can create duplicate assets in Exchange. Imported Agentforce agents appear in **Agents & Tools**. ## Before You Begin Before importing Agentforce agents, complete these requirements: - [Enable the connection to a Salesforce organization](https://docs.mulesoft.com/access-management/managing-connected-salesforce-orgs#enable-disable-connection) that has an established tenant relationship with your Anypoint Platform organization. - [Enable Einstein in Anypoint Platform](https://docs.mulesoft.com/access-management/enabling-generative-ai) Accept the terms and conditions and set a default organization for Einstein. ## Import Agentforce Agents 1. Select **Settings** from the sidebar and then select the **Asset Import** tab. 2. Click **Import Agents** and then click **Confirm**. Agents are imported in the current business group. 3. Close the dialog and refresh the page after a few minutes. 4. Verify that the Agentforce agents are listed in the Exchange catalog on the **Agents & Tools** page. ## See Also - [Adding a Scanner for Salesforce Agentforce Agents](https://docs.mulesoft.com/exchange/adding-agentforce-scanner) --- product: Exchange --- # Installing API Catalog CLI > For the full documentation index, see: https://docs.mulesoft.com/llms.txt You must install API Catalog CLI before running the commands. ## Before You Begin - Download and install the latest LTS version of NodeJS and npm (node package manager) on your system. See the [NodeJS download page](https://nodejs.org/en/download/). ## Install the CLI: To install the CLI: - Run the following command from your terminal: npm install -g api-catalog-cli@latest > [!NOTE] The install command might give warning messages about the version of npm because the API > Catalog CLI installation package is built using npm version 14. You can ignore these messages. > [!CAUTION] If your installation from npm runs for a long time and does not complete successfully, > work with your security administrator to ensure that your system allows you to successfully > install from npm. --- product: Exchange --- # Kong Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your APIs are published through Kong Gateway, use this topic to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## API Scanners - [Adding a Scanner for Kong Gateway](https://docs.mulesoft.com/exchange/adding-kong-gateway-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [API Scanners](https://docs.mulesoft.com/exchange/api-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # LangChain Platform Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your agents are hosted on LangChain, use this page to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## Agent Scanners - [Add a scanner for LangChain LangSmith](https://docs.mulesoft.com/exchange/adding-langsmith-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Legacy Search Experience > For the full documentation index, see: https://docs.mulesoft.com/llms.txt The legacy search experience, which was previously called the old search, is available in Anypoint Platform Private Cloud Edition, MuleSoft Government Cloud, the US cloud, and the EU cloud. This search experience does not include the enhanced options for searching by rank, organizations, and lifecycle states. The enhanced search is the default search experience when logging into Exchange. To access the legacy search, click the **Back to legacy search** button from the landing page. ## Display Assets in List or Grid View You have the option to display the catalog of assets in list or grid view. List view arranges assets in a list format and grid view displays the assets in tiles. Both views display the asset name, type, rating, and created by information. ## Filter Search Results You can filter search results by asset types (for example, API groups, REST APIs, and rulesets) by selecting an option from the **All types** drop-down menu. The options that appear depend on which types are available within an organization. ## Search in Organization You can search only in the Exchange organization that you are currently viewing. If you are viewing a private Exchange organization, the search lists only that organization’s assets and not MuleSoft public assets. ## Save a Search You can save search criteria that you use often for quick discovery of specific assets. 1. Enter a search term and click **Save This Search**. 2. When prompted, give the search a name and select whether the search is an organizational search or personal search. Administrators can save searches visible to anyone in their current business group. Personal searches are visible only to the person who creates them. 3. Save the search. 4. Confirm that your search appears in the saved searches in the left navigation bar. Exchange lists search terms specific to your business group and the saved searches you created: ![A list of saved searches"](/mulesoft/current/en-us/exchange/_images/ex2-saved-searches-groups.png) ## Search API Specifications You can use the following API specification properties that are used in search: - API title - Base URI - Endpoints - Path - Display name - Description - Methods - Method type (GET, POST, PUT) - Description - Query parameters - Name - Description - URI parameters - Name - Types - Name - Properties - Traits - Properties - Security schemas These property names are based on RAML specifications. Equivalent properties are indexed for OAS specifications. For example, RAML uses base URI, OAS 2.0 uses host and base path, and OAS 3.x uses servers. This example shows an API specification: ```text #%RAML 1.0 --- title: Leagues API version: v1 baseUri: https://leagues.com/api/ types: Team: properties: name: string city: string /leagues/{leagueId}: displayName: League resource description: Contains all the information about a league uriParameters: leagueId: displayName: League ID description: The ID of the league to retrieve information from /teams: get: displayName: Teams directory description: Get list of all teams in the league queryParameters: offset: displayName: Offset description: Offset for the result set responses: 200: body: application/json: type: Team[] post: displayName: Create team description: Creates a new team in the league responses: 201: description: New team has been created ``` These search results include this API:
Search termMatches

league API

API title

leagues.com

API baseUri

/leagues

Endpoint path

League resource

Endpoint display name

Information about a league

Endpoint description

POST

Endpoint method

create team

Endpoint method description

offset

Query parameter name, Query parameter description

leagueid

URI parameter name

team

Type name

city

Type property name

leagues leagueId teams

Endpoint path

/leagues/LEAGUE_ID/teams

Endpoint path

Note that the last two searches are the same, because special characters are removed before searching. ## Search for Phrases You can search for case-insensitive text that begins with each word you specify by adding a space between words. This is similar to putting the `*` wildcard regular expression after each word. For example, searching for `mq module` finds any asset that has text that starts with `mq` or `module`. Searching for a multiple-word phrase shows assets that have every word in the phrase. If you separate search words with any non-alphanumeric character other than a space, Anypoint Exchange converts the character to a space before searching. ### Search Separators The search experience uses search separators to find Exchange assets that contain one or more terms. If you enter search words connected by non-alphanumeric symbols, Exchange replaces the symbols with spaces before searching for the term. The search string only succeeds if both words are present in the result. The result is equivalent to using `word1 AND word2` relationship. Example search terms: ```text sales:connect Sales-Connect connect:/sales -connect -sales ``` This table shows how each search term is interpreted based on the values in the asset name, asset ID, and tags for an asset. If the search term maps to the values correctly, a match occurs. If not, the reason displays when the match does not occur.
Asset NameAsset IDTagsMatches?

Salesforce API

salesforce-api

mule-Connector

Yes

Salesforce Connector

salesforce-connector

REST

Yes

Validations API

validations-api

salesforce-connecting

Yes

Optimized API

optimized-api

resource:/connect, salesforce:enabled

Yes

Cisco Sales API

cisco-sales-api

Connecting, Productive

Yes

Cisco Connector

cisco-connector

com.cisco.connector.sales

Yes, because the tag is split into separate terms.

Salesforce API

salesforce-api

muleconnector, MuleConnector

No. connect was not found.

Salesforce Connect

salesforce-connector

REST

No. connect was not found.

Validations API

validations-api

connector

No. sales was not found.

Cisco Presales API

cisco-presales-api

Connector, api

No. sales was not found.

### Phrase Search Separators Use phrase search to find a group of terms inside quotation marks. Phrase searches match an asset only if all the exact terms inside quotes appear in consecutive order. If you enter any of these searches in Exchange, Exchange replaces non-alphanumeric symbols with spaces before searching for assets. Example search terms: ```text Api: "Sales connect" Api "Sales-connect" Api "Sales:/connect" Api-"Sales/connect" "Sales connect":Api ``` This table shows how each search term is interpreted based on the values in the asset name, asset ID, and tags for an asset. If the search term maps to the values correctly, a match occurs. If not, the reason displays when the match does not occur.
Asset NameAsset IDTagsMatches?

Salesforce API

salesforce-api

mule-Connector

No. sales connect was not found.

Salesforce Connector

salesforce-connector

REST

No

Sales Connect Asset

validations-api

mule-connector

Yes

Sales Connect Images

validations-images

mule-connector

No. api was not found.

Optimized API

optimized-api

resource:/connect, sales:enabled

No. sales connect was not found.

Optimized API

optimized-api

resource:/sales, connect:enabled

No. sales connect was not found, because each term is in different tags.

Optimized API

optimized-api

sales:/connect

Yes

## Search by Types, Tags, Categories, and Custom Fields You can enter a search keyword in the **Search assets** box to find assets. You can click **All Types** to set a filter for specific asset types or combine search text with the filters listed in the **Types** menu. The search experience uses a query language to search assets by tags, categories, and custom fields. ### Search by Tags You can search by tags using either `tag:"some value"` or `tag:value`. If the value has no spaces, then double quotes are optional. Tag search is case-insensitive. Examples:
SearchTagsMatches?

tag:"some value"

some value

Yes

tag:"some value"

value

No

tag:"value"

value

Yes

tag:value

value

Yes

tag:VALUE

value

Yes

tag:VaLuE

value

Yes

tag:value

val

No

### Search by Categories You can search by categories using `category:"some key" = "some value"`. If the category has no spaces in the key or value, then double quotes are optional. The key can include the asterisk (`*`) regular expression to search for characters within a category name. The key is case-sensitive. A search value matches an asset value if either of these is true: - The search value is entirely lowercase. - The letter case of the search value and the asset value match. Examples:
SearchCategoryMatches?

category:my-key = my-value

my-key:my-value

Yes

category:my-key = MY-VALUE

my-key:MY-VALUE

Yes

category:my-key = my-value

my-key:MY-VALUE

Yes

category:"my key" = "my value"

my key:my value

Yes

category:"key" = "value"

my key:my value

No

category:key = value

my-key:my-value

No

category:this.* = value

this.is.my.key:value

Yes

category:*my.key = value

this.is.my.key:value

Yes

category:this.* = value

this.is.my.key:some-value

No

category:this.* = some-*

this.is.my.key:some-value

No

You can search for a combination of different categories. You cannot search for multiple values of the same category. Multiple search terms use an implicit `AND`. `OR` is not supported. These search terms return all assets marked as both system APIs and Salesforce products: `category:"API Type" = "System API" category:"Product" = "Salesforce"` ### Search by Custom Fields You can search by fields using `field:"some key" = "some value"`. If the custom field has no spaces in the key or value, then double quotes are optional. The key can include the asterisk (`*`) regular expression to search for characters within a field name. The key is case-sensitive. A search value matches an asset value if either of these is true: - The search value is entirely lowercase. - The letter case of the search value and the asset value match. Examples:
SearchFieldMatches?

field:my-key = my-value

my-key:my-value

Yes

field:my-key = MY-VALUE

my-key:MY-VALUE

Yes

field:my-key = my-value

my-key:MY-VALUE

Yes

field:my-key = My-ValUe

my-key:MY-VALUE

No

field:MY-KEY = my-value

my-key:my-value

No

field:my-key = 10

my-key:10

Yes

field:"my key" = "my value"

my key:my value

Yes

field:"key" = "value"

my key:my value

No

field:key = value

my-key:my-value

No

field:this.* = value

this.is.my.key:value

Yes

field:*my.key = value

this.is.my.key:value

Yes

field:this.* = value

this.is.my.key:some-value

No

field:this.* = some-*

this.is.my.key:some-value

No

--- product: Exchange --- # Manage Client Applications > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Manage your client applications by using the **My Applications** page. This page lists applications that hold a contract with an API or an API group. To view this page, select **My applications** from the navigation bar. ![ex2 my applications](/mulesoft/current/en-us/exchange/_images/ex2-my-applications.png) Applications are registered using API Manager in Anypoint Platform. To register a client application to an existing API or API Group, the client application must first request access. When the request is approved by the API or API Group owner, a contract is created between the client application and the API or API Group, and the client application is registered. If you don’t have an application to link to the API or API Group, you can create the application in the **Request Access** menu. You can then click **Request Access** to connect your application and the API or API Group. Some APIs and API Groups require selecting a service-level agreement (SLA), and some APIs and API Groups require accepting terms and conditions. APIs and API Groups that are protected by a client ID enforcement policy require client applications to provide a client ID and optional client secret. The client ID and client secret credentials are automatically created when the client application is registered. An API owner can use API Manager to view all API contracts ever created for an API or API Group instance. Client app owners can assign other users and teams to view and manage a client application using the **My Applications** page in Exchange. An API consumer can use the Exchange **My Applications** page to view the contracts created between an API instance or API Group instance and that consumer’s client applications. ## View Client Applications Details Each client application has a client ID, client secret, description, URL, redirect URIs, grant types, and usage dashboard. To see the details of a client application, select **My application** from the sidebar and select an application from the list. To find an application, search the list of applications by entering a name or description in **Search** and press **Enter**. ## Edit Client Application Details You can change the client application details. These include name, description, URL, and OAuth 2.0 redirect URIs. To make changes, click **Edit**. After making your updates, click **Update** to save your changes. ## Delete a Client Application When you don’t need the contract for an application, you can delete it. After the application is deleted, there’s no longer a contract with the application and you can’t access it. To regain access, request access to the API again. 1. From the sidebar, select **My applications** and click the name of the application. 2. Click ![The more options icon](/mulesoft/current/en-us/exchange/_images/ex2-more-options-icon.png) and select **Delete application**. 3. Confirm that you want to delete the application by clicking **Delete application**. ## Reset Client Secret You can reset the client secret for an application on a set schedule to ensure security, even if users leave the company. Resetting the secret also ensures it isn’t unintentionally shared with unauthorized users. Applications using the current client secret can’t access any of the APIs with which they were registered. 1. From the sidebar, select **My applications** and click the name of the application. 2. Click ![The more options icon](/mulesoft/current/en-us/exchange/_images/ex2-more-options-icon.png) and select **Reset client secret**. 3. Confirm that you want to delete the application by clicking **Reset client secret**. The client secret is reset. In the application details section, click **Show** to see the new client secret. ## Add and Change an SLA Tier SLA tiers are defined in API Manager. If an application doesn’t have an SLA tier listed, you can request to add an SLA tier. You can also change the SLA tier for an application. The available SLA tiers are set by an admin in API Manager. The owner of the API instance must approve the request to add or change the tier level. To add or change an SLA tier: 1. From the sidebar in Exchange, select **My applications** and click the name of the application. 2. From the instances panel, move the cursor over an instance and click **View SLA Tier**. 3. Click **Manage SLA Tiers**, select an SLA tier, and click **Submit**. ## View Usage Information See usage information for the instances of a client application using the application dashboard. The dashboard shows graphs for: - Total requests - Average latency (ms) - Requests by status code - Requests by HTTP status code - Error percentage You can set a date range to display for all the charts in your dashboard. If not specified, the range is the previous eight days. 1. From the sidebar in Exchange, select **My applications** and click the name of the application. 2. Select one of more instance. 3. Click the calendar dropdown, select a date range, and click **Confirm**. ## See Also - [Request Access](https://docs.mulesoft.com/exchange/to-request-access) --- product: Exchange --- # Manage Versions > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Manage the versions of an asset by viewing version detail, adding a new version, deleting a version, and changing the lifecycle state for a version. ## View Version Detail You can view the following information about a version of an asset: - Name of the owner who published the asset - Date the version was published - Lifecycle status To view the details of a version: 1. Click **Manage versions** in the expanded asset details pane. 2. Click the three dots menu and choose **Version detail** from the menu. ## Add New Version of an Asset If you have contributor or admin access to an asset, you can add a new version for an asset. The new version of the asset has the same name, icon, and description as the previous version. Any changes to these properties apply to all versions of the asset. 1. Click **Manage versions** in the expanded asset details pane. 2. Click **Add new version**. 3. (Required for APIs) Select a **Method** for the API specification. 4. (Required for APIs) From **File upload** click **Choose file**. For OAS, choose an OAS file with the .yaml or .json file types. For RAML, choose a RAML file with the .raml file type. Zip files are also accepted with the file to upload residing in the zip file’s root directory. 5. Specify the **Main file** if the uploaded file is a zip. Otherwise, Exchange uses the same file name as the file you upload. 6. (Required) In **Version** , enter a new version for the asset. 7. (Required) In **the \*API version**, enter the version of the API specification. The Version and API version values must agree. You can only choose minor version updates for a given API version. To set a major Version number, also increase the API version. If you choose minor or patch version updates, the API versions should not changed. 8. Select a **Lifecycle state**. The default is **Stable**. 9. Click **Publish** ## Delete a Version of an Asset You can delete versions of an asset. If you try to delete an asset version with dependent assets, Exchange shows a warning. Remove the dependencies and then delete the asset version. 1. Click **Manage versions** in the expanded asset details pane. 2. Click the three dots menu and choose **Delete version** from the menu. 3. Click **Delete version** from the confirmation dialog. ## Change Lifecycle State for a Version of an Asset The lifecycle state for a version of an asset can be changed depending on the following state promotions: - `development` to `stable` - `stable` to `deprecated` - `deprecated` to `stable` If an asset in the development state depends on one or more other assets in the development state, Exchange does not allow promoting that asset to the stable state. All its dependencies must first be promoted to stable. 1. Click **Manage versions** in the expanded asset details pane. 2. From the drop-down menu next to the lifecycle state that you want to change, choose a state following the correct promotion path. 3. Click **Close**. ## Manage Policy Implementation Version From the asset details page in Exchange, manage the implementation versions of a policy asset from the **Manage implementations** table, which displays the latest version. You can view, add, and delete versions: 1. Click **Implementations** from the left navigation bar. 2. To manage the versions of an implementation, click the more options menu and select an option: 1. To view the versions, select **Implementation versions**. 2. To add a new version, select **Add new version** and enter the version. 3. To delete a version, select **Delete version**. 3. Click **Close**. ## Update Policy Implementations To update policy implementations to be compatible with your Omni Gateway version: 1. Go to the **Policies** page. 2. Under **Applied policy status**, you’ll see the policies that need updating. Click the more options menu icon and click **Check for implementation updates**. 3. The newest policy implementation compatible with your current version shows. An error message will show if you have no policy implementations compatible with your current Omni Gateway version. See [Add Policy Implementation Files to Published Policy Definition](https://docs.mulesoft.com/exchange/add-policy-implementation-files-to-published-policy-definition) for more info. 4. In the confirmation dialog box, click **Update all**. The policy displays under **API-level policies**. > [!WARNING] This action cannot be undone. For automated policies: 1. Go to the **Automated Policies** page. 2. Under **Applied automated policy status**, you’ll see the policies that need updating. Click the more options menu icon and click **See covered APIs** to get a list of the APIs using the incompatible policy. - If you want to remove the policy from the APIs, click **Remove the automated Policy**. - The automated policy is removed from the APIs. - If you want to update the policy implementation to a compatible version, click **Check for updates**. - A list of all available policy implementations for your current version shows. - In the confirmation dialog box, click **Update all**. - The policy displays under **Automated policies**. > [!WARNING] This action cannot be undone. --- product: Exchange --- # Managing Asset Deletion > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Control how assets are deleted in Exchange from **Settings**. Admins can choose how asset owners can delete asset versions in Exchange. They can enable or disable the ability to permanently delete an asset to reuse the GAV (group ID, asset ID, and version) for a new asset. It doesn’t matter when the asset version was created. When enabled, asset owners see an option to allow the GAV to be reused when deleting an asset version. When disabled, the GAV can’t be reused after deleting the asset version. To enable or disable the option to delete an asset and reuse the GAV: 1. From the navigation bar, select **Settings** and select **Asset Deletion & Connected Apps Management**. 2. In **Asset Deletion Configuration**, enable or disable the option. ## See More - [Deleting an Asset](https://docs.mulesoft.com/exchange/to-delete-asset) --- product: Exchange --- # Managing Asset Lifecycle States > For the full documentation index, see: https://docs.mulesoft.com/llms.txt In the software development lifecycle, assets are developed, released, and eventually deprecated, and each Exchange asset version moves through the lifecycle states of `development`, `stable`, and `deprecated`. ## Development State An asset version in the `development` state is in an iterative process of design and development. If you republish an asset version in the `development` state with the same groupId, assetId, and version (GAV) and new metadata, the asset version is overwritten, including the following version metadata: - Files - Dependencies - Keywords Changing this information for an asset version in any other state requires creating a new version, which prevents republishing or overwriting the asset version. Overwriting an asset version also updates the search index. The following information is not overwritten when republishing an asset in the development state: - Asset type - Tags - Categories - Custom fields - Documentation pages Deleting an asset version in the `development` state is always a hard delete, enabling you to reuse the asset’s name, groupId, assetId, and version. The public portal does not show asset versions in the `development` state. Anypoint Platform products other than Exchange, such as Anypoint Studio, API Manager, or Anypoint DataGraph do not consume asset versions in the `development` state. ## Stable State An asset version in the `stable` state is ready to be consumed. The asset cannot be republished or overwritten. Deleting an asset version in the `stable` state in the first seven days is a hard delete, enabling you to reuse the asset’s name, groupId, assetId, and version. Deleting an asset version in the `stable` state after the first seven days is a soft delete, preventing you from reusing the asset’s name, groupId, assetId, and version. After a hard delete or a soft delete, an asset cannot be recovered. The Exchange backend and some API responses use the term `published` to mean `stable`. ## Deprecated State An asset version in the `deprecated` state is similar to an asset version in the `stable` state. The only difference is that the `status` property shows the asset version is deprecated. ## Create an Asset in the Exchange User Interface 1. Click **Publish new asset**. 2. Set **Lifecycle state** to the **Development** state or the default **Stable** state. 3. Set other asset information. 4. Click **Publish**. ## State Promotion These are the three possible state promotions: 1. `development` to `stable` 2. `stable` to `deprecated` 3. `deprecated` to `stable` Only Administrators can promote an asset to development, stable, and deprecated states. Contributors can only promote an asset to development and stable. Promote an asset version’s state either in the asset’s Exchange portal or by using the Exchange API. In the asset’s documentation page, click the lifecycle state button that displays the current state, and select the new state of **Development**, **Stable**, or **Deprecated**. To use the Exchange API, follow the [Promote Lifecycle State](https://docs.mulesoft.com/exchange/exchange-api#promote-lifecycle-state) example. ## State Dependencies An asset in the `stable` state cannot add an asset in the `development` state as a dependency. If an asset in the `development` state depends on one or more other assets in the `development` state, Exchange does not allow promoting that asset to the `stable` state. All dependencies of the asset should be promoted to stable first. If an asset in the `development` state has dependencies in `development` state and the dependent is modified, the dependent asset is also not regenerated. It is the asset owner’s responsibility to republish the dependent asset once its dependencies are updated. ## Create an Asset Using the Exchange API To create an asset using the Exchange API, follow the [Set Lifecycle State](https://docs.mulesoft.com/exchange/exchange-api#set-lifecycle-state) example. ## Create an Asset Using Maven To create an asset using the Exchange Maven Facade API, follow the [Asset Lifecycle State](https://docs.mulesoft.com/exchange/to-publish-assets-maven#asset-lifecycle-state) example. ## Search Using the Graph API by Lifecycle State To consume an asset and its lifecycle state, or to search for an asset by lifecycle state, follow the [Asset Lifecycle State](https://docs.mulesoft.com/exchange/to-search-with-graph-api#asset-lifecycle-state) examples. ## See Also - [Delete an Asset](https://docs.mulesoft.com/exchange/to-delete-asset) - [Publish Assets Using the Exchange API](https://docs.mulesoft.com/exchange/exchange-api) - [Publish Assets Using Maven](https://docs.mulesoft.com/exchange/to-publish-assets-maven) - [Search Using the Graph API](https://docs.mulesoft.com/exchange/to-search-with-graph-api) - [Graph API Web Interface](https://anypoint.mulesoft.com/graph/api/v2/graphql) --- product: Exchange --- # Managing Asset Portal Resources > For the full documentation index, see: https://docs.mulesoft.com/llms.txt You can upload up to 100 resources to an asset portal. Attempting to add more will result in an error. You can delete resources to reduce the number and then add more up to the limit. Only image resources can be uploaded to asset portals. Allowed image formats are: `bmp`, `gif`, `ico`, `jpe`, `jpeg`, `jpg`, `png`, `svg`, `tif`, `tiff`, or `webp`. The size limit for an image resource is 2 MB. These examples show how to list, retrieve, and delete resources from an asset portal with the Exchange Experience API. ## Authentication Log in to Anypoint Platform and get an authentication token. Begin every request with the header `Authorization: bearer ACCESS_TOKEN`. ```console ACCESS_TOKEN=$(curl https://anypoint.mulesoft.com/accounts/login \ -XPOST -d "username=YOUR_USERNAME&password=YOUR_PASSWORD" | \ jq -r ".access_token") ``` ## Using the API To list all resources: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/portal/draft/resources \ -H 'Authorization: bearer YOUR_ACCESS_TOKEN' ``` To get a specific resource: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/portal/draft/resources/:resourceId \ -H 'Authorization: bearer YOUR_ACCESS_TOKEN' ``` To delete a specific resource: ```console curl -X DELETE \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/portal/draft/resources/:resourceId \ -H 'Authorization: bearer YOUR_ACCESS_TOKEN' ``` With: groupId: The asset's groupId assetId: The asset's assetId version: The asset's version resourceId: The resource file name. --- product: Exchange --- # Managing Categories > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Use categories to organize Exchange assets into groups to improve asset browsing and discovery. For example, a category named API Type with possible values System API, Experience API, and Integration API is applied to assets of type REST API, SOAP API, and HTTP API: ![The Setting page showing categories for API type](/mulesoft/current/en-us/exchange/_images/ex-categories-api-type.png) To create a category, you must be either the root organization’s Exchange Administrator or Organization Owner. When you have one or more categories defined in the **Settings** page, your organization’s assets display the **Add categories** option in the asset details pane. ## Create a Category 1. In Anypoint Exchange, click **Login** and log in to your organization. 2. Click **Settings** in the sidebar. 3. Click **Add new category**. 4. Enter a category name. Each category name must be unique. 5. Enter one or more values. Each category must have a value. 6. Press the Return/Enter key or click the plus sign next to the value to confirm the value: ![The Settings page showing the highlighted + icon to confirm a value](/mulesoft/current/en-us/exchange/_images/ex-category-value.png) Note: If a plus sign is not clicked, the check mark to indicate the category has no effect. 7. Choose the asset types that the category corresponds to. 8. Click the checkmark to enable the category. ## Apply a Category After a category is created, it can be applied to an asset in your organization. 1. Click an asset in your organization. 2. In the asset details pane, click **Add categories** and choose the category and value from the list. ## Search with Categories in Exchange Private Cloud Edition or MuleSoft Government Cloud In the Exchange search field, specify the `category:` search term and the category value to list the assets. For example, to find assets of API Type, search for `category:"API Type" = "System API"`. You can search for a combination of different categories, but you can’t search for multiple values of the same category. Multiple search terms use an implicit AND. OR is not supported. The following search terms return all assets marked as both System APIs and Salesforce products: `category:"API Type" = "System API" category:"Product" = "Salesforce"` ## Search with Categories in Exchange Cloud Select a category such as **API Type** from the list, and select one or more values such as **System API**. Exchange shows assets that have one of the selected values for the selected category. You can search for a combination of categories, and you can search for multiple values for the same category. Multiple values for the same category are combined with the OR operator. ## Change or Delete a Category Categories can be deleted at the individual asset level which only removes the category from that asset. Categories can also be deleted at the global level in Settings, but doing so removes the category from all assets. --- product: Exchange --- # Managing Connected Apps > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Connected apps are applications that allow external applications to securely interact with the Anypoint Platform APIs by providing controlled access to its resources using OAuth 2.0 authentication protocols, without the need to share user credentials directly. For more information, see [Connected Apps in Anypoint Platform](https://docs.mulesoft.com/access-management/connected-apps-overview). When an asset is created using a connected app and is published to Exchange, the creator of the asset is automatically set as the owner of the connected app. Control whether or not to assign owner roles when creating assets using a connected app to avoid going over the maximum role [limit](https://docs.mulesoft.com/access-management/troubleshooting-anypoint-platform-access#access-management-limits). When enabled, when creating new assets using a connected app, roles aren’t assigned to connected app owners. When disabled, roles are assigned by default. 1. From the navigation bar, select **Settings** and select **Asset Deletion & Connected Apps Management**. 2. In **Connected Application Owner Configuration**, enable or disable the option. ## See Also [Connected Application Authentication](https://docs.mulesoft.com/exchange/connected-app-authentication) --- product: Exchange --- # Managing Custom Fields > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Exchange administrators and organization owners can create custom fields to extend the Exchange asset metadata model and add custom data to any type of asset. A custom field is a key-value pair that can be added to an asset version. Custom fields are managed, which means each asset type has a specific schema defined by an administrator. This enables Exchange to validate the values. For example, an asset can have a custom field configuration named "SupportEndDate," and Exchange can ensure that the value set for this field is a valid date. Exchange displays custom fields in the asset detail page. ## Get an Access Token Get an access token with a cURL command such as the following. Optionally, instead of sending HTTP commands with cURL, you can use Postman or another application. Replace `YOUR_USERNAME` with your Anypoint Platform user account name and replace `YOUR_PASSWORD` with your password. ```console ACCESS_TOKEN=$(curl https://anypoint.mulesoft.com/accounts/login -XPOST -d "username=YOUR_USERNAME&password=YOUR_PASSWORD" | jq -r ".access_token") ``` Use this access token in your API calls to configure and assign custom fields. ## Supported Types Exchange supports custom fields of the types enum, number, date, text, list of numbers, and list of strings. ### Enum This example shows how to create a custom field of the type `enum`, a list of enumerated values, with the name **SubType** and the possible values **OAS** and **RAML**. Create your own custom field by setting the organization ID and changing the data parameters after the `-d` flag. ```console curl -X POST \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "dataType": "enum", "acceptedValues": ["OAS","RAML"], "displayName": "SubType", "tagKey": "subType" }' ``` This example shows how to add this field to any asset in an organization. Add the field to your own asset by setting the organization ID, group ID, asset ID, and version in the URL, changing the tag key `subType` to your tag key, and changing the data parameters after the `-d` flag. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/subType \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": ["OAS"] }' ``` ### Number This example shows how to create a custom field of the type `number` with the name **Rating**. Create your own custom field by setting the organization ID and changing the data parameters after the `-d` flag. ```console curl -X POST \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "dataType": "number", "displayName": "Rating", "tagKey": "rating" }' ``` This example shows how to add this field to any asset in an organization. Add the field to your own asset by setting the organization ID, group ID, asset ID, and version in the URL, changing the tag key `rating` to your tag key, and changing the data parameters after the `-d` flag. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/rating \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": 5 }' ``` ### Date This example shows how to create a custom field of the type `date` with the name **DueDate**. Create your own custom field by setting the organization ID and changing the data parameters after the `-d` flag. ```console curl -X POST \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "dataType": "date", "displayName": "DueDate", "tagKey": "dueDate" }' ``` This example shows how to add this field to any asset in an organization. Add the field to your own asset by setting the organization ID, group ID, asset ID, and version in the URL, changing the tag key `dueDate` to your tag key, and changing the data parameters after the `-d` flag. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/dueDate \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": "2020-01-01T20:00:00.000Z" }' ``` ### Text This example shows how to create a custom field of the type `text` with the name **email**. Create your own custom field by setting the organization ID and changing the data parameters after the `-d` flag. ```console curl -X POST \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "dataType": "text", "displayName": "Email", "tagKey": "email" }' ``` This example shows how to add this field to any asset in an organization. Add the field to your own asset by setting the organization ID, group ID, asset ID, and version in the URL, changing the tag key `email` to your tag key, and changing the data parameters after the `-d` flag. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/email \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": "john@doe.com" }' ``` ### List of Numbers This example shows how to create a custom field of the type `number-list` with the name **SupportCases**. Create your own custom field by setting the organization ID and changing the data parameters after the `-d` flag. ```console curl -X POST \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "dataType": "number-list", "displayName": "SupportCases", "tagKey": "supportCases" }' ``` This example shows how to add this field to any asset in an organization. Add the field to your own asset by setting the organization ID, group ID, asset ID, and version in the URL, changing the tag key `supportCases` to your tag key, and changing the data parameters after the `-d` flag. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/supportCases \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": [1010,2020,3030] }' ``` ### List of Strings This example shows how to create a custom field of the type `text-list` with the name **Maintainers**. Create your own custom field by setting the organization ID and changing the data parameters after the `-d` flag. ```console curl -X POST \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "dataType": "text-list", "displayName": "Maintainers", "tagKey": "maintainers" }' ``` This example shows how to add this field to any asset in an organization. Add the field to your own asset by setting the organization ID, group ID, asset ID, and version in the URL, changing the tag key `maintainers` to your tag key, and changing the data parameters after the `-d` flag. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/maintainers \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": ["John", "Alice", "Fred"] }' ``` ## Restrict Asset Types You can restrict a custom field so that it can only be added to certain types of assets. This example shows how to create a custom field that only applies to REST APIs. Create your own custom field by setting the organization ID and changing the data parameters after the `-d` flag. ```console curl -X POST \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "dataType": "enum", "acceptedValues": ["OAS","RAML"], "displayName": "SubType", "tagKey": "subType", "assetTypeRestrictions": ["rest-api"] }' ``` ## Delete a Custom Field from an Asset Version This example shows how to delete the custom field `subType` from a specific asset version. Delete a custom field by setting the organization ID, group ID, asset ID, and version, and changing the tag key `subType` to your tag key. ```console curl -X DELETE \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/subType \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' ``` ## Delete a Custom Field This example shows how to delete the custom field `subType` from all assets in an organization. Delete a custom field by setting the organization ID and changing the tag key `subType` to your tag key. ```console curl -X DELETE \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/fields/subType \ -H 'Authorization: bearer $ACCESS_TOKEN' \ -H 'Content-Type: application/json' ``` --- product: Exchange --- # Managing Public Portal Resources > For the full documentation index, see: https://docs.mulesoft.com/llms.txt You can upload up to 100 resources to a public portal. Each image is one resource. Attempting to add more will result in an error. You can delete resources to reduce the number and then add more up to the limit. These examples show how to list, retrieve, and delete resources from a public portal with the Exchange Experience API. ## Authentication Log in to Anypoint Platform and get an authentication token. Begin every request with the header `Authorization: bearer ACCESS_TOKEN`. ```console ACCESS_TOKEN=$(curl https://anypoint.mulesoft.com/accounts/login \ -XPOST -d "username=YOUR_USERNAME&password=YOUR_PASSWORD" | \ jq -r ".access_token") ``` ## Using the API To list all resources: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/portals/:organizationDomain/draft/resources \ -H 'Authorization: bearer YOUR_ACCESS_TOKEN' ``` To get a specific resource: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/portals/:organizationDomain/draft/resources/:resourceId \ -H 'Authorization: bearer YOUR_ACCESS_TOKEN' ``` To delete a specific resource: ```console curl -X DELETE \ https://anypoint.mulesoft.com/exchange/api/v2/portals/:organizationDomain/draft/resources/:resourceId \ -H 'Authorization: bearer YOUR_ACCESS_TOKEN' ``` With: organizationDomain: Your organization's domain resourceId: The image file name. --- product: Exchange --- # Managing Scanners In Exchange > For the full documentation index, see: https://docs.mulesoft.com/llms.txt To view and manage your scanners, click **Scanners** in the sidebar of Exchange. You can perform these actions to manage scanners: - [Run a scanner](#run-a-scanner) - [View scanner details](#view-scanner-details) - [Review scan results manually](#review-scan-results-manually) - [Abort a scan](#abort-scans) - [Delete a scanner](#delete-a-scanner) - [Edit a scanner configuration](#edit-scanner-configuration) - [View audit logs](#view-audit-logs) ## Run a Scanner Run the scanner manually to capture new services and add them to Exchange. Scanners run once daily and retrieve up to 1,200 services per scan, with a maximum runtime of 6 hours. Exchange retains scan logs and statuses for at least 90 days and never deletes the most recent run. Run one scan at a time for each provider. 1. From the sidebar in Exchange, click **Scanners**. 2. Find the scanner in the list, click the more options icon (![2%](/mulesoft/current/en-us/exchange/_images/more-options-icon.png)) and then select **Run Now**. The scan waits in the queue until the current scan finishes. ## View Scanner Details View a list of scanners and the details about their scans. The **Scanners** page lists the scanners added for the business group. The scanner details show information about the scanner, connection, last completed run, and scan history. Scanner statuses are: - Scheduled - Paused - Pending review - Queued - Running - Importing - Stopped To see more information about a scanner and its scan details, from the sidebar in Exchange, click **Scanners** and click the name of a scanner from the list. Here’s an example details page: ![Scanner details page showing a list of scanners](/mulesoft/current/en-us/exchange/_images/scanner-details.png) The **Actions** menu on the scanner details page includes these options, depending on the scanner status:
Scanner StatusActions Menu Options

Scheduled or Paused

  • Run Now

  • Edit Scanner

  • Delete Scanner

Queued, Running, or Importing

  • Abort Scan

Stopped

  • Edit Scanner

  • Delete Scanner

## Review Scan Results Manually Review the scan results and determine which services to import into Exchange. When a scanner’s scheduled run configuration is set to **Ask to review**, its status changes to **Pending review** in the scanner details page after the scan completes. Otherwise, the scan results are automatically imported into Exchange if set to **Auto-resolve**. While reviewing scan results, note these behaviors: - If another scan completes while you are reviewing, the current queue becomes stale and can’t be submitted. It remains available read‑only in the audit history. Open the latest scan to continue. If another scan configuration already registered the same service, the system skips or updates as needed (no downgrades) and logs the outcome. - If you don’t confirm the scan result changes, the services are not imported into Exchange. The scan results are available in the audit log. When the scanner runs again, the services are scanned again and the previous results are stale and are overwritten by the new scan results. Consider updating the scanner configuration to **Auto-resolve** to automatically import services without manual review. Here’s what you see on the scanner’s list page: ![Scanners list page showing a list of scanners](/mulesoft/current/en-us/exchange/_images/scanner-list.png) - A tabular list of discovered scanners that reflects the filters and the scanner configuration. - Key columns: Scanner Status, Scanner Name, Provider, Service Type, Last Completed Run, Last Run Status, Next Run, Total Services For each scanner in the list, you can perform these actions from the more options menu (![2%](/mulesoft/current/en-us/exchange/_images/more-options-icon.png)): - Run the scanner now - Edit the scanner configuration - Delete the scanner Select the scanner with a status of **Pending review** to open the review details and click **Review & Import**. ![Scan details for manual review](/mulesoft/current/en-us/exchange/_images/scan-details-for-manual-review.png) These tabs indicate how each service will be handled: - Add: first discovery; not yet in the registry - Update: Already in the registry; metadata changed at source - Missing: In the registry but not found in this scan; if in use, show “missing from source”; if not used, it can be removed after a retention window (for example, 30 days) - Existing: Already in the Exchange; no changes detected - Skipped: Services that were deselected in a prior review Select what to import: - All services are selected by default. Deselect individual services, or deselect all and pick only the ones to import. - Deselected services aren’t imported now and aren’t added to the Skipped list; they remain pending and will reappear in the next scan. Previously deselected items show a “Previously Skipped” badge; if the source version changed, the badge indicates a newer version is available. Skip services from future scans: - Use the action menu to add the service to the Skipped list. Skipped services won’t appear in future scan results for that source unless you remove them from the Skipped list. - The Skipped list view lets you review and restore skipped services by selecting **Remove from Skipped** from the more options menu (![2%](/mulesoft/current/en-us/exchange/_images/more-options-icon.png)). Queue freshness and rescans: - If another scan completes while you’re reviewing, the current review queue becomes stale and can’t be submitted; it’s preserved read‑only in audit history, and a banner directs you to the latest scan. - A “Last scanned X days ago” label indicates freshness. If available, use Rescan to refresh results without losing your current selections. Multiple scan configurations: - If another scan configuration already registered a service: - Same version: Skip and log - Newer version: Update in place and log the version change - Older version: Skip (no downgrade) and log - Flagged for deletion but already removed: treat as success and log - After import, a summary shows what was imported, updated, or skipped and why. To manually review the scan results: 1. From the sidebar in Exchange, click **Scanners**. 2. Click the scanner with a status of **Pending review** to open the review details. 3. Review the list of discovered services. 4. Choose what to import: 1. Keep services selected to include them. 2. Deselect any services you don’t want to import now. 5. Click the available action button for your current selection to apply changes. ## Abort Scans Abort scans for a scanner when its status is queued, running, or importing. When the scan is aborted, the status is updated to stopped. - To abort a scan from the **Scanners** page: 1. From the sidebar in Exchange, click **Scanners**. 2. Find the scanner in the list, click the more options icon (![2%](/mulesoft/current/en-us/exchange/_images/more-options-icon.png)) and then select **Abort Scan**. - To abort a scan from the scanner details page, click **Actions** and then select **Abort Scan**. ## Delete a Scanner Delete an unused scanner when its status is scheduled, paused or stopped. Choose whether to keep or delete the services associated with the scanner. Imported services remain in Exchange if instances exist in API Manager. 1. From the sidebar in Exchange, click **Scanners**. 2. Find the scanner in the list, click the more options icon (![2%](/mulesoft/current/en-us/exchange/_images/more-options-icon.png)) and then select **Delete Scanner**. 3. Choose whether to keep or delete imported services and click **Delete**. ## Edit Scanner Configuration Edit settings for a scanner with a status of scheduled, paused, or stopped, and turn scheduled scans on or off. - To edit a scanner from the **Scanners** page: 1. From the sidebar in Exchange, click **Scanners**. 2. Find the scanner in the list, click the more options icon (![2%](/mulesoft/current/en-us/exchange/_images/more-options-icon.png)) and then select **Edit Scanner**. 3. Make your changes, and click **Update**. - To edit a scanner from the scanner details page: 1. Click **Actions** and then select **Edit Scanner**. 2. Make your changes, and click **Update**. ## View Audit Logs View audit logs for scanners. In the audit log, view scan details, such as services that were imported, updated, removed, and already in Exchange, and unsuccessful scans. The available tabs depend on the scan results. Here’s an example audit log: ![Audit log showing details of a scan event](/mulesoft/current/en-us/exchange/_images/scanner-audit-log.png) 1. From the sidebar in Exchange, click **Scanners**. 2. Select the scanner from the list. 3. Select an event from **Scan History**. 4. To view imported services, click the **Imported** tab. 5. To view updated services with newer versions available, click the **Updated** tab. 6. To view services removed from Exchange because they’re missing from the provider, click the **Removed** tab. 7. To view services that are found in the provider’s system and already in Exchange, click the **Already in Exchange** tab. 8. To view unsuccessful scans, click the **Unsuccessful** tab. --- product: Exchange --- # MCP Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt MCP server scanners connect external MCP server gateways to Anypoint Platform. They discover, catalog, and sync MCP servers from third‑party platforms into Exchange, apply governance rulesets across gateways, optionally front external endpoints with Omni Gateway, and support guided migrations to bring external APIs under Anypoint management. These are the supported MCP server scanners: - [Adding a Scanner for Amazon Bedrock AgentCore MCP](https://docs.mulesoft.com/exchange/adding-agentcore-mcp-scanner) - [Adding a Scanner for Azure API Management MCP Server](https://docs.mulesoft.com/exchange/adding-azure-apim-mcp-scanner) - [Adding a Scanner for Databricks MCP Server](https://docs.mulesoft.com/exchange/adding-databricks-mcp-scanner) - [Adding a Scanner for Snowflake MCP Server](https://docs.mulesoft.com/exchange/adding-snowflake-mcp-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Metrics for a Specific Asset and Version > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Administrators and asset owners with contributor permission can view usage details for a specific API specification fragment, REST API asset, and their versions on the asset details page. This page identifies asset versions with overall high usage and versions with low usage. The usage rates can help you understand the performance and stickiness of specific asset versions within your organization and enable you to make informed decisions about reuse and improvements. The following graphic shows the asset details page with usage and engagement metrics: ![Assets details page with usage and engagement metrics](/mulesoft/current/en-us/exchange/_images/ex-metrics-for-asset-version.png) The following data is collected and analyzed: - Version The version of the asset. - Created by The name of the person who created this version of the asset. - Created on The date that the asset was created. - Lifecycle state Which state the asset is currently in. The states are In Development, Stable, or Deprecated. - Conformance Conformance status appears for all REST APIs and AsyncAPIs. The status can be Conformant, Not Conformant, and Not Validated. - Engagement contribution The engagement contribution is the percentage of usage of the given asset patch or minor version with regards to its respective minor or major version. - Downloads The number of times the asset was downloaded from Exchange. You can sort by ascending or descending order. - API Designer imports The number of times the asset was imported in to Design Center. You can sort by ascending or descending order. - Studio imports The number of times the asset was imported in to Studio. You can sort by ascending or descending order. - All-time stats - Dependents The number of dependent assets from the time the version was created. - Contracts The number of approved contracts from the time the version was created. ## View Asset Version Engagement To view usage and engagement metrics for the asset versions of API specification fragments and REST APIs: 1. In the Exchange catalog, select an API specification fragment or REST API. The asset details page displays the asset metadata. 2. In the navigation bar, click **Asset versions engagement**. ![The navigation bar with Asset versions engagement option highlighted](/mulesoft/current/en-us/exchange/_images/ex-nav-asset-versions-engagement.png) The **Asset versions engagement** page displays. 3. If you want to filter by date, select a date range from 7 days, 30 days, or 90 days. The default date range is the last 7 days. 4. If you want to export the usage data, click **Export to CSV**. ## See Also - [Asset Details](https://docs.mulesoft.com/exchange/asset-details) - [Manage Lifecycle States](https://docs.mulesoft.com/exchange/lifecycle) --- product: Exchange --- # Microsoft Platform Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your organization uses Microsoft Azure, Copilot Studio, or Microsoft Foundry, use this page to find the right Exchange scanner. Procedures are in the linked topics; this page is only a map. ## Agent Scanners - [Add a scanner for Microsoft Azure Copilot](https://docs.mulesoft.com/exchange/adding-microsoft-copilot-scanner) - [Add a scanner for Microsoft Foundry](https://docs.mulesoft.com/exchange/adding-microsoft-foundry-scanner) ## API Scanners - [Add a scanner for Azure API Management](https://docs.mulesoft.com/exchange/adding-azure-api-management-scanner) ## MCP Scanners - [Add a scanner for Azure API Management MCP Server](https://docs.mulesoft.com/exchange/adding-azure-apim-mcp-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [API Scanners](https://docs.mulesoft.com/exchange/api-scanners) - [MCP Scanners](https://docs.mulesoft.com/exchange/mcp-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Migrating Assets from Exchange 1 > For the full documentation index, see: https://docs.mulesoft.com/llms.txt > [!NOTE] The end of life date for Exchange 1 is July 18, 2021. Anypoint Exchange 2 introduces a new way of working with your assets. Where Exchange 1 is a listing service that only provides links to where assets are stored, Exchange 2 is a package management system that stores assets. Migration to Exchange 2 differs by asset type:
Asset TypeMigration Approach

Example, Template

OAS REST API

Publish using Exchange.

RAML REST API

Publish using API Designer or Exchange.

WSDL SOAP API

Publish using Exchange.

Connectors

Use Node.js connector-uploader program.

## Migrate an Example or Template to Exchange Note: This procedure requires Maven. 1. In Anypoint Exchange 1, for an example or template from your private Exchange, click Download to copy the asset to your computer. 2. Open Anypoint Studio 6.4.1 and later, and click File > Import. 3. In the Import menu, click Anypoint Studio > Anypoint Studio Generated Deployable Archive (.zip). Click Next. For the zip file name, click the `…​` browse button, click the name of the zip file you downloaded, and click Open. 4. Click Finish. Click OK for the Runtime version. 5. If you have not used Maven before, right-click the project name in the Package Explorer and click Mule > Configure Maven to locate the folder where you downloaded Maven. In Studio, click Test Maven Configuration to ensure Maven is ready to use and click OK. When Maven is ready, right-click the project name in the Package Explorer and click Mule > Mavenize. At the Maven Support prompt, click Yes. 6. In the Action to Perform menu, click OK. 7. Right-click the project name and click Anypoint Platform > Publish to Exchange. 8. Studio prompts you for your Anypoint Platform username and password. Click Signin. Or click Configure to specify an external identity provider such as OAuth and the organization’s domain. 9. In the Publish to Exchange menu: 1. If present in the Name field, remove special characters such as an underscore and parentheses. Only letters, numbers, spaces, dots, and dashes are permitted. 2. If present in the Version field, remove the `-SNAPSHOT` value. 3. Set the Project Type to either Example or Template as needed. 10. After setting all fields as required, click Finish. Click Yes for the Proceed Anyway prompt. 11. Upon successful deployment, a link appears to let you view the asset in Exchange 2. Click the link. 12. Click the asset in Exchange 2 and click Edit. In the Exchange editor, click Visual. Copy the description text from Exchange 1 to the Exchange 2 editor and paste the description into the editor. Format as needed. Click Save As Draft to save your edits. Click Publish. 13. In Studio, click OK to dismiss the publish to Exchange menu. ## Migrate a SOAP API WSDL 1. Go to Exchange 1 and download your WSDL file. 2. Go to Exchange 2 and click New. 3. Select API Spec - WSDL in the types drop-down. 4. In the File field, select your WSDL file. 5. Fill in the remaining fields. 6. Click Create. ## Migrate a REST API RAML _Requires November 2017 Release_ 1. Go to the API Manager Portal for the API and export the API Specification as a zip file. 2. Go to Design Center API Designer and create a project of type API Specification. 3. Import the zip. 4. Publish to Exchange 2. ## Migrate Connectors From Exchange 1 to Exchange 2 1. Download and install NPM. 2. Log into your private Exchange and download the connector to your computer. 3. Locate the connector’s JAR file, pom.xml file, and Studio Plugin zip file. 4. Get the connector-uploader Node.js application: npm install -g connector-uploader 5. Run the upload program: connector-uploader 6. When prompted, enter the Anypoint Platform credentials for the organization you want to upload the connector to. You are asked to select a business group and enter the Asset ID and version. The Group ID is generated for you. You are prompted to specify each file to upload if you are uploading more than one connector. ## See Also - [Migrate SOAP Assets Video](https://www.youtube.com/watch?v=BOAR9glreMw&feature=youtu.be) - [Migrate RAML REST Assets](https://www.youtube.com/watch?v=WTIJrYydViQ&feature=youtu.be) --- product: Exchange --- # Public Portal Vanity Domain > For the full documentation index, see: https://docs.mulesoft.com/llms.txt This document contains instructions and the necessary NGINX configuration for setting up an organization’s public portal using a vanity domain. ## Register Your Domain Public portal domains must be registered in Exchange. To register your public portal’s domain: 1. Get an access token from an Anypoint Platform user account that has the Organization Administrator permission in the root organization: ```console ACCESS_TOKEN=$(curl https://anypoint.mulesoft.com/accounts/login -XPOST -d "username=YOUR_USERNAME&password=YOUR_PASSWORD" | jq -r ".access_token") ``` 2. Use the access token to register your custom domain: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/portals/YOUR_ORGANIZATION_DOMAIN/domain -XPUT -d your.custom.domain -H "content-type: text/plain" -H "authorization: bearer $ACCESS_TOKEN" ``` > [!IMPORTANT] If this step is not followed, you won’t be able to log in to the portal or > perform any actions that need authentication. ## Set up a reverse proxy A reverse proxy allows users to access and navigate the vanity domain site exactly as if they were at the MuleSoft site. For example, users could access and navigate `https://developers.robocop.com/path/of/justice/` exactly as if they were at `https://anypoint.mulesoft.com/exchange/portals/robo-cop/`. This can be achieved through a [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy) that reroutes requests to your specific domain to the Anypoint Platform. In the following section, we provide example minimal NGINX configuration rules needed to implement the reverse proxy correctly. You can set up the reverse proxy on servers other than NGINX, including Apache, content delivery networks (CDNs), and many more. The specific configuration needed for your current web server implementation may need to vary slightly, but the rules should be implemented in the same way. ### Generic configuration To set up a basic reverse proxy for a portal vanity domain configuration, set up route mapping and custom headers. #### Route mapping Set up static resource route mapping for `shared`, `icons`, `exchange/api-console`, and `node_modules`. Regardless of your portal path, these routes need to be at the root level. For example: - Route `https://developers.robocop.com/shared` to `https://anypoint.mulesoft.com/shared`. - Route `https://developers.robocop.com/icons` to `https://anypoint.mulesoft.com/icons`. - Route `https://developers.robocop.com/node_modules` to `https://anypoint.mulesoft.com/node_modules`. - Route `https://developers.robocop.com/exchange/api-console` to `https://anypoint.mulesoft.com/exchange/api-console`. Route `callback` to `https://anypoint.mulesoft.com/exchange/portals/YOUR_ORGANIZATION_DOMAIN/callback`. For example: - Route `https://developers.robocop.com/callback` to `https://anypoint.mulesoft.com/exchange/portals/robo-cop/callback`. Route all your portal traffic to the Anypoint Platform. This depends on the portal path. Your portal path may be any path. The example’s portal path is `path/of/justice/`. For example: - Route `https://developers.robocop.com/path/of/justice/` **_(and all routes under this path)_** to `https://anypoint.mulesoft.com/exchange/portals/robo-cop/`. #### Custom headers Add headers for each of the routes described previously. - `X-Forwarded-Path` is the base path of your vanity domain public portal URL, such as `/path/of/justice/`. This path can be any path that begins and ends with a slash (`/`). It can be the root path represented by a single slash (`/`). This base path of the portal in your vanity domain does not need to match the base path of the portal in the anypoint.mulesoft.com domain. - `X-Forwarded-Host` is your public portal vanity domain, such as `developers.robocop.com`. ### Using NGINX ```console location ~ /(shared|node_modules|icons|exchange/api-console) { proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Path ${PUBLIC_PORTAL_PATH}; proxy_pass ${ANYPOINT_BASE_URL}; } location /callback { proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Path ${PUBLIC_PORTAL_PATH}; proxy_pass ${ANYPOINT_BASE_URL}/exchange/portals/${ORGANIZATION_DOMAIN}/callback; } location ${PUBLIC_PORTAL_PATH} { proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Path ${PUBLIC_PORTAL_PATH}; proxy_pass ${ANYPOINT_BASE_URL}/exchange/portals/${ORGANIZATION_DOMAIN}/; } ``` With: ```console ${PUBLIC_PORTAL_PATH}: Your custom path. Must end with a forward slash "/". ${ANYPOINT_BASE_URL}: Anypoint Platform URL for the desired region. ${ORGANIZATION_DOMAIN}: Your organization's domain in Anypoint Platform. ``` For example, for the `Robocop` organization public portal with an Anypoint Platform domain of `robo-cop` to run on `developers.robocop.com/path/of/justice/`: ```console ${PUBLIC_PORTAL_PATH}: /path/of/justice/ ${ANYPOINT_BASE_URL}: https://anypoint.mulesoft.com ${ORGANIZATION_DOMAIN}: robo-cop ``` > [!NOTE] Your server must run using `https`. If set up correctly, you can access and navigate to `https://developers.robocop.com/path/of/justice/` exactly as if you were at `https://anypoint.mulesoft.com/exchange/portals/robo-cop/`. ## Configure Cookie Consent Management for Your Domain Exchange public portals that do not use vanity domains can use the provided [cookie consent manager](https://docs.mulesoft.com/exchange/cookies). After your vanity domain is configured and your site is working, activate cookie consent management by contacting customer support with this information: - Your organization domain (Example: `robo-cop`) - Your registered domain (Example: `developers.robocop.com`) Customer support provides you a `COOKIE_CONSENT_ID` for the recently registered vanity domain. You cannot transfer this `COOKIE_CONSENT_ID` to other vanity domains. ### Register Your Cookie Consent ID You must register your `COOKIE_CONSENT_ID` by using the same token you obtained when you registered your domain. ```console curl https://anypoint.mulesoft.com/exchange/api/v2/portals/YOUR_ORGANIZATION_DOMAIN/cookieConsentId -XPUT -d COOKIE_CONSENT_ID -H "content-type: text/plain" -H "authorization: bearer $ACCESS_TOKEN" ``` After registering your `COOKIE_CONSENT_ID`, enter your portal using your vanity domain. The navigation bar displays the Cookie Preferences button. The `COOKIE_CONSENT_ID` is linked to your registered domain. If you change the domain, repeat these steps to configure cookie consent management for your new domain. ## See Also - [MuleSoft Trailblazer Community](https://trailhead.salesforce.com/trailblazer-community/neighborhoods/mulesoft) - [Salesforce Help](https://help.salesforce.com) --- product: Exchange --- # Publishing an Asset to a Public Portal > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Use your organization’s public portal to publish assets for viewing and use by developers inside and outside your organization. A public portal is visible to anyone who has the URL of the portal. The URL for a public portal starts with `https://anypoint.mulesoft.com/exchange/portals/Domain_Name/`. Replace `Domain_Name` with the domain name shown in Anypoint access management on the [**Organization** page](https://docs.mulesoft.com/access-management/managing-business-groups#organization-page). ## Permissions to Control Asset Publishing An organization’s Exchange administrators add assets to the public portal and remove assets from the public portal. Grant the Exchange administrator permission to a user or revoke the permission from a user with Anypoint Access Management. For more information see [Set User Access Permissions](https://docs.mulesoft.com/exchange/to-set-permissions). ## Add an Asset to a Public Portal Follow these steps to add an asset to a portal and make the asset public. Adding an asset to a portal does not delete the asset. It is still available internally. 1. Select an asset to show its details. 2. Click **Share** and select **Public - Publish it on the public portal**. 3. Select the version of the asset you want to publish in the public portal. 4. Select **Save**. If no action occurs, refresh your browser, log in again, and add the asset again. ## Remove an Asset from a Public Portal Follow these steps to remove an asset from a portal and make the asset private. Removing an asset from a portal does not delete the asset. The asset is still available internally. 1. Select the asset in Exchange and click **Share**. 2. Select **Public - Publish it on the public portal**. 3. Clear the version checkbox. The version of the asset is set to **Private**. 4. Select **Save**. 5. In Exchange, refresh the browser screen. In the asset’s **Overview**, the **Visibility** setting is now **Private**. ## See Also - [Public Portals](https://docs.mulesoft.com/exchange/about-portals) - [Set User Access Permissions](https://docs.mulesoft.com/exchange/to-set-permissions) --- product: Exchange --- # Publishing an HTTP API Asset > For the full documentation index, see: https://docs.mulesoft.com/llms.txt The HTTP API enables Exchange users specify a placeholder for an endpoint. After you create the HTTP API endpoint, you can optionally manage the endpoint with API Manager. The HTTP API asset describes what the API endpoint does and how users can connect the API to their programs. In API Manager, users import the API from Exchange and can then associate proxies and manage policies and SLAs for the API. 1. In a Exchange, click **Publish new asset**. 2. Enter a name for the API. 3. Select an **HTTP API** from the **Asset types** drop-down menu and click **Publish**. 4. In the asset view, click the pencil icon to provide a description and click the check icon. 5. To add documentation for the API, click **Edit documentation**. 6. Click **Publish**. --- product: Exchange --- # Publishing Assets > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Publish APIs, API Groups, templates, connectors, policies, Mule XML example code, and custom information assets to a private Exchange instance or an Exchange public portal. Exchange provides a repository for code and APIs, and helps your organization access them easily, model them, and reuse them. A private Exchange instance makes it easy to provide assets to internal developers by giving them viewer, contributor, or administrator access. Additionally, assets created within a business group are automatically provided to the developers of that business group. An Exchange public portal enables Exchange administrators to provide assets to developers outside of their own organizations. Both Exchange views also let users review assets so that asset providers can get feedback. See the [FAQ](https://docs.mulesoft.com/exchange/exchange2-faq) for additional information. --- product: Exchange --- # Publishing Assets Using API Catalog CLI > For the full documentation index, see: https://docs.mulesoft.com/llms.txt You can use the `api-catalog publish-asset` command to publish your API definitions to Exchange. Embed this command in your automation tools, such as a CI/CD pipeline or custom scripts, to automatically trigger the cataloging of your API assets. The command publishes your API definitions using the information in the file specified in the `--descriptor-file` option. ## Before You Begin Create a descriptor file that describes the API definitions to publish and copy the file to the file path where your API projects are stored. See [Create a Descriptor File Using the CLI](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-cli#create-desc-file-cli). To publish an API definition using the CLI: - Run the `api-catalog publish-asset` command. The following example publishes API definitions described in the `catalog.yaml` file: \> api-catalog publish-asset -d catalog.yaml --host=anypoint.mulesoft.com --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct The following sections give example commands that show how several catalog flags are used: - [Publish an Asset with Default Settings](#default-settings) - [Perform a Dry Run to Validate the Descriptor File](#dry-run) - [Publish an Asset Regardless of the Content](#force-publish) - [Trigger the Publish Using Conditions](#trigger-conditions) - [Set Version Strategy Using Conditions](#versionStrategyConditions) - [Publish Using a Jenkins Script](#jenkins-script) ## api-catalog publish-asset \> api-catalog publish-asset \[flags\] This command accepts the [general and authentication flags](https://docs.mulesoft.com/exchange/apicat-use-api-catalog-cli#common-options) in addition to the following flags:
FlagDescription

--async

Runs the publish job asynchronously.

-d, --descriptor-file=descriptor-file

or

ANYPOINT_DESCRIPTOR_FILE environment variable

Default: ./catalog.yaml

The name and location of the catalog descriptor file.

  • If the file does not exist, no assets are cataloged.

  • If the file exists but is empty, the command creates and prints the catalog descriptor YAML results. It outputs cataloging information for all API definitions it finds in the full directory tree relative to the current working directory.

  • If a valid YAML file exists, the command catalogs the assets as specified.

--dry-run

Runs the command to verify that the descriptor file is valid. No APIs are published.

--force-publish

Bypasses the comparison and creates a new version of the asset in Exchange regardless of the content.

--force-update-metadata

Updates the asset’s metadata, such as tags, in the latest version in Exchange regardless of the content. This does not republish the asset.

--json

Prints the execution result in JSON format.

-s, --silent

Enables silent logging.

-t, --trigger-criteria=<descriptor-tag>:<value> --trigger-criteria=<descriptor-tag>:value

This flag works in conjunction with the triggerConditions section in the descriptor file. For each run of the api-catalog publish-asset command, the trigger values are compared to trigger condition values in the descriptor file to determine whether to publish the APIs described in the descriptor file. To match multiple conditions, specify separate --trigger-criteria flags for each condition. For the APIs to be published, all trigger conditions set in the descriptor file must be matched by --trigger-criteria flag values.

Example:

--trigger-criteria=branch:main --trigger-criteria=anytag:release/ --trigger=user:admin

-v, --verbose

Enables verbose logging.

--version-strategy-criteria=<descriptor-tag>:<value> --version-strategy-criteria=<descriptor-tag>:<value>

This flag works in conjunction with the versionStrategyConditions section in the descriptor file. The api-catalog publish-asset command compares the version strategy criteria values to version strategy condition values in the descriptor file to determine the version strategy to use to publish the APIs. To match multiple conditions, specify separate --version-strategy-criteria flags for each condition.

Example:

--version-strategy-criteria=branch:main --version-strategy-criteria=anytag:release/ --version-strategy-criteria=user:admin

## Publish an Asset with Default Settings The following example publishes the API to an organization in the US control plane for Anypoint Platform. Defaults, credentials configuration file settings, or environment variable settings are used for the unspecified flags. \> api-catalog publish-asset --organization 1234abc-b34a-7cd3-4s32-12345abc2345 ## Perform a Dry Run to Validate the Descriptor File This example shows the `api-catalog publish-asset` command with the following flags: - \--dry-run: Runs the command to verify that the descriptor file is valid but does not publish the APIs. - \--verbose: Shows the maximum information in the results. The example command sends the standard output to `mycatdryrun.log`. \> api-catalog publish-asset --host=anypoint.mulesoft.com -d catalog.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --client\_id=1787c36ab544466698e380131040faad --client\_secret=2dA616efca1E4181A2A77BBF046868BE --dry-run --verbose >> mycatdryrun.log ## Publish an Asset Regardless of the Content To publish a new version of the asset in Exchange regardless of the content, use the `--force-publish` flag. This example shows the `api-catalog publish-asset` command with both of these flags. Defaults, credentials configuration file settings, or environment variable settings are used for the unspecified flags. \> api-catalog publish-asset --host=anypoint.mulesoft.com --descriptor-file=mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --force-publish ## Trigger the Publish Using Conditions Custom trigger conditions enable you to control whether APIs are published when the API Catalog `publish-assets` runs as part of your CI/CD pipeline or scripts. This example shows how `--trigger-criteria` flags correlate with descriptor file trigger conditions to control whether or not to publish the described APIs. If a trigger condition is set at the API level, that setting overrides conditions set at the global level. ### Example Trigger Conditions in a Descriptor file Following is an example `triggerConditions` section in the `mydescriptor.yaml` descriptor file at the global level: --- triggerConditions: ref: - main tags: - migrate - republish status: - complete - ready --- ### Example That Triggers the Publish The following command triggers the API publish because the trigger option values match all of the global trigger conditions in the `mydescriptor.yaml` descriptor file. \> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct --trigger-criteria=ref:main --trigger-criteria=tags:migrate --trigger-criteria=status:complete ### Example That Does Not Trigger the Publish The following command does not trigger the API publish because the trigger option value for `ref` is `test`, not `main`. Because not all trigger values match the corresponding global trigger conditions, no APIs are published. \> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct --trigger-criteria=ref:test --trigger-criteria=tags:migrate --trigger-criteria=status:complete ## Set Version Strategy Using Conditions Version strategy conditions enable you to set the version of assets when the API Catalog `publish-asset` command runs as part of your CI/CD pipeline or scripts. This example shows how `--version-strategy-criteria` flags correlate with descriptor file version strategy conditions to set the version strategy for the described APIs. If a version strategy condition is set at the API level, that setting overrides conditions set at the global level. If the value for a condition matches more than one version strategy, the command gives an error. ### Example Version Strategy Conditions in a Descriptor File Following is an example `versionStrategyConditions` section in the `mydescriptor.yaml` descriptor file. versionStrategyConditions: patchIncrease: branch: ‘main’ author: ‘admin’ snapshot: branch: ‘test’ ‘Develop’ ### Example That Sets the Version Strategy During the Publish The following command sets multiple version strategies during the publish because the option values match multiple conditions in the `mydescriptor.yaml` descriptor file. \> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct --version-strategy-criteria=branch:main --version-strategy-criteria=author:admin --version-strategy-criteria=branch:test --version-strategy-criteria=branch:Develop The resulting version strategies are: - Patch increase for APIs in the `main` branch with an author of `admin`. - Snapshot for APIs in the `test` and `Develop` branches. ### Example That Does Not Set the Version Strategy During the Publish The following command does not set the version strategy during the publish because none of the values match the corresponding conditions. The version strategy defaults to `patchIncrease` if no `versionStrategy` tags set other values in the descriptor file. \> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 -u myAnyPtAccount -p myPwd@4!myacct ----version-strategy-criteria=branch:abc ----version-strategy-criteria=author:dev ----version-strategy-criteria=branch:xyz ----version-strategy-criteria=branch:pop For more information on version strategies and version strategy conditions, see [Descriptor YAML Schema](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-manually). ## Publish Using a Jenkins Script This example shows a Jenkins script that runs the `api-catalog publish-asset` command. ```java pipeline {     agent any     environment {         ANYPOINT_ORG_ID = '1234abc-b34a-7cd3-4s32-12345abc2345'         CATALOG_DESCRIPTOR = './descriptor.yaml' (1)     }     stages {         stage('git checkout') {             steps {                 git url: 'git@github.com:mygitlocation/api-catalog-cli.git'                 // additional checkout tasks             }         }         stage('Build Artifacts') {             steps {                 // building             }         }         stage('API Cataloging') {             steps {                 withCredentials([                     usernamePassword(credentialsId: 'my-anypoint-creds',                     usernameVariable: 'ANYPOINT_USERNAME',                     passwordVariable: 'ANYPOINT_PASSWORD')                 ]) {                     sh 'api-catalog-cli publish-asset -d $CATALOG_DESCRIPTOR --organization=$ANYPOINT_ORG_ID --host=anypoint.mulesoft.com/ --trigger-criteria=branch:main' (2)                 }             }         }         stage('Deploy') {             steps {                 // Any deployment tasks to be performed, here.             }         }     } ```
1Defines the organization and descriptor file values
2Runs the api-catalog publish-asset command to publish APIs found in the main Github branch
## See Also - [General Use of Commands and Flags](https://docs.mulesoft.com/exchange/apicat-use-api-catalog-cli) - [Creating or Updating Descriptor Files Using the CLI](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-cli) - [Creating or Updating Descriptor Files Manually](https://docs.mulesoft.com/exchange/apicat-create-descriptor-file-manually) --- product: Exchange --- # Publishing Assets Using Maven > For the full documentation index, see: https://docs.mulesoft.com/llms.txt > [!NOTE] Where possible, we changed noninclusive terms to align with our company value of Equality. > We maintained certain terms to avoid any effect on customer implementations. With the Anypoint Exchange [Maven Facade API](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-maven-facade-api-http/), Apache Maven clients can publish and consume Exchange assets, including these asset types: - Connectors - Mule applications - Examples - Templates - Policies - Custom assets The Exchange Maven Facade API does not support deleting assets. To delete an asset, use the Exchange user interface or the Exchange API. The Exchange Maven Facade API does not support dynamic parameters for fields other than `` and ``. If the uploaded asset has a defined parent, the parent must be a valid and already uploaded Exchange asset for the dynamic parameters to be properly interpreted. New assets count toward your organization’s [asset limit](https://docs.mulesoft.com/exchange/asset-versions#asset-limits). > [!NOTE] The v3 in this page refers only to the Exchange **Maven Facade API**. If you’re publishing > assets over REST using the Exchange API, that API remains v2. Use `/api/v3/` endpoints only when > publishing with the Mule Maven plugin or the `exchange-mule-maven-plugin`. See > [Publishing Assets Using the Exchange API](https://docs.mulesoft.com/exchange/exchange-api) for REST-based publishing. ## Prerequisites To benefit from this documentation, you must be familiar with Maven, programming concepts, and command line operations on your computer or server. Include the required plugin `org.mule.tools.maven.mule-maven-plugin` in your POM file. Do not include the plugin `org.apache.maven.plugins.maven-deploy-plugin` in your POM file or settings file, because it is not compatible with the required plugin. If you use the Anypoint Exchange Maven Facade API version 3 to publish assets to Exchange, you must have the Mule Maven plugin version 3.5.0 or later. You must have a unique artifact name and organization ID to publish your asset. The US cloud and EU cloud use slightly different URLs, as shown in the examples. > [!IMPORTANT] Starting August 1, 2026, publishing custom connectors and Mule plugins to Exchange > requires Java compatibility metadata in `mule-artifact.json` for new versions that change > supported Java compatibility. > > - Java connectors: Include the `@JavaVersionSupport` annotation when changing supported Java > compatibility. > > - XML connectors: Update to `mule-extensions-maven-plugin` so Java compatibility metadata is > generated at build time. > > Use Maven 3.8.0 or later (3.9.8+ recommended) and JDK 17+ in your build pipeline. > > This change doesn’t affect connectors already published to Exchange or running applications. > > For complete requirements and update instructions, see > [Publishing Connectors to Exchange](https://docs.mulesoft.com/mule-sdk/latest/publishing-connectors-exchange). ## View Your Organization ID To construct the elements of a Maven POM file, you need to determine your organization ID: 1. Log in to Anypoint Platform and click **Access Management**. 2. Click the name of the top-level organization or a business group, and view your organization ID in the organization information screen. 3. Copy the organization ID so you can add it to your project’s POM file for the following examples. ## Publish an Asset to Exchange Using Maven Refer to examples of publishing each asset type with Maven in the repository located at `[https://github.com/mulesoft-labs/exchange-documentation-samples](https://github.com/mulesoft-labs/exchange-documentation-samples)`. The steps to publish an asset with Maven are slightly different for each asset type, and different assets use different Maven plugins, so check the examples in the repository for an example that matches your asset type. For example, use `exchange-mule-maven-plugin` to publish a custom asset, and use `mule-maven-plugin` to publish an extension. The following example shows how to publish a Mule 4 asset such as an application, example, or template. 1. In your project’s POM file, set `groupId` to your organization ID: ```xml ... ORGANIZATION_ID ... ``` If you are publishing your asset to the root organization, the group ID is the same as the organization ID. The URL format is: `https://maven.anypoint.mulesoft.com/api/v3/organizations/ORGANIZATION_ID/maven` In the EU, use: `https://maven.eu1.anypoint.mulesoft.com/api/v3/organizations/ORGANIZATION_ID/maven` In the Canada cloud, use: `https://maven.ca1.platform.mulesoft.com/api/v3/maven` In the Japan cloud, use: `https://maven.jp1.platform.mulesoft.com/api/v3/maven` When using MuleSoft Government Cloud, use: `https://maven.gov.anypoint.mulesoft.com/api/v2/organizations/ORGANIZATION_ID/maven` If you are publishing your asset to a business group, the group ID is the same as the business group ID. The URL format is: `https://maven.anypoint.mulesoft.com/api/v3/organizations/BUSINESS_GROUP_ID/maven` In the EU, use: `https://maven.eu1.anypoint.mulesoft.com/api/v3/organizations/BUSINESS_GROUP_ID/maven` When using MuleSoft Government Cloud, use: `https://maven.gov.anypoint.mulesoft.com/api/v2/organizations/BUSINESS_GROUP_ID/maven` 2. In your project’s POM file, include `mule-maven-plugin` and set the correct classifier (in this example `mule-application-example`). In this example, it is not necessary to set the asset type because it is inferred from the classifier: ```xml ... Hello World Application Example A mule application example uploaded using Exchange Maven Facade v3 org.mule.tools.maven mule-maven-plugin 3.5.0 true mule-application ... ``` You must set the `` element to make the asset visible in Exchange. The `name` property is required and represents the visible name of the asset. If you are publishing the first version of a GA (GroupId and AssetId combination), the asset name is taken from the POM file. If there is already at least one version of the GA, the `name` property is ignored. You can change the name in the asset portal as described in [Describe an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset). The `description` property is optional and represents the description of the asset. If you are publishing the first version of a GA (GroupId and AssetId combination), the asset description is taken from the POM file. If there is already at least one version of the GA, the `description` property is ignored. You can change the description in the asset portal as described in [Describe an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset). Don’t specify the `` element. In the `mule-maven-plugin` configuration, set `` as `mule-application` (default), `mule-application-template`, `mule-application-example`, or `mule-policy`. Mule 4 applications aren’t displayed in the Exchange asset list. 3. Add the Maven facade as a repository in the distribution management section of your project’s POM file: ```xml ... Repository Corporate Repository https://maven.anypoint.mulesoft.com/api/v3/organizations/ORGANIZATION_ID/maven default ... ``` In the EU, use: ```xml ... Repository Corporate Repository https://maven.eu1.anypoint.mulesoft.com/api/v3/organizations/ORGANIZATION_ID/maven default ... ``` When using MuleSoft Government Cloud, use: ```xml ... Repository Corporate Repository https://maven.gov.anypoint.mulesoft.com/api/v2/organizations/ORGANIZATION_ID/maven default ... ``` The `` and `` elements are arbitrary names that you create to identify the repository and any other organizational identifiers. The `` value must be the same in the `pom.xml` file as in the `~/.m2/settings.xml` file. The `` value connects the `pom.xml` file with information to log in to the organization’s URL. 4. Update the `settings.xml` file in your Maven `.m2` directory. After you install Maven, the `mvn clean` command creates the `.m2` directory. The directory is `~/.m2` on macOS or Linux and `\Users\YOUR_USER_NAME\.m2` on Windows. It contains your Anypoint Platform credentials. The Maven client reads the settings file when Maven runs. Example `settings.xml` file: ```xml Repository myusername mypassword ``` 5. Publish your asset to Exchange using this Maven command: ```console mvn deploy ``` 6. Search Exchange for the asset ID to find the asset. ### Resolve Parallel File Publishing Failures with Maven 3.9.12 or Later Maven 3.9.12 and later versions enable parallel file publishing by default. The Exchange Maven Facade API v1 and v2 require sequential file publishing and do not support this behavior. If you publish to a v1 or v2 endpoint using Maven 3.9.12 or later, the publish operation fails. To resolve this issue, use one of these workarounds: - **Upgrade to the Maven Facade API v3** — Use a v3 endpoint instead of v1 or v2. - **Upgrade to ASF Parent POM 37** — Use [ASF Parent POM 37](https://maven.apache.org/pom/asf/), which includes the workaround for parallel publishing. - **Disable parallel publishing from the command line** — Add the following property to your Maven command: ```console -Daether.connector.basic.parallelPut=false ``` - **Disable parallel publishing in your project** — Create a `.mvn/maven.config` file in your project root directory and add the following line. See [Maven configuration](https://maven.apache.org/configure.html#mvn-maven-config-file) for more information. ```console -Daether.connector.basic.parallelPut=false ``` - **Disable parallel publishing globally** — Add the following property to an always-enabled profile in your `~/.m2/settings.xml` file: ```xml disable-parallel-put false disable-parallel-put ``` ## Publish an Asset with Mutable Data The Maven Facade API enables you to both create your asset and set the mutable data describing it in the same request. The mutable data of an asset includes tags, custom fields, categories, and documentation pages. The GitHub repository of Exchange documentation examples includes a complete example of creating a [Mule application template with documentation and tags](https://github.com/mulesoft/exchange-documentation-samples-labs/tree/master/template-with-mutable-data). Declare tags, custom fields, and categories in the `pom.xml` file in the properties section, with the XML property `key` set to the key of the custom field or category: ```xml ... someValue someValue tag1,tag2,tag3 ... ``` To set documentation pages, create a documentation directory in `src/main/resources`. In the documentation directory, include each page as a Markdown file with a name such as `Getting Started.md`. Replace `Getting Started` with the title of the page. To include a terms and conditions page, put the content in a file named `terms.md`. Include resources such as images in the optional subdirectory `resources`. Specify the page order with the property `pageOrder` on the root of the main object in the optional file `config.json`: ```console { "pageOrder": ["home", "Getting Started", "Examples"] } ``` Add the Maven Assembly Plugin in the `pom.xml` plugin section to package the documentation folder, and create a Maven Assembly Plugin configuration file such as this: ```xml org.apache.maven.plugins maven-assembly-plugin 2.6 true create-distribution package single /src/main/resources/docs-assembly/assembly.xml ``` Create an `assembly.xml` file in `src/main/resources/docs-assembly`: ```xml docs zip false ${project.basedir}/src/main/resources/docs / true ``` ## Asset Lifecycle State A new asset version is in the `development` state or the default `stable` state. To create an asset version in the `stable` state, use Maven normally. To create an asset version in the `development` state, use the Anypoint Exchange Maven Facade API version 3 and set the version of the asset to `SNAPSHOT`. This behavior allows for backward compatibility with legacy APIs. A `SNAPSHOT` asset is permanently in the `development` state and cannot be promoted to any other state. An asset with the version `SNAPSHOT` published with the Anypoint Exchange Maven Facade API version 1 or version 2 has the state `stable`. Uploading a `SNAPSHOT` template asset in the `development` state example: In a terminal: 1. Execute: `git clone [https://github.com/mulesoft-labs/exchange-documentation-samples.git](https://github.com/mulesoft-labs/exchange-documentation-samples.git)` 2. Execute: `cd exchange-documentation-samples/template-snapshot` 3. Edit the file `pom.xml` and replace the values `YOUR_ORG_ID`, `YOUR_GROUP_ID`, and `YOUR_ASSET_ID` with your asset’s organizationId, groupId, and assetId. 4. Execute: `mvn clean deploy` 5. Open your Exchange home page and view the template in the `development` state. If you execute `mvn clean deploy` multiple times, the asset is overwritten without any errors. > [!NOTE] An asset that is in development state and is not an SNAPSHOT version cannot be consumed > through Maven. ## Publish a Custom Asset Publish custom assets with the `exchange-mule-maven-plugin` plugin. The latest version of this plugin is 0.1.7. This example shows the `build` section of `pom.xml`: ```xml org.mule.tools.maven exchange-mule-maven-plugin 0.1.7 validate validate exchange-pre-deploy deploy deploy exchange-deploy ``` ## Publish a Parent POM Project and a Parent POM Dependant Project to Exchange Parent POMs are published to Exchange as custom assets. See the previous section to publish a custom asset. If you want to publish a maven project, like a mule application, using the Mule Maven Plugin, and your maven project depends on a Parent Pom that has already included the exchange-mule-maven-plugin, you need to [prevent the inheritance](https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_.3Cinherited.3E_Tag_In_Build_Plugins): ```xml org.mule.tools.maven exchange-mule-maven-plugin 0.1.7 false validate validate exchange-pre-deploy deploy deploy exchange-deploy ``` ### Troubleshooting If the build fails during the deploy stage with a status code of 412 (Precondition Failed), then `exchange-pre-deploy` was not executed. To fix this error, ensure that goal is set inside the executions section of the plugin. The error looks similar to this: ```console [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.871 s [INFO] Finished at: 2020-11-09T12:11:54-03:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project hello-world-pom: Failed to deploy artifacts: Could not transfer artifact 1da12ec1-7614-43a3-bf24-ff754cab8ddf:hello-world-pom:pom:1.0.3 from/to repository-id ([https://maven.anypoint.mulesoft.com/api/v3/organizations/orgId/maven/](http://localhost:8088/api/v3/organizations/1da12ec1-7614-43a3-bf24-ff754cab8ddf/maven/)): Transfer failed for [https://maven.anypoint.mulesoft.com](http://localhost:8088/api/v3/organizations/1da12ec1-7614-43a3-bf24-ff754cab8ddf/maven/)[/api/v3/organizations/](http://localhost:8088/api/v3/organizations/1da12ec1-7614-43a3-bf24-ff754cab8ddf/maven/1da12ec1-7614-43a3-bf24-ff754cab8ddf/hello-world-pom/1.0.3/hello-world-pom-1.0.3.pom)[orgId](http://localhost:8088/api/v3/organizations/1da12ec1-7614-43a3-bf24-ff754cab8ddf/maven/)[/maven/groupId/assetId/version/filename](http://localhost:8088/api/v3/organizations/1da12ec1-7614-43a3-bf24-ff754cab8ddf/maven/1da12ec1-7614-43a3-bf24-ff754cab8ddf/hello-world-pom/1.0.3/hello-world-pom-1.0.3.pom) 412 -> [Help 1] ``` ## Publish and Consume Federated Assets Publishing and consuming federated assets requires token authentication or connected application authentication. To use token authentication: 1. [Get an API bearer token by using a SAML assertion](https://docs.mulesoft.com/access-management/saml-bearer-token). This is your access token. 2. Open the `settings.xml` file at `C:\Users\YOUR_USER_NAME\.m2\settings.xml` on Windows, or at `~/.m2/settings.xml` on macOS or Linux. 3. Do not change the value in ``. This value tells the platform that you’re using a token. 4. Set the value in `` to your access token: ```xml Repository ~~~Token~~~ 01234567-89ab-cdef-0123-456789abcdef ``` 5. Save the `settings.xml` file. To use connected application authentication: 1. [Create a connected application](https://docs.mulesoft.com/exchange/connected-app-authentication). 2. Provide basic authentication and define the username as `~~~Client~~~` and the password as `clientID~?~clientSecret`. 1. Replace `clientID` with the client ID. 2. Replace `clientSecret` with the client secret. Include the connected application in the file `settings.xml` in your repository: ```none ... Repository ~~~Client~~~ clientID~?~clientSecret ``` ## Dependencies external to Exchange Publish Java libraries and POM files as Exchange custom assets. Mule 4 Extensions that declare dependencies that don’t exist in Maven Central or the MuleSoft Maven repositories are not currently supported. ## Document Your Exchange Assets When you use Maven Facade to publish an asset to Exchange, a documentation portal is automatically created for it in Exchange and you can [document it normally](https://docs.mulesoft.com/exchange/to-describe-an-asset). ## Consume an Exchange Asset with Maven With Maven Facade you can consume assets published in Exchange, including connectors, Mule applications, and REST APIs. To consume an Exchange asset, add the asset’s group ID, artifact ID, and version to the `dependencies` section of your project’s `pom.xml` file, and add the Maven facade as a repository in the `repositories` section. ```xml ... org.mule.modules mule-module-metoo 1.0.0 ... Repository Corporate Repository https://maven.anypoint.mulesoft.com/api/v3/organizations/ORGANIZATION_ID/maven default ... ``` Replace `ORGANIZATION_ID` with your organization ID. You can use `https://maven.anypoint.mulesoft.com/api/v3/maven` as a valid URL for the `` value, because this is the default to publish to the root organization. In the EU, use `https://maven.eu1.anypoint.mulesoft.com/api/v3/maven` as the URL. When using MuleSoft Government Cloud, use `https://maven.gov.anypoint.mulesoft.com/api/v2/maven` as the URL. In the EU, the `` section is: ```xml Repository Corporate Repository https://maven.eu1.anypoint.mulesoft.com/api/v3/organizations/ORGANIZATION_ID/maven default ``` When using MuleSoft Government Cloud, the `` section is: ```xml Repository Corporate Repository https://maven.gov.anypoint.mulesoft.com/api/v2/organizations/ORGANIZATION_ID/maven default ``` ## See Also - [EU Exchange](https://eu1.anypoint.mulesoft.com/exchange/) - [Maven Facade API](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-maven-facade-api-http/) - [Apache Maven](https://maven.apache.org/) --- product: Exchange --- # Publishing Assets Using the Exchange API > For the full documentation index, see: https://docs.mulesoft.com/llms.txt With the Exchange API, you can publish and consume assets, add documentation pages, add or edit categories, and even manage your public portals. This page shows several examples using the Exchange API, and the complete API documentation is at the [API documentation portal](https://dev-portal.mulesoft.com/apis/exchange-experience.html#overview). The API supports all Exchange asset types, for example: - REST APIs - SOAP APIs - HTTP APIs - AsyncAPI specifications - API fragments - Connectors - Mule applications - Examples - Templates - Policies - Custom assets New assets count toward your organization’s [asset limit](https://docs.mulesoft.com/exchange/to-create-an-asset#asset-limits). > [!NOTE] The Exchange API is a REST API on version 2 (`/exchange/api/v2/`). The `/api/v3/` > endpoints on `maven.anypoint.mulesoft.com` belong to a separate API, the Exchange Maven Facade > API, which supports only Maven-based publishing. See > [Publishing Assets Using Maven](https://docs.mulesoft.com/exchange/to-publish-assets-maven) for Maven publishing. ## Prerequisites To benefit from this documentation, you must be familiar with Exchange, programming concepts, and command line operations on your computer or server. You must have a unique artifact ID and organization ID to publish your asset. The artifact ID consists of the group ID, asset ID, and version. ## Tasks Required to Publish an Asset to Exchange Perform these tasks to publish an asset to Exchange and add metadata using Exchange APIs: 1. [Find Your Organization ID](#find-your-organization-id) 2. [Authentication](#authentication) 1. [Obtain an Access Token](#obtain-an-access-token) 2. [Use Connected Application Authentication](#use-connected-application-authentication) 3. [Publish an Asset](#publish-an-asset) 1. [Specify Asset Properties](#specify-asset-properties) 2. [Specify Synchronous or Asynchronous Publication](#sync-and-async-publication) 3. [Set Mutable Data](#set-mutable-data) 4. [Set Categories and Fields as JSON Collections](#set-with-json) 5. [Set Lifecycle State](#set-lifecycle-state) 6. [Uploading Images to be Used as Asset Icons](#upload-asset-icons) 4. [Describe Your Assets](#describe-your-assets) 1. [Add Tags](#add-tags) 2. [Add Categories](#add-categories) 3. [Add Custom Fields](#add-custom-fields) 4. [Promote Lifecycle State](#promote-lifecycle-state) 5. [Update Asset Metadata](#update-asset-metadata) 5. [Add and Update Documentation Pages](#add-update-doc-pages) 1. [Add a New Page in Draft Mode](#add-new-page-draft) 2. [Add Content to the Page](#add-content-to-page) 3. [Publish the Draft](#publish-draft) 6. [Add Runtime Information to Your Asset](#add-runtime-info) ## Find Your Organization ID To find your organization ID: 1. Log in to Anypoint Platform and click **Access Management**. 2. Click the name of the top-level organization or a business group, and view your organization ID in the organization information screen. 3. Copy the organization ID and use it when you try out examples. ## Authentication The Exchange API requires authentication with an access token or a connected application. ## Obtain an Access Token 1. Log in to Anypoint Platform. 2. Obtain an access token with a cURL command. You can also use Postman or another application for sending HTTP commands. Replace `ANYPOINT_USERNAME` with your Anypoint Platform user account name and replace `ANYPOINT_PASSWORD` with your password. ```console curl --location --request POST 'https://anypoint.mulesoft.com/accounts/login' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "username":"ANYPOINT_USERNAME", "password":"ANYPOINT_PASSWORD" }' | jq -r ".access_token" ``` Use this access token in your API calls. Your organization administrator sets the expiration time for access tokens to a value from 15 to 180 minutes. If you perform a search or other operation that requires more time, you must request an additional token. ## Use Connected Application Authentication To use connected application authentication: 1. [Create a connected application](https://docs.mulesoft.com/exchange/connected-app-authentication). 2. Provide basic authentication and define the username as `~~~Client~~~` and the password as `clientID~?~clientSecret`. 1. Replace `clientID` with the client ID. 2. Replace `clientSecret` with the client secret. ## Publish an Asset With Exchange API version 2 you can publish assets to Exchange either by submitting multipart form data or by passing a POM file that contains the data. The API can also upload assets to Exchange either synchronously or asynchronously. The API can upload all supported asset types, including REST APIs, SOAP APIs, HTTP APIs, AsyncAPI specifications, API fragments, connectors, Mule applications, examples, templates, policies, and custom assets. The following example shows how to publish a REST API (RAML specification). ### Specify Asset Properties Each API call to create an asset specifies multipart properties:
PropertyDescriptionRequired or Optional

name

The asset name that is visible on the Exchange portal page.

Required

description

The description of the asset.

Optional

type

The type of asset to be created.

Required if the type cannot be inferred from the file extension

dependencies

A string of comma-separated dependencies, defined as dependencies=GROUP_ID:ASSET_ID:VERSION,GROUP_ID:ASSET_ID:VERSION.

Optional

keywords

A string of comma-separated values to be saved as an asset’s attributes, for example, keywords=api,raml,auth,jwt,token. Search queries can find assets by keyword.

Optional

tags

A string of comma-separated values to post as the asset’s tags, for example, tags=tag1,tag2. If the tags field is not present in the request or is empty, the asset’s tags remain unchanged. The string is the final version, so to delete one tag from an asset with two tags, send only the tag that you want to remain.

Optional

fields

A JSON array whose items are objects with properties key and value, which represent custom fields. The custom field must be configured in your organization. The example of uploading a custom asset includes custom fields.

Optional

fields.key

A string of comma-separated values to post as the asset’s custom fields. Replace key with the key of the custom fields that you want to add or replace. The custom field must be configured in your organization. If the fields element is not present in the request or is empty, the asset’s fields remain unchanged. The string is the final version, so to delete one custom field from an asset with two custom fields, send only the field that you want to remain.

Optional

categories

A JSON array whose items are objects with properties key and value, which represent custom fields. The custom field must be configured in your organization. The example of uploading a custom asset includes custom fields.

Optional

categories.key

A string of comma-separated values to post as the asset’s categories. Replace key with the key of the category that you want to add or replace. The category must be configured in your organization. If the categories field is not present in the request or is empty, the asset’s categories remain unchanged. The string is the final version, so to delete one category from an asset with two categories, send only the category that you want to remain.

Optional

contactName

Name of a person to contact about the asset.

Optional

contactEmail

Email address of a person to contact about the asset.

Optional

properties

Some asset types require additional properties specified with the properties prefix, such as apiVersion, mainFile, or assetLink, for example, properties.apiVersion = v1.

Required for some properties and some asset types

The following example uses multipart form data to upload a RAML API specification to Exchange. Download the file used in this example from the [asset creation](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-experience-api/minor/2.0/pages/Asset%20Creation/) page on the Exchange API developer portal. Replace `/file-path/training-american-flights-api-1.0.0-raml.zip` with your local file path: ```console curl -v \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'x-sync-publication: true' \ -F 'name=RAML asset name' \ -F 'description=Description of the asset' \ -F 'keywords=this, is, the, best, raml' \ -F 'dependencies=68ef9520-24e9-4cf2-b2f5-620025690913:training-american-flight-data-type:1.0.1,68ef9520-24e9-4cf2-b2f5-620025690913:training-american-flights-example:1.0.1' \ -F 'properties.mainFile=american-flights-api.raml' \ -F 'properties.apiVersion=v1' \ -F 'files.raml.zip=@/file-path/training-american-flights-api-1.0.0-raml.zip' \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version ``` ### Specify Synchronous or Asynchronous Publication To use the synchronous method, add the header `x-sync-publication:true`. To use the asynchronous method, add the header `x-sync-publication:false` or send a request with no `x-sync-publication` header. If the asset is published asynchronously, then a response like this is returned: ```console { "publicationStatusLink":"https://anypoint.mulesoft.com/exchange/api/v2/organizations/67ac7cde-c02c-457f-b826-da2474e63d5a/assets/67ac7cde-c02c-457f-b826-da2474e63d5a/wsdl-asset/1.0.0/publication/status/d47a22a5-90f6-49eb-bfd0-d9fff575e022" } ``` The endpoint `publicationStatusLink` provides the asset publication status. ### Set Mutable Data This example shows how to create your asset and set the mutable data describing it in the same request. The mutable data of an asset includes categories, custom fields, tags, and documentation pages. The asset publication endpoint creates a new asset. If the asset already exists, the request fails with error 409 (conflict). Do not try to change the mutable data of an existing version. Instead, create a new patch version with the updated mutable data. For example, if the current version is 1.2.3, create version 1.2.4. This example publishes the category and custom field, which have the keys `categoryKey` and `fieldKey`. Publication fails if the category or the custom field is not configured for your organization. In the documentation archive file sent as `files.docs.zip`, include each documentation page as a Markdown file in the root directory of the archive with a name such as `Getting Started.md`. Replace `Getting Started` with the title of the page. To include a terms and conditions page, put the content in a file named `terms.md`. Include resources such as images in the optional subdirectory `resources`. Specify the page order with the property `pageOrder` on the root of the main object in the optional file `config.json`: ```console { "pageOrder": ["home", "Getting Started", "Examples"] } ``` ```console curl --location --request POST 'https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version' \ --header 'Authorization: bearer YOUR_TOKEN' \ --header 'x-sync-publication: true' \ --form 'type="custom"' \ --form 'name="Comprehensive Test"' \ --form 'tags="1, 2, 3, 4"' \ --form 'categories.categoryKey="value1, value2"' \ --form 'fields.fieldKey="value1, value2"' \ --form 'contactName="Max Mule"' \ --form 'contactEmail="maxmule@example.com"' \ --form 'files.docs.zip=@"/file-path/docs.zip"' ``` ### Set Categories and Fields as JSON Collections To set or change categories and custom fields in JSON format within the multipart form, send an array of objects that contain the properties key and value. If the categories and custom fields are not configured for your organization, the request fails. To delete all categories or custom fields, send an empty array: ```none --form 'categories="[]"' --form 'fields="[]"' ``` In the multipart form, data in JSON format has priority, so this example does not set `categoryKey2` or `fieldKey2`. Example: ```none curl --location --request POST 'https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version' \ --header 'Authorization: bearer YOUR_TOKEN' \ --header 'x-sync-publication: true' \ --form 'type="custom"' \ --form 'name="Comprehensive Test"' \ --form 'tags="1, 2, 3, 4"' \ --form 'categories="[{"key":"categoryKey", "value":"value1, value2"}]"' \ --form 'categories.categoryKey2="value3"' \ --form 'fields="[{"key":"fieldKey", "value":"value1, value2"}]"' \ --form 'fields.fieldKey2="value3"' \ --form 'files.docs.zip=@"/file-path/docs.zip"' ``` ### Set Lifecycle State A new asset version is in either the `development` state or the default `stable` state (also known as `published`). An asset version must be stable before being deprecated. To use Exchange API version 2 to create an asset and set its lifecycle state, add the property `status` to the multipart request. If the state is not specified, the asset is created with the default `stable` state. The following REST API asset example shows how to create an asset and set its lifecycle state: 1. Log in to Anypoint Platform and download the [example file](https://exchange-files.anypoint.mulesoft.com/68ef9520-24e9-4cf2-b2f5-620025690913/689ce62f6cdfc382f974087bec28af21d3e9b2d525b74a3ab4a90b549e16eba7.zip?response-content-disposition=attachment%3B%20filename%3Dtraining-american-flights-api-1.0.0-raml.zip&Expires=1771053074&Key-Pair-Id=APKAJ3T3QD2CMFEXRAJA&Signature=irKCgALj61kdDfYr4ozcYuGf4B1kcFR0JgDAiVFxwDc8WBbkn-dQA1zTJ2lJ7bBtzK7n6FbA3n3quczeuEeDu8BIPxt77B7x-nMS6LNVjLTbj2r89XJVbcbyjhVg0UyWQUUl-7u3YNwVpW-5KltWOaiHtwgQOLatVCQXNg0S2zetAXlxCAfbM2YWiiTWgdWcu3CgbQuTzzFYfjlTJrbVHq8QHwXJpVivW3QaSYtJwhjgf7D3CaIePNrN9UwkQCWTyyta0Ne2x6ROBegLkjlGhL1RpmA3gYCuvV2VFezaWkjsMorEow6D5Ty~eafsDYF8k-EaxOO9xpNJtXXQ__). 2. Replace `/file-path/training-american-flights-api-1.0.0-raml.zip` with the local path of the downloaded file. 3. Replace `ANYPOINT_TOKEN`, `:organizationId`, `:groupId`, `:assetId`, and `:version` with values specific to your implementation. 4. Set the property `status` to `development` or `published`. 5. Execute: ```console curl -v \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'x-sync-publication: true' \ -F 'name=RAML asset name' \ -F 'description=Description of the asset' \ -F 'keywords=best, raml' \ -F 'status=development' \ -F 'properties.mainFile=american-flights-api.raml' \ -F 'properties.apiVersion=v1' \ -F 'files.raml.zip=@/file-path/training-american-flights-api-1.0.0-raml.zip' \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version ``` To use the Exchange API version 1 to create an asset and set its lifecycle state, send the status property as a field. ### Uploading Images to be Used as Asset Icons Upload an image to use as an asset icon by using the publish endpoint. Icons that display in the Exchange portal can help users find your asset. Icons can be company logos or any other images. The following file types are supported: - GIF - JPG - JPEG - PNG - SVG Asset icons are version agnostic. They are not replaced by new icons when assets are versioned. \+ The following example shows how to upload a .png file image to use as an asset icon. To specify the asset, replace the identifiers `:groupId`, `:assetId`, and `:version` with values specific to your implementation. Ensure that `files.icon.png` has the same file type as `my-asset-icon.png`. ```console curl -v \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'x-sync-publication: true' \ -F 'name=My asset name' \ -F 'description=Asset with an uploaded icon' \ -F 'files.raml.zip=@/file-path/training-american-flights-api-1.0.0-raml.zip' \ -F 'files.icon.png=@/file-path/my-asset-icon.png' \ https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version ``` ### Troubleshoot Publishing Errors When publishing custom connectors, a timeout error can occur. This can happen if schema definitions import other schemas with external references are private or unreachable from the internet. To resolve this issue, remove external references that are private or not reachable from the internet. ## Describe Your Assets After publishing your assets, enrich their metadata and make them easier to discover by adding optional [tags](https://docs.mulesoft.com/exchange/to-describe-an-asset#add-asset-tags), [categories](https://docs.mulesoft.com/exchange/to-manage-categories), and [custom fields](https://docs.mulesoft.com/exchange/to-manage-custom-fields). ### Add Tags The following example shows how to insert or replace tags on an asset. Each asset is uniquely identified by the combination of its group ID, asset ID, and version. To specify the asset, replace the identifiers `:groupId`, `:assetId`, and `:version`. Note that this command replaces any existing tags on the asset. ```console curl 'https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags' \ -X 'PUT' \ -H 'accept: application/json' \ -H 'authorization: bearer ANYPOINT_TOKEN' \ -H 'content-type: application/json' \ -d '[{"value":"rest-api"}, {"value":"documentation"}]' ``` ### Add Categories Categories are managed fields that the organization administrator adds and maintains. The following example uses a previously created category with the name `apiType` and sets that category value to `System API` on the asset. Each asset is uniquely identified by the combination of its group ID, asset ID, and version. To specify the asset, replace the identifiers `:groupId`, `:assetId`, and `:version`. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/categories/apiType \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": ["System API"] }' ``` ### Add Custom Fields This example uses a previously created custom field with name `subType` and sets that category value to `OAS` on the asset. Each asset is uniquely identified by the combination of its group ID, asset ID, and version. To specify the asset, replace the identifiers `:groupId`, `:assetId`, and `:version`. ```console curl -X PUT \ https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/tags/fields/subType \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "tagValue": ["OAS"] }' ``` ### Promote Lifecycle State [Asset lifecycle states](https://docs.mulesoft.com/exchange/lifecycle) have three possible promotions: 1. `development` to `stable` 2. `stable` to `deprecated` 3. `deprecated` to `stable` The `stable` state is also known as `published`. In this example, replace `ANYPOINT_TOKEN`, `:groupId`, `:assetId`, and `:version` with values specific to your implementation, and replace `:status` with one of `development`, `published`, or `deprecated`. ```console curl -X https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/status \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -d '{"status": ":status"}' ``` ### Update Asset Metadata This example shows how to update the mutable metadata that describes an existing asset without changing the version number or creating a new version of the asset. This mutable data includes categories, custom fields, tags, and documentation pages. The key `categoryKey` publishes the category and the key `fieldKey` publishes the custom field. Publication fails if the category or the custom field is not configured for your organization. Uploading a documentation file named `files.docs.zip` updates the asset’s documentation. The root directory of the archive includes each documentation page as a Markdown file with a name such as `Getting Started.md`. Each other page replaces `Getting Started` in the file name with the title of the page. An optional terms and conditions page uses the file name `terms.md`. The optional subdirectory `resources` includes resources such as images. The property `pageOrder` on the root of the main object in the optional file `config.json` specifies the page order: ```console { "pageOrder": ["home", "Getting Started", "Examples"] } ``` ```console curl --location --request PATCH 'https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version/mutabledata' \ --header 'Authorization: bearer YOUR_TOKEN' \ --form 'tags="1, 2, 3, 4"' \ --form 'categories.categoryKey="value1, value2"' \ --form 'fields.fieldKey="value1, value2"' \ --form 'files.docs.zip=@"/file-path/docs.zip"' ``` The mutable data updates asynchronously and the request returns a response similar to this: ```console { "mutableDataStatusLink":"https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version/mutabledata/status/170d1e6f-d567-48e2-a2f4-00b2e3951be6" } ``` A call to `mutableDataStatusLink` displays the publication status: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/organizations/:organizationId/assets/:groupId/:assetId/:version/mutabledata/status/170d1e6f-d567-48e2-a2f4-00b2e3951be6 \ --header 'Authorization: bearer YOUR_TOKEN' ``` If the request provides no authentication header, it fails with the error **Unauthorized**. ## Add and Update Documentation Pages Each Exchange asset has associated documentation to provide an overview and other information about the asset. Adding or updating documentation with the Exchange API requires the Exchange administrator or Exchange contributor permissions. To add or update documentation using the Exchange API: 1. Add a new page in draft mode. 2. Add content to the page. 3. Publish the draft. ### Add a New Page in Draft Mode To add a new documentation page, use this command and replace `:groupId`, `:assetId`, and `:version` with the values for your asset: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/portal/draft/pages \ -X POST \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "pagePath": "Security" }' ``` When the command succeeds, it returns the `pageId` value for the newly created page. Exchange shows the new draft page on the asset’s Exchange portal page under the default Home page. To edit this page and publish the draft, use either the portal user interface or the Exchange API. ### Add Content to the Page Documentation pages are written in GitHub Markdown, described in detail in the [Markdown Notes](https://docs.mulesoft.com/exchange/to-describe-an-asset#markdown-notes). To add your Markdown content, use this command and replace `:pageId` with the page ID you obtained earlier. ```console curl https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/portal/draft/pages/:pageId \ -X PUT \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'Content-Type: text/markdown' \ -d 'markdown *content* for this page' ``` ### Publish the Draft Publishing the draft publishes all the pages and content associated with the asset and currently in draft status. When the content is ready, change the page’s draft status to published: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/:version/portal \ -X PATCH \ -H 'Authorization: bearer ANYPOINT_TOKEN' ``` ## Add Runtime Information to Your Asset After the API asset includes all the information necessary for consumers to discover, learn, and understand your API, add the server or instance information so consumers can invoke the API. Replace `:groupId`, `:assetId`, and `:versionGroup` with the group ID, asset ID, and version ID of the API asset: ```console curl https://anypoint.mulesoft.com/exchange/api/v2/assets/:groupId/:assetId/versionGroups/:versionGroup/instances/external \ -X POST \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -d '{ "name": "Production - US", "endpointUri": "http://dog.domain.tld.com/much/doge", "isPublic": false }' ``` ## See Also - [EU Exchange](https://eu1.anypoint.mulesoft.com/exchange/) - [Exchange API](https://dev-portal.mulesoft.com/apis/exchange-experience.html#overview) --- product: Exchange --- # Requesting Access > For the full documentation index, see: https://docs.mulesoft.com/llms.txt To register a client application to an existing API instance or API Group instance, the client application requests access. When the owner of the instance approves the request, a contract is created between the client application and the instance, and the client application is registered. Instances that are protected by a client ID enforcement policy require client applications to provide a client ID and optional client secret. The client ID and client secret credentials are automatically created when the client application is registered. An instance owner can use API Manager to view all API contracts ever created for an API instance or API Group instance. An API or API Group consumer can use the **My Applications** page in Exchange to view the API contracts created between an API instance or API Group instance and that consumer’s client applications. API providers can view, manage, and revoke these contracts by following the steps in [Managing API Instance Contracts on API Manager](https://docs.mulesoft.com/api-manager/latest/manage-client-apps-latest-task). Both API instance owners and the owners of a specific client application can request access to that client application. All other users must request access from either of these owners. For access to a client application created by another user, request that either the client application owner or the API instance owner grant access to you by adding your user account to the application owners list in Anypoint API Manager. If terms and conditions are set for an asset, you are prompted to accept the terms before access is granted, and the created contract includes the terms and conditions. 1. Click an API or API Group asset to view more details. 2. Click **Request access**. 3. Choose the instance from the list. 4. If you are using an existing application, choose from the list of applications. An application and its instance use the same client provider. If an organization administrator has configured [multiple client providers](https://docs.mulesoft.com/api-manager/latest/configure-multiple-credential-providers) in Anypoint API Manager, then the application list shows only the applications that use the same client provider as the selected instance. 5. If you do not have an application to which to provide access, click **Select application > Create a new application**. For more information, see the Create a New Application section. 6. Choose the service-level agreement (SLA) value for the application. 7. Click **Request access**. The **Request API Access** menu opens to show that the access was automatically granted or submitted for review. This screen lists the client ID and client secret for this access instance. ## Create a New Application Choose from the screens that follow for what to provide: - If an organization uses OAuth authentication, this screen appears: ![The Create new application dialog showing fields to update for an OAuth authentication](/mulesoft/current/en-us/exchange/_images/ex2-edit-app2.png) Specify: - The application name. - An optional description for the application. - An optional application URL for where the app resides. If not specified, the app is assumed to be in the Runtime Manager. - An optional URL for an OAuth 2 callback. - If an organization has external authentication, this screen appears: ![The Edit application dialog showing fields to update for an external authentication](/mulesoft/current/en-us/exchange/_images/ex2-edit-app.png) Specify the same values as above, but also: The OAuth 2 grant type: - Implicit Grant - Authorization Code Grant - Refresh Token ## API Group Access In Exchange, each API Group is an asset with a portal. The **Group instances** page on the portal lists all of that API Group’s instances. When a developer requests access to the API Group for a client application, the developer selects an API Group instance, selects or creates a client application, and optionally selects a service-level agreement (SLA). A client application can access an API either through a contract with only that API or through a contract with one or more API Groups that include the API. In this latter case, the least restrictive available contract for the API is applied. ## See Also - [Search to compare grant types](https://www.google.com/search?q=oauth2+implicit+grant+vs+authorization+code+grant+refresh+token&oq=oauth2+implicit+grant+vs+authorization+code+grant+refresh+token) --- product: Exchange --- # REST Connect Connector Generator > For the full documentation index, see: https://docs.mulesoft.com/llms.txt The Exchange backend uses REST Connect to transparently convert a REST API specification to a Mule 4 connector. You can use this connector as you would any other in Anypoint Code Builder. ## Access Generated Connectors In Exchange, download the generated connector from the **Download** menu. > [!NOTE] After deploying a REST asset to Exchange, refresh your screen to ensure that all download > options are available. Mule 4 connectors download as JAR files. ## API Specification Format Support REST Connect supports these API specification formats: - OAS 3.0 and 3.1 - JSON - OAS 3.0 and 3.1 - YAML - OAS 2 - JSON - OAS 2 - YAML - RAML 1.0 ## OAS 3.1 Example REST Connect generates connectors from OAS 3.1 API specifications. This example uses nullable types declared with a `type` array (`type: [string, "null"]`) and a description alongside a `$ref`: ```text openapi: 3.1.0 info: title: Pet Store 3.1 version: 1.0.0 servers: - url: https://petstore.example.com/v1 paths: /pets: get: operationId: listPets summary: List pets parameters: - name: limit in: query required: false schema: type: [integer, "null"] responses: "200": description: A list of pets content: application/json: schema: type: array items: $ref: "#/components/schemas/Pet" post: operationId: createPet summary: Create a pet requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Pet" responses: "201": description: Created content: application/json: schema: $ref: "#/components/schemas/Pet" components: schemas: Owner: type: object required: [name] properties: name: type: string email: type: [string, "null"] Pet: type: object required: [id, name] properties: id: type: integer name: type: string nickname: type: [string, "null"] description: Optional nickname, may be null owner: $ref: "#/components/schemas/Owner" description: The pet's owner (a sibling keyword next to $ref, new in 3.1) ``` ## Security Scheme Support REST Connect supports these security schemes: - Basic Authentication - OAuth 2.0 Client Credentials - OAuth 2.0 Authorization Code - Pass Through - Digest Authentication If you publish an API specification with an unsupported authentication type, you receive an alert email. If this happens, update your API specification to use one of the supported security schemes. If the operations defined in your API specification support multiple security schemes, the one that comes first in the list of supported schemes is used. ### Basic Authentication RAML Example: ```text #%RAML 1.0 title: Dropbox API version: 1 baseUri: https://api.dropbox.com/{version} securitySchemes: basic: description: | This API supports Basic Authentication. type: Basic Authentication ``` OAS Example: ```text openapi: 3.0.3 info: title: Dropbox API version: "1" servers: - url: https://api.dropbox.com/{version} variables: version: default: "1" components: securitySchemes: basic: type: http scheme: basic description: This API supports Basic Authentication. security: - basic: [] ``` ### OAuth 2.0 Client Credentials RAML Example: ```text #%RAML 1.0 version: v1 title: Deadlines API baseUri: http://localhost/deadlines securitySchemes: oauth_2_0: description: Deadlines API supports OAuth 2.0 for authenticating all API requests. type: OAuth 2.0 describedBy: headers: Authorization: description: Sends a valid OAuth 2 access token. type: string responses: 401: description: Bad or expired token. 403: description: Bad OAuth request. settings: accessTokenUri: https://api.example.com/1/oauth2/token authorizationGrants: [ client_credentials ] /deadlines: get: securedBy: [oauth_2_0] displayName: Get deadlines. description: Get a list of all registered deadlines. responses: 200: body: application/json: example: '[ { "rest-connect": "2017-03-13" } ]' ``` OAS Example: ```text openapi: 3.0.3 info: title: Deadlines API version: v1 servers: - url: http://localhost/deadlines paths: /deadlines: get: summary: Get deadlines. description: Get a list of all registered deadlines. security: - oauth_2_0: [] responses: "200": description: Successful response content: application/json: example: - rest-connect: "2017-03-13" components: securitySchemes: oauth_2_0: type: oauth2 description: Deadlines API supports OAuth 2.0 for authenticating all API requests. flows: clientCredentials: tokenUrl: https://api.example.com/1/oauth2/token ``` ### OAuth 2.0 Authorization Code RAML Example: ```text #%RAML 1.0 version: v1 title: Github API baseUri: https://api.github.com securitySchemes: oauth_2_0: description: | OAuth2 is a protocol that lets external apps request authorization to private details in a user's GitHub account without getting their password. This is preferred over Basic Authentication because tokens can be limited to specific types of data, and can be revoked by users at any time. type: OAuth 2.0 describedBy: headers: Authorization: description: | Used to send a valid OAuth 2 access token. responses: 404: description: Unauthorized settings: authorizationUri: https://github.com/login/oauth/authorize accessTokenUri: https://github.com/login/oauth/access_token authorizationGrants: [ authorization_code ] scopes: - "user" - "user:email" - "user:follow" - "public_repo" - "repo" - "repo_deployment" - "repo:status" - "delete_repo" - "notifications" - "gist" - "read:repo_hook" - "write:repo_hook" - "admin:repo_hook" - "admin:org_hook" - "read:org" - "write:org" - "admin:org" - "read:public_key" - "write:public_key" - "admin:public_key" ``` OAS Example: ```text openapi: 3.0.3 info: title: Github API version: v1 servers: - url: https://api.github.com components: securitySchemes: oauth_2_0: type: oauth2 description: | OAuth2 is a protocol that lets external apps request authorization to private details in a user's GitHub account without getting their password. This is preferred over Basic Authentication because tokens can be limited to specific types of data, and can be revoked by users at any time. flows: authorizationCode: authorizationUrl: https://github.com/login/oauth/authorize tokenUrl: https://github.com/login/oauth/access_token scopes: user: "" user:email: "" user:follow: "" public_repo: "" repo: "" repo_deployment: "" repo:status: "" delete_repo: "" notifications: "" gist: "" read:repo_hook: "" write:repo_hook: "" admin:repo_hook: "" admin:org_hook: "" read:org: "" write:org: "" admin:org: "" read:public_key: "" write:public_key: "" admin:public_key: "" ``` ### Pass-through RAML Example: ```text #%RAML 1.0 title: Customer API version: 1 baseUri: https://api.customer.com/v2 securitySchemes: passthrough: description: | This API supports Pass Through Authentication. type: Pass Through describedBy: headers: api_key: type: string ``` OAS Example: ```text openapi: 3.0.3 info: title: Customer API version: "1" servers: - url: https://api.customer.com/v2 components: securitySchemes: passthrough: type: apiKey in: header name: api_key description: | This API supports Pass Through Authentication. ``` ## Change an Auto-Generated Connector’s Name REST Connect generates the names of operations based on the `operationName`, `displayName`, and `endpoint` attributes, in that order. To modify a generated connector name using RAML, change the text in `displayName`, for example: ```text #%RAML 1.0 title: Sample API baseUri: https://jsonplaceholder.typicode.com version: 0.1 mediaType: application/json ... /{postId}: uriParameters: postId: integer get: displayName: Get a post by ID. responses: 200: body: type: Post ``` To modify a generated connector name using OAS, change the text in `summary`, for example: ```text openapi: 3.0.3 info: title: Sample API version: "0.1" servers: - url: https://jsonplaceholder.typicode.com paths: /{postId}: parameters: - name: postId in: path required: true schema: type: integer get: summary: Get a post by ID. responses: "200": description: Successful response content: application/json: schema: $ref: "#/components/schemas/Post" components: schemas: Post: {} ``` You can also modify a generated connector name by pointing to the REST Connect library and using the `operationName` annotation (RAML) or `x-rest-connect-operationName` extension (OAS) from a method such as GET, POST, and DELETE. RAML Example using `operationName`: ```text #%RAML 1.0 title: Sample API baseUri: https://jsonplaceholder.typicode.com version: 0.1 mediaType: application/json uses: rest-connect: exchange_modules/org.mule.connectivity/rest-connect-library/1.0.0/rest-connect-library.raml ... /{postId}: uriParameters: postId: integer get: (rest-connect.operationName): Retrieve a post by id displayName: Get a post by ID. responses: 200: body: type: Post ``` OAS Example using `x-rest-connect-operationName`: ```text openapi: 3.0.3 info: title: Sample API version: "0.1" servers: - url: https://jsonplaceholder.typicode.com paths: /{postId}: parameters: - name: postId in: path required: true schema: type: integer get: summary: Get a post by ID. x-rest-connect-operationName: Retrieve a post by id responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Post' components: schemas: Post: type: object additionalProperties: true ``` ## Metadata Limitations REST Connect generates metadata for each operation based on your schema definition in the request and response for each method in your API specification. REST Connect cannot generate metadata based on examples in the specification. REST Connect supports only one input/output type and uses the first one declared in the API specification. You can change this behavior by using the default property from the REST Connect library. The following examples uses the REST Connect library: RAML Example: ```text #%RAML 1.0 title: Sample API baseUri: https://jsonplaceholder.typicode.com version: 0.1 mediaType: application/json uses: rest-connect: exchange_modules/org.mule.connectivity/rest-connect-library/1.0.0/rest-connect-library.raml ... /{postId}: uriParameters: postId: integer get: displayName: Get a post by ID. responses: 200: body: application/json: type: string application/xml: (rest-connect.default): //this sets application/xml response by default type: string ``` OAS Example: ```text openapi: 3.0.3 info: title: Sample API version: "0.1" servers: - url: https://jsonplaceholder.typicode.com paths: /{postId}: parameters: - name: postId in: path required: true schema: type: integer get: summary: Get a post by ID. responses: '200': description: Successful response content: application/json: schema: type: string application/xml: x-rest-connect-default: true # indicates XML is the default schema: type: string ``` ## Reserved Keywords Valid identifiers for REST Connect must not use any reserved Java or Mule keywords. The following list shows the reserved Java keywords to avoid when naming valid identifiers for REST Connect: - `abstract` - `assert` - `boolean` - `break` - `byte` - `case` - `catch` - `char` - `class` - `const` - `continue` - `default` - `do` - `double` - `else` - `extends` - `false` - `final` - `finally` - `float` - `for` - `goto` - `if` - `implements` - `import` - `instanceof` - `int` - `interface` - `long` - `native` - `new` - `null` - `package` - `private` - `protected` - `public` - `return` - `short` - `static` - `strictfp` - `super` - `switch` - `synchronized` - `this` - `throw` - `throws` - `transient` - `true` - `try` - `void` - `volatile` - `while` The following list shows the reserved Mule keywords to avoid when naming valid identifiers for REST Connect: - `friendlyName` - `name` - `operationName` - `target` - `targetValue` ## Generating Connectors With TLS Support Mule 4 (SmartConnector) connectors support Transport Layer Security (TLS). When you enable TLS support and generate a connector: - The connector is upgraded to run on Mule runtime 4.6. - TLS is enabled, so that Anypoint Studio displays a form for collecting the connector’s required TLS connection configuration information. To see the connection configuration properties, select **Edit inline** or **Global reference** from the **Tls context** field. ![The form for TLS connection configuration information](/mulesoft/current/en-us/exchange/_images/rest-connect-tls-configuration.png) To enable TLS, add a `properties.json` file to the root directory of the Design Center API project for your app: 1. In Design Center, Select **Files +** > **New file**. 2. In the **Add new file** window, select **API format > other**, name the file `properties.json`, and then click **Create**. 3. In the new file, add `"tlsEnabled": true`. > [!NOTE] Add the `properties.json` file only if you want to enable TLS support or explicitly > opt out of it. If you don’t add a `properties.json` file to your API project, the REST Connect > Service generates the standard connector artifacts without TLS support. After you add the `properties.json` file and enable TLS, Anypoint Studio displays the TLS configuration form for the connector. When you add a `properties.json` file to your project, ensure that the `tlsEnabled` property is set correctly with a valid boolean value of either `true` to enable TLS or `false` to explicitly disable TLS. If the `properties.json` file is invalid or the property is incorrectly set, the connector generation is aborted. ## View Mule Runtime Version and Compatible Java Version To view the minimum Mule runtime version or the compatible Java versions for the patch versions of a connector: 1. From Exchange, select a connector. 2. In the asset details page, click **View versions**. ![The asset version showing the minimum runtime version and compatible Java versions](/mulesoft/current/en-us/exchange/_images/ex-connector-java-compatibility.png) ## Upgrading a REST Connect Generated Connector To update your REST-Connect-generated connector to use the latest version of Mule runtime and to be compatible with Java 17: 1. In Design Center, open your API project. 2. Click **Publish**. The connector is regenerated. If you want to add [TLS support](#tls-support) to your application, add it before re-generating the connector so that you only have to test your app once. ## Known Limitations - Anypoint Platform, including REST Connect, does not support API fragments for OAS. - REST Connect does not support webhooks in OAS 3.1 API specifications. - REST Connect does not support the `mutualTLS` security scheme in OAS 3.1 API specifications. - For XML request and response bodies, the generated XSD does not enforce the OAS 3.1 keywords `prefixItems`, `if`/`then`/`else`, `patternProperties`, and `not`. - Chinese characters are not supported in API specs or their dependencies. Japanese characters are supported in the `description` and `example` tags. --- product: Exchange --- # Retrieving Asset Metadata Using an MCP Server Endpoint > For the full documentation index, see: https://docs.mulesoft.com/llms.txt You can now use an MCP server endpoint to retrieve Agent Fabric asset and instance metadata from Exchange for your assets in Exchange, including Agents and MCP servers. The endpoint uses the Exchange API to search for and return this metadata. ## Using the MCP Server Endpoint Use this endpoint to configure an MCP server connection in your AI client: `[https://anypoint.mulesoft.com/exchange/mcp](https://anypoint.mulesoft.com/exchange/mcp)` You must authenticate to access private Exchange assets. Configure your AI client to use your Anypoint Platform credentials when connecting to the endpoint. After you connect your AI client to the MCP server endpoint, you can perform these tasks: - **Search for assets** – Search by asset name, description, or keywords to find agents, MCP servers, large language models (LLMs), and other assets in Exchange. - **Retrieve asset metadata** – Get metadata for an asset, including available versions, dependencies, instances, and documentation so you can evaluate and use the asset in your projects. - **Query user profile and permissions** – Check your user profile and permissions so you know what you can access, publish, or manage in Exchange. To maximize security control, assign the required Exchange permissions to your agents. See [Setting User Access Permissions](https://docs.mulesoft.com/exchange/to-set-permissions). You can perform other actions, including reading reviews and ratings for an asset on the platform. ## See Also - [Exchange Platform APIs](https://docs.mulesoft.com/exchange/about-platform-apis) - [MCP Server](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-experience-api/minor/2.4/pages/1g5-ey8/MCP%20Server/) --- product: Exchange --- # Salesforce Agentforce Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your agents are hosted on Salesforce Agentforce, use this page to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## Agent Scanners - [Add a scanner for Salesforce Agentforce agents](https://docs.mulesoft.com/exchange/adding-agentforce-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Salesforce Platform Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your agents are hosted on Salesforce, use this page to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## Agent Scanners - [Add a scanner for Salesforce Agentforce agent scanner](https://docs.mulesoft.com/exchange/adding-agentforce-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - **Exchange Administrator** permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Saving Searches > For the full documentation index, see: https://docs.mulesoft.com/llms.txt As an Exchange administrator, you can save searches that your users can click to access assets within a business group. While users can view and click the searches, only an Exchange administrator can save, rename, or delete the saved searches. 1. Change to the business group where you want to add saved searches. 2. Specify a search in the search field. 3. Click **Save this search**. 4. In the Save Search window, specify the name for the search, and save the search name. 5. Select a **Save as** option. 6. Click **Save**. The saved searches appear in the left navigation bar of the Assets page under the Organization Searches heading. 7. To rename the search, under **My searches** in the left navigation bar, click the three dots menu next to the search name and select **Rename**. 8. Enter a new name followed by pressing the Enter or Return key on your keyboard. 9. To delete the search, under **My searches** in the left navigation bar, click the three dots menu next to the search name and select **Delete**. --- product: Exchange --- # Searching for Assets > For the full documentation index, see: https://docs.mulesoft.com/llms.txt The Exchange catalog of assets can display hundreds of assets that help developers discover assets to create projects quickly and drive adoption of best practices and reuse. You can find assets from MuleSoft’s ecosystem or your own organization. Based on your permission group, you can search multiple business groups, documentation, tags, custom attributes, and details from API specifications. To help find assets, searches can be refined using search terms like a name of an API, by filters like organizations, categories, tags, and lifecycle states, or by ranking. Anypoint Exchange search looks for terms in: - Each asset’s name - Description - Contact name and email - Tags - Categories - The content of the asset portal pages - Properties defined in RAML and OAS API specifications ## Search By Keyword Use the **Search assets** box to find assets by keyword. When you publish an agent network project to Exchange, it creates and updates the assets contained in the project and automatically tags brokers for easy identification. ![The Search assets box](/mulesoft/current/en-us/exchange/_images/exchange-search-assets-box.png) Keywords can be the following asset information: - Each asset’s name - Description - Contact name and email - Tags - Categories - The content of the asset portal pages - Properties defined in RAML and OAS API specifications To find assets using keywords: 1. From the Exchange landing page, enter a keyword in the **Search assets** field, for example **MuleSoft** and press Enter or Return depending on your keyboard. A list of assets display that contain the keyword. 2. To clear the keyword from the **Search assets** field, click **X**. The following image is an example search results using the search keyword **MuleSoft**. The search keyword is highlighted in the results. ![Search results with the keyword MuleSoft highlighted](/mulesoft/current/en-us/exchange/_images/exchange-new-search.png) To find agents that are brokers, search the Exchange catalog using the keyword `broker`. ## Filter Search Results You can use the following filters to refine your search results. ![The search refinement filters](/mulesoft/current/en-us/exchange/_images/ex-filters.png) - Type Types can be agents, AsyncAPIs, connectors, LLM, MCP, REST APIS, rulesets, and more. See [Asset Types](https://docs.mulesoft.com/exchange/asset-types) for more details. The list of asset types that display depends on which types are available in a business group. - Organization Business groups that you have permission to view those assets. - Category Categories are specific groupings of assets set by the administrator of a business group or an organization owner. - Tag Keyword or term that describes a specific search. - Lifecycle state Lifecycle state can be stable, deprecated, or development. - Custom field Custom fields are specific metadata fields set by the administrator of a business group or organization owner. Filter options appear when they are available within an organization. If a filter has more than 50 values, the search results display the top 50, sorted in descending order by frequency. If you need to see more values, select the filter and enter a keyword in the search box. The search will then show the top 50 values that match your keyword, using the same sorting criteria. ### Filter By Type, Organization, Category, Tag, and Lifecycle State 1. In the Exchange landing page, select a filter option. 2. To find an option from a long list, use the scroll bar or enter a search term. 3. Click one or more options from the menu and click **Apply**. 4. To clear a filter option, click **Clear filter**. 5. To clear all filter options, click **Clear all filters**. ### Filter By Custom Fields Custom fields are created by Exchange administrators and organization owners using the Exchange API to extend the Exchange asset metadata model and add custom data to any type of asset. Assets can be filtered by custom fields to refine a search using preset information. The custom field filter is available only when assets in your organization have custom fields. For more information about creating custom fields for assets, see [Manage Custom Fields](https://docs.mulesoft.com/exchange/to-manage-custom-fields). Custom fields use the following data types:
Data TypeOperator

Enum

Contains and not contains

Number

Equals, not equals to, greater than, less than, greater than or equal to, and less than or equal to

Date

Equals, not equals to, greater than, less than, greater than or equal to, and less than or equal to

Text

Equals and not equals to

List of numbers

Contains and not contains

List of strings

Contains and not contains

> [!NOTE] The contains and not contains operators check whether a specific value exactly matches an > item in an enum or list-based field assigned to an asset. These operators perform a full match, > not a partial match. For example, the value `Prod1` is contained in the list of environments > (Prod1, Prod", and Prod3); the value `Prod` is not contained in the list of environments (Prod1, > Prod2, and Prod3). Use the preset operators to filter the search results. The values of the operators can be changed and customized. For example, you can select a date from the list of the values or add a date by entering a custom date in the defined format (YYYY-MM-DD). The customized value shows in the list of options as freeform. You can add as many custom fields as you need. The following example shows the search filter with two custom fields: ![Search filter using two custom fields](/mulesoft/current/en-us/exchange/_images/ex-custom-field-operator-value.png) To filter a search using custom fields: 1. In the landing page, click **Any custom field**. 2. Use the scroll bar or enter the name of the custom field to find an option in a long list. 3. Select a custom field option from the list. 4. If you want to change the operator, select a operator from the drop-down list. 5. Click **Select value(s)** and select a value for the operator from the list or enter a custom value. You can select more than one value. 6. If you want to add more custom fields to further filter the search, click **Add Custom Field** and select an option from the list. 7. If you want to delete a custom field from the search filter, click the trash can icon. 8. If you want to clear the selected filter options, click **Clear filter**. 9. Click **Apply** to apply the custom field filter. The search results show assets with the custom fields criteria. ## Sort Search Results You can sort the ranking of search results. Assets can be sorted by the following options: - Relevance Sorts the matching results by where a match is found in the asset metadata, such as name, title, pages, and API specification metadata. API specification metadata includes endpoints and types. A search term must be entered to see the **Relevance** option in the **Sort by** list. When you search by a term, assets are sorted by **Relevance** by default. - Name Sorts by asset name in ascending alphabetical order. - Last modified Sorts the results by the most recently modified assets at the top, for example, the latest published assets or assets that have new versions recently added. This is the default for all business groups except assets that are provided by MuleSoft. - Featured Sorts by placing a featured selection of assets at the top of the results. This is the default order for the Provided by MuleSoft and Global Exchange. Other assets that are not featured assets are ordered by last modified. The sorting options appear when they are available within an organization. To sort the ranking of search results, use the **Sort by** drop-down menu to select an option: Relevance, Name, Last modified, Rating, Relevance, or Featured. ![The Sort by filter](/mulesoft/current/en-us/exchange/_images/ex-sort-by-filter.png) ## Save a Search Find assets quickly by saving frequently used search queries for yourself or for your business group. Saved searches display in the navigation pane. Exchange lists search terms specific to your business group. The example shows saved searches: ![An example of two saved search groups](/mulesoft/current/en-us/exchange/_images/ex2-saved-searches-groups.png) To save a search: 1. From the Exchange landing page, enter a search term or select options from a filter, then click **Save this Search**. 2. When prompted, give the search a name and select to save the search as personal search or an organization search. Administrators can save searches visible to anyone in their current business group. Personal searches are visible only to the person who creates them. 3. Click **Save search**. 4. Confirm that your search appears in the saved searches in the left navigation bar. 5. If you want to rename a saved search, click the three dots and select **Rename**. 6. If you want to delete a saved search, click the three dots and select **Delete**. --- product: Exchange --- # Searching the Graph API > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Search Exchange assets for a string value by using the Exchange Graph API. You can specify what values to receive in each search. The Exchange Graph API accesses Anypoint Exchange and Anypoint Platform, and a search requires authentication to access assets in a private Exchange. If you only search for MuleSoft public assets, you don’t need authentication. The Exchange Graph API can be used without an Anypoint Platform account to find assets made publicly available by MuleSoft. Accessing private content through the API requires an Anypoint Platform account. ## Authentication Use either an access token or a connected application for authentication. You only need authentication if you are searching for assets that are not created by MuleSoft. To use token authentication: 1. Log in to Anypoint Platform. 2. Obtain an access token with a cURL command. You can also use Postman or another application for sending HTTP commands. Replace `ANYPOINT_USERNAME` with your Anypoint Platform user account name and replace `ANYPOINT_PASSWORD` with your password. ```console curl --location --request POST 'https://anypoint.mulesoft.com/accounts/login' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "username":"ANYPOINT_USERNAME", "password":"ANYPOINT_PASSWORD" }' | jq -r ".access_token" ``` Use this access token in your API calls. Your organization administrator sets the expiration time for access tokens to a value from 15 to 180 minutes. If you perform a search or other operation that requires more time, you must request an additional token. See also [Access Management API Authentication](https://dev-portal.mulesoft.com/apis/access-management.html). To use connected application authentication: 1. [Create a connected application](https://docs.mulesoft.com/exchange/connected-app-authentication). 2. Choose whether to use basic authentication or query variable authentication. If both basic authentication and query variable authentication are set, the API uses basic authentication and ignores the query variable authentication. 3. To use basic authentication, provide basic authentication and define the username as `~~~Client~~~` and the password as `clientID~?~clientSecret`. 1. Replace `clientID` with the client ID. 2. Replace `clientSecret` with the client secret. 4. To use query variable authentication, define the connected application authentication as an authorization field in the query variables: ```json { "authorization": "Basic ABC123" } ``` Replace `ABC123` with the base64 encoding of the concatenated client ID and client secret: `~~~Client~~~:clientID~?~clientSecret` ## Graph API Access URL You can access the Graph API at the `https://anypoint.mulesoft.com/graph/api/v1/graphql` URL. To search using the API, send a POST command containing the search string. For example: ```json curl -X POST \ https://anypoint.mulesoft.com/graph/api/v1/graphql \ -H 'content-type: application/json' \ -d '{"query": "{ assets(query: { searchTerm: \"searchTerm\" }) { groupId, assetId, version } }"}' ``` The query field contains the GraphQL query, which allows fetching more asset fields. ```json { assets(asset: {groupId: "some-group-id", assetId: "some-asset-id", version: "some-version-1.2.3"}) { # Possible fields to retrieve groupId assetId version description name type contactName contactEmail tags { value key } createdBy { id userName firstName lastName } files { classifier packaging externalLink md5 } rating numberOfRates createdAt organizationId assetLink runtimeVersion productAPIVersion dependencies { groupId assetId version name type } related(relationshipType: OtherVersions) { groupId assetId version name type runtimeVersion productAPIVersion } } } ``` You can get the group ID, asset ID, and version of a Mule 4.x asset with this example: ```json curl -X POST \ https://anypoint.mulesoft.com/graph/api/v1/graphql \ -H 'content-type: application/json' \ -d '{"query":"{assets(query: {tags: {key: \"min-mule-version\", value: \"4.0.0\"}}) {groupId assetId version}}"}' ``` ## Search Only a Private Exchange 1. Get the organization ID for the Private Exchange by clicking an asset in your Private Exchange. An example URL is: https://anypoint.mulesoft.com/exchange/42424242/product-api/1.0.0/ `42424242` is the organization ID. 2. Add the organization ID using the organizationIds field. A single organization ID would be: `organizationIds: ["42424242"]` ```json { assets( query: { searchTerm: "product", organizationIds: ["4141141", "32322", "2342345"] }, latestVersionsOnly: true ) { assetId, description } } ``` The output for this example is: ```json { "data": { "assets": [ { "assetId": "product-datatype", "description": "Product Datatype Asset" }, { "assetId": "product-api", "description": "Product API Asset" } ] } } ``` ## Asset Lifecycle State To consume an asset and its lifecycle state, replace `ANYPOINT_TOKEN`, `:groupId`, `:assetId`, and `:version` with your information, and execute this command: ```console curl -X POST \ https://anypoint.mulesoft.com/graph/api/v2/graphql \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'content-type: application/json' \ -d '{"query":"{asset(groupId: \":groupId\",assetId: \":assetId\",version: \":version\"){groupId assetId version status}}"}' ``` To search for an asset by lifecycle state, replace `ANYPOINT_TOKEN` with your information, replace `[development, published, deprecated]` with your list of desired lifecycle states, and execute this command: ```console curl -X POST \ https://anypoint.mulesoft.com/graph/api/v2/graphql \ -H 'Authorization: bearer ANYPOINT_TOKEN' \ -H 'content-type: application/json' \ -d '{"query":"{assets(status:[development, published, deprecated]){groupId assetId version status}}"}' ``` ## Reference: Query Filter Parameters You can specify filters to display additional information about each asset. The following filters let you refine query output:
ParameterDescription

assetId

Asset ID for each asset.

createdAt

Date and time an asset was created, for example, 2018-08-11T04:48:20.585Z.

createdBy { id, userName, firstName, lastName }

Display who created the asset.

dependencies { groupId, assetId, version, name, type }

Returns the assets the listed asset depends on.

files { classifier, packaging, externalLink, md5 }

File information.

name

Asset name.

contactName

Name of a person to contact about the asset.

contactEmail

Email address of a person to contact about the asset.

numberOfRates

The number of star ratings for an asset.

organizationId

Organization ID for an asset.

rating

Star rating value for an asset.

runtimeVersion

Mule Runtime version.

tags { value, key, mutable }

The asset tags. The tags created in the user interface and when publishing are only value tags (they don’t have a key). Tags created in the user interface are mutable while the others are immutable. Tags with a key and value are special tags created by Exchange to describe the asset.

type

Lowercase values corresponding to the Exchange All Types menu: connector, template, example, rest-api, soap-api, raml-fragment, and custom.

version

Version for an asset.

groupId

Group ID for an asset.

## See Also - [Exchange Graph API](https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/exchange-graph-http/) - [Anypoint Exchange](https://anypoint.mulesoft.com/exchange/) - [Exchange Documentation](https://docs.mulesoft.com/exchange/) --- product: Exchange --- # ServiceNow Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your agents are hosted on ServiceNow AI Agents, use this topic to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## Agent Scanners - [Add a scanner for ServiceNow AI Agents](https://docs.mulesoft.com/exchange/adding-servicenow-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Setting User Access Permissions > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Exchange provides multiple ways to set up access management to provide collaboration across teams and meet governance requirements. Anypoint Platform comes with predefined permissions and roles that can be set in the Access Management section of Anypoint Platform to provide users with different access levels. > [!NOTE] To see updated permissions, users must log out of Exchange and log in again. ## Exchange Permissions To control access to assets in a business group, add users or teams to role groups for Exchange permissions. The following permissions pertain to every business group level: Exchange Viewers Enables users to view and download assets within a business group. Users with this permission cannot add new assets, edit asset portal content, or share an asset with another user. Assign this permission to those who consume your assets in a specific business group. Exchange Contributors Enables users to view, create, and download assets within a business group. Users with this permission can edit asset portal content in an existing asset version. Use this permission to invite users to edit and maintain your asset portal descriptions. Exchange Administrators Enables users to view, create, and download assets within a business group. Users with this permission have all the same access as users with the Exchange contributor and Exchange viewer permissions, and access to share an asset with another user, deprecate an asset, and delete an asset. Use this permission to set up Exchange administrators for all the assets within a specific business group. Exchange Creator Enables users to create new assets within a business group’s catalog, but cannot modify assets or asset versions created by other users in the business group. Once the users with this permission create an asset, the Asset Administrator role is automatically assigned for the assets they create. The Asset Administrator role allows these users to modify only the assets that they create. Use this permission to restrict modification of assets other than assets created by this user while allowing all developers across all teams in a business group to create new assets in Exchange. For connected apps, the experience differs. If an asset is created using a connected app, the Asset Administrator role is granted to the connected app owner. You can’t use connected apps with the Exchange Creator permission to create new versions of existing assets. ## Asset Permissions To control access to individual assets, add users or teams to role groups for asset permissions. The following permissions extend access to assets in addition to the permissions that a user has at the business group level: Asset Viewers Enables users to view and download an asset. Users with this permission cannot edit asset portal content or share an asset with another user. Use this permission to invite a user outside your business group to view and download an asset. Asset Contributors Enables users to view, add a new version, and download an asset. Use this permission to invite a user outside your business group to view, download, and add edit portal content for an asset. Asset Administrators Enables users to view, create, download, deprecate, and delete an asset. Users with this permission have the same access as users with the Exchange Administrators permission, but on only a single asset. This permission is assigned by default to an asset creator. Use this permission to extend administrator permissions to an asset to an additional user. ## Summary of Exchange Permissions
PermissionVisibilityActions

Exchange Viewers

For all assets within a business group

View, Download

Exchange Contributors

For all assets within a business group

View, Download, Edit Portal

Exchange Administrators

For all assets within a business group

View, Download, Edit Portal, Delete, Share, Deprecate Asset Version, Manage API Instances

Exchange Creator

For only assets that this user creates within a business group

View, Download, Edit Asset, Share, Manage API Instances, and Delete

Asset Viewers

For a specific asset in any business group

View, Download

Asset Contributors

For a specific asset in any business group

View, Download, Edit Portal

Asset Administrators

For a specific asset in any business group

View, Download, Edit Portal, Delete, Share, Deprecate Asset Version, Manage API Instances

- Exchange Viewers have visibility within a business group and can view and download assets. - Exchange Contributors have visibility within a business group and can view and download assets. This permission can also edit asset descriptions. - Exchange Administrators have visibility within a business group and can view, download, edit descriptions, deprecate, delete, and share assets. - Exchange Creators have visibility within a business group and can view, download, edit descriptions, deprecate, delete, and share only assets that they own. - Asset Viewers can view an asset in a business group and can view and download the asset. - Asset Contributors can view an asset in a business group and can view and download the asset. This permission can also edit the asset’s content. - Asset Administrators can view an asset in a business group and can view, download, edit the content, deprecate, delete, and share the asset. ## Remove Roles When Limits Are Reached Remove roles, including Project Administrator, when you reach the limit. Project Administrator is included in the Exchange Contributor permission. Use this code example to remove roles. Make sure to replace the values with your own. ```console curl -X DELETE 'https://anypoint.mulesoft.com/accounts/api/organizations/:organizationId/roles?role_groups=true&teams=true' \ -H 'Authorization: bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "assign": [], "unassign": [ { "identity_ids": [ "141nab7c-64d7-4763-816f-a2jj365e8c03" ], "role_id": "67a4f1bc-f798-48ce-a0f5-d96b48cf5c3e", "context_params": { "org": "ebb22016-f209-4767-s074-2e57245e4399", "product": "exchange", "projectId": "abfa4920-eelf-22f3-8g71-1e60bd71e12c" } } ] }' ``` The `identity_ids` value is the user ID. The remaining values identify the role to remove. To identify the role data, retrieve existing roles using this request: ```console curl 'https://anypoint.mulesoft.com/accounts/api/users/:userId/roles?role_groups=true&teams=true' \ -H 'Authorization: bearer YOUR_TOKEN' ``` --- product: Exchange --- # Sharing an Asset > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Exchange administrators and asset administrators can share an asset with another user or team in their organization, with the whole organization, or with an external organization. Any Exchange user can click the **Shared with me** link in the left navigation menu of Exchange to show all assets shared with their user account and all assets shared with their organization. ## Share Assets with a User 1. If a user that you want to share an asset with is not in your organization, click **Access Management** > **Users** to add them to your organization. 2. Click an asset to show its details. 3. Click **Share**. 4. Begin typing the name of the person you want to have access to this asset. 5. Select that person in the list. 6. Select whether to grant the user viewer, contributor, or administrator rights. 7. Add any additional users. 8. Click **Save**. You can also click **Share** to change who you are sharing the asset with or to stop sharing with one or more users. ## Share Assets with a Team 1. Click an asset to show its details. 2. Click **Share**. 3. Begin typing the name of the team you want to have access to this asset. 4. Select that team in the list. 5. Select whether to grant the team viewer, contributor, or administrator rights. 6. Add any additional teams. 7. Click **Save**. To add and remove users on a team, or to grant a team viewer, contributor, or administrator access to all assets in a business group, use the [teams settings in Anypoint Access Management](https://docs.mulesoft.com/access-management/teams). ## Share Assets with Your Organization Exchange administrators and asset administrators can share an asset with everyone in their organization. 1. Click an asset to show its details. 2. Click **Share**. 3. Begin typing the name of your organization. 4. Select the list item for everyone at your organization. 5. Select whether to grant all members of your organization viewer, contributor, or administrator rights. 6. Click **Save**. When an asset is shared with an organization, email notification is sent to the organization administrators. You can also click **Share** to stop sharing the asset with everyone at your organization. ## Share Assets with an External Organization Exchange administrators and asset administrators can grant viewer access to an asset to everyone in a chosen external organization. The granting organization holds an asset and grants viewer access to that asset to the receiving organization. To grant viewer access to an asset to an external organization: 1. Each of the granting organization and the receiving organization adds the other to its External Access list in Anypoint Access Management, as described in [External Organization Access](https://docs.mulesoft.com/access-management/external-organization-access). Assets can be shared with another organization only if that organization has enabled receiving viewer access to assets from external organizations. 2. Log in to your Exchange administrator or asset administrator account in the granting organization. 3. Click the asset to show its details. 4. Click **Share**. 5. Begin typing the name of the external organization you want to share this asset with. 6. Select the organization in the list. 7. Repeat steps 5 and 6 to share with additional organizations. 8. Click **Save**. When an asset is shared with an organization, email notification is sent to the organization administrators. You can also click **Share** to change who you are sharing the asset with or to stop sharing with one or more organizations. Only users internal to the granting organization can request access to an API or gain the contributor or administrator permissions. ### Using Assets Shared by a Granting Organization A user in a receiving organization can use Studio to search for a shared connector, configure it, and use it in a Mule application. A user in a receiving organization can use Studio to implement a Mule application based on a shared example or template. A user in a receiving organization cannot use API Manager to manage a shared REST, SOAP, or HTTP API that was created in Exchange in the granting organization. API Manager only shows APIs from the user’s business group. However, the user can use the API in Studio in the flow as a source for scaffolding an application. A user in a receiving organization cannot use API Manager to apply a shared custom policy that was uploaded to Exchange in the granting organization. API Manager does not show policies shared by granting organizations in the list of policies that can be applied to an API instance. A user in a receiving organization can use API Designer to import a shared RAML fragment that was created in Design Center in the granting organization. The user can also add the fragment as a dependency in a new API specification. If the granting organization stops sharing the fragment or deletes the fragment, then the API specification shows the error "File not found." ## See Also - [Access Management External Organization Access](https://docs.mulesoft.com/access-management/external-organization-access) --- product: Exchange --- # Simulating Data in REST APIs > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Exchange lets you provide simulated data for testing OAS or RAML REST APIs. The simulated data is provided in the mocking service feature. The following example shows how the mocking service simulates the data for a REST API: - In the API console that appears on the right side of an asset detail screen. The mocking service lets you add simulated data to an API function and test the API with the data. ![API Console showing the mocking service](/mulesoft/current/en-us/exchange/_images/exchange-rest-api-mocking-service.png) This page shows two URLs. The URL on the left is also used in Design Center and is public. The URL on the right is used only in Exchange and requires authentication. - Listed as an instance with each version of an API. ![A table of patch versions for 1.0 with mocking instances](/mulesoft/current/en-us/exchange/_images/exchange-patch-version-mocking.png) - Listed on the **API instances** page that also lists the mocking service URL. ![A table of API instances, their corresponding environments, URLs, and visibility](/mulesoft/current/en-us/exchange/_images/ex2-api-instances.png) ## Accept Simulated Data in an API 1. From Design Center > API Specification, provide example data that the implementation returns. Alternatively, you can develop an OAS specification from a text editor and add the example data there. 2. In the REST specification provide an HTTP status code for a successful API call. ## Test a REST API With Simulated Data 1. In Exchange, click a REST API. 2. Click a function such as **GET**. 3. In the API console on the right of the screen, click **Send** to send simulated data to the API. Exchange sends the data and lists the response, which in this example returns the HTTP 200 OK status to indicate success, and lists the data that is sent from the API using the simulated data. ## See Also - [Change a REST API Version](https://docs.mulesoft.com/exchange/to-change-raml-version). - [Simulate Calls to an API](https://docs.mulesoft.com/design-center/design-mocking-service). --- product: Exchange --- # Snowflake Platform Scanners > For the full documentation index, see: https://docs.mulesoft.com/llms.txt When your services are hosted on Snowflake, use this page to jump to the Exchange scanner setup. Step-by-step instructions are in the linked page. ## Agent Scanners - [Add a scanner for Snowflake Cortex AI](https://docs.mulesoft.com/exchange/adding-snowflake-cortex-ai-scanner) ## MCP Scanners - [Add a scanner for Snowflake MCP Server](https://docs.mulesoft.com/exchange/adding-snowflake-mcp-scanner) ## Before You Begin Adding a Scanner Make sure you have the permission and access: - Exchange Administrator permission - Verify that you are in the business group where you want to add the scanner. ## See Also - [Discovering and Cataloging External Services with Scanners](https://docs.mulesoft.com/exchange/discovering-and-importing-external-agents) - [Agent Scanners](https://docs.mulesoft.com/exchange/agent-scanners) - [MCP Scanners](https://docs.mulesoft.com/exchange/mcp-scanners) - [Managing Scanners In Exchange](https://docs.mulesoft.com/exchange/managing-scanners) --- product: Exchange --- # Usage and Engagement Metrics > For the full documentation index, see: https://docs.mulesoft.com/llms.txt In Exchange, administrators and asset owners can gain insight into the consumption and user engagement of their API specification fragments and REST API assets. The usage metrics measure: - The number of times the asset was downloaded from Exchange. - The number of imports from API Designer. - The number of imports from Anypoint Studio. - The number of dependents for the asset. - The number of contracts for the asset. The asset engagement score is a composite metric that administrators and asset owners can use to measure the usage of the assets in Exchange. Administrators can view the **Usage and engagement metrics** dashboard for metrics of API specification fragments and REST API assets in an organization. Administrators and asset owners with the Exchange contributor permission can view usage and engagement metrics for a specific asset version from the asset details page. You can share data by exporting metrics to a CSV file. Exchange assets capture usage and engagement metrics to: - Drive growth and engagement, and asset reuse across the entire catalog. Access usage metrics and engagement scores to get a composite view into how your assets are being utilized. - Track and manage asset adoption with out-of-the-box dashboards. View performance analytics of your entire asset library in a single location. ## Permission and License Requirements The following permissions and licenses are required to view the usage and engagement metrics: - Administrators must have the Exchange Administrator role permission for any organization to view the **Usage and engagement metrics** dashboard. - Administrators and asset owners must have the contributor permission to view usage details for a specific API specification fragment and REST API assets, and their versions on the asset details page. - Every customer tier license can view the metrics except the Industry Starter license. ## See Also - [Asset Usage and Engagement Metrics Dashboard](https://docs.mulesoft.com/exchange/asset-usage-and-engagement-metrics-dashboard) - [Metrics for a Specific Asset and Version](https://docs.mulesoft.com/exchange/metrics-for-a-specific-asset-version) --- product: Exchange --- # Using API Catalog CLI with a Network Proxy > For the full documentation index, see: https://docs.mulesoft.com/llms.txt API Catalog CLI can be run through a network proxy to add a layer of security. To use the API Catalog CLI with a proxy server, configure the `HTTP_PROXY` or `HTTPS_PROXY` environment variables with the hostname or IP addresses of your proxy servers as shown in the following sections. ## Configure a Proxy Server Without Authentication To configure a proxy server that does not require authentication, use the following commands: - Linux, macOS, or Unix `$ export HTTP_PROXY=http://_proxy-server_:80` or `$ export HTTPS_PROXY=https://_proxy-server_:443` - Windows `> set HTTP_PROXY=http://_proxy-server_:80` or `> set HTTPS_PROXY=https//_proxy-server_:443` ## Configure a Proxy Server With Authentication To configure a proxy server that requires authentication, use these commands: - Linux, macOS, or Unix `$ export HTTP_PROXY=http://_username_:_password_@_proxy-server_:80` or `$ export HTTPS_PROXY=https://_username_:_password_@_proxy-server_:443` - Windows `> set HTTP_PROXY=http://_username_:_password_@_proxy-server_:80` or `> set HTTPS_PROXY=https://_username_:_password_@_proxy-server_:443` --- product: Exchange --- # Viewing GraphQL API Schemas and Run Queries > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Use the GraphQL console to explore and understand the available GraphQL schemas, and write, run, and troubleshoot GraphQL queries. The console is an easy-to-use interface for API app developers to interact with GraphQL APIs in Exchange. GraphQL APIs are schema definitions that contain the object types and definitions that are used to interact with the API through the GraphQL specification. The GraphQL console enables app developers to query an API that supports this language in a more flexible way than REST. The console supports standard GraphQL query syntax. The console is located in the asset details page. ![The asset details page showing the GraphQL console](/mulesoft/current/en-us/exchange/_images/ex-graphql-console.png)
1Schema: Use the Schema explorer to explore the GraphQL API schema types and documentation.
2Query: Use the Query editor to write and run queries.
  • Variables: Use this tab to enter variables to query.

  • Headers: Use this tab to enter the header information to query.

3Results: Use this panel to review and troubleshoot queries.
## Before You Begin To use the GraphQL console, the Exchange Viewer permission is required. For more information, see [Set User Access Permissions](https://docs.mulesoft.com/exchange/to-set-permissions). ## View GraphQL API Schemas Explore the schema by inspecting the types, fields, and relationships defined in the schema to see a visual representation of the data and operations. Use the Schema explorer to inspect the query methods that are available in the API schema. The documentation explorer renders the information and allows the ability to navigate through the documentation of the API. Use the **Search content** box or keyboard shortcuts to search the schema documentation to find relevant information about specific types, fields, or operations. The search results highlight the search criteria in the corresponding sections of the documentation. 1. In the Exchange landing page, click the **Any type** filter and select **GraphQL APIs** from the list. 2. Select a GraphQL API from the results. 3. In the navigation bar, click **Console**. 4. In the **Schema** panel, review the schema documentation. 5. Search the schema documentation using one of the following methods: 1. Click the three dots icon, select **Search for content**, and enter a keyword in the box. 2. Use the **CTRL+F** or **Command+F** keyboard shortcut and enter a keyword in the **Search content** box. ## Run a GraphQL Query Use the query editor to write queries in the console and run them in real-time. Add fields without knowing the specific syntax using autocomplete or **Control+Space**. The query editor is located in the **Query** panel. The **Results** panel provides immediate feedback and displays the results of the query and any errors. To run queries, a GraphQL instance is required to query between the API instance. Non-managed instances can be added to run the queries. 1. In the **Query** panel, click **Clear** to the clear the editor. 2. Click in the editor and start typing your query using autocomplete or press **Control+Space**. 3. Click **Prettify** to improve the formatting of the query objects in the editor. 4. Click **Copy**, then paste the query text into a text editor and share with others or save for later. 5. In the **Variables** section, add any query variables to include in the query. 6. In the **Header** section, add any header information to include in the query. 7. From the **Instance selector**, select an available server instance to run the query. If there are no server instances available, the **Execute** button is disabled. 8. To add a new a non-managed instance to run the query, click **Add new instance**. 9. From the **Non-managed instances** page, click **Add new instance**. 10. Enter the name and URL of the instance and click the check icon. 11. Click **Execute**. 12. Validate the query results in the **Results** panel. 13. Click **Copy**, then paste the results into a text editor to share with others. 14. Click **Clear** to clear the results. ## See Also - [Asset Details](https://docs.mulesoft.com/exchange/asset-details) --- product: Exchange --- # Workflow: Publish Assets > For the full documentation index, see: https://docs.mulesoft.com/llms.txt Anypoint Exchange provides the ability to publish assets in private Exchange instances and Exchange public portals. Publishing is the process of creating assets and making them available to consumers for discovery and reuse. 1. [Creating an Asset](https://docs.mulesoft.com/exchange/to-create-an-asset) - Create new assets in Exchange. 2. [Editing an Asset](https://docs.mulesoft.com/exchange/to-describe-an-asset) - Add a description, additional pages, terms and conditions, and tags, and change versions. 3. [Managing Asset Lifecycle States](https://docs.mulesoft.com/exchange/lifecycle) - Manage the promotion path of an asset’s lifecycle state. 4. [Manage Versions](https://docs.mulesoft.com/exchange/manage-versions) - View the version details of an asset, add a version for an asset, change the lifecycle state of a version, and delete a version. 5. [Managing Asset Portal Resources](https://docs.mulesoft.com/exchange/to-manage-asset-portal-resources) - List, retrieve, and delete resources from an asset portal with Exchange Experience API. 6. [Simulating Data in REST APIs](https://docs.mulesoft.com/exchange/ex2-to-simulate-api-data) - Use the mocking service to test OAS or RAML REST APIs with simulated data. 7. [Downloading an Asset](https://docs.mulesoft.com/exchange/to-download-an-asset) - Copy the asset to your computer. 8. [Managing Categories](https://docs.mulesoft.com/exchange/to-manage-categories) - Organize assets into categories. 9. [Managing Custom Fields](https://docs.mulesoft.com/exchange/to-manage-custom-fields) - Exchange administrators and organization owners can create custom fields to extend the Exchange asset metadata model and add custom data to any type of asset. 10. [Deleting an Asset](https://docs.mulesoft.com/exchange/to-delete-asset) - Remove an asset. 11. [Changing the Version of an API Asset](https://docs.mulesoft.com/exchange/to-change-raml-version) - Update the version of a RAML asset. 12. [Publishing an HTTP API Asset](https://docs.mulesoft.com/exchange/publish-an-http-api) - If you use Private Exchange, use the HTTP API to specify a placeholder for an endpoint. 13. [Adding Policy Implementation Files to Published Policy Definition](https://docs.mulesoft.com/exchange/add-policy-implementation-files-to-published-policy-definition) - If you published a policy definition, add the implementation files to make policy available at runtime. 14. [FAQ](https://docs.mulesoft.com/exchange/exchange2-faq) - Frequently Asked Questions. ## See Also - [API Management](https://docs.mulesoft.com/exchange/about-api-use) - Publish assets programmatically.