Delete Policy

Overview

Deletes an existing policy from an API Proxy. The policy can be deleted from the request, response, or error pipeline, and can be deleted from all endpoints or a specific endpoint.

Endpoint

DELETE /apiops/projects/{projectName}/apiProxies/{apiProxyName}/policies/{policyName}/

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
apiProxyName string Yes API Proxy name
policyName string Yes Policy name (must exist)

Request Body

Full JSON Body Example

{
  "operationMetadata": {
    "targetScope": "ALL",
    "targetPipeline": "REQUEST",
    "deploy": true,
    "deployTargetEnvironmentNameList": ["production"]
  }
}

Request Body Fields

operationMetadata
Field Type Required Default Description
targetScope string Yes - Policy scope: ALL or ENDPOINT
targetEndpoint string No* - Endpoint path (required if targetScope=ENDPOINT)
targetEndpointHTTPMethod string No* - HTTP method (required if targetScope=ENDPOINT)
targetPipeline string Yes - Pipeline: REQUEST, RESPONSE, or ERROR
deploy boolean No true Whether to deploy after deleting policy
deployTargetEnvironmentNameList array No [] List of environment names to deploy to

Note: The order field is not used for delete operations.

EnumPolicyTargetScope

  • ALL - Delete policy from all endpoints
  • ENDPOINT - Delete policy only from specified endpoint

EnumPolicyTargetPipeline

  • REQUEST - Delete from request pipeline
  • RESPONSE - Delete from response pipeline
  • ERROR - Delete from error pipeline

EnumHttpRequestMethod

  • GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD, TRACE, ALL

Note: When targetScope is ENDPOINT, both targetEndpoint and targetEndpointHTTPMethod are required.

Response

Success Response (200 OK)

{
  "status": "SUCCESS"
}

If deploy: true is set in the request, the response includes deployment result:

{
  "status": "SUCCESS",
  "deploymentResult": {
    "success": true,
    "responseTime": 1500,
    "detailList": [
      {
        "envName": "production",
        "podName": "pod-123",
        "podIp": "10.0.0.1",
        "success": true,
        "responseTime": 1500
      }
    ]
  }
}

Response Fields

Field Type Description
status string Response status: SUCCESS or FAILURE
deploymentResult object Deployment result (if deploy=true). See Deployment Result Object

Deployment Result Object (deploymentResult)

Field Type Description
success boolean Overall deployment success status
responseTime integer Total deployment response time in milliseconds
detailList array List of deployment details per pod/environment

Deployment Detail Object (detailList item)

Field Type Description
envName string Environment name
podName string Pod name where deployment occurred
podIp string Pod IP address
success boolean Deployment success status for this pod
responseTime integer Deployment response time for this pod in milliseconds

EnumStatus

  • SUCCESS - Operation successful
  • FAILURE - Operation failed

Error Response (400 Bad Request)

{
  "error": "bad_request",
  "error_description": "A policy with name (my-policy) does not exist in API Proxy!"
}

Common Causes

  • Policy name does not exist
  • Invalid targetScope (ENDPOINT without targetEndpoint)
  • Invalid targetEndpoint (endpoint not found in API Proxy)
  • Policy not found in specified pipeline/scope

Error Response (401 Unauthorized)

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

Error Response (404 Not Found)

{
  "error": "not_found",
  "error_description": "ApiProxy (name: MyAPI) was not found!"
}

cURL Example

Example 1: Delete Policy from All Endpoints

curl -X DELETE \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/policies/throttling-policy/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "operationMetadata": {
      "targetScope": "ALL",
      "targetPipeline": "REQUEST",
      "deploy": true,
      "deployTargetEnvironmentNameList": ["production"]
    }
  }'

Example 2: Delete Policy from Specific Endpoint

curl -X DELETE \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/policies/endpoint-throttling/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "operationMetadata": {
      "targetScope": "ENDPOINT",
      "targetEndpoint": "/api/users",
      "targetEndpointHTTPMethod": "GET",
      "targetPipeline": "REQUEST",
      "deploy": false
    }
  }'

Example 3: Delete Policy Without Deployment

curl -X DELETE \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/policies/test-policy/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "operationMetadata": {
      "targetScope": "ALL",
      "targetPipeline": "REQUEST",
      "deploy": false
    }
  }'

Example 4: Delete Policy from Response Pipeline

curl -X DELETE \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/policies/response-logging/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "operationMetadata": {
      "targetScope": "ALL",
      "targetPipeline": "RESPONSE",
      "deploy": true,
      "deployTargetEnvironmentNameList": ["production"]
    }
  }'

Notes and Warnings

  • Policy Name: Policy name is case-insensitive. The policy is found by case-insensitive name matching.
  • Scope: If policy exists in multiple scopes (ALL and ENDPOINT), you must delete from each scope separately.
  • Pipeline: If policy exists in multiple pipelines (REQUEST, RESPONSE, ERROR), you must delete from each pipeline separately.
  • Deployment: If deploy: true, ensure environments exist and user has deployment permissions.
  • Multiple Instances: If a policy with the same name exists in multiple positions (e.g., order 1 and order 3), all instances are deleted.
  • Irreversible: Policy deletion is permanent. Ensure you have a backup if needed.