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.

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 specification
  • SWAGGER - Swagger 2.0 specification
  • WSDL - 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

  • apiProxyName must exist (API Proxy will be updated, not created).
  • apiProxyCreationType must match the existing API Proxy type (cannot change type).
  • specUrl is required unless apiProxyCreationType is REVERSE_PROXY.
  • clientRoute.relativePathList must contain at least one path, and the first path cannot be empty.
  • reParse: true is recommended for updates to reparse the specification.
  • soapToRest cannot be enabled if the API Proxy was not created with this option initially.
  • If apiProxyDescription is empty, the existing description is preserved.
  • routingInfo is 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
  • Type Restrictions:
    • apiProxyCreationType must match the existing API Proxy type
    • Cannot change from SOAP to REST or vice versa
    • Cannot enable soapToRest if not enabled initially
  • Reparsing:
    • reParse: true re-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.relativePathList must contain at least one path
    • First path in the list cannot be empty
    • Virtual hosts are optional
  • Routing:
    • routingInfo is optional
    • If not provided, existing routing settings are preserved
    • Can update routing addresses, weights, and health checks
  • Deployment:
    • Set deploy: true to automatically deploy after update
    • Specify deployTargetEnvironmentNameList for target environments
    • Requires ROLE_DEPLOY_UNDEPLOY_PROXIES permission if deploying
  • Specification Authorization:
    • Use specAuthorizationValueList if specification URL requires authentication
    • Common: Authorization header with Bearer token
    • Headers are sent when fetching specification