Ana içeriğe geç

Update Endpoint Cache Settings

Endpoint​

PATCH /apiops/projects/{projectName}/apiProxies/{apiProxyName}/endpoints/cache/

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​

The request body includes endpoint identifier and CacheSettings structure. See Update Cache Settings for detailed cache settings field descriptions.

Full JSON Body Example - Basic Cache Configuration​

{
"identifierName": "/api/users",
"identifierHttpMethod": "GET",
"cacheSettings": {
"name": "Endpoint Cache Settings",
"description": "Cache configuration for this endpoint",
"cacheActive": true,
"cacheOnlyHttpGetRequests": false,
"cacheKeyType": "QUERY_PARAMS",
"cacheStorageType": "LOCAL",
"capacity": 1000,
"ttl": 3600,
"handlingAction": "STOP",
"invalidationRequiresAuthn": false,
"cacheNullValue": false,
"variableList": []
},
"deploy": false,
"deployTargetEnvironmentNameList": []
}

Full JSON Body Example - Custom Cache Key​

{
"identifierName": "/api/users",
"identifierHttpMethod": "GET",
"cacheSettings": {
"name": "Endpoint Cache with Custom Key",
"description": "Cache using custom variables",
"cacheActive": true,
"cacheOnlyHttpGetRequests": false,
"cacheKeyType": "CUSTOM",
"cacheStorageType": "DISTRIBUTED",
"capacity": 5000,
"ttl": 7200,
"handlingAction": "CONTINUE",
"invalidationRequiresAuthn": true,
"cacheNullValue": true,
"variableList": [
{
"name": "userId",
"type": "HEADER",
"dataType": "STRING"
},
{
"name": "apiVersion",
"type": "PARAMETER",
"dataType": "STRING"
}
]
}
}

Request Body Fields​

FieldTypeRequiredDefaultDescription
identifierNamestringYes-Endpoint path/name (used to identify the endpoint)
identifierHttpMethodstringYes-HTTP method for the endpoint (used to identify the endpoint). See EnumHttpRequestMethod
cacheSettingsobjectYes-Cache 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)

Cache Settings Object Fields​

FieldTypeRequiredDefaultDescription
namestringYes-Cache settings name
descriptionstringNo-Cache settings description
cacheActivebooleanNofalseEnable/disable cache for this endpoint
cacheOnlyHttpGetRequestsbooleanNotrueCache only GET requests (if false, caches all methods)
cacheKeyTypestringNoQUERY_PARAMSCache key type. See EnumCacheKeyType
cacheStorageTypestringNoDISTRIBUTEDCache storage type. See EnumCacheStorageType
capacityintegerNo-Maximum cache capacity (number of entries)
ttlintegerNo-Time to live in seconds
handlingActionstringYes-Cache handling action when cache hit occurs. See EnumCacheHandlingAction
invalidationRequiresAuthnbooleanNofalseRequire authentication for cache invalidation
cacheNullValuebooleanNofalseCache null/empty responses
variableListarrayNo[]List of variables for custom cache key (if cacheKeyType=CUSTOM). See Variable Definition

EnumCacheKeyType (cacheKeyType)​

  • QUERY_PARAMS - Use query parameters as cache key
  • CUSTOM - Use custom variables as cache key (requires variableList)

EnumCacheStorageType (cacheStorageType)​

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

EnumCacheHandlingAction (handlingAction)​

  • CONTINUE - Return cached response and continue to backend (for logging/monitoring)
  • STOP - Return cached response and stop (do not call backend)

Response​

Success Response (200 OK)​

{
"success": true
}

When deploy=true is specified:

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

Response Fields​

FieldTypeDescription
successbooleanIndicates if the request was successful
deploymentResultobjectDeployment result (only present when deploy=true)
deploymentResult.successbooleanWhether the overall deployment was successful
deploymentResult.deploymentResultsarrayPer-environment deployment results

Error Response (400 Bad Request)​

{
"status": "FAILURE",
"resultMessage": "handlingAction is required"
}

Common Causes​

  • Missing required field handlingAction
  • Invalid enum values
  • Invalid cache configuration
  • Invalid variableList when cacheKeyType=CUSTOM

Error Response (401 Unauthorized)​

{
"status": "FAILURE",
"resultMessage": "Token is not valid!"
}

cURL Example​

Example 1: Basic Endpoint Cache Configuration​

curl -X PATCH \
"https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/endpoints/cache/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"identifierName": "/api/users",
"identifierHttpMethod": "GET",
"cacheSettings": {
"name": "Endpoint Cache Settings",
"cacheActive": true,
"cacheOnlyHttpGetRequests": false,
"cacheKeyType": "QUERY_PARAMS",
"cacheStorageType": "LOCAL",
"capacity": 1000,
"ttl": 3600,
"handlingAction": "STOP",
"cacheNullValue": false
}
}'

Example 2: Custom Cache Key with Variables​

curl -X PATCH \
"https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/endpoints/cache/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"identifierName": "/api/users",
"identifierHttpMethod": "GET",
"cacheSettings": {
"name": "Endpoint Cache with Custom Key",
"cacheActive": true,
"cacheKeyType": "CUSTOM",
"cacheStorageType": "DISTRIBUTED",
"capacity": 5000,
"ttl": 7200,
"handlingAction": "CONTINUE",
"invalidationRequiresAuthn": true,
"variableList": [
{
"name": "userId",
"type": "HEADER",
"dataType": "STRING"
},
{
"name": "apiVersion",
"type": "PARAMETER",
"dataType": "STRING"
}
]
}
}'

Example 3: Save and Deploy​

curl -X PATCH \
"https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/endpoints/cache/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"identifierName": "/api/users",
"identifierHttpMethod": "GET",
"cacheSettings": {
"name": "Endpoint Cache Settings",
"cacheActive": true,
"cacheKeyType": "QUERY_PARAMS",
"cacheStorageType": "LOCAL",
"capacity": 1000,
"ttl": 3600,
"handlingAction": "STOP"
},
"deploy": true,
"deployTargetEnvironmentNameList": ["production"]
}'

Notes and Warnings​

  • Endpoint-Level Override:
    • Endpoint cache settings override API Proxy-level cache settings
    • If endpoint cache is disabled, API Proxy-level cache still applies
  • handlingAction:
    • Required field
    • CONTINUE - Returns cached response but still calls backend (useful for logging/monitoring)
    • STOP - Returns cached response without calling backend (better performance)
  • Cache Key:
    • When cacheKeyType=CUSTOM, provide variableList to define cache key components
    • Variables are combined to create unique cache keys
  • Storage Type:
    • LOCAL cache is faster but not shared across workers
    • DISTRIBUTED cache is shared across all workers (recommended for multi-instance deployments)
  • TTL:
    • Cache entries expire after TTL seconds
    • Set appropriate TTL based on data freshness requirements
  • Capacity:
    • Maximum number of cache entries
    • Older entries are evicted when limit is reached (LRU eviction)
  • GET Only:
    • When cacheOnlyHttpGetRequests=true, only GET requests are cached
    • When cacheOnlyHttpGetRequests=false, all HTTP methods can be cached (use with caution)
  • Null Values:
    • When cacheNullValue=false, null/empty responses are not cached
    • When cacheNullValue=true, null/empty responses are cached (may cache error responses)
  • Endpoint Validation:
    • Endpoint must exist in the API Proxy
    • Endpoint is identified by identifierName and identifierHttpMethod combination (not by ID)
  • Deploy: When deploy=true, the API proxy is automatically deployed to the specified environments after saving

Permissions​

User must have API_MANAGEMENT + MANAGE permission in the project.