{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:coos:schema:Person",
  "title": "Person",
  "description": "An individual such as an owner, tenant, council member, or contact. Only include personal information that the exchanging parties are entitled to share.",
  "type": "object",
  "x-domain": "core",
  "x-status": "proposed",
  "x-since": "0.1.0-draft",
  "x-relationships": [],
  "x-validationRules": [
    "Implementations must not require email or phone; many exchanges should omit them entirely."
  ],
  "required": [
    "id",
    "displayName"
  ],
  "additionalProperties": false,
  "properties": {
    "id": {
      "$ref": "urn:coos:schema:common#/$defs/Identifier",
      "description": "Stable identifier of this Person record."
    },
    "displayName": {
      "type": "string",
      "description": "Name to display.",
      "minLength": 1,
      "maxLength": 200
    },
    "givenName": {
      "type": "string",
      "description": "Given name.",
      "maxLength": 100
    },
    "familyName": {
      "type": "string",
      "description": "Family name.",
      "maxLength": 100
    },
    "email": {
      "type": "string",
      "description": "Email address.",
      "format": "email"
    },
    "phone": {
      "type": "string",
      "description": "Phone number in E.164 format.",
      "pattern": "^\\+[1-9][0-9]{6,14}$"
    },
    "mailingAddress": {
      "$ref": "urn:coos:schema:common#/$defs/Address",
      "description": "Mailing address for notices, if different from the unit address."
    },
    "extensions": {
      "$ref": "urn:coos:schema:common#/$defs/Extensions",
      "description": "Implementation-specific data, namespaced by reverse domain."
    }
  }
}
