Ana içeriğe atla

Endpoint

PUT /apiops/projects/{projectName}/apiProxies/file/

Authentication

Requires a Personal API Access Token.
Authorization: Bearer YOUR_TOKEN

Request

Headers

HeaderValueRequired
AuthorizationBearer Yes
Content-Typemultipart/form-dataYes

Path Parameters

ParameterTypeRequiredDescription
projectNamestringYesProject name

Form Data

FieldTypeRequiredDescription
metadatastring (JSON)YesJSON string containing API proxy metadata
specFilefileYesSpecification 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

FieldTypeRequiredDefaultDescription
apiProxyNamestringYes-API Proxy name (must exist for update)
apiProxyDescriptionstringNo-API Proxy description (if empty, keeps existing description)
apiProxyCreationTypestringYes-API creation type. Must match existing API Proxy type. See EnumApiProxySpecType
clientRouteobjectYes-Client route configuration. See ClientRoute
routingInfoobjectNo-Routing configuration. See RoutingInfo
deploybooleanNofalseWhether to deploy after update
deployTargetEnvironmentNameListarrayNo[]List of environment names to deploy to
reParsebooleanNotrueWhether to reparse API proxy (should be true for update)
soapToRestbooleanNofalseEnable SOAP to REST transformation (cannot be changed if not set initially)
enableWSAbooleanNofalseEnable WS-Addressing (SOAP only)
enableWSRMbooleanNofalseEnable WS-ReliableMessaging (SOAP only)
backendApiVersionstringNo-Backend API version
maintenanceModeSettingobjectNo-Maintenance mode settings. See MaintenanceModeSetting

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)

FieldTypeRequiredDescription
relativePathListarrayYesList of relative paths (at least one required, first cannot be empty)
hostListarrayNoList of host names
methodListarrayNoList of HTTP methods (for REST)
headerListarrayNoList of headers
bufferRequestbooleanNoBuffer request body
bufferResponsebooleanNoBuffer response body

RoutingInfo (routingInfo)

FieldTypeRequiredDescription
routingAddressListarrayNoList of routing addresses. See RoutingAddress
loadBalanceAlgorithmstringNoLoad balancing algorithm. See EnumRoutingAlgorithm
connectTimeoutintegerNoConnection timeout in seconds
readTimeoutintegerNoRead timeout in seconds
retryCountintegerNoNumber of retries
failoverRetryCountintegerNoNumber of failover retries
ignoreRoutingErrorbooleanNoIgnore routing errors

RoutingAddress (routingInfo.routingAddressList item)

FieldTypeRequiredDescription
addressstringYesBackend server address
weightintegerNoRouting weight (for load balancing)
soapTypestringNoSOAP type (SOAP11, SOAP12) for SOAP APIs

EnumRoutingAlgorithm (routingInfo.loadBalanceAlgorithm)

  • ROUND_ROBIN - Round-robin load balancing
  • WEIGHTED_ROUND_ROBIN - Weighted round-robin
  • LEAST_CONNECTIONS - Least connections
  • RANDOM - Random selection

MaintenanceModeSetting (maintenanceModeSetting)

FieldTypeRequiredDescription
enabledbooleanNoWhether maintenance mode is enabled
httpStatusCodeintegerNoHTTP status code for maintenance response
contentTypestringNoContent type for maintenance response
messagestringNoMaintenance message

Notes

  • apiProxyName must exist (API Proxy will be updated, not created).
  • apiProxyCreationType must match the existing API Proxy type (cannot change type).
  • specFile must be provided (multipart file upload).
  • For WSDLs with many XSDs, use a ZIP file containing all files.
  • 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/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
  • 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
  • File Upload:
    • Use multipart/form-data content type
    • specFile parameter 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)
  • 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
    • Hosts, methods, and headers are optional
  • Routing:
    • routingInfo is optional
    • If not provided, existing routing settings are preserved
    • Can update routing addresses, load balancing, and timeouts
  • Deployment:
    • Set deploy: true to automatically deploy after update
    • Specify deployTargetEnvironmentNameList for target environments
    • Requires API_MANAGEMENT + DEPLOY_UNDEPLOY permission if deploying

Permissions

User must have API_MANAGEMENT + MANAGE permission in the project. For deployment operations (when deploy: true is set), user must also have API_MANAGEMENT + DEPLOY_UNDEPLOY permission.