Update API Proxy from URL
Overview
Updates an existing API proxy by re-parsing an OpenAPI (Swagger), WSDL specification from a URL, or updates a reverse proxy. The API proxy can be automatically deployed to specified environments after update.
Endpoint
PUT /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 - Update OpenAPI
{
"apiProxyName": "petstore-api",
"apiProxyDescription": "Updated Petstore API Proxy",
"apiProxyCreationType": "OPEN_API",
"specUrl": "https://petstore.swagger.io/v2/swagger.json",
"clientRoute": {
"relativePathList": ["/api/v1"],
"virtualHostList": ["api.example.com"]
},
"routingInfo": {
"routingAddressList": [
{
"address": "https://backend.example.com",
"weight": 100,
"healthCheckEnabled": true
}
],
"routingEnabled": true,
"mirrorEnabled": false
},
"deploy": false,
"deployTargetEnvironmentNameList": ["production"],
"reParse": true,
"soapToRest": false,
"enableWSA": false,
"enableWSRM": false,
"backendApiVersion": "v2",
"maintenanceModeSetting": {
"enabled": false,
"httpStatusCode": 503,
"contentType": "application/json",
"message": "Service is under maintenance"
},
"specAuthorizationValueList": [
{
"headerName": "Authorization",
"headerValue": "Bearer token123"
}
]
}
Full JSON Body Example - Update WSDL
{
"apiProxyName": "soap-service",
"apiProxyDescription": "Updated SOAP Service",
"apiProxyCreationType": "WSDL",
"specUrl": "https://example.com/service.wsdl",
"clientRoute": {
"relativePathList": ["/soap"],
"virtualHostList": ["soap.example.com"]
},
"routingInfo": {
"routingAddressList": [
{
"address": "https://backend.example.com/soap",
"weight": 100,
"healthCheckEnabled": true
}
],
"routingEnabled": true,
"mirrorEnabled": false
},
"deploy": false,
"deployTargetEnvironmentNameList": ["production"],
"reParse": true,
"soapToRest": false,
"enableWSA": true,
"enableWSRM": false,
"backendApiVersion": null,
"maintenanceModeSetting": {
"enabled": false,
"httpStatusCode": 503,
"contentType": "text/xml",
"message": "Service is under maintenance"
},
"specAuthorizationValueList": []
}
Full JSON Body Example - Update Reverse Proxy
{
"apiProxyName": "reverse-proxy",
"apiProxyDescription": "Updated Reverse Proxy",
"apiProxyCreationType": "REVERSE_PROXY",
"specUrl": null,
"clientRoute": {
"relativePathList": ["/reverse"],
"virtualHostList": ["reverse.example.com"]
},
"routingInfo": {
"routingAddressList": [
{
"address": "https://backend.example.com",
"weight": 100,
"healthCheckEnabled": true
}
],
"routingEnabled": true,
"mirrorEnabled": false
},
"deploy": false,
"deployTargetEnvironmentNameList": ["production"],
"reParse": true,
"soapToRest": false,
"enableWSA": false,
"enableWSRM": false,
"backendApiVersion": null,
"maintenanceModeSetting": {
"enabled": false,
"httpStatusCode": 503,
"contentType": "application/json",
"message": "Service is under maintenance"
},
"specAuthorizationValueList": []
}
Request Body Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| apiProxyName | string | Yes | - | API Proxy name (must exist for update) |
| apiProxyDescription | string | No | - | API Proxy description (if empty, keeps existing description) |
| apiProxyCreationType | string | Yes | - | API creation type. Must match existing API Proxy type. See EnumApiProxySpecType |
| specUrl | string | Yes* | - | Specification URL (required if not reverse proxy) |
| clientRoute | object | Yes | - | Client route configuration. See ClientRoute |
| routingInfo | object | No | - | Routing configuration. See RoutingInfo |
| deploy | boolean | No | false | Whether to deploy after update |
| deployTargetEnvironmentNameList | array | No | [] | List of environment names to deploy to |
| reParse | boolean | No | true | Whether to reparse API proxy (should be true for update) |
| soapToRest | boolean | No | false | Enable SOAP to REST transformation (cannot be changed if not set initially) |
| enableWSA | boolean | No | false | Enable WS-Addressing (SOAP only) |
| enableWSRM | boolean | No | false | Enable WS-ReliableMessaging (SOAP only) |
| backendApiVersion | string | No | - | Backend API version |
| maintenanceModeSetting | object | No | - | Maintenance mode settings. See MaintenanceModeSetting |
| specAuthorizationValueList | array | No | [] | Authorization headers for accessing spec URL. See SpecAuthorizationValue |
EnumApiProxySpecType (apiProxyCreationType)
OPEN_API- OpenAPI 3.0 specificationSWAGGER- Swagger 2.0 specificationWSDL- WSDL specification (SOAP)REVERSE_PROXY- Reverse proxy (no specification)
ClientRoute (clientRoute)
| Field | Type | Required | Description |
|---|---|---|---|
| relativePathList | array | Yes | List of relative paths (at least one required, first cannot be empty) |
| virtualHostList | array | No | List of virtual hosts |
RoutingInfo (routingInfo)
| Field | Type | Required | Description |
|---|---|---|---|
| routingAddressList | array | No | List of routing addresses. See RoutingAddress |
| routingEnabled | boolean | No | Whether routing is enabled |
| mirrorEnabled | boolean | No | Whether mirroring is enabled |
RoutingAddress (routingInfo.routingAddressList item)
| Field | Type | Required | Description |
|---|---|---|---|
| address | string | Yes | Backend server address |
| weight | integer | No | Routing weight (for load balancing) |
| healthCheckEnabled | boolean | No | Enable health check |
MaintenanceModeSetting (maintenanceModeSetting)
| Field | Type | Required | Description |
|---|---|---|---|
| enabled | boolean | No | Whether maintenance mode is enabled |
| httpStatusCode | integer | No | HTTP status code for maintenance response |
| contentType | string | No | Content type for maintenance response |
| message | string | No | Maintenance message |
SpecAuthorizationValue (specAuthorizationValueList item)
| Field | Type | Required | Description |
|---|---|---|---|
| headerName | string | Yes | Header name (e.g., “Authorization”) |
| headerValue | string | Yes | Header value (e.g., “Bearer token123”) |
Notes
apiProxyNamemust exist (API Proxy will be updated, not created).apiProxyCreationTypemust match the existing API Proxy type (cannot change type).specUrlis required unlessapiProxyCreationTypeisREVERSE_PROXY.clientRoute.relativePathListmust contain at least one path, and the first path cannot be empty.reParse: trueis recommended for updates to reparse the specification.soapToRestcannot be enabled if the API Proxy was not created with this option initially.- If
apiProxyDescriptionis empty, the existing description is preserved. routingInfois optional; if not provided, existing routing settings are preserved.
Response
Success Response (200 OK)
{
"success": true,
"deploymentResult": {
"success": true,
"deploymentResults": [
{
"environmentName": "production",
"success": true,
"message": "Deployment successful"
}
]
}
}
cURL Example
curl -X PUT \
"https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/url/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"apiProxyName": "petstore-api",
"apiProxyDescription": "Updated Petstore API Proxy",
"apiProxyCreationType": "OPEN_API",
"specUrl": "https://petstore.swagger.io/v2/swagger.json",
"clientRoute": {
"relativePathList": ["/api/v1"]
},
"reParse": true,
"deploy": false
}'
Notes and Warnings
- Update vs Create:
- This endpoint updates an existing API Proxy (identified by
apiProxyName) - If API Proxy does not exist, it will be created
- Use this endpoint to reparse and update API Proxy from specification URL
- This endpoint updates an existing API Proxy (identified by
- Type Restrictions:
apiProxyCreationTypemust match the existing API Proxy type- Cannot change from SOAP to REST or vice versa
- Cannot enable
soapToRestif not enabled initially
- Reparsing:
reParse: truere-parses the specification and updates endpoints- Existing endpoints may be modified or removed if specification changes
- Policies and settings are preserved during reparse
- Client Route:
clientRoute.relativePathListmust contain at least one path- First path in the list cannot be empty
- Virtual hosts are optional
- Routing:
routingInfois optional- If not provided, existing routing settings are preserved
- Can update routing addresses, weights, and health checks
- Deployment:
- Set
deploy: trueto automatically deploy after update - Specify
deployTargetEnvironmentNameListfor target environments - Requires
ROLE_DEPLOY_UNDEPLOY_PROXIESpermission if deploying
- Set
- Specification Authorization:
- Use
specAuthorizationValueListif specification URL requires authentication - Common: Authorization header with Bearer token
- Headers are sent when fetching specification
- Use
Related Documentation
- Create API Proxy from URL - Create new API Proxy from URL
- Update API Proxy - Update API Proxy metadata
- Deploy API Proxy - Deploy API Proxy to environments