{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tentacular.harmonyfidelis.com/schemas/tentacular-status-v1.schema.json",
  "title": "Tentacular local interoperability status v1",
  "type": "object",
  "additionalProperties": false,
  "required": ["$schema", "schemaVersion", "product", "productVersion", "generatedAt", "state", "summary", "capabilities", "excluded", "links"],
  "properties": {
    "$schema": { "const": "https://tentacular.harmonyfidelis.com/schemas/tentacular-status-v1.schema.json" },
    "schemaVersion": { "const": 1 },
    "product": { "const": "Tentacular" },
    "productVersion": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
    "generatedAt": { "type": "string", "format": "date-time" },
    "state": { "enum": ["ready", "analyzing", "degraded"] },
    "summary": {
      "type": "object",
      "additionalProperties": false,
      "required": ["repositories", "unavailableRepositories", "repositoriesWithLocalChanges", "localChanges", "conflictedFiles", "pendingBranches", "activeMissions", "blockedMissions", "dueMissions"],
      "properties": {
        "repositories": { "type": "integer", "minimum": 0 },
        "unavailableRepositories": { "type": "integer", "minimum": 0 },
        "repositoriesWithLocalChanges": { "type": "integer", "minimum": 0 },
        "localChanges": { "type": "integer", "minimum": 0 },
        "conflictedFiles": { "type": "integer", "minimum": 0 },
        "pendingBranches": { "type": "integer", "minimum": 0 },
        "activeMissions": { "type": "integer", "minimum": 0 },
        "blockedMissions": { "type": "integer", "minimum": 0 },
        "dueMissions": { "type": "integer", "minimum": 0 }
      }
    },
    "capabilities": { "type": "array", "uniqueItems": true, "items": { "enum": ["status-v1", "mission-report-v1", "update-manifest-v1"] } },
    "excluded": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
    "links": {
      "type": "object",
      "additionalProperties": false,
      "required": ["documentation", "missionReportContract", "updateManifestSchema", "support"],
      "properties": {
        "documentation": { "type": "string", "format": "uri" },
        "missionReportContract": { "type": "string", "format": "uri" },
        "updateManifestSchema": { "type": "string", "format": "uri" },
        "support": { "type": "string", "format": "uri" }
      }
    }
  }
}
