{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/datagalactica-com/json-schema/datagalactica-com-person-schema.json",
  "title": "Person",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/datagalactica-com-api-openapi.json#/components/schemas/Person",
  "type": "object",
  "required": [
    "id",
    "type",
    "name",
    "quality"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Galactica ID",
      "pattern": "^DGP-[0-9A-Z]{12}$"
    },
    "type": {
      "const": "person"
    },
    "kind": {
      "type": "string",
      "enum": [
        "public_figure",
        "professional"
      ]
    },
    "name": {
      "type": "string"
    },
    "aliases": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "slug": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "description": "Page URL"
    },
    "headline": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "about": {
      "type": "string"
    },
    "location": {
      "$ref": "#/$defs/Location"
    },
    "hometown": {
      "type": "string"
    },
    "current": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "organization": {
          "$ref": "#/$defs/Ref"
        },
        "function": {
          "type": "string"
        },
        "seniority": {
          "type": "string"
        }
      }
    },
    "functions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "industries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "career": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "education": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "score": {
            "type": "number"
          },
          "tested": {
            "type": "boolean"
          }
        }
      }
    },
    "expertise": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "interests": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "achievements": {
      "type": "object"
    },
    "public_life": {
      "type": "object",
      "description": "Public figures only"
    },
    "network": {
      "type": "object"
    },
    "web": {
      "type": "object"
    },
    "contacts": {
      "type": "object",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Contact"
          }
        },
        "phones": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Contact"
          }
        }
      }
    },
    "contact": {
      "$ref": "#/$defs/FullContact"
    },
    "contact_reason": {
      "$ref": "#/$defs/ContactReason"
    },
    "visibility": {
      "type": "string",
      "enum": [
        "public",
        "limited"
      ]
    },
    "identifiers": {
      "type": "object"
    },
    "quality": {
      "$ref": "#/$defs/Quality"
    },
    "sources": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Source"
      }
    },
    "community_notes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Note"
      }
    },
    "updated": {
      "type": "string",
      "format": "date-time"
    }
  },
  "$defs": {
    "Contact": {
      "type": "object",
      "properties": {
        "masked": {
          "type": "string",
          "description": "Always masked, e.g. a***@g***.com"
        },
        "status": {
          "type": "string",
          "enum": [
            "unverified",
            "uncertain",
            "deliverable",
            "verified"
          ]
        }
      }
    },
    "ContactReason": {
      "type": "string",
      "enum": [
        "owner_opted_out",
        "hourly_limit"
      ],
      "description": "Why contact is null"
    },
    "FullContact": {
      "type": [
        "object",
        "null"
      ],
      "description": "For signed-in accounts (and full-data keys with the contacts scope). null when the owner opted out or the hourly limit is reached (see contact_reason). Every read is logged.",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "description": "Full e-mail address"
              },
              "status": {
                "type": "string"
              }
            }
          }
        },
        "phones": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "description": "Full phone number"
              },
              "status": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "Grade": {
      "type": "string",
      "enum": [
        "bronze",
        "silver",
        "gold",
        "verified"
      ],
      "description": "Overall: verified = claimed by the owner; gold = an e-mail and a phone, both verified or deliverable; silver = an e-mail and a phone; bronze = less. In quality.sections, the grade says how well that section is sourced."
    },
    "Location": {
      "type": "object",
      "properties": {
        "country": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2"
        },
        "country_name": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "city": {
          "type": "string"
        }
      }
    },
    "Note": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "by_dg": {
          "type": "string",
          "description": "Galactica ID of the author, when they have one"
        },
        "text": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "at": {
          "type": "string"
        }
      }
    },
    "Quality": {
      "type": "object",
      "required": [
        "overall"
      ],
      "properties": {
        "overall": {
          "$ref": "#/$defs/Grade"
        },
        "sections": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/Grade"
          }
        }
      }
    },
    "Ref": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        }
      }
    },
    "Source": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "as_of": {
          "type": "string"
        },
        "note": {
          "type": "string"
        }
      }
    }
  }
}