Create API Proxy from URL

Overview

Creates an API proxy by parsing an OpenAPI (Swagger), WSDL specification from a URL, or creates a reverse proxy. The API proxy can be automatically deployed to specified environments after creation.

Endpoint

POST /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

{
  "apiProxyName": "petstore-api",
  "apiProxyDescription": "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": false,
  "soapToRest": false,
  "enableWSA": false,
  "enableWSRM": false,
  "backendApiVersion": "v1",
  "maintenanceModeSetting": {
    "enabled": false,
    "httpStatusCode": 503,
    "contentType": "application/json",
    "message": "Service is under maintenance"
  },
  "specAuthorizationValueList": [
    {
      "headerName": "Authorization",
      "headerValue": "Bearer token123"
    }
  ]
}

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
maintenanceModeSetting object No - Maintenance mode settings
specAuthorizationValueList array No [] Authorization headers for spec URL access

EnumApiProxySpecType

  • OPEN_API - OpenAPI 3.0 specification
  • SWAGGER - Swagger 2.0 specification
  • WSDL - WSDL specification (SOAP)
  • REVERSE_PROXY - Reverse proxy (no spec file)

Note: For REVERSE_PROXY, specUrl is not required.

clientRoute
Field Type Required Description
relativePathList array No List of relative paths (e.g., [“/api/v1”])
virtualHostList array No List of virtual hosts (e.g., [“api.example.com”])
routingInfo
Field Type Required Description  
routingAddressList array No List of backend addresses  
routingEnabled boolean No true Whether routing is enabled
mirrorEnabled boolean No false Whether mirroring is enabled
routingAddressList Item
Field Type Required Description  
address string Yes Backend address URL  
weight integer No 100 Load balancing weight
healthCheckEnabled boolean No false Enable health check
maintenanceModeSetting
Field Type Required Description  
enabled boolean No false Enable maintenance mode
httpStatusCode integer No 503 HTTP status code for maintenance
contentType string No application/json Content type for maintenance response
message string No - Maintenance message
specAuthorizationValueList Item
Field Type Required Description
headerName string Yes Header name (e.g., “Authorization”)
headerValue string Yes Header value (e.g., “Bearer token123”)

Response

Success Response (200 OK)

{
  "success": true,
  "deploymentResult": {
    "success": true,
    "deploymentResults": [
      {
        "environmentName": "production",
        "success": true,
        "message": "Deployment successful"
      }
    ]
  }
}

Response Fields

Field Type Description
success boolean Indicates if the request was successful
deploymentResult object Deployment result (if deploy=true)
deploymentResult.success boolean Overall deployment success
deploymentResult.deploymentResults array Individual environment deployment results

Error Response (400 Bad Request)

{
  "error": "bad_request",
  "error_description": "ApiProxy (name: petstore-api) is already exist!"
}

Common Causes

  • API Proxy name already exists
  • Invalid specification URL
  • Invalid API creation type
  • Invalid specification format

Error Response (401 Unauthorized)

{
  "error": "unauthorized_client",
  "error_description": "Invalid token"
}

Error Response (404 Not Found)

{
  "error": "not_found",
  "error_description": "Project (MyProject) is not found or user does not have privilege to access it!"
}

cURL Example

curl -X POST \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/url/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "apiProxyName": "petstore-api",
    "apiProxyDescription": "Petstore API Proxy",
    "apiProxyCreationType": "OPEN_API",
    "specUrl": "https://petstore.swagger.io/v2/swagger.json",
    "clientRoute": {
      "relativePathList": ["/api/v1"]
    },
    "deploy": false,
    "reParse": false,
    "soapToRest": false
  }'

Notes and Warnings

  • Unique Names: API Proxy names must be unique within a project
  • Specification Access: Ensure the specification URL is accessible. Use specAuthorizationValueList if authentication is required
  • Reparse: Set reParse: true to update an existing API proxy from a new specification
  • Deployment: If deploy: true, ensure environments exist and user has deployment permissions
  • SOAP Features: enableWSA and enableWSRM are only applicable for SOAP APIs
  • Reverse Proxy: For reverse proxy, specUrl is not required
  • License Limits: Creating API proxies may be subject to license limits