Pure API Person

An academic professional, student, or other individual attached to the institution.

EducationHigher EducationUniversityResearchOpen AccessOAI-PMHUnited KingdomNorthern Ireland

Properties

Name Type Description
pureId integer Pure database ID of the object, prefer using the UUID if it is present on the entity
uuid string UUID, this is the primary identity of the entity
createdBy string Username of creator
createdDate string Date and time of creation
modifiedBy string Username of the user that performed a modification
modifiedDate string Date and time of last modification
portalUrl string URL of the content on the Pure Portal
prettyUrlIdentifiers array All pretty URLs
previousUuids array UUIDs of other content items which have been merged into this content item (or similar)
version string Used to guard against conflicting updates. For new content this is null, and for existing content the current value. The property should never be modified by a client, except in the rare case where th
personExpertise object
startDateAsResearcher string Date that the person entered into the academic profession.
affiliationNote string Notes regarding affiliations of the person.
dateOfBirth string The person's date of birth.
employeeStartDate string Date of the persons first day of the institution.
employeeEndDate string Date of the persons last day of the institution.
externalPositions array positions held by the person, that are external to the institution
keywordGroups array Groups of Keyword associated with the person.
leavesOfAbsence array Leaves of absence had by the person.
links array Links associated with the person.
name object
names array Variant names of the person, Known aliases, ect.
nationality object
orcid string orcid of the person.
orcidAuthenticated boolean Authentication status of the orcid associated with the person.
cienciaId string Ciencia ID of the person.
cienciaIdAuthenticated boolean Authentication status of the Ciencia ID associated with the person.
honoraryStaffOrganizationAssociations array Organizations that the person is associated with under the title of 'Honorary Staff'
staffOrganizationAssociations array Organizations that the person is associated with as 'Staff'
studentOrganizationAssociations array Organizations that the person is associated with as a 'Student'
visitingScholarOrganizationAssociations array Organizations that the person is associated with as a 'Visiting Scholar
academicQualifications array Levels of academic qualifications that the person has achieved.
profilePhotos array Profile photos in the form of Image files. The maximum file size is 1mb
documents array Associated documents for the person
privateAddress object
professionalQualifications array The professional qualifications held by the person
selectedForProfileRefinementService boolean If the person has been profiled.
profileInformation array Information objects making up profiles made of the person
retirementDate string Date of retirement for the person
gender object
titles array Titles held by the person
visibility object
willingToTakePhdStudents boolean Boolean to define if the Person is willing to take on Phd Students.
willingToTakePhdStudentsDescription string Field to describe or list phd projects that the person will participate in.
identifiers array Identifiers related to the person
user object
customDefinedFields object
workflow object
mainResearchArea object
profiled boolean
systemName string The content system name
View JSON Schema on GitHub

JSON Schema

queens-university-belfast-person-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/queens-university-belfast/main/json-schema/queens-university-belfast-person-schema.json",
  "title": "Pure API Person",
  "description": "An academic professional, student, or other individual attached to the institution.",
  "type": "object",
  "properties": {
    "pureId": {
      "type": "integer",
      "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
      "format": "int64",
      "readOnly": true
    },
    "uuid": {
      "type": "string",
      "description": "UUID, this is the primary identity of the entity",
      "format": "uuid",
      "readOnly": true
    },
    "createdBy": {
      "type": "string",
      "description": "Username of creator",
      "readOnly": true
    },
    "createdDate": {
      "type": "string",
      "description": "Date and time of creation",
      "format": "date-time",
      "readOnly": true
    },
    "modifiedBy": {
      "type": "string",
      "description": "Username of the user that performed a modification",
      "readOnly": true
    },
    "modifiedDate": {
      "type": "string",
      "description": "Date and time of last modification",
      "format": "date-time",
      "readOnly": true
    },
    "portalUrl": {
      "type": "string",
      "description": "URL of the content on the Pure Portal",
      "readOnly": true
    },
    "prettyUrlIdentifiers": {
      "type": "array",
      "description": "All pretty URLs",
      "readOnly": true,
      "items": {
        "type": "string",
        "description": "All pretty URLs",
        "readOnly": true
      }
    },
    "previousUuids": {
      "type": "array",
      "description": "UUIDs of other content items which have been merged into this content item (or similar)",
      "readOnly": true,
      "items": {
        "type": "string",
        "description": "UUIDs of other content items which have been merged into this content item (or similar)",
        "readOnly": true
      }
    },
    "version": {
      "type": "string",
      "description": "Used to guard against conflicting updates. For new content this is null, and for existing content the current value. The property should never be modified by a client, except in the rare case where the client wants to perform an update irrespective of if other clients have made updates in the meantime, also known as a \"dirty write\". A dirty write is performed by not including the property value or setting the property to null",
      "nullable": true
    },
    "personExpertise": {
      "$ref": "#/$defs/PersonExpertiseRef"
    },
    "startDateAsResearcher": {
      "type": "string",
      "description": "Date that the person entered into the academic profession.",
      "format": "date",
      "nullable": true
    },
    "affiliationNote": {
      "type": "string",
      "description": "Notes regarding affiliations of the person.",
      "nullable": true
    },
    "dateOfBirth": {
      "type": "string",
      "description": "The person's date of birth.",
      "format": "date",
      "nullable": true
    },
    "employeeStartDate": {
      "type": "string",
      "description": "Date of the persons first day of the institution.",
      "format": "date",
      "nullable": true
    },
    "employeeEndDate": {
      "type": "string",
      "description": "Date of the persons last day of the institution.",
      "format": "date",
      "nullable": true
    },
    "externalPositions": {
      "type": "array",
      "description": "positions held by the person, that are external to the institution",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/ExternalAppointment"
      }
    },
    "keywordGroups": {
      "type": "array",
      "description": "Groups of Keyword associated with the person.",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/KeywordGroup"
      }
    },
    "leavesOfAbsence": {
      "type": "array",
      "description": "Leaves of absence had by the person.",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/PersonClassifiedLeaveOfAbsence"
      }
    },
    "links": {
      "type": "array",
      "description": "Links associated with the person.",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/Link"
      }
    },
    "name": {
      "$ref": "#/$defs/Name"
    },
    "names": {
      "type": "array",
      "description": "Variant names of the person, Known aliases, ect.",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/ClassifiedName"
      }
    },
    "nationality": {
      "$ref": "#/$defs/ClassificationRef"
    },
    "orcid": {
      "type": "string",
      "description": "orcid of the person.",
      "nullable": true
    },
    "orcidAuthenticated": {
      "type": "boolean",
      "description": "Authentication status of the orcid associated with the person.",
      "readOnly": true
    },
    "cienciaId": {
      "type": "string",
      "description": "Ciencia ID of the person.",
      "nullable": true
    },
    "cienciaIdAuthenticated": {
      "type": "boolean",
      "description": "Authentication status of the Ciencia ID associated with the person."
    },
    "honoraryStaffOrganizationAssociations": {
      "type": "array",
      "description": "Organizations that the person is associated with under the title of 'Honorary Staff'",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/HonoraryStaffOrganizationAssociation"
      }
    },
    "staffOrganizationAssociations": {
      "type": "array",
      "description": "Organizations that the person is associated with as 'Staff'",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/StaffOrganizationAssociation"
      }
    },
    "studentOrganizationAssociations": {
      "type": "array",
      "description": "Organizations that the person is associated with as a 'Student'",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/StudentOrganizationAssociation"
      }
    },
    "visitingScholarOrganizationAssociations": {
      "type": "array",
      "description": "Organizations that the person is associated with as a 'Visiting Scholar",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/VisitingScholarOrganizationAssociation"
      }
    },
    "academicQualifications": {
      "type": "array",
      "description": "Levels of academic qualifications that the person has achieved.",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/AcademicQualification"
      }
    },
    "profilePhotos": {
      "type": "array",
      "description": "Profile photos in the form of Image files. The maximum file size is 1mb",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/ImageFile"
      }
    },
    "documents": {
      "type": "array",
      "description": "Associated documents for the person",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/Document"
      }
    },
    "privateAddress": {
      "$ref": "#/$defs/Address"
    },
    "professionalQualifications": {
      "type": "array",
      "description": "The professional qualifications held by the person",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/ProfessionalQualification"
      }
    },
    "selectedForProfileRefinementService": {
      "type": "boolean",
      "description": "If the person has been profiled."
    },
    "profileInformation": {
      "type": "array",
      "description": "Information objects making up profiles made of the person",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/ClassifiedFormattedLocalizedValue"
      }
    },
    "retirementDate": {
      "type": "string",
      "description": "Date of retirement for the person",
      "format": "date",
      "nullable": true
    },
    "gender": {
      "$ref": "#/$defs/ClassificationRef"
    },
    "titles": {
      "type": "array",
      "description": "Titles held by the person",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/ClassifiedLocalizedValue"
      }
    },
    "visibility": {
      "$ref": "#/$defs/Visibility"
    },
    "willingToTakePhdStudents": {
      "type": "boolean",
      "description": "Boolean to define if the Person is willing to take on Phd Students."
    },
    "willingToTakePhdStudentsDescription": {
      "type": "string",
      "description": "Field to describe or list phd projects that the person will participate in.",
      "nullable": true
    },
    "identifiers": {
      "type": "array",
      "description": "Identifiers related to the person",
      "nullable": true,
      "items": {
        "$ref": "#/$defs/Identifier"
      }
    },
    "user": {
      "$ref": "#/$defs/UserRef"
    },
    "customDefinedFields": {
      "$ref": "#/$defs/CustomDefinedFields"
    },
    "workflow": {
      "$ref": "#/$defs/Workflow"
    },
    "mainResearchArea": {
      "$ref": "#/$defs/ClassificationRef"
    },
    "profiled": {
      "type": "boolean"
    },
    "systemName": {
      "type": "string",
      "description": "The content system name",
      "readOnly": true
    }
  },
  "$defs": {
    "PersonExpertiseRef": {
      "required": [
        "uuid"
      ],
      "type": "object",
      "description": "A reference to a person expertise",
      "nullable": true,
      "allOf": [
        {
          "$ref": "#/$defs/ContentRef"
        }
      ]
    },
    "ContentRef": {
      "required": [
        "systemName",
        "uuid"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID of the referred content",
          "format": "uuid"
        },
        "systemName": {
          "type": "string"
        }
      },
      "nullable": true,
      "discriminator": {
        "propertyName": "systemName",
        "mapping": {
          "AccessDefinition": "#/components/schemas/AccessDefinitionRef",
          "Activity": "#/components/schemas/ActivityRef",
          "Application": "#/components/schemas/ApplicationRef",
          "AuthorCollaboration": "#/components/schemas/AuthorCollaborationRef",
          "Award": "#/components/schemas/AwardRef",
          "ClassificationScheme": "#/components/schemas/ClassificationSchemeRef",
          "ConferenceSeries": "#/components/schemas/ConferenceSeriesRef",
          "DataSet": "#/components/schemas/DataSetRef",
          "Equipment": "#/components/schemas/EquipmentRef",
          "Event": "#/components/schemas/EventRef",
          "ExternalOrganization": "#/components/schemas/ExternalOrganizationRef",
          "ExternalPerson": "#/components/schemas/ExternalPersonRef",
          "Impact": "#/components/schemas/ImpactRef",
          "Journal": "#/components/schemas/JournalRef",
          "Organization": "#/components/schemas/OrganizationRef",
          "Person": "#/components/schemas/PersonRef",
          "Publisher": "#/components/schemas/PublisherRef",
          "PressMedia": "#/components/schemas/PressMediaRef",
          "Prize": "#/components/schemas/PrizeRef",
          "Project": "#/components/schemas/ProjectRef",
          "ResearchOutput": "#/components/schemas/ResearchOutputRef",
          "StudentThesis": "#/components/schemas/StudentThesisRef",
          "FundingOpportunity": "#/components/schemas/FundingOpportunityRef",
          "EthicalReview": "#/components/schemas/EthicalReviewRef",
          "ApplicationCluster": "#/components/schemas/ApplicationClusterRef",
          "AwardCluster": "#/components/schemas/AwardClusterRef",
          "User": "#/components/schemas/UserRef",
          "ERA2018FieldOfResearch": "#/components/schemas/Anzsrc2008FieldOfResearchRef",
          "UnitOfAssessmentREF2014": "#/components/schemas/Ref2014UnitOfAssessmentRef",
          "UnitOfAssessmentREF2020": "#/components/schemas/Ref2020UnitOfAssessmentRef",
          "ANZSRCTypeOfActivity": "#/components/schemas/Anzsrc2020TypeOfActivityRef",
          "ANZSRCFieldOfResearch": "#/components/schemas/Anzsrc2020FieldOfResearchRef",
          "ANZSRCSocioEconomicObjective": "#/components/schemas/Anzsrc2020SocioEconomicObjectiveRef",
          "Semester": "#/components/schemas/SemesterRef",
          "Education": "#/components/schemas/EducationRef",
          "Course": "#/components/schemas/CourseRef",
          "CurriculumVitae": "#/components/schemas/CurriculumVitaeRef",
          "CustomDefinedFieldConfiguration": "#/components/schemas/CustomDefinedFieldConfigurationRef",
          "KeywordGroupConfiguration": "#/components/schemas/KeywordGroupConfigurationRef",
          "Review": "#/components/schemas/ReviewRef",
          "GenericContentRef": "#/components/schemas/GenericContentRef",
          "UserProfile": "#/components/schemas/UserProfileRef",
          "Thesaurus": "#/components/schemas/ThesaurusRef",
          "Concept": "#/components/schemas/ConceptRef",
          "PersonExpertise": "#/components/schemas/PersonExpertiseRef",
          "Contract": "#/components/schemas/ContractRef",
          "Milestone": "#/components/schemas/MilestoneRef",
          "Fingerprint": "#/components/schemas/FingerprintRef",
          "Specialization": "#/components/schemas/SpecializationRef",
          "StudentProject": "#/components/schemas/StudentProjectRef"
        }
      }
    },
    "ExternalAppointment": {
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "appointment": {
          "$ref": "#/$defs/ClassificationRef"
        },
        "appointmentString": {
          "$ref": "#/$defs/LocalizedString"
        },
        "period": {
          "$ref": "#/$defs/CompoundDateRange"
        },
        "externalOrganization": {
          "$ref": "#/$defs/ExternalOrganizationRef"
        }
      },
      "description": "An appointment held in an external organizational unit"
    },
    "ClassificationRef": {
      "required": [
        "uri"
      ],
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "description": "Classification URI of the referred classification"
        },
        "term": {
          "$ref": "#/$defs/SystemLocalizedString"
        }
      },
      "description": "A reference to a classification value",
      "nullable": true
    },
    "SystemLocalizedString": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "description": "A set of localized string values each for a specific UI locale.",
        "nullable": true,
        "example": "{\"en_GB\":\"Some text\"}"
      },
      "description": "A set of localized string values each for a specific UI locale.",
      "nullable": true,
      "example": {
        "en_GB": "Some text"
      }
    },
    "LocalizedString": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "description": "A set of string values, one for each submission locale. Note: invalid locale values will be ignored.",
        "nullable": true,
        "example": "{\"en_GB\":\"Some text\"}"
      },
      "description": "A set of string values, one for each submission locale. Note: invalid locale values will be ignored.",
      "nullable": true,
      "example": {
        "en_GB": "Some text"
      }
    },
    "CompoundDateRange": {
      "type": "object",
      "properties": {
        "startDate": {
          "$ref": "#/$defs/CompoundDate"
        },
        "endDate": {
          "$ref": "#/$defs/CompoundDate"
        }
      },
      "description": "A date range of that can be defined by only year, year and month or a full date"
    },
    "CompoundDate": {
      "required": [
        "year"
      ],
      "type": "object",
      "properties": {
        "year": {
          "maximum": 4000,
          "minimum": 0,
          "type": "integer",
          "format": "int32"
        },
        "month": {
          "maximum": 12,
          "minimum": 1,
          "type": "integer",
          "format": "int32",
          "nullable": true
        },
        "day": {
          "maximum": 31,
          "minimum": 1,
          "type": "integer",
          "format": "int32",
          "nullable": true
        }
      },
      "description": "A date that can be defined by only year, year and month or a full date",
      "nullable": true
    },
    "ExternalOrganizationRef": {
      "required": [
        "uuid"
      ],
      "type": "object",
      "description": "A reference to an organization external to the institution",
      "nullable": true,
      "allOf": [
        {
          "$ref": "#/$defs/ContentRef"
        }
      ]
    },
    "KeywordGroup": {
      "required": [
        "logicalName",
        "typeDiscriminator"
      ],
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "logicalName": {
          "type": "string",
          "description": "Unique name of the configuration that specifies this keyword group"
        },
        "name": {
          "$ref": "#/$defs/LocalizedString"
        },
        "typeDiscriminator": {
          "type": "string"
        }
      },
      "discriminator": {
        "propertyName": "typeDiscriminator",
        "mapping": {
          "ClassificationsKeywordGroup": "#/components/schemas/ClassificationsKeywordGroup",
          "FreeKeywordsKeywordGroup": "#/components/schemas/FreeKeywordsKeywordGroup",
          "FullKeywordGroup": "#/components/schemas/FullKeywordGroup"
        }
      }
    },
    "PersonClassifiedLeaveOfAbsence": {
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "classification": {
          "$ref": "#/$defs/ClassificationRef"
        },
        "period": {
          "$ref": "#/$defs/DateRange"
        }
      },
      "description": "Leave of absence held by a person"
    },
    "DateRange": {
      "type": "object",
      "properties": {
        "startDate": {
          "type": "string",
          "description": "Start date",
          "format": "date",
          "nullable": true
        },
        "endDate": {
          "type": "string",
          "description": "End date",
          "format": "date",
          "nullable": true
        }
      },
      "description": "A date range"
    },
    "Link": {
      "required": [
        "url"
      ],
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "url": {
          "type": "string",
          "description": "The URL (Uniform Resource Locator) of the link"
        },
        "alias": {
          "type": "string",
          "description": "A user-friendly text to show instead of the URL",
          "nullable": true
        },
        "description": {
          "$ref": "#/$defs/LocalizedString"
        },
        "linkType": {
          "$ref": "#/$defs/ClassificationRef"
        }
      },
      "description": "A hyperlink describing a location on the web."
    },
    "Name": {
      "type": "object",
      "properties": {
        "firstName": {
          "type": "string"
        },
        "lastName": {
          "type": "string"
        }
      },
      "description": "A name describing a person, made up of given- and family name"
    },
    "ClassifiedName": {
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "name": {
          "$ref": "#/$defs/Name"
        },
        "type": {
          "$ref": "#/$defs/ClassificationRef"
        }
      },
      "description": "A classified name"
    },
    "HonoraryStaffOrganizationAssociation": {
      "type": "object",
      "description": "A relation describing the association between honorary staff and organization",
      "allOf": [
        {
          "$ref": "#/$defs/PersonOrganizationAssociation"
        },
        {
          "type": "object",
          "properties": {
            "jobDescription": {
              "$ref": "#/$defs/LocalizedString"
            },
            "jobTitle": {
              "$ref": "#/$defs/ClassificationRef"
            }
          }
        }
      ]
    },
    "PersonOrganizationAssociation": {
      "required": [
        "typeDiscriminator"
      ],
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "addresses": {
          "type": "array",
          "description": "List of physical addresses.",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/ClassifiedAddress"
          }
        },
        "affiliationId": {
          "type": "string",
          "description": "Affiliation identification. This could be a student ID or a staff ID.",
          "nullable": true
        },
        "employmentType": {
          "$ref": "#/$defs/ClassificationRef"
        },
        "organization": {
          "$ref": "#/$defs/OrganizationRef"
        },
        "emails": {
          "type": "array",
          "description": "List of emails.",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/ClassifiedValue"
          }
        },
        "webAddresses": {
          "type": "array",
          "description": "List of web addresses.",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/ClassifiedLocalizedValue"
          }
        },
        "phoneNumbers": {
          "type": "array",
          "description": "Phone numbers associated with the organization association.",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/ClassifiedValue"
          }
        },
        "period": {
          "$ref": "#/$defs/DateRange"
        },
        "supervisorAssociations": {
          "type": "array",
          "description": "List of associations to persons who supervise this person.",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/PersonSupervisorAssociation"
          }
        },
        "keywordGroups": {
          "type": "array",
          "description": "List of keyword groups.",
          "nullable": true,
          "items": {
            "$ref": "#/$defs/KeywordGroup"
          }
        },
        "primaryAssociation": {
          "type": "boolean",
          "description": "A boolean value indicating whether this is the primary association or not. Only one of the associations from a person to an organization will be primary."
        },
        "typeDiscriminator": {
          "type": "string"
        }
      },
      "nullable": true,
      "discriminator": {
        "propertyName": "typeDiscriminator",
        "mapping": {
          "HonoraryStaffOrganizationAssociation": "#/components/schemas/HonoraryStaffOrganizationAssociation",
          "StaffOrganizationAssociation": "#/components/schemas/StaffOrganizationAssociation",
          "StudentOrganizationAssociation": "#/components/schemas/StudentOrganizationAssociation",
          "VisitingScholarOrganizationAssociation": "#/components/schemas/VisitingScholarOrganizationAssociation"
        }
      }
    },
    "ClassifiedAddress": {
      "required": [
        "addressType"
      ],
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "addressType": {
          "$ref": "#/$defs/ClassificationRef"
        },
        "addressLines": {
          "type": "string",
          "description": "Address for personal residence",
          "nullable": true
        },
        "street": {
          "type": "string",
          "description": "The name of the street",
          "nullable": true
        },
        "building": {
          "type": "string",
          "description": "The name of the building",
          "nullable": true
        },
        "postalcode": {
          "type": "string",
          "description": "The postal code of the city",
          "nullable": true
        },
        "city": {
          "type": "string",
          "description": "The name of the city",
          "nullable": true
        },
        "country": {
          "$ref": "#/$defs/ClassificationRef"
        },
        "subdivision": {
          "$ref": "#/$defs/ClassificationRef"
        },
        "geoLocation": {
          "$ref": "#/$defs/GeoLocation"
        }
      },
      "description": "A physical address"
    },
    "GeoLocation": {
      "type": "object",
      "properties": {
        "point": {
          "type": "string",
          "description": "Location expressed as a point",
          "nullable": true
        },
        "polygon": {
          "type": "string",
          "description": "Location expressed as a polygon",
          "nullable": true
        },
        "calculatedPoint": {
          "type": "string",
          "description": "Used to determine whether or not we may update the point. An end-user has not entered a point manually if the value of the calculated point is the same as point",
          "readOnly": true
        }
      },
      "description": "Geographical location",
      "nullable": true
    },
    "OrganizationRef": {
      "required": [
        "uuid"
      ],
      "type": "object",
      "description": "A reference to an organization in the institution",
      "nullable": true,
      "allOf": [
        {
          "$ref": "#/$defs/ContentRef"
        }
      ]
    },
    "ClassifiedValue": {
      "required": [
        "type",
        "value"
      ],
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "value": {
          "type": "string",
          "description": "Classified value"
        },
        "type": {
          "$ref": "#/$defs/ClassificationRef"
        }
      },
      "description": "A classified value"
    },
    "ClassifiedLocalizedValue": {
      "required": [
        "type"
      ],
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "value": {
          "$ref": "#/$defs/LocalizedString"
        },
        "type": {
          "$ref": "#/$defs/ClassificationRef"
        }
      },
      "description": "A classified localized value"
    },
    "PersonSupervisorAssociation": {
      "type": "object",
      "properties": {
        "pureId": {
          "type": "integer",
          "description": "Pure database ID of the object, prefer using the UUID if it is present on the entity",
          "format": "int64",
          "readOnly": true
        },
        "period": {
          "$ref": "#/$defs/DateRange"
        },
        "supervisionPercentage": {
          "maximum": 100,
          "minimum": 0,
          "type": "integer",
          "description": "Percentage for which the Supervisor is responsible for the total supervision",
          "format": "int32"
        },
        "supervisorRole": {
          "$ref": "#/$defs/ClassificationRef"
        },
        "supervisor": {
          "$ref": "#/$defs/InternalOrExternalSupervisor"
        }
      },
      "description": "The association data of a person and their supervisor"
    },
    "InternalOrExternalSupervisor": {
      "type": "object",
      "properties": {
        "externalSupervisor": {
          "$ref": "#/$defs/ExternalPersonRef"
        },
        "supervisor": {
          "$ref": "#/$defs/PersonRef"
        }
      },
      "description": "A supervisor, either internal or external, use as mutually exclusive"
    },
    "StaffOrganizationAssociation": {
      "type": "object",
      "description": "A relation describing the association between Staff and organization",
      "allOf": [
        {
          "$ref": "#/$defs/PersonOrganizationAssociation"
        },
        {
          "type": "object",
          "properties": {
            "contractType": {
              "$ref": "#/$defs/ClassificationRef"
            },
            "fte": {
              "type": "number",
              "description": "The FTE (Full-Time Equivalent). A decimal number ranging between 0 (0% equivalent of full time) and 1 (100% equivalent of full time).",
              "format": "double",
              "nullable": true
            },
            "jobDescription": {
              "$ref": "#/$defs/LocalizedString"
            },
            "jobTitle": {
              "$ref": "#/$defs/ClassificationRef"
            },
            "staffType": {
              "$ref": "#/$defs/ClassificationRef"
            }
          }
        }
      ]
    },
    "StudentOrganizationAssociation": {
      "type": "object",
      "description": "A relation describing the association between student and organization",
      "allOf": [
        {
          "$ref": "#/$defs/PersonOrganizationAssociation"
        },
        {
          "type": "object",
          "properties": {
            "awardDate": {
              "type": "string",
              "description": "The date when the student received an award.",
              "format": "date",
              "nullable": true
            },
            "awardGained": {
              "type": "string",
              "description": "Description of what award the student gained.",
              "nullable": true
            },
            "fte": {
              "type": "number",
              "description": "The FTE (Full-Time Equivalent). A decimal number ranging between 0 (0% equivalent of full time) and 1 (100% equivalent of full time).",
              "format": "double",
              "nullable": true
            },
            "programme": {
              "type": "string",
              "description": "The name or title of a program often consists of the degree (e.g., BS) and the discipline or field of study (e.g., Business Administration).",
              "nullable": true
            },
            "projectTitle": {
              "$ref": "#/$defs/LocalizedString"
            },
            "expectedStudyDuration": {
              "type": "integer",
              "description": "The expected study duration.",
              "format": "int32",
              "nullable": true
            },
            "minimumStudyDuration": {
              "type": "integer",
              "description": "The minimum study duration.",
              "format": "int32",
              "nullable": true
            },
            "maximumStudyDuration": {
              "type": "integer",
              "description": "The maximum study duration.",
              "format": "int32",
              "nullable": true
            },
            "programYear": {
              "type": "string",
              "description": "The program year",
              "nullable": true
            },
            "initialSubmissionDate": {
              "type": "string",
              "description": "The program year",
              "format": "date",
              "nullable": true
            },
            "getExpectedEndDate": {
              "type": "string",
              "description": "Expected end date",
              "format": "date",
              "nullable": true
            },
            "startYear": {
              "type": "string",
          

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/queens-university-belfast/refs/heads/main/json-schema/queens-university-belfast-person-schema.json