{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://meta-universe.org/schemas/2.0/projection.schema.json",
  "title": "MUIF Projection",
  "description": "A Projection: a context-specific representation of a Meta-Object (see 04-core-concepts/Projection.md).",
  "type": "object",
  "required": ["muifType", "id", "subject", "context", "purpose"],
  "additionalProperties": false,
  "properties": {
    "muifType": { "const": "Projection" },
    "id": { "$ref": "common.schema.json#/$defs/identifier" },
    "subject": { "$ref": "common.schema.json#/$defs/identifier", "description": "Canonical identifier of the projected Meta-Object." },
    "context": { "type": "string", "minLength": 1, "description": "The context in which this projection is valid (e.g. HR, Finance, Public, Partner)." },
    "purpose": { "type": "string", "minLength": 1, "description": "Why the projection exists." },
    "profile": { "$ref": "common.schema.json#/$defs/csn", "description": "Projection Profile this projection conforms to." },
    "fields": {
      "type": "array",
      "description": "CSNs of the object's properties exposed by this projection (treated as a set).",
      "items": { "$ref": "common.schema.json#/$defs/csn" }
    },
    "contract": { "$ref": "common.schema.json#/$defs/identifier", "description": "Identifier of the Semantic Contract governing this projection." },
    "lifecycleState": { "$ref": "common.schema.json#/$defs/lifecycleState" },
    "provenance": { "$ref": "common.schema.json#/$defs/provenance" },
    "displayName": { "type": "string", "description": "NON-SEMANTIC." },
    "description": { "type": "string", "description": "NON-SEMANTIC." }
  }
}
