{
  "$id": "https://haris-mekic-profile.pages.dev/portfolio-schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "records": {
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "authority_boundaries": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "capabilities": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "contact": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "cv_url": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "data_policy": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "environments": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "key": {
                "pattern": "^profile:[a-z0-9-]+$",
                "type": "string"
              },
              "kind": {
                "const": "profile"
              },
              "location": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "name": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "thesis": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "title": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "website": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "authority_boundaries",
              "capabilities",
              "contact",
              "cv_url",
              "data_policy",
              "environments",
              "key",
              "kind",
              "location",
              "name",
              "thesis",
              "title",
              "website"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "architecture": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "boundary": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "category": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "id": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "implementation": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "key": {
                "pattern": "^ai_case:[a-z0-9-]+$",
                "type": "string"
              },
              "kind": {
                "const": "ai_case"
              },
              "lesson": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "problem": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "references": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "label": {
                      "type": "string"
                    },
                    "url": {
                      "enum": [
                        "https://github.com/Haris88m/servari-open",
                        "https://github.com/Haris88m/agentic-os-audit",
                        "https://github.com/Haris88m"
                      ]
                    }
                  },
                  "required": [
                    "label",
                    "url"
                  ],
                  "type": "object"
                },
                "maxItems": 10,
                "type": "array"
              },
              "stack": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "status": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "summary": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "title": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "verification": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "architecture",
              "boundary",
              "category",
              "id",
              "implementation",
              "key",
              "kind",
              "lesson",
              "problem",
              "stack",
              "status",
              "summary",
              "title",
              "verification"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "accent": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "boundary": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "category": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "context": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "contribution": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "evidence": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "id": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "inputs": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "key": {
                "pattern": "^career_case:[a-z0-9-]+$",
                "type": "string"
              },
              "kind": {
                "const": "career_case"
              },
              "outputs": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "reuse": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "roles": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "status": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "summary": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "title": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "tools": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              }
            },
            "required": [
              "accent",
              "boundary",
              "category",
              "context",
              "contribution",
              "evidence",
              "id",
              "inputs",
              "key",
              "kind",
              "outputs",
              "reuse",
              "roles",
              "status",
              "summary",
              "title",
              "tools"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "checked_on": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "head": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "id": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "key": {
                "pattern": "^repository:[a-z0-9-]+$",
                "type": "string"
              },
              "kind": {
                "const": "repository"
              },
              "label": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "license": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "limitations": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "maturity": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "purpose": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "repository_kind": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "stack": {
                "items": {
                  "maxLength": 12000,
                  "type": "string"
                },
                "maxItems": 100,
                "type": "array"
              },
              "url": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "verification": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "checked_on",
              "head",
              "id",
              "key",
              "kind",
              "label",
              "license",
              "limitations",
              "maturity",
              "purpose",
              "repository_kind",
              "stack",
              "url",
              "verification"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "checked_on": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "id": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "key": {
                "pattern": "^metric:[a-z0-9-]+$",
                "type": "string"
              },
              "kind": {
                "const": "metric"
              },
              "label": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "limitations": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "scope": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "value": {
                "minimum": 0,
                "type": "integer"
              },
              "verification": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "checked_on",
              "id",
              "key",
              "kind",
              "label",
              "limitations",
              "scope",
              "value",
              "verification"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "acceptance": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "built": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "id": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "key": {
                "pattern": "^learning_path:[a-z0-9-]+$",
                "type": "string"
              },
              "kind": {
                "const": "learning_path"
              },
              "next": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              },
              "title": {
                "maxLength": 12000,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "acceptance",
              "built",
              "id",
              "key",
              "kind",
              "next",
              "title"
            ],
            "type": "object"
          }
        ]
      },
      "maxItems": 100,
      "type": "array"
    },
    "schema_version": {
      "const": "1.0.0"
    },
    "scope": {
      "type": "string"
    },
    "sha256": {
      "pattern": "^[a-f0-9]{64}$",
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "schema_version",
    "version",
    "sha256",
    "scope",
    "records"
  ],
  "title": "Curated public portfolio dataset",
  "type": "object"
}
