Create API Proxy from URL
Endpoint
POST /apiops/projects/{projectName}/apiProxies/url/
Authentication
Requires a Personal API Access Token.
Header
Authorization: Bearer YOUR_TOKEN
Request
Headers
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer {token} | Yes |
| Content-Type | application/json | Yes |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectName | string | Yes | Project name |
Request Body
Full JSON Body Example
{
"apiProxyName": "petstore-api",
"apiProxyDescription": "Petstore API Proxy",
"apiProxyCreationType": "OPEN_API",
"specUrl": "https://petstore.swagger.io/v2/swagger.json",
"clientRoute": {
"relativePathList": ["/api/v1"],
"hostList": ["api.example.com"]
},
"routingInfo": {
"routingAddressList": [
{
"address": "https://backend.example.com",
"weight": 100,
"healthMonitoringEnabled": true
}
],
"routingEnabled": true,
"mirrorEnabled": false
},
"deploy": false,
"deployTargetEnvironmentNameList": ["production"],
"reParse": false,
"soapToRest": false,
"enableWSA": false,
"enableWSRM": false,
"backendApiVersion": "v1",
"requestBodyReadBehavior": "ALWAYS_READ",
"responseBodyReadBehavior": "ALWAYS_READ",
"maintenanceModeSetting": {
"enabled": false,
"httpStatusCode": 503,
"contentType": "application/json",
"message": "Service is under maintenance"
},
"specAuthorizationValueList": [
{
"keyName": "Authorization",
"value": "Bearer token123",
"type": "header"
}
]
}
Request Body Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| apiProxyName | string | Yes | - | API Proxy name (must be unique within project) |
| apiProxyDescription | string | No | - | API Proxy description |
| apiProxyCreationType | string | Yes | - | API creation type |
| specUrl | string | Yes* | - | Specification URL (required if not reverse proxy) |
| clientRoute | object | No | - | Client route configuration |
| routingInfo | object | No | - | Routing configuration |
| deploy | boolean | No | false | Whether to deploy after creation |
| deployTargetEnvironmentNameList | array | No | [] | List of environment names to deploy to |
| reParse | boolean | No | false | Whether to reparse existing API proxy |
| soapToRest | boolean | No | false | Enable SOAP to REST transformation |
| enableWSA | boolean | No | false | Enable WS-Addressing (SOAP only) |
| enableWSRM | boolean | No | false | Enable WS-ReliableMessaging (SOAP only) |
| backendApiVersion | string | No | - | Backend API version |
| requestBodyReadBehavior | string | No | ALWAYS_READ | Request body read behavior. Values: ALWAYS_READ, READ_IF_POLICY_EXISTS, NEVER_READ |
| responseBodyReadBehavior | string | No | ALWAYS_READ | Response body read behavior. Values: ALWAYS_READ, READ_IF_POLICY_EXISTS, NEVER_READ |
| maintenanceModeSetting | object | No | - | Maintenance mode settings |
| specAuthorizationValueList | array | No | [] | Authorization headers for spec URL access |
EnumApiProxySpecType
OPEN_API- OpenAPI 3.0 specificationSWAGGER- Swagger 2.0 specificationWSDL- WSDL specification (SOAP)REVERSE_PROXY- Reverse proxy (no spec file)EMPTY_API- No-Spec API (no spec file; endpoints are defined manually, see below)
Note: For REVERSE_PROXY and EMPTY_API, specUrl is not required.
No-Spec API (EMPTY_API)
Use apiProxyCreationType: "EMPTY_API" to create an API proxy without any specification file.
Unlike REVERSE_PROXY, endpoints are not inferred from a backend spec — after creation the
proxy is an empty REST proxy and each endpoint (API method) must be added individually via
Create Endpoint.
1. Create the proxy (no specUrl):
{
"apiProxyName": "nospec-api",
"apiProxyCreationType": "EMPTY_API",
"clientRoute": {
"relativePathList": ["/nospec"]
},
"routingInfo": {
"routingAddressList": [
{"address": "http://backend-host:port"}
]
}
}
2. Add endpoints (repeat per endpoint):
POST /apiops/projects/{projectName}/apiProxies/nospec-api/endpoints/
{
"name": "/login",
"httpMethod": "GET",
"backendResourceUrl": "/api/sonuc/login",
"backendHttpMethod": "GET"
}
3. Deploy using the standard Deploy API Proxy endpoint, or set deploy: true in step 1.
Critical rule: final URL = routingAddress + backendResourceUrl
The worker builds the backend request URL by concatenating routingInfo.routingAddressList[].address
(host only, no path) with the endpoint's backendResourceUrl (path only, no host). Putting a path
in both (e.g. address http://host:port/api/sonuc and backendResourceUrl: "/api/sonuc/login")
produces a broken duplicated path (http://host:port/api/sonuc/api/sonuc/login).
routingAddress:http://backend-host:port— host onlybackendResourceUrl:/api/sonuc/login— path only- Final backend URL:
http://backend-host:port+/api/sonuc/login
Unsupported for EMPTY_API:
PUT(reparse,reParse: true) — rejected, since there is no spec to reparse; update endpoints individually with Update Endpoint instead.- Create API Proxy from File /
its update variant — rejected, since those endpoints require a
specFile.