{
  "$defs": {
    "FamilyType": {
      "description": "Why these products are grouped into a family.",
      "oneOf": [
        {
          "const": "variant_tree",
          "description": "SKU / variant tree under a common parent product (size, colour,\nregion, tier).",
          "type": "string"
        },
        {
          "const": "cross_entity_clone",
          "description": "Same product cloned across entities for licensing / jurisdictional\nreasons (e.g. EU + US versions of the same SaaS owned by\ndifferent group entities).",
          "type": "string"
        },
        {
          "const": "platform_family",
          "description": "Products sharing a platform (e.g. iOS app + Android app + web).",
          "type": "string"
        },
        {
          "const": "seasonal_collection",
          "description": "Seasonal collection or campaign drop.",
          "type": "string"
        },
        {
          "const": "bundle",
          "description": "Bundle / suite of complementary products marketed together.",
          "type": "string"
        }
      ]
    },
    "PathRef": {
      "description": "Path-based cross-reference relative to .corpospec/ root.\nPattern: `^[a-z0-9_-]+(/[a-z0-9_.-]+)+$`",
      "pattern": "^[a-z0-9_-]+(/[a-z0-9_.-]+)+$",
      "type": "string"
    }
  },
  "$id": "https://corpospec.com/schemas/v0.16.0/product-family.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "Product family record.",
  "properties": {
    "description": {
      "description": "One-paragraph description.",
      "type": [
        "string",
        "null"
      ]
    },
    "family_type": {
      "$ref": "#/$defs/FamilyType",
      "description": "Family classification."
    },
    "governing_entity": {
      "anyOf": [
        {
          "$ref": "#/$defs/PathRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "The entity that defines the family roadmap (typically a brand\nowner). Optional for cross-entity families with shared\ngovernance."
    },
    "id": {
      "$ref": "#/$defs/PathRef",
      "description": "PathRef identifier, conventionally `product/families/<slug>`."
    },
    "members": {
      "description": "PathRefs into `product/portfolio/<slug>` records — family members.",
      "items": {
        "$ref": "#/$defs/PathRef"
      },
      "type": "array"
    },
    "name": {
      "description": "Human-readable family name.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "members",
    "family_type"
  ],
  "title": "ProductFamily",
  "type": "object",
  "x-corpospec-pillar": "product"
}