Update API Proxy from File
Overview
Updates an existing API proxy by re-parsing an OpenAPI (Swagger), WSDL specification from an uploaded file, or updates a reverse proxy. The API proxy can be automatically deployed to specified environments after update. For WSDLs with many XSDs, use a ZIP file.
Endpoint
PUT /apiops/projects/{projectName}/apiProxies/file/
Authentication
Requires a Personal API Access Token.
Header
Authorization: Bearer YOUR_TOKEN
Request
Headers
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer {token} | Yes |
| Content-Type | multipart/form-data | Yes |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectName | string | Yes | Project name |
Form Data
| Field | Type | Required | Description |
|---|---|---|---|
| metadata | string (JSON) | Yes | JSON string containing API proxy metadata |
| specFile | file | Yes | Specification file (OpenAPI/Swagger/WSDL) or ZIP file for WSDLs with many XSDs |
Request Body (metadata JSON)
Full JSON Body Example - Update OpenAPI
{
"apiProxyName": "petstore-api",
"apiProxyDescription": "Updated Petstore API Proxy",
"apiProxyCreationType": "OPEN_API",
"clientRoute": {
"relativePathList": ["/api/v1"],
"hostList": ["api.example.com"],
"methodList": ["GET", "POST", "PUT", "DELETE"],
"headerList": [],
"bufferRequest": true,
"bufferResponse": true
},
"routingInfo": {
"routingAddressList": [
{
"address": "https://backend.example.com",
"weight": 100,
"soapType": "SOAP11"
}
],
"loadBalanceAlgorithm": "ROUND_ROBIN",
"connectTimeout": 30,
"readTimeout": 60,
"retryCount": 3,
"failoverRetryCount": 2,
"ignoreRoutingError": 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"
}
}
Full JSON Body Example - Update WSDL
{
"apiProxyName": "soap-service",
"apiProxyDescription": "Updated SOAP Service",
"apiProxyCreationType": "WSDL",
"clientRoute": {
"relativePathList": ["/soap"],
"hostList": ["soap.example.com"],
"methodList": [],
"headerList": [],
"bufferRequest": true,
"bufferResponse": true
},
"routingInfo": {
"routingAddressList": [
{
"address": "https://backend.example.com/soap",
"weight": 100,
"soapType": "SOAP11"
}
],
"loadBalanceAlgorithm": "ROUND_ROBIN",
"connectTimeout": 30,
"readTimeout": 60,
"retryCount": 3,
"failoverRetryCount": 2,
"ignoreRoutingError": 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"
}
}
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 |
| 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 |
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) |
| hostList | array | No | List of host names |
| methodList | array | No | List of HTTP methods (for REST) |
| headerList | array | No | List of headers |
| bufferRequest | boolean | No | Buffer request body |
| bufferResponse | boolean | No | Buffer response body |
RoutingInfo (routingInfo)
| Field | Type | Required | Description |
|---|---|---|---|
| routingAddressList | array | No | List of routing addresses. See RoutingAddress |
| loadBalanceAlgorithm | string | No | Load balancing algorithm. See EnumRoutingAlgorithm |
| connectTimeout | integer | No | Connection timeout in seconds |
| readTimeout | integer | No | Read timeout in seconds |
| retryCount | integer | No | Number of retries |
| failoverRetryCount | integer | No | Number of failover retries |
| ignoreRoutingError | boolean | No | Ignore routing errors |
RoutingAddress (routingInfo.routingAddressList item)
| Field | Type | Required | Description |
|---|---|---|---|
| address | string | Yes | Backend server address |
| weight | integer | No | Routing weight (for load balancing) |
| soapType | string | No | SOAP type (SOAP11, SOAP12) for SOAP APIs |
EnumRoutingAlgorithm (routingInfo.loadBalanceAlgorithm)
ROUND_ROBIN- Round-robin load balancingWEIGHTED_ROUND_ROBIN- Weighted round-robinLEAST_CONNECTIONS- Least connectionsRANDOM- Random selection
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 |
Notes
apiProxyNamemust exist (API Proxy will be updated, not created).apiProxyCreationTypemust match the existing API Proxy type (cannot change type).specFilemust be provided (multipart file upload).- For WSDLs with many XSDs, use a ZIP file containing all files.
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/file/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "metadata={\"apiProxyName\":\"petstore-api\",\"apiProxyCreationType\":\"OPEN_API\",\"clientRoute\":{\"relativePathList\":[\"/api/v1\"]},\"reParse\":true};type=application/json" \
-F "specFile=@swagger.json"
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 file
- 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
- File Upload:
- Use
multipart/form-datacontent type specFileparameter contains the specification file- For WSDLs with many XSDs, use ZIP file containing all files
- Supported formats: JSON (OpenAPI/Swagger), XML (WSDL), ZIP (WSDL with XSDs)
- Use
- 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
- Hosts, methods, and headers are optional
- Routing:
routingInfois optional- If not provided, existing routing settings are preserved
- Can update routing addresses, load balancing, and timeouts
- Deployment:
- Set
deploy: trueto automatically deploy after update - Specify
deployTargetEnvironmentNameListfor target environments - Requires
ROLE_DEPLOY_UNDEPLOY_PROXIESpermission if deploying
- Set
Related Documentation
- Create API Proxy from File - Create new API Proxy from file
- Update API Proxy - Update API Proxy metadata
- Deploy API Proxy - Deploy API Proxy to environments