{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/rulesets_Rule",
  "title": "Rule",
  "properties": {
    "action": {
      "$ref": "#/components/schemas/rulesets_RuleAction"
    },
    "action_parameters": {
      "description": "The parameters configuring the rule's action.",
      "title": "Action parameters",
      "type": "object"
    },
    "categories": {
      "description": "The categories of the rule.",
      "example": [
        "directory-traversal",
        "header"
      ],
      "items": {
        "$ref": "#/components/schemas/rulesets_RuleCategory"
      },
      "minItems": 1,
      "readOnly": true,
      "title": "Categories",
      "type": "array",
      "uniqueItems": true
    },
    "description": {
      "default": "",
      "description": "An informative description of the rule.",
      "title": "Description",
      "type": "string"
    },
    "enabled": {
      "allOf": [
        {
          "$ref": "#/components/schemas/rulesets_RuleEnabled"
        },
        {
          "default": true
        }
      ]
    },
    "expression": {
      "description": "The expression defining which traffic will match the rule.",
      "example": "ip.src ne 1.1.1.1",
      "minLength": 1,
      "title": "Expression",
      "type": "string"
    },
    "id": {
      "$ref": "#/components/schemas/rulesets_RuleId"
    },
    "last_updated": {
      "description": "The timestamp of when the rule was last modified.",
      "example": "2000-01-01T00:00:00.000000Z",
      "format": "date-time",
      "readOnly": true,
      "title": "Last updated",
      "type": "string"
    },
    "logging": {
      "description": "An object configuring the rule's logging behavior.",
      "properties": {
        "enabled": {
          "description": "Whether to generate a log when the rule matches.",
          "example": true,
          "title": "Enabled",
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ],
      "title": "Logging",
      "type": "object"
    },
    "ref": {
      "description": "The reference of the rule (the rule ID by default).",
      "example": "my_ref",
      "minLength": 1,
      "title": "Ref",
      "type": "string"
    },
    "version": {
      "description": "The version of the rule.",
      "example": "1",
      "pattern": "^[0-9]+$",
      "readOnly": true,
      "title": "Version",
      "type": "string"
    }
  },
  "required": [
    "version",
    "last_updated"
  ],
  "type": "object"
}