{
  "$defs": {
    "alias": {
      "additionalProperties": false,
      "properties": {
        "canonical": {
          "minLength": 1,
          "type": "string"
        },
        "kind": {
          "enum": [
            "token",
            "value"
          ],
          "type": "string"
        },
        "mode": {
          "const": "read_only"
        },
        "name": {
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "kind",
        "name",
        "canonical",
        "mode"
      ],
      "type": "object"
    },
    "engine_support": {
      "additionalProperties": {
        "enum": [
          "supported",
          "partial",
          "planned",
          "unsupported",
          "legacy_fallback",
          "not_applicable"
        ],
        "type": "string"
      },
      "minProperties": 1,
      "type": "object"
    },
    "keyword_entry": {
      "additionalProperties": false,
      "properties": {
        "aliases": {
          "items": {
            "$ref": "#/$defs/alias"
          },
          "type": "array"
        },
        "canonical_term": {
          "minLength": 1,
          "type": "string"
        },
        "changes": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "type": "array"
        },
        "docs_anchor": {
          "minLength": 1,
          "type": "string"
        },
        "engine_support": {
          "$ref": "#/$defs/engine_support"
        },
        "id": {
          "minLength": 1,
          "type": "string"
        },
        "invalidates_calibration": {
          "enum": [
            "always",
            "if_predictor_changes",
            "replaces_existing",
            "extends_existing",
            "mode_dependent",
            "not_applicable"
          ],
          "type": "string"
        },
        "lifecycle_stage": {
          "minLength": 1,
          "type": "string"
        },
        "path": {
          "minLength": 1,
          "type": "string"
        },
        "reads": {
          "items": {
            "minLength": 1,
            "type": "string"
          },
          "type": "array"
        },
        "scope": {
          "minLength": 1,
          "type": "string"
        },
        "status": {
          "enum": [
            "supported",
            "partial",
            "planned"
          ],
          "type": "string"
        },
        "summary": {
          "minLength": 1,
          "type": "string"
        },
        "surface": {
          "enum": [
            "run_argument",
            "pipeline_step",
            "nested_key",
            "enum_value",
            "calibrate_argument",
            "predict_argument",
            "predict_calibrated_argument",
            "robustness_argument"
          ],
          "type": "string"
        },
        "token": {
          "minLength": 1,
          "type": "string"
        },
        "ui": {
          "additionalProperties": false,
          "properties": {
            "control": {
              "enum": [
                "object",
                "array",
                "select",
                "number",
                "dataset",
                "path",
                "text"
              ],
              "type": "string"
            },
            "group": {
              "enum": [
                "execution",
                "tuning",
                "training",
                "retraining",
                "calibration",
                "prediction",
                "robustness"
              ],
              "type": "string"
            },
            "label": {
              "minLength": 1,
              "type": "string"
            },
            "order": {
              "type": "integer"
            }
          },
          "required": [
            "label",
            "group",
            "control",
            "order"
          ],
          "type": "object"
        },
        "value_schema": {
          "type": "object"
        }
      },
      "required": [
        "id",
        "token",
        "path",
        "surface",
        "scope",
        "canonical_term",
        "status",
        "value_schema",
        "aliases",
        "lifecycle_stage",
        "reads",
        "changes",
        "invalidates_calibration",
        "engine_support",
        "summary",
        "docs_anchor",
        "ui"
      ],
      "type": "object"
    }
  },
  "$id": "https://nirs4all.org/schemas/keyword-effects/v1",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "entries": {
      "items": {
        "$ref": "#/$defs/keyword_entry"
      },
      "minItems": 1,
      "type": "array"
    },
    "registry_version": {
      "minLength": 1,
      "type": "string"
    },
    "schema_id": {
      "const": "https://nirs4all.org/schemas/keyword-effects/v1"
    },
    "schema_version": {
      "const": 1
    },
    "scope": {
      "const": "lifecycle-v1"
    }
  },
  "required": [
    "schema_id",
    "schema_version",
    "registry_version",
    "scope",
    "entries"
  ],
  "title": "NIRS4All keyword/effect registry",
  "type": "object"
}
