{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://agrodt.github.io/agrotool-knowledge-portal/schemas/v3/portal_config.schema.json",
  "title": "PublicPortalConfigV3",
  "type": "array",
  "minItems": 1,
  "maxItems": 1,
  "items": {
    "type": "object",
    "allOf": [
      { "$ref": "../v1/common.schema.json#/$defs/recordMetadata" },
      {
        "type": "object",
        "required": [
          "portal_config_id",
          "default_component_view_id",
          "allowed_issue_repositories",
          "evidence_hierarchy_version",
          "evidence_hierarchies",
          "source_ids"
        ],
        "properties": {
          "portal_config_id": {
            "type": "string",
            "pattern": "^PC[A-Z0-9_-]{2,62}$"
          },
          "default_component_view_id": {
            "type": "string",
            "pattern": "^CV[A-Z0-9_-]{2,62}$"
          },
          "allowed_issue_repositories": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"
            },
            "uniqueItems": true
          },
          "evidence_hierarchy_version": {
            "type": "string",
            "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
          },
          "evidence_hierarchies": {
            "type": "object",
            "additionalProperties": false,
            "required": ["scientific_model", "software", "data", "validation"],
            "properties": {
              "scientific_model": { "$ref": "#/$defs/evidenceClasses" },
              "software": { "$ref": "#/$defs/evidenceClasses" },
              "data": { "$ref": "#/$defs/evidenceClasses" },
              "validation": { "$ref": "#/$defs/evidenceClasses" }
            }
          },
          "source_ids": {
            "allOf": [
              { "$ref": "../v1/common.schema.json#/$defs/sourceIds" },
              { "type": "array", "minItems": 1 }
            ]
          }
        }
      }
    ],
    "unevaluatedProperties": false
  },
  "$defs": {
    "evidenceClasses": {
      "type": "array",
      "minItems": 1,
      "items": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$" },
      "uniqueItems": true
    }
  }
}
