### Specify Allowed Origins During Server Startup (Windows Example) Source: https://apim.docs.wso2.com/en/latest/reference/product-apis/advanced-configurations This example provides a concrete command for starting the API Manager server on Windows, defining specific allowed origins for its REST APIs. It lists example origins for publisher, devportal, gateway, and service catalog. ```batch api-manager.bat \ -Drest.api.publisher.allowed.origins=https://myorg1.publisher.example.com \ -Drest.api.devportal.allowed.origins=https://myorg1.devportal.example.com,https://myorg2.devportal.example.com \ -Drest.api.gateway.allowed.origins=https://myorg1.gateway.example.com,https://myorg3.gateway.example.com \ -Drest.api.service.catalog.allowed.origins=https://myorg1.service.catalog.example.com \ ``` -------------------------------- ### Specify Allowed Origins During Server Startup (Linux/Mac OS Example) Source: https://apim.docs.wso2.com/en/latest/reference/product-apis/advanced-configurations This example shows a practical command for starting the API Manager server on Linux/Mac OS with specific allowed origins defined for its REST APIs. It includes example origins for different API components. ```shell ./api-manager.sh \ -Drest.api.publisher.allowed.origins=https://myorg1.publisher.example.com \ -Drest.api.devportal.allowed.origins=https://myorg1.devportal.example.com,https://myorg2.devportal.example.com \ -Drest.api.gateway.allowed.origins=https://myorg1.gateway.example.com,https://myorg3.gateway.example.com \ -Drest.api.service.catalog.allowed.origins=https://myorg1.service.catalog.example.com \ ``` -------------------------------- ### Start All-in-One Node (Windows) Source: https://apim.docs.wso2.com/en/latest/install-and-setup/setup/distributed-deployment/deploying-wso2-api-m-in-a-simple-scalable-setup This command navigates to the API Manager's binary directory and starts the All-in-One server on Windows. Replace `` with the correct installation path. The `--run` flag ensures the service runs in the foreground. ```batch cd \bin\ api-manager.bat --run ``` -------------------------------- ### Example: Generate API Keys for PizzaShackAPI Source: https://apim.docs.wso2.com/en/latest/apiops/cli/cicd-using-cli?q= This example demonstrates how to generate API keys for the 'PizzaShackAPI' in the 'dev' environment using the `apictl get keys` command with short flags. It assumes default values for provider and version if not specified. ```bash apictl get keys -n PizzaShackAPI -e dev ``` -------------------------------- ### Start Gateway Node (Windows) Source: https://apim.docs.wso2.com/en/latest/install-and-setup/setup/distributed-deployment/deploying-wso2-api-m-in-a-simple-scalable-setup This command navigates to the gateway's binary directory and starts the gateway service on Windows. Replace `` with the correct installation path. The `--run` flag ensures the service runs in the foreground. ```batch cd \bin\ gateway.bat --run ``` -------------------------------- ### Get API - HTTP Request Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json An HTTP GET request to retrieve details of a specific API using its ID. This request requires an Authorization header for authentication. ```http GET {{serverURL}}{{publisherBasePath}}/apis/{{apiId}} HTTP/1.1 Host: {{serverURL}} Authorization: Bearer {{access-token}} ``` -------------------------------- ### Example: Import API Product with environment parameters Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments?q= This example imports an API Product, preserves the provider, updates APIs, and uses a specific environment parameter file for configuration. This allows for environment-specific settings during import. ```bash apictl import api-product -f dev/LeasingAPIProduct_1.0.0.zip -e production --preserve-provider=false --update-apis=true --params dev/api_product_params.yaml ``` -------------------------------- ### Get API Product Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json Retrieves details of a specific API Product using its unique ID. ```APIDOC ## GET /api-products/{apiProductId} ### Description Retrieves the details of a specific API Product identified by its unique ID. ### Method GET ### Endpoint {{serverURL}}{{publisherBasePath}}/api-products/{{apiProductId}} ### Parameters #### Path Parameters - **apiProductId** (string) - Required - The unique identifier of the API Product. #### Query Parameters None ### Request Example ```json { "apiProductId": "a1b2c3d4-e5f6-7890-1234-567890abcdef" } ``` ### Response #### Success Response (200) - **id** (string) - The unique identifier of the API Product. - **name** (string) - The name of the API Product. - **context** (string) - The context path of the API Product. - **version** (string) - The version of the API Product. - **provider** (string) - The provider of the API Product. - **state** (string) - The current state of the API Product. - **apis** (array) - List of APIs included in the product. #### Response Example ```json { "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "name": "PizzaShackAPIProduct", "context": "/pizzaproduct", "version": "1.0.0", "provider": "admin", "state": "PUBLISHED", "apis": [ { "name": "PizzaShackAPI", "apiId": "some-api-id", "version": "1.0.0", "operations": [ { "target": "/order", "verb": "POST", "authType": "Application & Application User", "throttlingPolicy": "Unlimited" } ] } ] } ``` ``` -------------------------------- ### Example: Import API Product to specific environment Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments?q= A straightforward example of importing an API Product to the 'production' environment using the full flag names for file and environment. ```bash apictl import api-product --file /home/user/api-products/LeasingAPIProduct_1.0.0.zip --environment production ``` -------------------------------- ### GET /pizza/1.0.0/menu Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json Invokes the 'menu' endpoint of the Pizza API. This endpoint requires an application access token for authorization. ```APIDOC ## GET /pizza/1.0.0/menu ### Description Invokes the 'menu' endpoint of the Pizza API. This endpoint requires an application access token for authorization. ### Method GET ### Endpoint https://localhost:8243/pizza/1.0.0/menu ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example (No request body for GET request) ### Response #### Success Response (200) (Response structure depends on the API implementation) #### Response Example ```json { "menu": [ { "name": "Margherita", "price": 10.99 }, { "name": "Pepperoni", "price": 12.99 } ] } ``` ``` -------------------------------- ### Example: Import MCP Server with provider preservation and parameters Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-mcp-servers/migrating-mcp-servers-to-different-environments Shows how to import an MCP Server while preserving the existing provider and specifying custom environment parameters via a YAML file. This allows for fine-grained control over the import process. ```bash apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production --preserve-provider=false apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production --preserve-provider=false --params dev/mcp_server_params.yaml ``` -------------------------------- ### Example API Import with apictl Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-apis-to-different-environments Illustrative examples of using the `apictl import api` command with different flag combinations. These examples demonstrate how to specify file paths, environments, and optional parameters like preserving the provider and updating existing APIs. ```bash apictl import api -f dev/PhoneVerification_1.0.0.zip -e production ``` ```bash apictl import api --file /home/user/apis/PhoneVerification_1.0.0.zip --environment production --rotate-revision ``` ```bash apictl import api -f dev/PhoneVerification_1.0.0.zip -e production --preserve-provider=false --update=true --params dev/params.yaml ``` -------------------------------- ### Invoke API Product - GET Request Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json This is a GET request to invoke an API product. It requires an 'Authorization' header with a Bearer token, which is expected to be stored in the 'productApplicationAccessToken' collection variable. The URL points to a sample 'pizzaproduct/menu' endpoint. ```http GET https://localhost:8243/pizzaproduct/menu Authorization: Bearer {{productApplicationAccessToken}} ``` -------------------------------- ### Example: Import MCP Server and update existing Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-mcp-servers/migrating-mcp-servers-to-different-environments Demonstrates importing an MCP Server archive and explicitly updating an existing MCP Server in the target environment. This is useful for applying changes to a deployed server. ```bash apictl import mcp-server --file /home/user/mcp-servers/ChatGPTServer_1.0.0.zip --environment production --update-mcp-server=true ``` -------------------------------- ### Start WSO2 APIM Distributed Setup (after seeding) Source: https://apim.docs.wso2.com/en/latest/tutorials/create-distributed-setup-using-the-enterprise-package?q= This command starts the WSO2 API Manager distributed setup after the databases have already been initialized. It assumes that the '--seed' argument was used in a previous run, and now only the components need to be started. ```bash sh run.sh start ``` -------------------------------- ### Fluent Bit Configuration Example Source: https://apim.docs.wso2.com/en/latest/monitoring/observability/monitoring-with-opensearch This snippet shows a basic command to start the Fluent Bit service. It requires a configuration file path as an argument. Ensure your fluent-bit.conf file is correctly set up to parse and forward WSO2 API Manager logs to your chosen output, such as OpenSearch. ```bash fluent-bit -c ``` -------------------------------- ### Retrieve Application Keys - JavaScript Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json This script retrieves existing OAuth2 keys for an application. It constructs a GET request to the devportal base path, including the application ID and access token for authorization. If keys are found, it sets the 'productKeyMappingId' collection variable. ```javascript var access_token = pm.collectionVariables.get("access-token"); var url = pm.collectionVariables.get("serverURL").concat(pm.collectionVariables.get("devportalBasePath")).concat("/applications/").concat(pm.collectionVariables.get("productApplicationId")).concat("/oauth-keys"); pm.collectionVariables.set("test", url); var getRequest = { url: url, method: 'GET', header: { 'Authorization': 'Bearer '.concat(access_token) } }; pm.sendRequest(getRequest, (error, response) => { if (error == null) { if (response == null) { //use existing key mapping Id } else { pm.collectionVariables.set("productKeyMappingId", response.json().list[0].keyMappingId); } } }); ``` -------------------------------- ### Example: Import API Product with dependent APIs Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments?q= This example demonstrates importing an API Product along with its dependent APIs to the 'production' environment. The `--import-apis=true` flag ensures that associated APIs are also imported. ```bash apictl import api-product -f dev/LeasingAPIProduct_1.0.0.zip -e production --import-apis=true ``` -------------------------------- ### Get API Product by ID - WSO2 API Manager Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json This snippet shows how to retrieve details of a specific API Product using its ID. It requires an access token for authentication and targets the publisher API endpoint for fetching API Product information. ```http GET {{serverURL}}{{publisherBasePath}}/api-products/{{apiProductId}} Authorization: Bearer {{access-token}} ``` -------------------------------- ### Example: Import API Product with revision rotation Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments?q= This example shows how to import an API Product and enable revision rotation. If the maximum revision limit is reached, the oldest revision will be deleted to create a new one. ```bash apictl import api-product -f dev/LeasingAPIProduct_1.0.0.zip -e production --rotate-revision ``` -------------------------------- ### Start WSO2 API Manager - Windows Source: https://apim.docs.wso2.com/en/latest/get-started/api-manager-quick-start-guide?q= Command to start WSO2 API Manager on Windows operating systems. This command is executed from the `/bin` directory. ```batch api-manager.bat --run ``` -------------------------------- ### Example API Product Export Commands Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments Illustrative examples of exporting an API Product using the apictl CLI. The first example shows a basic export, while the second demonstrates exporting with revision, provider, status preservation, and JSON format. ```bash apictl export api-product -n LeasingAPIProduct -v 1.0.0 -e dev ``` ```bash apictl export api-product -n CreditAPIProduct -v 1.0.0 --rev 2 -r admin -e production --preserve-status=true --format JSON ``` -------------------------------- ### Start WSO2 API Manager - Linux/MacOS Source: https://apim.docs.wso2.com/en/latest/get-started/api-manager-quick-start-guide?q= Command to start WSO2 API Manager on Linux or MacOS operating systems. This command is executed from the `/bin` directory. ```shell sh api-manager.sh ``` -------------------------------- ### Example API Export Commands Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-apis-to-different-environments Provides practical examples of the 'apictl export apis' command. These examples show how to export APIs from a specific environment and how to combine multiple flags for a comprehensive export. ```bash apictl export apis -e production ``` ```bash apictl export apis --environment production --format json --preserve-status --force ``` -------------------------------- ### API Context Validation: Required and Prefix (YAML) Source: https://apim.docs.wso2.com/en/latest/reference/governance/wso2-api-management-guidelines Ensures the API 'context' field is present and starts with a forward slash ('/'). The context defines the base path for accessing the API. Invalid examples omit the context or do not start with a slash, while valid examples adhere to the required format. ```YAML data: context: customer description: Sample API description. ``` ```YAML data: context: /customer description: Sample API description. ``` -------------------------------- ### Add Subscription Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json Subscribes an application to an API. ```APIDOC ## POST /subscriptions ### Description Subscribes an application to an API, granting it access based on the API's access control and the application's subscription. ### Method POST ### Endpoint {{serverURL}}{{devportalBasePath}}/subscriptions ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **applicationId** (string) - Required - The ID of the application to subscribe. - **apiId** (string) - Required - The ID of the API to subscribe to. - **throttlingPolicy** (string) - Required - The throttling policy to apply to this subscription. ### Request Example ```json { "applicationId": "{{applicationId}}", "apiId": "{{apiId}}", "throttlingPolicy": "Unlimited" } ``` ### Response #### Success Response (201 Created) - **id** (string) - The unique identifier for the subscription. - **applicationId** (string) - The ID of the subscribed application. - **apiId** (string) - The ID of the subscribed API. #### Response Example ```json { "id": "sub-12345-abcdef", "applicationId": "{{applicationId}}", "apiId": "{{apiId}}" } ``` ``` -------------------------------- ### Example apictl MCP Server Import Commands Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-mcp-servers/migrating-mcp-servers-to-different-environments?q= Practical examples demonstrating how to use the `apictl import mcp-server` command with various flags for different import scenarios. ```bash apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production ``` ```bash apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production --rotate-revision ``` ```bash apictl import mcp-server --file /home/user/mcp-servers/ChatGPTServer_1.0.0.zip --environment production ``` ```bash apictl import mcp-server --file /home/user/mcp-servers/ChatGPTServer_1.0.0.zip --environment production --rotate-revision ``` ```bash apictl import mcp-server --file /home/user/mcp-servers/ChatGPTServer_1.0.0.zip --environment production --update-mcp-server=true ``` ```bash apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production --preserve-provider=false ``` ```bash apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production --preserve-provider=false --params dev/mcp_server_params.yaml ``` -------------------------------- ### Add Application Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json Creates a new application in the developer portal. ```APIDOC ## POST /applications ### Description Creates a new application in the developer portal. Applications are used to group subscriptions and manage access to APIs. ### Method POST ### Endpoint {{serverURL}}{{devportalBasePath}}/applications ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **name** (string) - Required - The name of the application. - **throttlingPolicy** (string) - Required - The throttling policy to apply to the application. - **description** (string) - Optional - A description for the application. - **tokenType** (string) - Optional - The type of token to be generated for the application (e.g., 'JWT'). - **status** (string) - Optional - The status of the application (e.g., 'APPROVED'). - **owner** (string) - Optional - The owner of the application. - **hashEnabled** (boolean) - Optional - Whether hashing is enabled for the application. ### Request Example ```json { "name": "PizzaApp", "throttlingPolicy": "Unlimited", "description": "Sample pizza shack application", "tokenType": "JWT", "status": "APPROVED", "owner": "admin", "hashEnabled": true } ``` ### Response #### Success Response (201 Created) - **applicationId** (string) - The unique identifier for the newly created application. - **name** (string) - The name of the application. - **description** (string) - The description of the application. #### Response Example ```json { "applicationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "name": "PizzaApp", "description": "Sample pizza shack application" } ``` ``` -------------------------------- ### Help Option for API-M Startup Commands Source: https://apim.docs.wso2.com/en/latest/install-and-setup/install/installing-the-product/running-the-api-m Example of how to access help and additional options for WSO2 API Manager startup commands on Linux/macOS by appending '-help'. ```bash sh api-manager.sh -help ``` -------------------------------- ### Publish API Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json Publishes an API, making it available for subscriptions. ```APIDOC ## POST /apis/change-lifecycle ### Description Publishes an API, transitioning it to the 'Published' state and making it available for developers to subscribe to. ### Method POST ### Endpoint {{serverURL}}{{publisherBasePath}}/apis/change-lifecycle ### Parameters #### Path Parameters None #### Query Parameters - **action** (string) - Required - The lifecycle action to perform. Should be 'Publish'. - **apiId** (string) - Required - The ID of the API to publish. #### Request Body None ### Request Example ```http POST /apis/change-lifecycle?action=Publish&apiId={{apiId}} HTTP/1.1 Host: {{serverURL}}{{publisherBasePath}} Authorization: Bearer {{access-token}} ``` ### Response #### Success Response (200 OK) - **message** (string) - Confirmation message of successful publication. #### Response Example ```json { "message": "API {{apiId}} published successfully." } ``` ``` -------------------------------- ### Example: Import API Product and update existing product Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments?q= This example imports an API Product and explicitly sets the flag to update an existing API Product if it is found in the target environment. Otherwise, a new one will be created. ```bash apictl import api-product --file /home/user/api-products/LeasingAPIProduct_1.0.0.zip --environment production --update-api-product=true ``` -------------------------------- ### Example API Export Commands Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-apis-to-different-environments?q= Provides practical examples of using the `apictl export apis` command with specific parameters. These examples illustrate how to export APIs from a 'production' environment with different options for format and status preservation. ```bash apictl export apis -e production ``` ```bash apictl export apis --environment production --format json --preserve-status --force ``` -------------------------------- ### Get All Subscriptions (Curl Example) Source: https://apim.docs.wso2.com/en/latest/reference/product-apis/devportal-apis/devportal-v3/devportal-v3?q= Example of how to retrieve subscriptions using curl, including authorization header and API ID parameter. This demonstrates a typical client-side request. ```curl curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" "https://localhost:9443/api/am/devportal/v3/subscriptions?apiId=02e658e7-71c7-4b1d-a623-be145b789340" ``` -------------------------------- ### BPEL Archive Structure Example Source: https://apim.docs.wso2.com/en/latest/reference/customize-product/extending-api-manager/extending-workflows/configuring-workflows-for-tenants Illustrates the expected file structure for a BPEL archive, including the main BPEL file, WSDLs, EPR files, and deployment configuration. ```tree ApplicationApprovalWorkFlowProcess_1.0.0-Tenant.zip |_ApplicationApprovalWorkFlowProcess.bpel |_ApplicationApprovalWorkFlowProcessArtifacts.wsdl |_ApplicationCallbackService-Tenant.epr |_ApplicationService-Tenant.epr |_ApplicationsApprovalTaskService.wsdl |_SecuredService-service.xml |_WorkflowCallbackService.wsdl |_deploy.xml ``` -------------------------------- ### Deploy API Revision Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json Deploys a specific revision of an API to a gateway. ```APIDOC ## POST /apis/{apiId}/deploy-revision ### Description Deploys a specific revision of an API to a gateway, making it accessible. ### Method POST ### Endpoint {{serverURL}}{{publisherBasePath}}/apis/{{apiId}}/deploy-revision ### Parameters #### Path Parameters - **apiId** (string) - Required - The ID of the API whose revision is to be deployed. #### Query Parameters - **revisionId** (string) - Required - The ID of the revision to deploy. #### Request Body - **name** (string) - Required - The name of the gateway environment (e.g., 'Default'). - **vhost** (string) - Required - The virtual host to deploy to. - **displayOnDevportal** (boolean) - Required - Whether to display this deployment on the developer portal. ### Request Example ```json [ { "name": "Default", "vhost": "localhost", "displayOnDevportal": true } ] ``` ### Response #### Success Response (200 OK) - **message** (string) - Confirmation message of successful deployment. #### Response Example ```json { "message": "Revision {{revisionId}} deployed successfully." } ``` ``` -------------------------------- ### Export API Product Examples with apictl Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments?q= These examples illustrate how to export an API Product with specific parameters using the `apictl` command. They show different combinations of required and optional flags, including specifying the revision number, provider, environment, preserving status, and setting the export format. ```bash apictl export api-product -n LeasingAPIProduct -v 1.0.0 -e dev ``` ```bash apictl export api-product -n CreditAPIProduct -v 1.0.0 --rev 2 -r admin -e production --preserve-status=true --format JSON ``` -------------------------------- ### Create API Revision Source: https://apim.docs.wso2.com/en/latest/assets/attachments/reference/quick-start-postman-collection.json Creates a new revision for a given API. ```APIDOC ## POST /apis/{apiId}/revisions ### Description Creates a new revision for a given API. This allows for versioning and staged rollouts of API changes. ### Method POST ### Endpoint {{serverURL}}{{publisherBasePath}}/apis/{{apiId}}/revisions ### Parameters #### Path Parameters - **apiId** (string) - Required - The ID of the API for which to create a revision. #### Query Parameters None #### Request Body - **description** (string) - Required - A description of the revision being created. ### Request Example ```json { "description": "removed a post resource" } ``` ### Response #### Success Response (201 Created) - **id** (string) - The ID of the newly created revision. - **createdTime** (string) - The timestamp when the revision was created. - **createdDate** (string) - The date when the revision was created. - **description** (string) - The description of the revision. - **apiId** (string) - The ID of the API associated with this revision. - **name** (string) - The name of the revision (e.g., 'Default'). #### Response Example ```json { "id": "123e4567-e89b-12d3-a456-426614174000", "createdTime": "2023-10-27T10:00:00.000Z", "createdDate": "2023-10-27", "description": "removed a post resource", "apiId": "{{apiId}}", "name": "Default" } ``` ``` -------------------------------- ### Example: Import MCP Server with rotation Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-mcp-servers/migrating-mcp-servers-to-different-environments Example of importing an MCP Server archive and enabling revision rotation if the maximum revision limit is reached. This ensures that older revisions are removed to make way for new ones. ```bash apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production apictl import mcp-server -f dev/ChatGPTServer_1.0.0.zip -e production --rotate-revision apictl import mcp-server --file /home/user/mcp-servers/ChatGPTServer_1.0.0.zip --environment production apictl import mcp-server --file /home/user/mcp-servers/ChatGPTServer_1.0.0.zip --environment production --rotate-revision ``` -------------------------------- ### Client Certificates Configuration Example Source: https://apim.docs.wso2.com/en/latest/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments An example of the 'client_certificates.yaml' file used for API Products secured with MutualSSL. It maps certificate aliases to their corresponding file names and includes API product details. ```yaml type: client_certificates version: v4.6.0 ```