Alibaba Sentinel · Schema

Alibaba Sentinel Flow Rule

JSON Schema for Sentinel flow control rules used by the Dashboard API and configuration.

AlibabaCircuit BreakerFlow ControlJavaMicroservicesRate LimitingResilienceTraffic ShapingOpen SourceCloud NativeSpring Cloud
View JSON Schema on GitHub

JSON Schema

flow-rule.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/alibaba-sentinel/json-schema/flow-rule.json",
  "title": "Alibaba Sentinel Flow Rule",
  "description": "JSON Schema for Sentinel flow control rules used by the Dashboard API and configuration.",
  "type": "array",
  "items": {
    "$ref": "#/$defs/FlowRule"
  },
  "$defs": {
    "FlowRule": {
      "type": "object",
      "required": ["resource", "count"],
      "properties": {
        "id": {
          "type": "integer",
          "description": "Unique identifier of the rule."
        },
        "resource": {
          "type": "string",
          "description": "Resource name to apply the flow rule to."
        },
        "limitApp": {
          "type": "string",
          "default": "default",
          "description": "Calling application to apply the rule to."
        },
        "grade": {
          "type": "integer",
          "enum": [0, 1],
          "default": 1,
          "description": "Threshold type: 0 = thread count, 1 = QPS."
        },
        "count": {
          "type": "number",
          "description": "Threshold count value."
        },
        "strategy": {
          "type": "integer",
          "enum": [0, 1, 2],
          "default": 0,
          "description": "Flow control strategy: 0 = direct, 1 = relate, 2 = chain."
        },
        "refResource": {
          "type": "string",
          "description": "Reference resource for relate/chain strategy."
        },
        "controlBehavior": {
          "type": "integer",
          "enum": [0, 1, 2, 3],
          "default": 0,
          "description": "Control behavior: 0 = reject directly, 1 = warm up, 2 = rate limiter, 3 = warm up + rate limiter."
        },
        "warmUpPeriodSec": {
          "type": "integer",
          "description": "Warm-up period in seconds for warm up behavior."
        },
        "maxQueueingTimeMs": {
          "type": "integer",
          "description": "Maximum queuing time in milliseconds for rate limiter behavior."
        },
        "clusterMode": {
          "type": "boolean",
          "default": false,
          "description": "Whether the rule is for cluster flow control."
        },
        "clusterConfig": {
          "type": "object",
          "properties": {
            "flowId": {
              "type": "integer",
              "description": "Cluster flow ID."
            },
            "thresholdType": {
              "type": "integer",
              "enum": [0, 1],
              "description": "0 = average by local, 1 = global threshold."
            },
            "fallbackToLocalWhenFail": {
              "type": "boolean",
              "default": true,
              "description": "Whether to fall back to local flow control on failure."
            }
          }
        }
      }
    }
  }
}