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
| 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
| 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)
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.