Open Education API · Schema

Component

A component is a part of a course

CompanyEducationHigher EducationOpen StandardsInteroperabilitySpecificationsNetherlands

Properties

Name Type Description
componentId string Unique id of this component
primaryCode object The primary human readable identifier for this component. This is often the source identifier as defined by the institution.
componentType object
name array The name of this component
abbreviation string The abbreviation of this component
modeOfDelivery object
duration string The duration of this component. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.
description array The description of this component.
teachingLanguage string The (primary) teaching language in which this component is given, should be a three-letter language code as specified by ISO 639-2.
learningOutcomes array Statements that describe the knowledge or skills students should acquire by the end of a particular course (ECTS-learningoutcome).
enrollment array The extra information that is provided for enrollment
resources array An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)
assessment array A description of the way exams for this course are taken (ECTS-assessment method and criteria).
addresses array Addresses for this component
otherCodes array An array of additional human readable codes/identifiers for the entity being described.
course object The course of which this component is a part. [`expandable`](#tag/course_model) By default only the `courseId` (a string) is returned. If the client requested an expansion of `course` the full course
organization object The organization which provides this component. [`expandable`](#tag/organization_model) By default only the `organizationId` (a string) is returned. If the client requested an expansion of `organizati
consumers array The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more informatio
ext object
View JSON Schema on GitHub

JSON Schema

open-education-api-component-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/open-education-api/main/json-schema/open-education-api-component-schema.json",
  "title": "Component",
  "description": "A component is a part of a course",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/open-education-api-v5-openapi.yml#/components/schemas/Component",
  "type": "object",
  "required": [
    "componentId",
    "componentType",
    "name",
    "teachingLanguage",
    "abbreviation",
    "primaryCode"
  ],
  "properties": {
    "componentId": {
      "type": "string",
      "description": "Unique id of this component",
      "format": "uuid",
      "readOnly": true
    },
    "primaryCode": {
      "description": "The primary human readable identifier for this component. This is often the source identifier as defined by the institution.",
      "$ref": "#/$defs/IdentifierEntry",
      "readOnly": true
    },
    "componentType": {
      "$ref": "#/$defs/componentType"
    },
    "name": {
      "type": "array",
      "description": "The name of this component",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/LanguageTypedString"
      }
    },
    "abbreviation": {
      "type": "string",
      "description": "The abbreviation of this component",
      "maxLength": 256
    },
    "modeOfDelivery": {
      "$ref": "#/$defs/modesOfDelivery"
    },
    "duration": {
      "type": "string",
      "description": "The duration of this component. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.",
      "pattern": "^(-?)P(?=\\d|T\\d)(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)([DW]))?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$"
    },
    "description": {
      "type": "array",
      "description": "The description of this component.",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/LanguageTypedString"
      }
    },
    "teachingLanguage": {
      "type": "string",
      "description": "The (primary) teaching language in which this component is given, should be a three-letter language code as specified by ISO 639-2.",
      "minLength": 3,
      "maxLength": 3,
      "pattern": "^[a-z]{3}$"
    },
    "learningOutcomes": {
      "type": "array",
      "description": "Statements that describe the knowledge or skills students should acquire by the end of a particular course (ECTS-learningoutcome).",
      "items": {
        "type": "array",
        "minItems": 1,
        "items": {
          "$ref": "#/$defs/LanguageTypedString"
        }
      }
    },
    "enrollment": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/LanguageTypedString"
      },
      "description": "The extra information that is provided for enrollment"
    },
    "resources": {
      "type": "array",
      "description": "An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)",
      "items": {
        "type": "string"
      }
    },
    "assessment": {
      "type": "array",
      "description": "A description of the way exams for this course are taken (ECTS-assessment method and criteria).",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/LanguageTypedString"
      }
    },
    "addresses": {
      "type": "array",
      "description": "Addresses for this component",
      "items": {
        "$ref": "#/$defs/Address"
      }
    },
    "otherCodes": {
      "type": "array",
      "description": "An array of additional human readable codes/identifiers for the entity being described.",
      "items": {
        "$ref": "#/$defs/IdentifierEntry"
      }
    },
    "course": {
      "description": "The course of which this component is a part. [`expandable`](#tag/course_model)\nBy default only the `courseId` (a string) is returned. If the client requested an expansion of `course` the full course object should be returned.\n",
      "oneOf": [
        {
          "$ref": "#/$defs/Identifier",
          "title": "courseId"
        },
        {
          "$ref": "#/$defs/Course",
          "title": "Course object"
        }
      ]
    },
    "organization": {
      "description": "The organization which provides this component. [`expandable`](#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
      "oneOf": [
        {
          "$ref": "#/$defs/Identifier",
          "title": "organizationId"
        },
        {
          "$ref": "#/$defs/Organization",
          "title": "Organization object"
        }
      ]
    },
    "consumers": {
      "description": "The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/Consumer"
      }
    },
    "ext": {
      "$ref": "#/$defs/Ext"
    }
  },
  "$defs": {
    "Address": {
      "type": "object",
      "description": "The full street address",
      "required": [
        "addressType"
      ],
      "properties": {
        "addressType": {
          "$ref": "#/$defs/addressType"
        },
        "street": {
          "type": "string",
          "description": "The street name"
        },
        "streetNumber": {
          "type": "string",
          "description": "The street number"
        },
        "additional": {
          "type": "array",
          "description": "Further details like building name, suite, apartment number, etc.",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "postalCode": {
          "type": "string",
          "description": "Postal code"
        },
        "city": {
          "type": "string",
          "description": "name of the city / locality"
        },
        "countryCode": {
          "type": "string",
          "description": "the country code according to [iso-3166-1-alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)"
        },
        "geolocation": {
          "type": "object",
          "description": "Geolocation of the entrance of this address (WGS84 coordinate reference system)",
          "required": [
            "latitude",
            "longitude"
          ],
          "properties": {
            "latitude": {
              "type": "number",
              "format": "double"
            },
            "longitude": {
              "type": "number",
              "format": "double"
            }
          }
        },
        "ext": {
          "$ref": "#/$defs/Ext"
        }
      }
    },
    "Consumer": {
      "type": "object",
      "description": "Object for communicating data to a specific consumer (destination). This object has no relationship with the `consumer` query parameter.",
      "required": [
        "consumerKey"
      ],
      "properties": {
        "consumerKey": {
          "description": "The key of the consumer (destination) for which this information is intended. See the [consumer registry](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information.",
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "Course": {
      "allOf": [
        {
          "$ref": "#/$defs/CourseId"
        },
        {
          "$ref": "#/$defs/CourseProperties"
        },
        {
          "properties": {
            "validFrom": {
              "description": "The first day this course is valid (inclusive).",
              "type": "string",
              "format": "date"
            },
            "validTo": {
              "description": "The day this course ceases to be valid (e.g. exclusive).",
              "type": "string",
              "format": "date"
            }
          }
        }
      ]
    },
    "CourseId": {
      "type": "object",
      "description": "An object describing the metadata of a course",
      "required": [
        "courseId"
      ],
      "properties": {
        "courseId": {
          "type": "string",
          "description": "Unique id of this course",
          "format": "uuid",
          "readOnly": true
        }
      }
    },
    "CourseProperties": {
      "type": "object",
      "description": "An object describing the metadata of a course",
      "required": [
        "name",
        "abbreviation",
        "description",
        "teachingLanguage",
        "level",
        "primaryCode"
      ],
      "properties": {
        "primaryCode": {
          "description": "The primary human readable identifier for this course. This is often the source identifier as defined by the institution.",
          "$ref": "#/$defs/IdentifierEntry",
          "readOnly": true
        },
        "name": {
          "type": "array",
          "description": "The name of this course (ECTS-title)",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "abbreviation": {
          "type": "string",
          "description": "The abbreviation or internal code used to identify this course (ECTS-code)",
          "maxLength": 256
        },
        "studyLoad": {
          "$ref": "#/$defs/StudyLoadDescriptor"
        },
        "modeOfDelivery": {
          "$ref": "#/$defs/modesOfDelivery"
        },
        "duration": {
          "type": "string",
          "description": "The duration of this course. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.",
          "pattern": "^(-?)P(?=\\d|T\\d)(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)([DW]))?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$"
        },
        "firstStartDate": {
          "type": "string",
          "description": "The date when participants can follow this course for the first time.",
          "format": "date"
        },
        "description": {
          "type": "array",
          "description": "The description of this course (ECTS-description).",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "teachingLanguage": {
          "type": "string",
          "description": "The (primary) teaching language in which this course is given, should be a three-letter language code as specified by ISO 639-2.",
          "minLength": 3,
          "maxLength": 3,
          "pattern": "^[a-z]{3}$"
        },
        "fieldsOfStudy": {
          "type": "string",
          "description": "Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en).",
          "maxLength": 4
        },
        "learningOutcomes": {
          "type": "array",
          "description": "Statements that describe the knowledge or skills students should acquire by the end of a particular course (ECTS-learningoutcome).",
          "items": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/$defs/LanguageTypedString"
            }
          }
        },
        "admissionRequirements": {
          "type": "array",
          "description": "This information may be given at an institutional level and/or at the level of individual programmes. Make sure that it is clear whether the information applies to fee-paying students (national and/or international) or to exchange students.",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "qualificationRequirements": {
          "type": "array",
          "description": "Normally, students will receive a diploma when they have completed the (official) study program and have obtained the required number of credits. If there are any other specific requirements that students need to have fulfilled, mention them here.",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "level": {
          "$ref": "#/$defs/level"
        },
        "enrollment": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          },
          "description": "The extra information that is provided for enrollment"
        },
        "resources": {
          "type": "array",
          "description": "An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)",
          "items": {
            "type": "string"
          }
        },
        "assessment": {
          "type": "array",
          "description": "A description of the way exams for this course are taken (ECTS-assessment method and criteria).",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "link": {
          "type": "string",
          "description": "URL of the course's website",
          "format": "uri",
          "maxLength": 2048
        },
        "educationSpecification": {
          "description": "The educationSpecification of which this course is a more concrete implementation. [`expandable`](#tag/education_specification_model)",
          "oneOf": [
            {
              "$ref": "#/$defs/Identifier",
              "title": "educationSpecificationId"
            },
            {
              "$ref": "#/$defs/EducationSpecification",
              "title": "EducationSpecification"
            }
          ]
        },
        "addresses": {
          "type": "array",
          "description": "Addresses for this course",
          "items": {
            "$ref": "#/$defs/Address"
          }
        },
        "otherCodes": {
          "type": "array",
          "description": "An array of additional human readable codes/identifiers for the entity being described.",
          "items": {
            "$ref": "#/$defs/IdentifierEntry"
          }
        },
        "consumers": {
          "description": "The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Consumer"
          }
        },
        "ext": {
          "$ref": "#/$defs/Ext"
        },
        "programs": {
          "description": "The program of which this course is a part of. This object is [`expandable`](#tag/program_model)",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/Identifier",
                "title": "programId"
              },
              {
                "$ref": "#/$defs/Program",
                "title": "Program object"
              }
            ]
          }
        },
        "coordinators": {
          "description": "The person(s) responsible for this course. This object is [`expandable`](#tag/person_model)",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/Identifier",
                "title": "personId"
              },
              {
                "$ref": "#/$defs/Person",
                "title": "Person object"
              }
            ]
          }
        },
        "organization": {
          "description": "The organization that manages this group. [`expandable`](#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
          "oneOf": [
            {
              "$ref": "#/$defs/Identifier",
              "title": "organizationId"
            },
            {
              "$ref": "#/$defs/Organization",
              "title": "Organization object"
            }
          ]
        }
      }
    },
    "EducationSpecification": {
      "allOf": [
        {
          "$ref": "#/$defs/EducationSpecificationId"
        },
        {
          "$ref": "#/$defs/EducationSpecificationProperties"
        },
        {
          "properties": {
            "validFrom": {
              "description": "The first day this EducationSpecification is valid (inclusive).",
              "type": "string",
              "format": "date"
            },
            "validTo": {
              "description": "The day this EducationSpecification ceases to be valid (e.g. exclusive).",
              "type": "string",
              "format": "date"
            }
          }
        }
      ]
    },
    "EducationSpecificationId": {
      "type": "object",
      "properties": {
        "educationSpecificationId": {
          "type": "string",
          "description": "Unique id for this education specification",
          "format": "uuid"
        }
      },
      "required": [
        "educationSpecificationId"
      ]
    },
    "EducationSpecificationProperties": {
      "type": "object",
      "description": "The specification of an education object. This specification allows for other education objects to be derived from it.\nIt is used to aggregate education objects from a supplying institution.\nIt clusters programs to a main educationSpecification that is used in registries such as RIO. \n",
      "required": [
        "primaryCode",
        "educationSpecificationType",
        "name"
      ],
      "properties": {
        "primaryCode": {
          "description": "The primary human readable identifier for the entity. \nThis will often take the form of a human readable code as defined by the institution or region\n",
          "$ref": "#/$defs/IdentifierEntry"
        },
        "otherCodes": {
          "type": "array",
          "description": "An array of additional human readable codes/identifiers for the entity being described.",
          "items": {
            "$ref": "#/$defs/IdentifierEntry"
          }
        },
        "educationSpecificationType": {
          "$ref": "#/$defs/educationSpecificationType"
        },
        "name": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          },
          "description": "The name of this education specification"
        },
        "abbreviation": {
          "type": "string",
          "description": "The abbreviation of this program",
          "maxLength": 256
        },
        "description": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          },
          "description": "The description of this program. [The limited implementation of Git Hub Markdown syntax](#tag/formatting-and-displaying-results-from-API) MAY be used for rich text representation."
        },
        "formalDocument": {
          "$ref": "#/$defs/formalDocument"
        },
        "level": {
          "$ref": "#/$defs/level"
        },
        "sector": {
          "$ref": "#/$defs/sector"
        },
        "levelOfQualification": {
          "$ref": "#/$defs/levelOfQualification"
        },
        "fieldsOfStudy": {
          "type": "string",
          "description": "Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en).",
          "maxLength": 4
        },
        "studyLoad": {
          "$ref": "#/$defs/StudyLoadDescriptor"
        },
        "learningOutcomes": {
          "type": "array",
          "description": "Statements that describe the knowledge or skills students should acquire by the end of a particular course or program (ECTS-learningoutcome).",
          "items": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/$defs/LanguageTypedString"
            }
          }
        },
        "link": {
          "type": "string",
          "description": "URL of the program's website",
          "format": "uri",
          "maxLength": 2048
        },
        "parent": {
          "description": "The educationSpecification that is the parent of this educationSpecification if it exists. [`expandable`](#tag/education_specification_model)",
          "oneOf": [
            {
              "$ref": "#/$defs/Identifier",
              "title": "educationSpecificationId"
            },
            {
              "$ref": "#/$defs/EducationSpecification",
              "title": "EducationSpecification"
            }
          ]
        },
        "children": {
          "type": "array",
          "description": "The EducationSpecifications that have this EducationSpecification as their parent. [`expandable`](#tag/education_specification_model)",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/Identifier",
                "title": "educationSpecificationId"
              },
              {
                "$ref": "#/$defs/EducationSpecification",
                "title": "EducationSpecification"
              }
            ]
          }
        },
        "organization": {
          "description": "The organization that manages this group. [`expandable`](#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
          "oneOf": [
            {
              "$ref": "#/$defs/Identifier",
              "title": "organizationId"
            },
            {
              "$ref": "#/$defs/Organization",
              "title": "Organization object"
            }
          ]
        },
        "consumers": {
          "description": "The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Consumer"
          }
        },
        "ext": {
          "$ref": "#/$defs/Ext"
        }
      }
    },
    "Ext": {
      "type": "object",
      "description": "Object for additional non-standard attributes"
    },
    "ICERelationType": {
      "type": "string",
      "description": "Type of relation between person and In Case of Emergency contact",
      "enum": [
        "partner",
        "parent",
        "other"
      ]
    },
    "Identifier": {
      "type": "string",
      "description": "An identifier of another resource.",
      "format": "uuid"
    },
    "IdentifierEntry": {
      "type": "object",
      "properties": {
        "codeType": {
          "$ref": "#/$defs/codeType"
        },
        "code": {
          "description": "Human readable value for the code/identifier",
          "type": "string"
        }
      },
      "required": [
        "codeType",
        "code"
      ],
      "additionalProperties": false
    },
    "LanguageTypedString": {
      "type": "object",
      "description": "A String with an associated language code.",
      "properties": {
        "language": {
          "description": "The language used in the described entity. A string formatted according to RFC3066.",
          "type": "string",
          "pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
        },
        "value": {
          "description": "String to describe the entity.",
          "type": "string"
        }
      }
    },
    "Organization": {
      "type": "object",
      "description": "A description of a group of people working together to achieve a goal",
      "required": [
        "organizationId",
        "organizationType",
        "name",
        "shortName",
        "primaryCode"
      ],
      "properties": {
        "organizationId": {
          "type": "string",
          "description": "Unique id of this organization",
          "format": "uuid",
          "readOnly": true
        },
        "primaryCode": {
          "description": "The primary human readable identifier for the organization. This is often the source identifier as defined by the institution.",
          "$ref": "#/$defs/IdentifierEntry",
          "readOnly": true
        },
        "organizationType": {
          "$ref": "#/$defs/organizationType"
        },
        "name": {
          "type": "array",
          "description": "The name of the organization",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "shortName": {
          "type": "string",
          "description": "Short name of the organization",
          "maxLength": 256
        },
        "description": {
          "type": "array",
          "description": "Any general description of the organization should clearly mention the type of higher education organization, especially in the case of a binary system. In Dutch; universiteit (university) or hogeschool (university of applied sciences).",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/LanguageTypedString"
          }
        },
        "addresses": {
          "type": "array",
          "description": "Addresses of this organization",
          "items": {
            "$ref": "#/$defs/Address"
          }
        },
        "link": {
          "type": "string",
          "description": "URL of the organization's website",
          "format": "uri",
          "maxLength": 2048
        },
        "logo": {
          "type": "string",
          "description": "Logo of this organization",
          "format": "uri",
          "maxLength": 2048
        },
        "otherCodes": {
          "type": "array",
          "description": "An array of additional human readable codes/identifiers for the entity being described.",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/IdentifierEntry"
          }
        },
        "parent": {
          "description": "The organizational unit which is the parent of this organization. [`expandable`](#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
          "oneOf": [
            {
              "$ref": "#/$defs/Identifier",
              "title": "organizationId"
            },
            {
              "$ref": "#/$defs/Organization",
              "title": "Organization object"
            }
          ]
        },
        "children": {
          "type": "array",
          "description": "All the organizational units for which this organization is the parent. [`expandable`](#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/Identifier",
                "title": "organizationId"
              },
              {
                "$ref": "#/$defs/Organization",
                "title": "Organization object"
              }
            ]
          }
        },
        "consumers": {
          "description": "The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Consumer"
          }
        },
        "ext": {
          "$ref": "#/$defs/Ext"
        }
      }
    },
    "Person": {
      "allOf": [
        {
          "$ref": "#/$defs/PersonId"
        },
        {
          "$ref": "#/$defs/PersonProperties"
        }
      ]
    },
    "PersonId": {
      "type": "object",
      "properties": {
        "personId": {
          "type": "string",
          "description": "Unique id of this person",
          "format": "uuid"
        }
      },
      "required": [
        "personId"
      ]
    },
    "PersonProperties": {
      "type": "object",
      "description": "A person that has a relationship with this institution",
      "required": [
        "givenName",
        "surname",
        "displayName",
        "affiliations",
        "mail",
        "primaryCode",
        "activeEnrollment"
      ],
      "properties": {
        "primaryCode": {
          "description": "The primary human readable identifier for the person. This is often the source identifier as defined by the institution.",
          "$ref": "#/$defs/IdentifierEntry",
          "readOnly": true
        },
        "givenName": {
          "type": "string",
          "description": "The first name of this person",
          "maxLength": 256
        },
        "surnamePrefix": {
          "type": "string",
          "description": "The prefix of the family name of this person"
        },
        "surname": {
          "type": "string",
          "description": "The family name of this person",
          "maxLength": 256
        },
        "displayName": {
          "type": "string",
          "description": "The name of this person which will be displayed",
          "maxLength": 256
        },
        "initials": {
          "type": "string",
          "description": "The initials of this person"
        },
        "activeEnrollment": {
          "type": "boolean",
          "description": "Whether this person has an active enrollment."
        },
        "dateOfBirth": {
          "type": "string",
          "description": "The date of birth of this person, RFC3339 (full-date)",
          "format": "date"
        },
        "cityOfBirth": {
          "type": "string",
          "description": "The city of birth of this person"
        },
        "countryOfBirth": {
          "type": "string",
          "description": "The country of birth of this person the country code according to [iso-3166-1-alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)"
        },
        "nationality": {
          "type": "string",
          "description": "The nationality of this person the nationality according to https://gist.github.com/zspine/2365808"
        },
        "dateOfNationality": {
          "type": "string",
          "description": "The date of nationality of this person, RFC3339 (full-date)",
          "format": "date"
        },
        "affiliations": {
          "$ref": "#/$defs/personAffiliations"
        },
        "mail": {
          "type": "string",
          "description": "The primary e-mailaddress of this person",
          "format": "email",
          "maxLength": 256
        },
        "secondaryMail": {
          "type": "string",
          "description": "The secondary e-mailaddress of this person",
          "format": "email",
          "maxLength": 256
        },
        "telephoneNumber": {
          "type": "string",
          "description": "The telephone number of this person",
          "maxLength": 256
        },
        "mobileNumber": {
          "type": "string",
          "description": "The mobile number of this person",
          "maxLength": 256
        },
        "photoSocial": {
          "type": "string",
          "description": "The url of the informal picture of this person",
          "format": "uri",
          "maxLength": 2048
        },
        "photoOfficial": {
          "type": "string",
          "description": "The url of the official picture of this person",
          "format": "uri",
          "maxLength": 2048
        },
        "gender": {
          "$ref": "#/$defs/gender"
        },
        "titlePrefix": {
          "type": "string",
          "description": "A title prefix to be used for this person"
        },
        "titleSuffix": {
          "type": "string",
          "description": "A title suffix to be used for this person"
        },
        "office": {
          "type": "string",
          "description": "The name of the office where this person is located"
        },
        "address": {
          "$ref": "#/$defs/Address"
        },
        "ICEName": {
          "type": "string",
          "description": "Full name of In Case of Emergency contact",
          "maxLength": 256
        },
        "ICEPhoneNumber": {
          "type": "string",
          "description": "Phone number of In Case of Emergency contact",
          "maxLength": 256
        },
        

# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-component-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/open-education-api-component"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.