Ana içeriğe geç

Update Idempotency Settings

Endpoint

PATCH /apiops/projects/{projectName}/apiProxies/{apiProxyName}/settings/idempotency/

Authentication

Requires a Personal API Access Token.

Authorization: Bearer YOUR_TOKEN

Request

Headers

HeaderValueRequired
AuthorizationBearer {token}Yes
Content-Typeapplication/jsonYes

Path Parameters

ParameterTypeRequiredDescription
projectNamestringYesProject name
apiProxyNamestringYesAPI Proxy name

Request Body

Full JSON Body Example

{
"idempotencySettings": {
"name": "Idempotency Settings",
"description": "Idempotency-Key configuration",
"idempotencyActive": true,
"keyType": "HEADER",
"headerName": "Idempotency-Key",
"keyRequired": false,
"missingKeyHttpStatus": 400,
"applicableHttpMethods": ["POST", "PUT", "PATCH", "DELETE"],
"payloadHashEnabled": true,
"processingTimeoutInSeconds": 60,
"retentionInDays": 7,
"cacheStorageType": "DISTRIBUTED",
"handlingAction": "CONTINUE",
"cacheConnectionTimeoutInSeconds": 3,
"conflictHttpStatus": 409,
"mismatchHttpStatus": 422,
"replayCompletedResponse": true,
"conflictMessage": "{\"error\":\"idempotency_conflict\",\"message\":\"A request with this Idempotency-Key is already being processed.\"}",
"mismatchMessage": "{\"error\":\"idempotency_payload_mismatch\",\"message\":\"This Idempotency-Key was already used with a different request payload.\"}",
"missingKeyMessage": "{\"error\":\"idempotency_key_required\",\"message\":\"The Idempotency-Key header is required.\"}",
"errorContentType": "application/json",
"missingKeyBodyEnabled": true,
"conflictBodyEnabled": true,
"mismatchBodyEnabled": true,
"variableList": []
},
"deploy": false,
"deployTargetEnvironmentNameList": []
}

Request Body Fields

FieldTypeRequiredDefaultDescription
idempotencySettingsobjectNo-Idempotency settings object (see fields below)
deploybooleanNofalseIf true, deploy the API proxy after saving changes
deployTargetEnvironmentNameListarray[string]No-List of environment names to deploy to (required when deploy=true)

idempotencySettings Fields

FieldTypeRequiredDefaultDescription
namestringNo-Settings name
descriptionstringNo-Settings description
idempotencyActivebooleanNofalseEnable/disable idempotency handling
keyTypestringNoHEADERHEADER or CUSTOM
headerNamestringNoIdempotency-KeyHeader name when keyType=HEADER
variableListarrayNo[]Custom key variables when keyType=CUSTOM
keyRequiredbooleanNofalseReject requests missing the idempotency key
missingKeyHttpStatusintegerNo400HTTP status when key is required but missing
applicableHttpMethodsarray[string]NoPOST, PUT, PATCH, DELETEHTTP methods subject to idempotency
payloadHashEnabledbooleanNotrueHash request payload to detect mismatches
processingTimeoutInSecondsintegerNo60In-flight processing lock timeout
retentionInDaysintegerNo7Completed entry retention (1–30)
cacheStorageTypestringNoDISTRIBUTEDLOCAL or DISTRIBUTED
handlingActionstringNo-CONTINUE or STOP when cache hit occurs
cacheConnectionTimeoutInSecondsintegerNo3Distributed cache connection timeout
conflictHttpStatusintegerNo409HTTP status for in-flight duplicate
mismatchHttpStatusintegerNo422HTTP status for payload mismatch
replayCompletedResponsebooleanNotrueReplay stored response for completed keys
conflictMessagestringNo(built-in JSON)Custom conflict response body
mismatchMessagestringNo(built-in JSON)Custom mismatch response body
missingKeyMessagestringNo(built-in JSON)Custom missing-key response body
errorContentTypestringNoapplication/jsonContent-Type for custom error bodies
missingKeyBodyEnabledbooleanNotrueInclude body on missing-key response
conflictBodyEnabledbooleanNotrueInclude body on conflict response
mismatchBodyEnabledbooleanNotrueInclude body on mismatch response

EnumIdempotencyKeyType

  • HEADER — Extract key from an HTTP header (headerName)
  • CUSTOM — Build key from variableList

EnumCacheStorageType

  • LOCAL — Local cache (per worker instance)
  • DISTRIBUTED — Distributed cache (shared across all workers)

EnumCacheHandlingAction

  • CONTINUE — Return cached response and continue to backend (for logging/monitoring)
  • STOP — Return cached response and stop processing

Response

Success Response (200 OK)

{
"status": "SUCCESS",
"deploymentResult": {
"success": true,
"responseTime": 1500,
"detailList": [
{
"envName": "production",
"success": true,
"detail": "Deployed successfully",
"responseTime": 450
}
]
}
}

When deploy is false or omitted, deploymentResult.success may be false with an empty detailList.

Error Responses

StatusCondition
400Validation failure or proxy not found
401Invalid or missing token
500Unexpected server error

cURL Example

curl -X PATCH \
"https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyApiProxy/settings/idempotency/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"idempotencySettings": {
"idempotencyActive": true,
"keyType": "HEADER",
"headerName": "Idempotency-Key"
},
"deploy": false
}'

Notes and Warnings

  • Applies to all proxy types, including AI, MCP, and A2A proxies.
  • retentionInDays is constrained to 1–30 at the model level.
  • Set deploy: true with deployTargetEnvironmentNameList to push changes to Gateway environments in the same call.

Permissions

User must have API_MANAGEMENT + MANAGE permission in the project. Deployment requires API_MANAGEMENT + DEPLOY_UNDEPLOY.