{"id":"default-project","displayName":"Default Project","description":"This is the default project for development","organizationId":"acme","createdBy":"john.doe","updatedBy":"john.doe","createdAt":"2023-10-12T10:30:00Z","updatedAt":"2023-10-12T10:30:00Z"}
Properties
Name
Type
Required
Restrictions
Description
id
string
true
read-only
Handle (URL-friendly slug) for the project
displayName
string
true
none
Human-readable name for the project
description
string
false
none
Description of the project
organizationId
string
true
read-only
Handle (URL-friendly slug) of the organization this project belongs to
createdBy
string
false
read-only
User identifier of the user who created this resource
updatedBy
string
false
read-only
User identifier of the user who last updated this resource. Only present in the detail response (GET /projects/
{"id":"my-rest-api-handle","displayName":"PizzaShackAPI","description":"This is a simple API for Pizza Shack online pizza delivery store","context":"/pizza","version":"1.0.0","createdBy":"john.doe","updatedBy":"john.doe","projectId":"default-project","createdAt":"2023-10-12T10:30:00Z","updatedAt":"2023-10-12T10:30:00Z","readOnly":false,"upstream":{"main":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}},"sandbox":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}}},"lifeCycleStatus":"CREATED","kind":"RestApi","transport":["http","https"],"policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}],"operations":[{"name":"getPetById","description":"Find pet by ID","request":{"method":"GET","path":"/pet/{petId}","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}],"channels":[{"name":"issues","description":"Channel for order events","request":{"method":"SUB","name":"issues","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}],"subscriptionPlans":["Gold","Silver"]}
API object
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
Unique handle/identifier for the API. Can be provided during creation or auto-generated. On update (PUT), if provided must match the path parameter — returns 400 if they differ.
displayName
string
true
none
Human-readable name for the API
description
string
false
none
none
context
string
true
none
none
version
string
true
none
none
createdBy
string
false
read-only
User identifier of the user who created this resource
updatedBy
string
false
read-only
User identifier of the user who last updated this resource. Only present in the detail response (GET /rest-apis/
projectId
string
true
none
Handle (URL-friendly slug) of the project this API belongs to
createdAt
string(date-time)
false
read-only
Timestamp when the api was created
updatedAt
string(date-time)
false
read-only
Timestamp when the api was last updated
readOnly
boolean
false
read-only
True if the artifact originated from a data-plane gateway (origin gateway_api) and is read-only in the control plane; false for control-plane created artifacts.
{"name":"getPetById","description":"Find pet by ID","request":{"method":"GET","path":"/pet/{petId}","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}
{"name":"issues","description":"Channel for order events","request":{"method":"SUB","name":"issues","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}
{"count":3,"list":[{"id":"prod-gateway-01","organizationId":"acme","displayName":"Production Gateway 01","description":"Production gateway for handling API traffic","properties":{"region":"us-west","tier":"premium"},"endpoints":["https://api.example.com:8443/api/v1","wss://events.example.com:8444"],"isCritical":true,"functionalityType":"regular","version":"1.0","isActive":true,"createdBy":"john.doe","updatedBy":"john.doe","createdAt":"2025-10-14T10:30:00Z","updatedAt":"2025-10-14T10:30:00Z","associatedAt":"2025-10-15T10:30:00Z","isDeployed":true,"deployment":{"status":"CREATED","deployedAt":"2025-10-15T11:00:00Z"}}],"pagination":{"total":10,"offset":0,"limit":10}}
{"id":"prod-gateway-01","organizationId":"acme","displayName":"Production Gateway 01","description":"Production gateway for handling API traffic","properties":{"region":"us-west","tier":"premium"},"endpoints":["https://api.example.com:8443/api/v1","wss://events.example.com:8444"],"isCritical":true,"functionalityType":"regular","version":"1.0","isActive":true,"createdBy":"john.doe","updatedBy":"john.doe","createdAt":"2025-10-14T10:30:00Z","updatedAt":"2025-10-14T10:30:00Z","associatedAt":"2025-10-15T10:30:00Z","isDeployed":true,"deployment":{"status":"CREATED","deployedAt":"2025-10-15T11:00:00Z"}}
{"id":"prod-gateway-01","displayName":"Production Gateway 01","description":"Production gateway for handling API traffic","endpoints":["https://api.example.com:8443/api/v1","wss://events.example.com:8444"],"isCritical":true,"functionalityType":"regular","properties":{"region":"us-west","tier":"premium"},"version":"1.0"}
Request body for creating a gateway. Organization ID is automatically extracted
from the JWT token and does not need to be provided.
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
Handle (URL-friendly slug) for the gateway. Immutable after creation.
displayName
string
true
none
Human-readable gateway name
description
string
false
none
Description of the gateway
endpoints
[string]
true
none
Network endpoints exposed by this gateway, each as a full URL string
isCritical
boolean
false
none
Whether the gateway is critical for production
functionalityType
string
true
none
Type of gateway functionality
properties
object
false
none
Custom key-value properties for the gateway
version
string
false
none
Gateway version in major.minor format (e.g. 1.0) or CalVer YYYY.MM.DD format (e.g. 2026.05.13). Defaults to 1.0 if not provided.
{"name":"set-wso2-headers","version":"v0.8.0","description":"Sets WSO2-specific headers in the request and response.","isCustomPolicy":true,"policyDefinition":{}}
A policy installed on a gateway controller.
Properties
Name
Type
Required
Restrictions
Description
name
string
true
none
Unique policy name
version
string
true
none
Semantic version of the policy
description
string
false
none
Human-readable description of the policy
isCustomPolicy
boolean
true
none
Whether this is a user-installed custom policy.
policyDefinition
object
false
none
The full policy schema as declared in the policy's policy-definition.yaml. Contains parameters and systemParameters JSON Schema documents. Only present for custom policies.
{"policies":[{"name":"set-wso2-headers","version":"v0.8.0","description":"Sets WSO2-specific headers in the request and response.","isCustomPolicy":true,"policyDefinition":{}}]}
All policies installed on the gateway. Each entry includes name, version, and isCustomPolicy. Custom policies additionally include policyDefinition with their parameters and systemParameters schemas.
{"id":"prod-gateway-01","organizationId":"acme","displayName":"Production Gateway 01","description":"Production gateway for handling API traffic","properties":{"region":"us-west","tier":"premium"},"endpoints":["https://api.example.com:8443/api/v1","wss://events.example.com:8444"],"isCritical":true,"functionalityType":"regular","version":"1.0","isActive":true,"createdBy":"john.doe","updatedBy":"john.doe","createdAt":"2025-10-14T10:30:00Z","updatedAt":"2025-10-14T10:30:00Z"}
Properties
Name
Type
Required
Restrictions
Description
id
string
false
read-only
Handle (URL-friendly slug) for the gateway
organizationId
string
false
none
Handle (URL-friendly slug) of the organization this gateway belongs to
displayName
string
true
none
Human-readable gateway name
description
string
false
none
Description of the gateway
properties
object
false
none
Custom key-value properties for the gateway
endpoints
[string]
false
none
Network endpoints exposed by this gateway, each as a full URL string
isCritical
boolean
false
none
Whether the gateway is critical for production
functionalityType
string
false
none
Type of gateway functionality
version
string
false
none
Gateway version in major.minor format (e.g. 1.0) or CalVer YYYY.MM.DD format (e.g. 2026.05.13)
isActive
boolean
false
none
Indicates if the gateway is currently connected to the platform via WebSocket
createdBy
string
false
read-only
User identifier of the user who created this resource
updatedBy
string
false
read-only
User identifier of the user who last updated this resource. Only present in the detail response (GET /gateways/
{"count":2,"list":[{"id":"prod-gateway-01","organizationId":"acme","displayName":"Production Gateway 01","description":"Production gateway for handling API traffic","properties":{"region":"us-west","tier":"premium"},"endpoints":["https://api.example.com:8443/api/v1","wss://events.example.com:8444"],"isCritical":true,"functionalityType":"regular","version":"1.0","isActive":true,"createdBy":"john.doe","updatedBy":"john.doe","createdAt":"2025-10-14T10:30:00Z","updatedAt":"2025-10-14T10:30:00Z"}],"pagination":{"total":10,"offset":0,"limit":10}}
{"count":2,"list":[{"id":"default-project","displayName":"Default Project","description":"This is the default project for development","organizationId":"acme","createdBy":"john.doe","updatedBy":"john.doe","createdAt":"2023-10-12T10:30:00Z","updatedAt":"2023-10-12T10:30:00Z"}],"pagination":{"total":10,"offset":0,"limit":10}}
{"count":2,"list":[{"id":"my-rest-api-handle","displayName":"PizzaShackAPI","description":"This is a simple API for Pizza Shack online pizza delivery store","context":"/pizza","version":"1.0.0","createdBy":"john.doe","updatedBy":"john.doe","projectId":"default-project","createdAt":"2023-10-12T10:30:00Z","updatedAt":"2023-10-12T10:30:00Z","readOnly":false,"upstream":{"main":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}},"sandbox":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}}},"lifeCycleStatus":"CREATED","kind":"RestApi","transport":["http","https"],"policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}],"operations":[{"name":"getPetById","description":"Find pet by ID","request":{"method":"GET","path":"/pet/{petId}","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}],"channels":[{"name":"issues","description":"Channel for order events","request":{"method":"SUB","name":"issues","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}],"subscriptionPlans":["Gold","Silver"]}],"pagination":{"total":10,"offset":0,"limit":10}}
{"id":"def45678-g901-23hi-j456-789012klmnop","token":"REDACTED_TOKEN","createdAt":"2025-10-15T14:20:00Z","message":"New token generated successfully. Old token remains active until revoked."}
Properties
Name
Type
Required
Restrictions
Description
id
string(uuid)
false
none
ID of the newly generated token
token
string
false
none
Plain-text new authentication token (only exposed once during rotation). The example value is a non-functional placeholder.
{"id":"my-rest-api-handle","displayName":"PizzaShackAPI","description":"This is a simple API for Pizza Shack online pizza delivery store","context":"/pizza","version":"1.0.0","createdBy":"john.doe","updatedBy":"john.doe","projectId":"default-project","createdAt":"2023-10-12T10:30:00Z","updatedAt":"2023-10-12T10:30:00Z","readOnly":false,"upstream":{"main":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}},"sandbox":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}}},"lifeCycleStatus":"CREATED","kind":"RestApi","transport":["http","https"],"policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}],"operations":[{"name":"getPetById","description":"Find pet by ID","request":{"method":"GET","path":"/pet/{petId}","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}],"channels":[{"name":"issues","description":"Channel for order events","request":{"method":"SUB","name":"issues","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}]}}],"subscriptionPlans":["Gold","Silver"]}
{"id":"production-key-01","displayName":"Production API Key","apiKey":"sk_example_1234567890abcdef","externalRefId":"ext-ref-12345","expiresAt":"2026-12-31T23:59:59Z","expiresIn":{"duration":30,"unit":"days"},"issuer":"api-platform-devportal"}
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
Unique identifier for this API key within the API (optional; if omitted, generated from displayName)
displayName
string
true
none
Human-readable name for the API key
apiKey
string
true
none
The plain text API key value that will be hashed before storage
externalRefId
string¦null
false
none
Optional reference ID for tracing purposes (from external platforms)
{"name":"production-key-01","displayName":"Production API Key (Updated)","apiKey":"sk_example_new1234567890abcdef","externalRefId":"ext-ref-12345","expiresAt":"2027-12-31T23:59:59Z","expiresIn":{"duration":30,"unit":"days"},"issuer":"api-platform-devportal"}
Properties
Name
Type
Required
Restrictions
Description
name
string
false
none
Unique identifier for this API key within the API (optional; if omitted, generated from displayName)
displayName
string
true
none
Human-readable name for the API key
apiKey
string
true
none
The new plain text API key value that will be hashed before storage
externalRefId
string¦null
false
none
Optional reference ID for tracing purposes (from external platforms)
Kind of quota this limit enforces. Only REQUEST_COUNT is currently enforced; other values are accepted by the schema for forward compatibility but are rejected by the API today.
timeUnit
string
true
none
Throttle window unit
timeAmount
integer
false
none
Number of timeUnit windows the limit applies over (e.g. 2 with timeUnit=HOUR means "per 2 hours")
limitCount
integer
true
none
Number of requests (or units, for BANDWIDTH/TOTAL_TOKEN_COUNT) allowed in the throttle window
limitCountUnit
string
false
none
Unit for limitCount when limitType is BANDWIDTH (e.g. MB, GB)
stopOnQuotaReach
boolean
false
none
Whether to block requests when this limit's quota is exhausted
Throttling limits for the plan (e.g. requests per hour, requests per month). The table backing this API already supports multiple limits per plan, but the platform-api currently only persists and enforces the first entry in this array; any additional entries are accepted but ignored.
{"status":"error","code":"REST_API_NOT_FOUND","message":"The requested REST API could not be found.","errors":[{"field":"<name of the offending field>","message":"must start with /"}],"details":{},"trackingId":"4f1c6f2e-8a4b-4c93-b1de-9f2f6f0c2a11"}
Standard error response
Properties
Name
Type
Required
Restrictions
Description
status
string
true
none
Always the literal "error".
code
string
true
none
Stable, machine-readable error code from the error catalog, in the form <DOMAIN>_<REASON> (e.g. REST_API_NOT_FOUND). Clients and agents should branch on this, not on the HTTP status.
Per-field validation failures. Present when the error is a validation failure.
details
object
false
none
Optional structured metadata specific to this error condition (e.g. the resources referencing a secret that blocked its deletion). Shape varies by code; absent when not applicable.
trackingId
string(uuid)
false
none
Correlation ID for server-side failures. Present only on 5xx responses; quote it when reporting the error so operators can find the corresponding server log entry.
Current deployment lifecycle state: - DEPLOYED: Currently active on the gateway - UNDEPLOYED: Suspended but can be rolled back - DEPLOYING: Deployment in progress, waiting for gateway acknowledgement - UNDEPLOYING: Undeployment in progress, waiting for gateway acknowledgement - FAILED: Deployment or undeployment failed (see statusReason for error code) - ARCHIVED: Historical deployment, can be rolled back
baseDeploymentId
string(uuid)¦null
false
none
UUID of the base deployment this was created from
metadata
object
false
none
Metadata associated with the deployment
createdAt
string(date-time)
true
none
Timestamp when the deployment artifact was created
statusReason
string¦null
false
none
Error code explaining the failure reason. Null unless status is FAILED (e.g. DEPLOYMENT_TIMEOUT, GATEWAY_PROCESSING_ERROR)
updatedAt
string(date-time)¦null
false
none
Timestamp when the deployment status last changed (null for ARCHIVED deployments)
Upstream endpoint configuration. Provide exactly one of url (a direct backend URL) or ref (a reference to a predefined upstream definition) — never both.
Upstream endpoint configuration. Provide exactly one of url (a direct backend URL) or ref (a reference to a predefined upstream definition) — never both.
Upstream endpoint configuration. Provide exactly one of url (a direct backend URL) or
ref (a reference to a predefined upstream definition) — never both.
Properties
Name
Type
Required
Restrictions
Description
url
string(uri)
false
none
Direct backend URL to route traffic to. Mutually exclusive with ref.
ref
string
false
none
Reference to a predefined upstreamDefinition. Mutually exclusive with url.
Stable identifier shared by every version of a template family.
displayName
string
true
none
Human-readable LLM Template name
managedBy
string
false
none
Identifies who manages the template. Built-in templates use 'wso2'; custom templates default to 'organization' and may be set to any value.
description
string
false
none
Description of the LLM provider template
createdBy
string
false
read-only
User identifier of the user who created this resource
updatedBy
string
false
read-only
User identifier of the user who last updated this resource
readOnly
boolean
false
read-only
True if the artifact originated from a data-plane gateway (origin gateway_api) and is read-only in the control plane; false for control-plane created artifacts.
version
string
true
none
Content version, matching the v. pattern (e.g. v1.0, v2.0). Must be unique for this template.
isLatest
boolean
false
read-only
Whether this is the latest version of the template.
enabled
boolean
false
read-only
Whether this version is offered when creating providers. If false, the template version is hidden from the provider creation UI and API.
openapi
string
false
none
OpenAPI specification content (JSON or YAML) for the provider, when uploaded/pasted. Use metadata.openapiSpecUrl instead to reference the spec by URL.
Human-readable LLM Template name. Optional — when omitted, the new version inherits the family's existing name. Supplying a different value renames the template family.
version
string
true
none
New version identifier, e.g. v2.0. Must be unique for this template.
managedBy
string
false
none
Identifies who manages the template. Custom templates default to 'organization'.
description
string
false
none
Description of the LLM provider template
openapi
string
false
none
OpenAPI specification content (JSON or YAML) for the provider, when uploaded/pasted. Use metadata.openapiSpecUrl instead to reference the spec by URL.
User identifier of the user who created this resource
readOnly
boolean
false
read-only
True if the artifact originated from a data-plane gateway (origin gateway_api) and is read-only in the control plane; false for control-plane created artifacts.
updatedBy
string
false
read-only
User identifier of the user who last updated this resource. Only present in the detail response (GET /llm-providers/
version
string
true
none
Semantic version of the LLM Provider
context
string
false
none
Base path for all routes exposed by this provider. Must start with / and carry no trailing slash; the single exception is the root path "/", which is the default.
vhost
string
false
none
Virtual host name used for routing. Supports standard domain names, subdomains, or wildcard domains. Must follow RFC-compliant hostname rules. Wildcards are only allowed in the left-most label (e.g., *.example.com).
template
string
true
none
Template name to use for this LLM Provider
openapi
string
false
none
OpenAPI specification (JSON or YAML) for the provider endpoint
List of model providers and their models supported by this provider. For non-aggregator templates, only a single model provider is allowed (aggregator templates: awsbedrock, azureaifoundry).
Optional list of gateways this LLM provider can be deployed to, along with per-gateway configuration overrides. This field is optional; omitting it does not change existing behaviour.
{"id":"wso2-con-assistant","displayName":"WSO2 Con Assistant","description":"Customer support assistant","createdBy":"john.doe","readOnly":false,"updatedBy":"john.doe","version":"v1.0","projectId":"default-project","context":"/openai","vhost":"api.openai.com","provider":{"id":"wso2-openai-provider","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}},"additionalProviders":[{"id":"anthropic-provider","as":"anthropic-upstream","transformer":{"type":"openai-to-anthropic","version":"v1","params":{}}}],"openapi":"openapi: 3.0.3\ninfo:\n title: Proxy API\n version: v1.0\npaths: {}\n","globalPolicies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}],"operationPolicies":[{"name":"token-based-ratelimit","version":"v1","executionCondition":"string","paths":[{"path":"/chat/completions","methods":["GET"],"params":{}}]}],"policies":[{"name":"budgetControl","version":"v1","paths":[{"path":"/chat/completions","methods":["GET"],"params":{}}]}],"security":{"enabled":true,"apiKey":{"enabled":true,"key":"X-API-Key","valuePrefix":"Bearer","in":"header"}},"associatedGateways":[{"id":"prod-eu"},{"id":"prod-us"}],"createdAt":"2023-10-12T10:30:00Z","updatedAt":"2023-10-12T10:30:00Z"}
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
Unique handle for the proxy
displayName
string
true
none
Human-readable LLM proxy name
description
string
false
none
Description of the LLM proxy
createdBy
string
false
read-only
User identifier of the user who created this resource
readOnly
boolean
false
read-only
True if the artifact originated from a data-plane gateway (origin gateway_api) and is read-only in the control plane; false for control-plane created artifacts.
updatedBy
string
false
read-only
User identifier of the user who last updated this resource. Only present in the detail response (GET /llm-proxies/
version
string
true
none
Semantic version of the LLM proxy
projectId
string
true
none
Handle (URL-friendly slug) of the project this proxy belongs to
context
string
false
none
Base path for all routes exposed by this proxy. Must start with / and carry no trailing slash; the single exception is the root path "/", which is the default.
vhost
string
false
none
Virtual host name used for routing. Supports standard domain names, subdomains, or wildcard domains. Must follow RFC-compliant hostname rules. Wildcards are only allowed in the left-most label (e.g., *.example.com).
Optional list of additional LLM providers attached to this proxy as selectable upstreams. Policies route requests to any of these by setting the upstream name. The primary provider field above remains the default upstream and the FK target.
openapi
string
false
none
OpenAPI specification (JSON or YAML) for the proxy endpoint
Optional list of gateways this LLM proxy can be deployed to, along with per-gateway configuration overrides. This field is optional; omitting it does not change existing behaviour.
{"id":"wso2-con-assistant","displayName":"WSO2 Con Assistant","description":"Customer support assistant","createdBy":"john.doe","context":"/wso2-con-assistant","version":"v1.0","projectId":"default-project","provider":"wso2-openai-provider","status":"deployed","createdAt":"2025-11-25T10:30:00Z","updatedAt":"2025-11-25T10:30:00Z","readOnly":false}
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
none
displayName
string
true
none
Human-readable name for the LLM proxy
description
string
false
none
none
createdBy
string
false
read-only
User identifier of the user who created this resource
context
string
false
none
Context path where the proxy is exposed
version
string
false
none
none
projectId
string
false
none
Handle (URL-friendly slug) of the project this proxy belongs to
provider
string
false
none
Unique id of a deployed llm provider
status
string
false
none
none
createdAt
string(date-time)
false
none
none
updatedAt
string(date-time)
false
none
none
readOnly
boolean
false
none
True when the artifact originated from a data-plane gateway (origin gateway_api) and is read-only in the control plane.
{"count":2,"list":[{"id":"wso2-con-assistant","displayName":"WSO2 Con Assistant","description":"Customer support assistant","createdBy":"john.doe","context":"/wso2-con-assistant","version":"v1.0","projectId":"default-project","provider":"wso2-openai-provider","status":"deployed","createdAt":"2025-11-25T10:30:00Z","updatedAt":"2025-11-25T10:30:00Z","readOnly":false}],"pagination":{"total":10,"offset":0,"limit":10}}
Request/response translator applied when this provider is the selected upstream. The proxy injects the translator as a conditional policy whose execution condition matches this provider, so it runs only when the provider is selected. The provider's as name (defaults to id) is passed to the translator as its target upstream.
Request/response translator applied when this provider is the selected upstream. The proxy injects the translator as a conditional policy whose execution condition matches this provider, so it runs only when the provider is selected. The provider's as name (defaults to id) is passed to the translator as its target upstream.
Properties
Name
Type
Required
Restrictions
Description
type
string
true
none
Translator policy name (for example openai-to-anthropic).
version
string
true
none
Major-only translator policy version (for example v1). The Gateway Controller resolves it to the installed full version.
params
object
false
none
Translator-specific parameters (for example model, apiVersion).
{"status":"success","message":"API key created and broadcasted to gateways successfully","id":"production-key","apiKey":"REDACTED_API_KEY"}
Properties
Name
Type
Required
Restrictions
Description
status
string
true
none
Status of the operation
message
string
true
none
Detailed message about the operation result
id
string
true
none
Unique identifier of the generated key
apiKey
string
true
none
The generated API key value — 64 hexadecimal characters, returned only in this creation response and never retrievable afterwards. The example value is a non-functional placeholder.
{"status":"success","message":"API key created and broadcasted to gateways successfully","id":"production-key","apiKey":"REDACTED_API_KEY"}
Properties
Name
Type
Required
Restrictions
Description
status
string
true
none
Status of the operation
message
string
true
none
Detailed message about the operation result
id
string
true
none
Unique identifier of the generated key
apiKey
string
true
none
The generated API key value — 64 hexadecimal characters, returned only in this creation response and never retrievable afterwards. The example value is a non-functional placeholder.
{"id":"weather-mcp-proxy","displayName":"Weather Server","description":"An MCP server which provides weather information","createdBy":"john.doe","readOnly":false,"updatedBy":"john.doe","version":"v1.0","projectId":"default-project","context":"/","vhost":"mcp.gw.com","upstream":{"main":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}},"sandbox":{"url":"http://prod-backend:5000/api/v2","auth":{"type":"api-key","header":"X-API-Key","value":"my-api-key-value"}}},"mcpSpecVersion":"2025-06-18","policies":[{"executionCondition":"request.header.x-custom == 'enabled'","name":"SET_HEADER","params":{"key":"MyHeader","value":"MyValue"},"version":"v1"}],"kind":"Mcp","capabilities":{"tools":[{}],"resources":[{}],"prompts":[{}]},"associatedGateways":[{"id":"prod-eu"},{"id":"prod-us"}],"createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"}
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
Unique handle for the proxy
displayName
string
true
none
Human-readable MCP proxy name
description
string
false
none
Description of the MCP proxy
createdBy
string
false
read-only
User identifier of the user who created this resource
readOnly
boolean
false
read-only
True if the artifact originated from a data-plane gateway (origin gateway_api) and is read-only in the control plane; false for control-plane created artifacts.
updatedBy
string
false
read-only
User identifier of the user who last updated this resource. Only present in the detail response (GET /mcp-proxies/
version
string
true
none
Semantic version of the MCP proxy
projectId
string
false
none
Handle (URL-friendly slug) of the project this proxy belongs to
context
string
false
none
Base path for all routes exposed by this proxy. Must start with / and carry no trailing slash; the single exception is the root path "/", which is the default.
vhost
string
false
none
Virtual host name used for routing. Supports standard domain names, subdomains, or wildcard domains. Must follow RFC-compliant hostname rules. Wildcards are only allowed in the left-most label (e.g., *.example.com).
Optional list of gateways this MCP proxy can be deployed to, along with per-gateway configuration overrides. This field is optional; omitting it does not change existing behaviour.
{"id":"weather-mcp-proxy","displayName":"Weather Server","description":"An MCP server which provides weather information","createdBy":"john.doe","context":"/weather-mcp-proxy","version":"v1.0","projectId":"default-project","status":"deployed","mcpSpecVersion":"2025-11-25","createdAt":"2025-11-25T10:30:00Z","updatedAt":"2025-11-25T10:30:00Z","readOnly":false}
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
none
displayName
string
true
none
Human-readable name for the MCP proxy
description
string
false
none
none
createdBy
string
false
read-only
User identifier of the user who created this resource
context
string
false
none
Context path where the proxy is exposed
version
string
false
none
none
projectId
string
false
none
Handle (URL-friendly slug) of the project this proxy belongs to
status
string
false
none
none
mcpSpecVersion
string
false
none
none
createdAt
string(date-time)
false
none
none
updatedAt
string(date-time)
false
none
none
readOnly
boolean
false
none
True when the artifact originated from a data-plane gateway (origin gateway_api) and is read-only in the control plane.
{"count":2,"list":[{"id":"weather-mcp-proxy","displayName":"Weather Server","description":"An MCP server which provides weather information","createdBy":"john.doe","context":"/weather-mcp-proxy","version":"v1.0","projectId":"default-project","status":"deployed","mcpSpecVersion":"2025-11-25","createdAt":"2025-11-25T10:30:00Z","updatedAt":"2025-11-25T10:30:00Z","readOnly":false}],"pagination":{"total":10,"offset":0,"limit":10}}
Target MCP server to introspect, and the credentials to introspect it with. At least
one of url/proxyId must be provided
Properties
Name
Type
Required
Restrictions
Description
url
string(uri)
false
none
Endpoint URL of the MCP server to fetch information from. Required unless proxyId is given. When sent together with proxyId it overrides that proxy's stored upstream URL, while the proxy's stored credentials are still used — this validates an unsaved endpoint edit without re-sending a write-only secret.
proxyId
string
false
none
MCP proxy handle (identifier) for refresh operations. The stored credentials of this proxy are used for the fetch, and its stored upstream URL too unless url overrides it. Required unless url is given.
Authentication configuration for the fetch request. Allowed only when proxyId is absent (initial creation flow); sending it with proxyId is rejected, as the stored auth is used whenever a proxy is referenced.
{"id":"wso2-openai-key","displayName":"WSO2 OpenAI API Key","description":"Primary API key for WSO2 OpenAI integration","value":"sk-xxx","type":"GENERIC"}
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
Handle (slug) used in {{ secret "id" }} placeholders. Immutable after creation.
displayName
string
true
none
Human-readable name for the secret
description
string
false
none
none
value
string
true
write-only
Plaintext secret value — encrypted at rest, never returned in any response
{"id":"wso2-openai-key","displayName":"WSO2 OpenAI API Key","createdBy":"john.doe","updatedBy":"john.doe","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"}
Returned on create (201) and rotate (200). The plaintext value is never included.
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
none
displayName
string
true
none
Human-readable name for the secret
createdBy
string
false
read-only
User identifier of the user who created this resource
updatedBy
string
false
read-only
User identifier of the user who last updated this resource
{"id":"wso2-openai-key","displayName":"WSO2 OpenAI API Key","description":"string","type":"GENERIC","provider":"IN_BUILT","status":"ACTIVE","hash":"hmac-sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe04294e576d4b3d4c57e3f428a","createdBy":"john.doe","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"}
Secret metadata — never includes the plaintext value.
Properties
Name
Type
Required
Restrictions
Description
id
string
false
none
none
displayName
string
true
none
Human-readable name for the secret
description
string
false
none
none
type
string
false
none
none
provider
string
false
none
none
status
string
false
none
none
hash
string
false
none
none
createdBy
string
false
read-only
User identifier of the user who created this resource
{"count":0,"list":[{"id":"wso2-openai-key","displayName":"WSO2 OpenAI API Key","description":"string","type":"GENERIC","provider":"IN_BUILT","status":"ACTIVE","hash":"hmac-sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe04294e576d4b3d4c57e3f428a","createdBy":"john.doe","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"}],"pagination":{"total":10,"offset":0,"limit":10}}