Data/project.schema.json

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "TenantConverge project",
  "type": "object",
  "required": ["schemaVersion", "name", "target", "sources", "access", "output"],
  "additionalProperties": false,
  "properties": {
    "schemaVersion": { "const": 1 },
    "name": { "type": "string", "minLength": 1 },
    "target": {
      "type": "object",
      "required": ["displayName", "primaryDomain", "state"],
      "additionalProperties": false,
      "properties": {
        "displayName": { "type": "string", "minLength": 1, "maxLength": 64 },
        "primaryDomain": { "type": "string", "minLength": 4, "maxLength": 253 },
        "tenantId": { "type": ["string", "null"], "format": "uuid" },
        "state": { "enum": ["Production", "New"] }
      }
    },
    "sources": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "items": {
        "type": "object",
        "required": ["role", "displayName", "primaryDomain", "wave"],
        "additionalProperties": false,
        "properties": {
          "role": { "enum": ["S1", "S2", "S3"] },
          "displayName": { "type": "string", "minLength": 1, "maxLength": 64 },
          "primaryDomain": { "type": "string", "minLength": 4, "maxLength": 253 },
          "tenantId": { "type": ["string", "null"], "format": "uuid" },
          "wave": { "type": "integer", "minimum": 1 }
        }
      }
    },
    "access": {
      "type": "object",
      "required": ["mode"],
      "additionalProperties": false,
      "properties": { "mode": { "enum": ["Browser", "Application"] } }
    },
    "output": {
      "type": "object",
      "required": ["path"],
      "additionalProperties": false,
      "properties": { "path": { "type": "string", "minLength": 1 } }
    },
    "team": { "type": "array", "items": { "type": "string" } }
  }
}