{ "$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-learning-component-schema.json", "title": "LearningComponent", "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-openapi.yml#/components/schemas/LearningComponent", "type": "object", "required": [ "componentId", "componentType", "name", "primaryCode" ], "properties": { "componentId": { "type": "string", "description": "Unique id of this component", "format": "uuid" }, "primaryCode": { "description": "The primary human readable identifier for this component. This is often the source identifier as defined by the institution.", "$ref": "#/$defs/IdentifierEntry" }, "componentType": { "$ref": "#/$defs/learningComponentType" }, "name": { "type": "array", "description": "The name of this component", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "abbreviation": { "type": [ "string", "null" ], "description": "The abbreviation of this component", "maxLength": 256 }, "modesOfDelivery": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/modeOfDelivery" } }, "duration": { "type": [ "string", "null" ], "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+Y)?(?:\\d+M)?(?:\\d+(?:D|W))?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+(?:\\.\\d+)?S)?)?$" }, "description": { "type": [ "array", "null" ], "description": "The description of this component.", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "teachingLanguages": { "type": [ "array", "null" ], "description": "The languages in which this learning component is given, should be three-letter language codes as specified by ISO 639-2. A student should be reasonably proficient in each language to be able to follow the learning component.", "minItems": 1, "items": { "$ref": "#/$defs/Language" } }, "learningOutcomeIds": { "description": "The identifiers of the learning outcomes related to this learning component.\nWhen the client does not request expansion of `learningOutcomes`, only these\nidentifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "learningOutcomes": { "description": "The expanded learning outcome objects related to this learning component.\nWhen the client requests expansion of `learningOutcomes`, the full expanded\nlearning outcome objects MUST be returned here instead of only the identifiers.\nIf no learning outcomes are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "oneOf": [ { "$ref": "#/$defs/LearningOutcome" }, { "type": "null" } ] } }, "enrolment": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/LanguageTypedString" }, "description": "The extra information that is provided for enrolment" }, "resources": { "type": [ "array", "null" ], "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", "null" ], "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", "null" ], "description": "Addresses for this component", "items": { "$ref": "#/$defs/Address" } }, "otherCodes": { "type": [ "array", "null" ], "description": "An array of additional human readable codes/identifiers for the entity being described.", "items": { "$ref": "#/$defs/IdentifierEntry" } }, "parentId": { "description": "The identifier of the parent learningComponent of which the current learningComponent is a child.\nWhen the client does not request expansion of `parent`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "parent": { "description": "The expanded parent learningComponent of which the current learningComponent is a child.\nWhen the client requests expansion of `parent`, the full expanded learningComponent object MUST be returned here instead of only the identifier.\nIf no parent is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/LearningComponent" }, { "type": "null" } ] }, "childIds": { "description": "The identifiers of the learningComponents which are a part of this learningComponent (e.g. combined tests).\nWhen the client does not request expansion of `children`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n\nAlthough `childIds` and `children` (for example `organisationIds` versus `organisations`) may \nseem unusual, this naming is intentional and follows the singular–plural convention defined \nby the specification.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "children": { "description": "The expanded learningComponent objects which are a part of this learningComponent (e.g. combined tests).\nWhen the client requests expansion of `children`, the full expanded learningComponent objects MUST be returned here instead of only the identifiers.\nIf no children are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "oneOf": [ { "$ref": "#/$defs/LearningComponent" }, { "type": "null" } ] } }, "courseId": { "description": "The identifier of the course of which this component is a part.\nWhen the client does not request expansion of `course`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "course": { "description": "The expanded course object of which this component is a part.\nWhen the client requests expansion of `course`, the full expanded course object MUST be returned here instead of only the identifier.\nIf no course is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Course" }, { "type": "null" } ] }, "organisationId": { "description": "The identifier of the organisation which provides this component.\nWhen the client does not request expansion of `organisation`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "organisation": { "description": "The expanded organisation object which provides this component.\nWhen the client requests expansion of `organisation`, the full expanded organisation object MUST be returned here instead of only the identifier.\nIf no organisation is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Organisation" }, { "type": "null" } ] }, "consumer": { "oneOf": [ { "$ref": "#/$defs/Consumer" }, { "type": "null" } ] }, "ext": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } }, "$defs": { "Address": { "type": "object", "description": "The full street address", "required": [ "addressType" ], "properties": { "addressType": { "$ref": "#/$defs/addressType" }, "street": { "type": [ "string", "null" ], "description": "The street name" }, "streetNumber": { "type": [ "string", "null" ], "description": "The street number" }, "additional": { "type": [ "array", "null" ], "description": "Further details like building name, suite, apartment number, etc.", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "postCode": { "type": [ "string", "null" ], "description": "Code to help sort and deliver mail also known as Postal code and ZIP code" }, "city": { "type": [ "string", "null" ], "description": "name of the city / locality" }, "countryCode": { "oneOf": [ { "$ref": "#/$defs/Country" }, { "type": "null" } ] }, "geolocation": { "type": [ "object", "null" ], "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": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } } }, "Consumer": { "type": "object", "description": "The additional elements of a consumer that may be provided, see the [documentation on support for specific consumers](https://oeapi.eu/v6.0/#/technical/consumers-and-profiles/) for further information about this mechanism.", "required": [ "consumerKey" ], "properties": { "consumerKey": { "description": "The key of the consumer (destination) for which this information is intended. See the [consumer registry](https://oeapi.eu/v6.0/#/technical/consumers-and-profiles/). This key is used to select the additional data to be presented in the request.", "type": "string" }, "exampleProperty": { "description": "An example of an additional property", "type": [ "string", "null" ] } }, "additionalProperties": true }, "Country": { "type": "object", "description": "An object indicating a country based on at least one iso-3166 code. In situations where more than one ISO-3166 code is provided, the codes must refer to the same country.\n", "properties": { "iso3166-1-alpha2": { "type": [ "string", "null" ], "minLength": 2, "maxLength": 2, "description": "A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" }, "iso3166-1-alpha3": { "type": [ "string", "null" ], "minLength": 3, "maxLength": 3, "description": "A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" }, "iso3166-2": { "type": [ "string", "null" ], "minLength": 5, "maxLength": 6, "description": "A country subdivision code based on https://en.wikipedia.org/wiki/ISO_3166-2" }, "iso3166-3": { "type": [ "string", "null" ], "minLength": 4, "maxLength": 4, "description": "A code for a country that no longer exists is listed on ISO 3166-3 (https://en.wikipedia.org/wiki/ISO_3166-3).\nImplementations should refrain from using the original ISO 3166-1 code for such a country since country codes\ncan be reassigned to new countries once the original country code is officially declared obsolete.\n" } } }, "Course": { "allOf": [ { "$ref": "#/$defs/CourseId" }, { "$ref": "#/$defs/CourseProperties" }, { "type": "object", "properties": { "validFrom": { "description": "The first day and time this course is valid (inclusive).", "type": [ "string", "null" ], "format": "date-time" }, "validTo": { "description": "The day and time this course ceases to be valid (e.g. exclusive).", "type": [ "string", "null" ], "format": "date-time" } } } ] }, "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" } } }, "CourseProperties": { "type": "object", "description": "An object describing the metadata of a course", "required": [ "name", "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" }, "name": { "type": "array", "description": "The name of this course (ECTS-title)", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "abbreviation": { "type": [ "string", "null" ], "description": "The abbreviation or internal code used to identify this course (ECTS-code)", "maxLength": 256 }, "studyLoad": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/StudyLoadDescriptor" } }, "modesOfDelivery": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/modeOfDelivery" } }, "duration": { "type": [ "string", "null" ], "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+Y)?(?:\\d+M)?(?:\\d+(?:D|W))?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+(?:\\.\\d+)?S)?)?$" }, "firstStartDate": { "type": [ "string", "null" ], "description": "The date and time when participants can follow this course for the first time.", "format": "date-time" }, "description": { "type": [ "array", "null" ], "description": "The description of this course (ECTS-description).", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "teachingLanguages": { "type": [ "array", "null" ], "description": "The languages in which this course is given, should be three-letter language codes as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the course.", "minItems": 1, "items": { "$ref": "#/$defs/Language" } }, "fieldsOfStudy": { "type": [ "string", "null" ], "description": "Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). \nISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added.\nPreferably fieldsOfStudy contains at least 4 digits.\nISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf).\n07 Engineering, manufacturing and construction\n073 Architecture and construction\n0731 Architecture and town planning\n073101 Town planning\n", "minLength": 2, "maxLength": 6 }, "learningOutcomeIds": { "description": "The identifiers of the learning outcomes related to this course.\nWhen the client does not request expansion of `learningOutcomes`, only these\nidentifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "learningOutcomes": { "description": "The expanded learning outcome objects related to this course.\nWhen the client requests expansion of `learningOutcomes`, the full expanded\nlearning outcome objects MUST be returned here instead of only the identifiers.\nIf no learning outcomes are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/LearningOutcome" } }, "admissionRequirements": { "type": [ "array", "null" ], "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", "null" ], "description": "Normally, students will receive a diploma when they have completed the (official) study programme 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": { "oneOf": [ { "$ref": "#/$defs/level" }, { "type": "null" } ] }, "enrolment": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/LanguageTypedString" }, "description": "The extra information that is provided for enrolment" }, "resources": { "type": [ "array", "null" ], "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", "null" ], "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", "null" ], "description": "URL of the course's website", "format": "uri", "maxLength": 2048 }, "addresses": { "type": [ "array", "null" ], "description": "Addresses for this course", "items": { "$ref": "#/$defs/Address" } }, "otherCodes": { "type": [ "array", "null" ], "description": "An array of additional human readable codes/identifiers for the entity being described.", "items": { "$ref": "#/$defs/IdentifierEntry" } }, "programmeIds": { "description": "The identifiers of the programmes of which this course is a part.\nThis array is used because a course can belong to multiple programmes,\nfor example in alliances.\nWhen the client does not request expansion of `programmes`, only these\nidentifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "supplementaryInformation": { "$ref": "#/$defs/SupplementaryInformation" }, "programmes": { "description": "The expanded programme objects of which this course is a part.\nThis array is used because a course can belong to multiple programmes,\nfor example in alliances.\nWhen the client requests expansion of `programmes`, the full expanded\nprogramme objects MUST be returned here instead of only the identifiers.\nIf no programmes are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Programme" } }, "coordinatorIds": { "description": "The identifiers of the persons responsible for this course.\nWhen the client does not request expansion of `coordinators`, only these\nidentifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "coordinators": { "description": "The expanded person objects responsible for this course.\nWhen the client requests expansion of `coordinators`, the full expanded\nperson objects MUST be returned here instead of only the identifiers.\nIf no coordinators are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Person" } }, "instructorIds": { "description": "The identifiers of the persons teaching or delivering this course.\nWhen the client does not request expansion of `instructors`, only these\nidentifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "instructors": { "description": "The expanded person objects teaching or delivering this course.\nWhen the client requests expansion of `instructors`, the full expanded\nperson objects MUST be returned here instead of only the identifiers.\nIf no instructors are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Person" } }, "organisationId": { "description": "The identifier of the organisation that manages this course.\nWhen the client does not request expansion of `organisation`, only this\nidentifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "organisation": { "description": "The expanded organisation object that manages this course.\nWhen the client requests expansion of `organisation`, the full expanded\norganisation object MUST be returned here instead of only the identifier.\nIf no organisation is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Organisation" }, { "type": "null" } ] }, "consumer": { "oneOf": [ { "$ref": "#/$defs/Consumer" }, { "type": "null" } ] }, "ext": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } } }, "Ext": { "type": "object", "description": "Object for additional non-standard attributes" }, "ICERelationType": { "type": "string", "description": "The type of relationship between the person and their In Case of Emergency (ICE) contact:\n\n- partner: Spouse or life partner\n- parent: Biological, adoptive, or legal parent\n- other: Any other type of relationship (e.g. sibling, friend, neighbour)\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-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 }, "Language": { "description": "The language used in the described entity. The value **must be a language tag that conforms to RFC 5646** (Tags for Identifying Languages, BCP 47):\nhttps://www.rfc-editor.org/rfc/rfc5646.html\n\nA tag consists of the following components, in this exact order:\n1. **language** – two‑ to three‑letter codes (ISO 639‑1/‑2) **or** four‑letter codes (ISO 639‑5) **or** five‑ to eight‑letter registered language subtags.\n2. **script** – optional, four letters in Title‑Case (e.g. `Latn`, `Hant`).\n3. **region** – optional, either two uppercase letters (ISO 3166‑1) **or** three digits (UN M.49).\n4. **variant** – zero or more subtags, each either five‑ to eight‑alphanumerics or a digit followed by three alphanumerics (e.g. `1901`, `oxendict`).\n5. **extension** – zero or more extensions. Each extension starts with a *singleton* (a single alphanumeric character except `x`) followed by one or more subtags of two‑ to eight‑alphanumerics (e.g. `u‑co‑phonebk`).\n6. **private‑use** – optional, the letter `x` followed by one or more subtags of one‑ to eight‑alphanumerics (e.g. `x‑private`).\n\nThe most common form is a two‑letter language code (ISO 639‑1) optionally followed by a hyphen and a two‑letter country code (ISO 3166‑1), for example `en` or `en‑GB`.\n\nMore specific tags are also valid, for instance `zh‑Hant‑TW` (Traditional Chinese as used in Taiwan).\n\nFor sign languages two conventions are recognised:\n* `sgn` – e.g. `nl‑sgn‑NL` (Dutch Sign Language)\n* `s` – e.g. `nl‑s‑NL` (Dutch Sign Language)\n", "type": "string", "minLength": 2, "pattern": "^(?:(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,2}|[A-Za-z]{4}|[A-Za-z]{5,8})(?:-[A-Za-z]{4})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*?(?:-(?:[A-WY-Za-wy-z0-9](?:-[A-Za-z0-9]{2,8})+))*?(?:-x(?:-[A-Za-z0-9]{1,8})+)?|x(?:-[A-Za-z0-9]{1,8})+)$" }, "LanguageTypedString": { "type": "object", "description": "A String with an associated language code. IF this object is used both fields are mandatory.", "required": [ "language", "value" ], "properties": { "language": { "$ref": "#/$defs/Language" }, "value": { "description": "String to describe the entity.", "type": "string" } } }, "LearningComponent": { "type": "object", "description": "A component is a part of a course", "required": [ "componentId", "componentType", "name", "primaryCode" ], "properties": { "componentId": { "type": "string", "description": "Unique id of this component", "format": "uuid" }, "primaryCode": { "description": "The primary human readable identifier for this component. This is often the source identifier as defined by the institution.", "$ref": "#/$defs/IdentifierEntry" }, "componentType": { "$ref": "#/$defs/learningComponentType" }, "name": { "type": "array", "description": "The name of this component", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "abbreviation": { "type": [ "string", "null" ], "description": "The abbreviation of this component", "maxLength": 256 }, "modesOfDelivery": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/modeOfDelivery" } }, "duration": { "type": [ "string", "null" ], "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+Y)?(?:\\d+M)?(?:\\d+(?:D|W))?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+(?:\\.\\d+)?S)?)?$" }, "description": { "type": [ "array", "null" ], "description": "The description of this component.", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "teachingLanguages": { "type": [ "array", "null" ], "description": "The languages in which this learning component is given, should be three-letter language codes as specified by ISO 639-2. A student should be reasonably proficient in each language to be able to follow the learning component.", "minItems": 1, "items": { "$ref": "#/$defs/Language" } }, "learningOutcomeIds": { "description": "The identifiers of the learning outcomes related to this learning component.\nWhen the client does not request expansion of `learningOutcomes`, only these\nidentifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "learningOutcomes": { "description": "The expanded learning outcome objects related to this learning component.\nWhen the client requests expansion of `learningOutcomes`, the full expanded\nlearning outcome objects MUST be returned here instead of only the identifiers.\nIf no learning outcomes are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "oneOf": [ { "$ref": "#/$defs/LearningOutcome" }, { "type": "null" } ] } }, "enrolment": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/LanguageTypedString" }, "description": "The extra information that is provided for enrolment" }, "resources": { "type": [ "array", "null" ], "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", "null" ], "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", "null" ], "description": "Addresses for this component", "items": { "$ref": "#/$defs/Address" } }, "otherCodes": { "type": [ "array", "null" ], "description": "An array of additional human readable codes/identifiers for the entity being described.", "items": { "$ref": "#/$defs/IdentifierEntry" } }, "parentId": { "description": "The identifier of the parent learningComponent of which the current learningComponent is a child.\nWhen the client does not request expansion of `parent`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "parent": { "description": "The expanded parent learningComponent of which the current learningComponent is a child.\nWhen the client requests expansion of `parent`, the full expanded learningComponent object MUST be returned here instead of only the identifier.\nIf no parent is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/LearningComponent" }, { "type": "null" } ] }, "childIds": { "description": "The identifiers of the learningComponents which are a part of this learningComponent (e.g. combined tests).\nWhen the client does not request expansion of `children`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n\nAlthough `childIds` and `children` (for example `organisationIds` versus `organisations`) may \nseem unusual, this naming is intentional and follows the singular–plural convention defined \nby the specification.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "children": { "description": "The expanded learningComponent objects which are a part of this learningComponent (e.g. combined tests).\nWhen the client requests expansion of `children`, the full expanded learningComponent objects MUST be returned here instead of only the identifiers.\nIf no children are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "oneOf": [ { "$ref": "#/$defs/LearningComponent" }, { "type": "null" } ] } }, "courseId": { "description": "The identifier of the course of which this component is a part.\nWhen the client does not request expansion of `course`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "course": { "description": "The expanded course object of which this component is a part.\nWhen the client requests expansion of `course`, the full expanded course object MUST be returned here instead of only the identifier.\nIf no course is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Course" }, { "type": "null" } ] }, "organisationId": { "description": "The identifier of the organisation which provides this component.\nWhen the client does not request expansion of `organisation`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "organisation": { "description": "The expanded organisation object which provides this component.\nWhen the client requests expansion of `organisation`, the full expanded organisation object MUST be returned here instead of only the identifier.\nIf no organisation is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Organisation" }, { "type": "null" } ] }, "consumer": { "oneOf": [ { "$ref": "#/$defs/Consumer" }, { "type": "null" } ] }, "ext": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } } }, "LearningOutcome": { "type": "object", "description": "statements regarding what a learner knows, understands and is able to do on completion of a learning process, which are defined in terms of knowledge, skills and responsibility and autonomy (https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32017H0615(01)&from=EN)", "required": [ "learningOutcomeId", "primaryCode", "name" ], "properties": { "learningOutcomeId": { "type": "string", "description": "Unique id of this learning outcome", "format": "uuid" }, "primaryCode": { "description": "The primary human readable identifier for this learning outcome. This is often the source identifier as defined by the institution.", "$ref": "#/$defs/IdentifierEntry" }, "name": { "type": "array", "description": "The name of this learning outcome", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "abbreviation": { "type": [ "string", "null" ], "description": "The abbreviation or internal code used to identify this LearningOutcome", "maxLength": 256 }, "description": { "type": [ "array", "null" ], "description": "The description of this learning outcome.", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "parentIds": { "description": "The identifiers of the learning outcomes which are the parents of this learning outcome.\nWhen the client does not request expansion of `parents`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "parents": { "description": "The expanded learning outcome objects which are the parents of this learning outcome.\nWhen the client requests expansion of `parents`, the full expanded learning outcome objects MUST be returned here instead of only the identifiers.\nIf no parents are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "oneOf": [ { "$ref": "#/$defs/LearningOutcome" }, { "type": "null" } ] } }, "childIds": { "description": "The identifiers of all learning outcomes for which this learning outcome is the parent.\nWhen the client does not request expansion of `children`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n\nAlthough `childIds` and `children` (for example `organisationIds` versus `organisations`) may \nseem unusual, this naming is intentional and follows the singular–plural convention defined \nby the specification.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "children": { "description": "The expanded learning outcome objects for which this learning outcome is the parent.\nWhen the client requests expansion of `children`, the full expanded learning outcome objects MUST be returned here instead of only the identifiers.\nIf no children are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "oneOf": [ { "$ref": "#/$defs/LearningOutcome" }, { "type": "null" } ] } }, "fieldsOfStudy": { "type": [ "string", "null" ], "description": "Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). \nISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added.\nPreferably fieldsOfStudy contains at least 4 digits.\nISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf).\n07 Engineering, manufacturing and construction\n073 Architecture and construction\n0731 Architecture and town planning\n073101 Town planning\n", "minLength": 2, "maxLength": 6 }, "otherCodes": { "type": [ "array", "null" ], "description": "An array of additional human readable codes/identifiers for the entity being described.", "items": { "$ref": "#/$defs/IdentifierEntry" } }, "complexityLevel": { "oneOf": [ { "$ref": "#/$defs/learningOutcomeLevel" }, { "type": "null" } ] }, "validFrom": { "type": [ "string", "null" ], "description": "The date and time for when this learning outcome will be active. Should be a string formatted as an RFC3099 full-date.", "format": "date-time" }, "validTo": { "type": [ "string", "null" ], "description": "The date and time when this learning outcome will no longer be valid, or should be renewed. Should be a string formatted as an RFC3099 full-date.", "format": "date-time" }, "consumer": { "oneOf": [ { "$ref": "#/$defs/Consumer" }, { "type": "null" } ] }, "ext": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } } }, "Nationality": { "type": "object", "description": "An object indicating nationality based on at least one iso-3166 code. In situations where more than one iso-3166 code is provided the codes have address the same country.\n", "properties": { "iso3166-1-alpha2": { "type": [ "string", "null" ], "minLength": 2, "maxLength": 2, "description": "A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" }, "iso3166-1-alpha3": { "type": [ "string", "null" ], "minLength": 3, "maxLength": 3, "description": "A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" }, "iso3166-3": { "type": [ "string", "null" ], "minLength": 4, "maxLength": 4, "description": "A nationality code for a country that no longer exists on https://en.wikipedia.org/wiki/ISO_3166-3 It is not advised to use the original iso3166-1 for such a country since country codes can get reassigned to new countries ones the original country code is officially obsolete. It is possible that a person has a nationality of a country that does not exist any more (after a country got split up like CZ and YU)\\ and never applied for nationality of one of the new countries.\n" } } }, "Organisation": { "type": "object", "description": "A description of a group of people working together to achieve a goal", "required": [ "organisationId", "organisationType", "name", "primaryCode" ], "properties": { "organisationId": { "type": "string", "description": "Unique id of this organisation", "format": "uuid" }, "primaryCode": { "description": "The primary human readable identifier for the organisation. This is often the source identifier as defined by the root organisation.", "$ref": "#/$defs/IdentifierEntry" }, "organisationType": { "$ref": "#/$defs/organisationType" }, "name": { "type": "array", "description": "The name of the organisation", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "shortName": { "type": [ "string", "null" ], "description": "Short name of the organisation", "maxLength": 256 }, "description": { "type": [ "array", "null" ], "description": "If the organisation is an educational organisation, any general description should clearly mention the type of \neducation organisation, especially in the case of a binary system. In Dutch; universiteit (university) or \nhogeschool (university of applied sciences).\nIf the organisation is not an educational organisation, a general description should describe the role it plays \nin education like providing certain types of internships, educational services, products or facilities.\n", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "addresses": { "type": [ "array", "null" ], "description": "Addresses of this organisation", "items": { "$ref": "#/$defs/Address" } }, "link": { "type": [ "string", "null" ], "description": "URL of the organisation's website", "format": "uri", "maxLength": 2048 }, "logo": { "type": [ "string", "null" ], "description": "Logo of this organisation", "format": "uri", "maxLength": 2048 }, "otherCodes": { "type": [ "array", "null" ], "description": "An array of additional human readable codes/identifiers for the entity being described.", "items": { "$ref": "#/$defs/IdentifierEntry" } }, "rootId": { "description": "The identifier of the organisation which is the root organisation of this organisation.\nWhen the client does not request expansion of `root`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "root": { "description": "The expanded organisation object which is the root organisation of this organisation.\nWhen the client requests expansion of `root`, the full expanded organisation object MUST be returned here instead of only the identifier.\nIf no root organisation is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Organisation" }, { "type": "null" } ] }, "parentId": { "description": "The identifier of the organisational unit which is the parent of this organisation.\nWhen the client does not request expansion of `parent`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "parent": { "description": "The expanded organisation object which is the parent of this organisation.\nWhen the client requests expansion of `parent`, the full expanded organisation object MUST be returned here instead of only the identifier.\nIf no parent organisation is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Organisation" }, { "type": "null" } ] }, "childIds": { "description": "The identifiers of the organisational units for which this organisation is the parent.\nWhen the client does not request expansion of `children`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n\nAlthough `childIds` and `children` (for example `organisationIds` versus `organisations`) may \nseem unusual, this naming is intentional and follows the singular–plural convention defined \nby the specification.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "children": { "description": "The expanded organisational unit objects for which this organisation is the parent.\nWhen the client requests expansion of `children`, the full expanded organisation objects MUST be returned here instead of only the identifiers.\nIf no children are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "oneOf": [ { "$ref": "#/$defs/Organisation" }, { "type": "null" } ] } }, "consumer": { "oneOf": [ { "$ref": "#/$defs/Consumer" }, { "type": "null" } ] }, "ext": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } } }, "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", "anyOf": [ { "required": [ "surname", "primaryCode", "activeEnrolment" ] }, { "title": "With required given name", "required": [ "givenName", "primaryCode", "activeEnrolment" ] }, { "title": "With required preferred name", "required": [ "preferredName", "primaryCode", "activeEnrolment" ] } ], "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" }, "givenName": { "type": [ "string", "null" ], "description": "The first name of this person", "maxLength": 256 }, "alternateName": { "type": [ "string", "null" ], "description": "The Name a person chooses to use. this is part of a Self Sovereign name e.g. in the eduId process comparable to schema.org alternateName", "maxLength": 256 }, "preferredName": { "type": [ "string", "null" ], "description": "The name how the person would like to be called. Usually first name of this person. In line with ISO/IEC 24760 – Identity Management Vocabulary", "maxLength": 256 }, "surnamePrefix": { "type": [ "string", "null" ], "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", "null" ], "description": "The name of this person which will be displayed", "maxLength": 256 }, "initials": { "type": [ "string", "null" ], "description": "The initials of this person" }, "idCheckName": { "type": [ "string", "null" ], "description": "The name of the person as printed on official identification documents\n(driving licence, passport or identity card). This MUST be formatted as\n\"surname prefix surname, given names\" (separating surnamePrefix and surname\nwith a single space, and surname and given names with a comma and space).\n\nIf the surname or given names are not available or are secret, the values\n\"secret\" and \"not_available\" are recommended. The surname prefix may be\nomitted. E.g. \"van der Graaf, Jacobus Adrianus\". \n\nOptionally, the value of\nthe student number can be added to this field by appending it at the end,\nseparated by a comma. E.g. \"van der Graaf, Jacobus Adrianus, s12345678\"\n" }, "activeEnrolment": { "type": "boolean", "description": "Whether this person has an active enrolment." }, "dateOfBirth": { "type": [ "string", "null" ], "description": "The date of birth of this person, using the `full-date` format as defined in \nRFC 3339 (section 5.6).\n", "format": "date" }, "cityOfBirth": { "type": [ "string", "null" ], "description": "The city of birth of this person" }, "countryOfBirth": { "oneOf": [ { "$ref": "#/$defs/Country" }, { "type": "null" } ] }, "nationality": { "oneOf": [ { "$ref": "#/$defs/Nationality" }, { "type": "null" } ] }, "dateOfNationality": { "type": [ "string", "null" ], "description": "The date of nationality of this person, using the `full-date` format as defined in \nRFC 3339 (section 5.6).\n", "format": "date" }, "affiliations": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/personAffiliation" } }, "email": { "type": [ "string", "null" ], "description": "The primary email address of this person", "format": "email", "maxLength": 256 }, "secondaryEmail": { "type": [ "string", "null" ], "description": "The secondary email address of this person", "format": "email", "maxLength": 256 }, "telephoneNumber": { "type": [ "string", "null" ], "description": "The telephone number of this person", "maxLength": 256 }, "mobileNumber": { "type": [ "string", "null" ], "description": "The mobile number of this person", "maxLength": 256 }, "photoSocial": { "type": [ "string", "null" ], "description": "The url of the informal picture of this person", "format": "uri", "maxLength": 2048 }, "photoOfficial": { "type": [ "string", "null" ], "description": "The url of the official picture of this person", "format": "uri", "maxLength": 2048 }, "gender": { "oneOf": [ { "$ref": "#/$defs/gender" }, { "type": "null" } ] }, "titlePrefix": { "type": [ "string", "null" ], "description": "A title prefix to be used for this person" }, "titleSuffix": { "type": [ "string", "null" ], "description": "A title suffix to be used for this person" }, "office": { "type": [ "string", "null" ], "description": "The name of the office where this person is located" }, "address": { "oneOf": [ { "$ref": "#/$defs/Address" }, { "type": "null" } ] }, "ICEName": { "type": [ "string", "null" ], "description": "Full name of In Case of Emergency contact", "maxLength": 256 }, "ICEPhoneNumber": { "type": [ "string", "null" ], "description": "Phone number of In Case of Emergency contact", "maxLength": 256 }, "ICERelation": { "oneOf": [ { "$ref": "#/$defs/ICERelationType" }, { "type": "null" } ] }, "languageOfChoice": { "type": [ "array", "null" ], "description": "The language(s) of choice for this person according to RFC4647. For details see the descriptions in the Language schema.", "items": { "$ref": "#/$defs/Language" } }, "otherCodes": { "type": [ "array", "null" ], "description": "An array of additional human readable codes/identifiers for the entity being described.", "items": { "$ref": "#/$defs/IdentifierEntry" } }, "assignedNeeds": { "description": "Assigned resources or time based on the needs of a person. \nThey describe which needs the student requires under which conditions e.g. 15% extra time for tests that requires maths skills.\nThese needs can later in the flows be mapped to a personalNeed for a specific association.\nExamples of such assignedNeeds: \"ExtraTimeOnlyMaths25%\", \"ExtraTimeOnlyMaths30Min\", \"ExtraTimeDigitalTests25%\"\n", "type": [ "array", "null" ], "items": { "type": "object", "properties": { "code": { "description": "Human readable value for the code/identifier", "type": [ "string", "null" ] }, "description": { "type": [ "array", "null" ], "description": "The description of this assignedNeed.", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "startDateTime": { "type": [ "string", "null" ], "description": "The moment on which this assigned need starts, RFC3339 (date-time)", "format": "date-time" }, "endDateTime": { "type": [ "string", "null" ], "description": "The moment on which this assigned need ends, RFC3339 (date-time)", "format": "date-time" } } }, "minItems": 0 }, "consumer": { "oneOf": [ { "$ref": "#/$defs/Consumer" }, { "type": "null" } ] }, "ext": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } } }, "Programme": { "allOf": [ { "$ref": "#/$defs/ProgrammeId" }, { "$ref": "#/$defs/ProgrammeProperties" }, { "type": "object", "properties": { "validFrom": { "description": "The first moment this programme is valid (inclusive).", "type": [ "string", "null" ], "format": "date-time" }, "validTo": { "description": "The moment this programme ceases to be valid (e.g. exclusive).", "type": [ "string", "null" ], "format": "date-time" } } } ] }, "ProgrammeId": { "type": "object", "description": "A collection of courses that lead to a certifiable learning outcome", "required": [ "programmeId" ], "properties": { "programmeId": { "type": "string", "description": "Unique id for this programme", "format": "uuid" } } }, "ProgrammeProperties": { "type": "object", "description": "A collection of courses that lead to a certifiable learning outcome", "required": [ "programmeType", "name", "primaryCode" ], "properties": { "primaryCode": { "description": "The primary human readable identifier for the programme. This is often the source identifier as defined by the institution.", "$ref": "#/$defs/IdentifierEntry" }, "programmeType": { "$ref": "#/$defs/programmeType" }, "name": { "description": "The name of this programme", "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "abbreviation": { "type": [ "string", "null" ], "description": "The abbreviation of this programme", "maxLength": 256 }, "description": { "type": [ "array", "null" ], "description": "The description of this programme", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "teachingLanguages": { "type": [ "array", "null" ], "description": "The languages in which this programme is given, should be three-letter language codes as specified by ISO 639-2. A student should be reasonably proficient in each language to be able to follow the programme.", "minItems": 1, "items": { "$ref": "#/$defs/Language" } }, "studyLoad": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/StudyLoadDescriptor" } }, "qualificationAwarded": { "oneOf": [ { "$ref": "#/$defs/qualificationAwarded" }, { "type": "null" } ] }, "qualificationDesignations": { "type": "array", "description": "Academic field designations that specify the discipline area of the degree (e.g., \"of Arts\", \"of Sciences\", \"of Engineering\"). Multiple designations may apply to interdisciplinary programmes.", "items": { "type": "string", "description": "The designation suffix indicating the academic field or discipline (e.g., \"of Arts\" for humanities, \"of Sciences\" for natural sciences, \"of Engineering\" for engineering disciplines)" } }, "modeOfStudy": { "oneOf": [ { "$ref": "#/$defs/modeOfStudy" }, { "type": "null" } ] }, "modesOfDelivery": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/modeOfDelivery" } }, "duration": { "type": [ "string", "null" ], "description": "The duration of this programme. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.", "pattern": "^-?P(?:\\d+Y)?(?:\\d+M)?(?:\\d+(?:D|W))?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+(?:\\.\\d+)?S)?)?$" }, "firstStartDateTime": { "type": [ "string", "null" ], "description": "The moment when participants can follow this programme for the first time.", "format": "date-time" }, "levelOfQualification": { "oneOf": [ { "$ref": "#/$defs/levelOfQualification" }, { "type": "null" } ] }, "level": { "oneOf": [ { "$ref": "#/$defs/level" }, { "type": "null" } ] }, "fieldsOfStudy": { "type": [ "string", "null" ], "description": "Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). \nISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added.\nPreferably fieldsOfStudy contains at least 4 digits.\nISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf).\n07 Engineering, manufacturing and construction\n073 Architecture and construction\n0731 Architecture and town planning\n073101 Town planning\n", "minLength": 2, "maxLength": 6 }, "enrolment": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/LanguageTypedString" }, "description": "The extra information that is provided for enrolment" }, "resources": { "type": [ "array", "null" ], "description": "An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)", "items": { "type": "string" } }, "learningOutcomeIds": { "description": "The identifiers of the learning outcomes related to this programme.\nWhen the client does not request expansion of `learningOutcomes`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "learningOutcomes": { "description": "The expanded learning outcome objects related to this programme.\nWhen the client requests expansion of `learningOutcomes`, the full expanded learning outcome objects MUST be returned here instead of only the identifiers.\nIf no learning outcomes are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/LearningOutcome" } }, "assessment": { "type": [ "array", "null" ], "description": "A description of the way exams for this course are taken (ECTS-assessment method and criteria).", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } }, "admissionRequirements": { "type": [ "array", "null" ], "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", "null" ], "description": "Normally, students will receive a diploma when they have completed the (official) study programme 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" } }, "formalDocument": { "oneOf": [ { "$ref": "#/$defs/formalDocument" }, { "type": "null" } ] }, "link": { "type": [ "string", "null" ], "description": "URL of the programme's website", "format": "uri", "maxLength": 2048 }, "otherCodes": { "type": [ "array", "null" ], "description": "An array of additional human readable codes/identifiers for the entity being described.", "items": { "$ref": "#/$defs/IdentifierEntry" } }, "addresses": { "type": [ "array", "null" ], "description": "Addresses for this programme", "items": { "$ref": "#/$defs/Address" } }, "parentId": { "description": "The identifier of the parent programme of which the current programme is a child.\nWhen the client does not request expansion of `parent`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "parent": { "description": "The expanded parent programme of which the current programme is a child.\nWhen the client requests expansion of `parent`, the full expanded programme object MUST be returned here instead of only the identifier.\nIf no parent is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Programme" }, { "type": "null" } ] }, "childIds": { "description": "The identifiers of the programmes which are a part of this programme (e.g. specialisations).\nWhen the client does not request expansion of `children`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n\nAlthough `childIds` and `children` (for example `organisationIds` versus `organisations`) may \nseem unusual, this naming is intentional and follows the singular–plural convention defined \nby the specification.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "children": { "description": "The expanded programme objects which are a part of this programme (e.g. specialisations).\nWhen the client requests expansion of `children`, the full expanded programme objects MUST be returned here instead of only the identifiers.\nIf no children are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Programme" } }, "coordinatorIds": { "description": "The identifiers of the persons responsible for this programme.\nWhen the client does not request expansion of `coordinators`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "coordinators": { "description": "The expanded person objects responsible for this programme.\nWhen the client requests expansion of `coordinators`, the full expanded person objects MUST be returned here instead of only the identifiers.\nIf no coordinators are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Person" } }, "instructorIds": { "description": "The identifiers of the persons teaching or delivering this programme.\nWhen the client does not request expansion of `instructors`, only these identifiers are returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Identifier" } }, "instructors": { "description": "The expanded person objects teaching or delivering this programme.\nWhen the client requests expansion of `instructors`, the full expanded person objects MUST be returned here instead of only the identifiers.\nIf no instructors are defined, this value is `null`.\n", "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Person" } }, "organisationId": { "description": "The identifier of the organisation providing this programme.\nWhen the client does not request expansion of `organisation`, only this identifier is returned.\nThis field is [`expandable`](https://oeapi.eu/v6.0/#/technical/expanding-responses).\n", "oneOf": [ { "$ref": "#/$defs/Identifier" }, { "type": "null" } ] }, "organisation": { "description": "The expanded organisation object providing this programme.\nWhen the client requests expansion of `organisation`, the full expanded organisation object MUST be returned here instead of only the identifier.\nIf no organisation is defined, this value is `null`.\n", "oneOf": [ { "$ref": "#/$defs/Organisation" }, { "type": "null" } ] }, "supplementaryInformation": { "$ref": "#/$defs/SupplementaryInformation" }, "consumer": { "oneOf": [ { "$ref": "#/$defs/Consumer" }, { "type": "null" } ] }, "ext": { "oneOf": [ { "$ref": "#/$defs/Ext" }, { "type": "null" } ] } } }, "StudyLoadDescriptor": { "type": "object", "description": "The amount of effort to complete this education in the specified unit.", "required": [ "studyLoadUnit", "value" ], "properties": { "studyLoadUnit": { "$ref": "#/$defs/studyloadUnit" }, "value": { "description": "The amount of load depicted in numbers", "type": "number" } } }, "SupplementaryInformation": { "type": "array", "description": "Optional supplementary information associated with this resource.", "items": { "type": "object", "description": "A supplementary content item consists of a technical media form (`type`),\na semantic purpose (`role`), and an array of `value` entries. Together these\nfields define both how the content MUST be interpreted (`type`) and why it\nis provided (`role`).\n\nThe `type` specifies the underlying media form (text, image, video or http)\nand determines how each `value` item MUST be handled. The `role` describes\nthe intent or purpose of the supplementary item (for example announcement,\nbadge, marketing or promotional teaser) and MUST NOT duplicate or encode\nthe media form defined by `type`.\n\nThe separation between `type` and `role` ensures that the same media form\ncan serve multiple purposes, and that the semantic meaning remains\nindependent from the technical representation of the content. The `value`\narray contains one or more language-typed strings, allowing the same content\nitem to be expressed in multiple languages or alternative textual variants.\n", "properties": { "role": { "$ref": "#/$defs/supplementaryRole" }, "type": { "$ref": "#/$defs/supplementaryType" }, "value": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/LanguageTypedString" } } }, "required": [ "role", "type", "value" ] } }, "addressType": { "type": "string", "description": "The type of address, indicating its intended use:\n \n- postal: Used for receiving post\n- visit: Used for physical visits\n- deliveries: Used for deliveries\n- invoicing: Used for invoicing purposes\n- teaching: The location where educational activities take place\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "postal", "visit", "deliveries", "invoicing", "teaching" ] }, "codeType": { "type": "string", "description": "The type of code or identifier.\n\nThe predefined values are:\n\n| Code | Description |\n|---------------------------|-------------------------------------------------------------------|\n| `account_id` | Identifier for an account. |\n| `bag_id` | Identifier for a building in the Dutch Building and Address |\n| | Registry (BAG). |\n| `building_id` | Identifier for a building. |\n| `component_code` | Identifier for a component (part of a course). |\n| `eckid` | Identifier assigned within the Dutch *Educatieve ContentKeten iD* |\n| | framework. It enables persistent identification and exchange of |\n| | digital learning resources within the Dutch educational sector for|\n| | EQF levels 1, 2, 3 and 4. Comparable international approaches |\n| | include LRMI, DOI and Handle |\n| | identifiers for learning resources. |\n| `email_address` | An email address. |\n| `esi` | European Student Identifier. |\n| `group_code` | Identifier for a group of people. |\n| `group_type_code` | Identifier for the type of group. |\n| `identifier` | Generic identifier. |\n| `institution_code` | Registration number of an educational institution. In the |\n| | Netherlands, the former BRIN code has been replaced by the |\n| | institution code, issued by the Ministry of Education, Culture |\n| | and Science (OCW). |\n| `isbn` | International Standard Book Number (for books). |\n| `issn` | International Standard Serial Number (for periodicals). |\n| `kvk_organisation_id` | Identifier for a KvK (Dutch Chamber of Commerce) registered |\n| | organisation. |\n| `kvk_establishment_id` | Identifier for a specific establishment of a KvK |\n| | (Dutch Chamber of Commerce) registered organisation. |\n| `leerbedrijf_id` | Dutch registration/accreditation id for organisations offering |\n| | internships for vocational education students. |\n| `national_identity_number`| Government-assigned personal identifier (e.g. NI number in the UK,|\n| | or *personnummer* in Sweden). |\n| `offering_code` | Identifier for a specific offering (programme, course or |\n| | component). |\n| `organisation_id` | Identifier for an organisation. |\n| `orcid` | Open Researcher and Contributor ID. |\n| `product_id` | Identifier for a product. |\n| `programme_code` | Identifier of a programme (a recognised collection of courses). |\n| | In the Netherlands, the former CREBO and CROHO codes have been |\n| | replaced by the programme code as registered in RIO, under the |\n| | authority of OCW. |\n| `room_code` | Identifier for a room. |\n| `schac_home` | Home organisation represented by its domain name. |\n| `student_number` | Identifier for a student. |\n| `studielink_number` | Identifier assigned to a student by Studielink (Dutch central |\n| | enrolment system). |\n| `system_id` | Identifier used within a specific system. |\n| `username` | User login name. |\n| `uuid` | Universally unique identifier. |\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "account_id", "bag_id", "building_id", "component_code", "eckid", "email_address", "esi", "group_code", "group_type_code", "identifier", "institution_code", "isbn", "issn", "kvk_organisation_id", "kvk_establishment_id", "leerbedrijf_id", "offering_code", "organisation_id", "orcid", "product_id", "programme_code", "room_code", "schac_home", "student_number", "studielink_number", "system_id", "username", "uuid", "national_identity_number" ] }, "formalDocument": { "type": "string", "description": "The type of formal document obtained upon completion of an educational programme:\n\n| Code | Description |\n|-----------------------------|------------------------------------------------|\n| `certificate` | A formal recognition of participation or |\n| | achievement |\n| `diploma` | An official qualification awarded upon |\n| | graduation |\n| `micro_credential_certificate` | Formal certification specifically |\n| | documenting the award of a micro-credential |\n| `school_advice` | Educational recommendation or guidance issued |\n| | by the school |\n| `testimonial` | A written statement confirming attendance or |\n| | performance |\n| `no_official_document` | No official document is issued |\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "certificate", "diploma", "micro_credential_certificate", "school_advice", "testimonial", "no_official_document" ] }, "gender": { "type": "string", "description": "The gender of this person, based on international standards for education and data interoperability.\n\nThe values follow practices from agencies such as:\n- European Commission (EULF, INSPIRE, GeoDCAT-AP)\n- Edustandaard, EUNIS\n\n- m: male\n- f: female\n- x: non-binary or gender-diverse, officially registered\n- o: other gender identity, not officially classified as m/f/x\n- u: unknown or not registered\n- n: not applicable, e.g. for non-person entities or gender-irrelevant use cases\n", "x-ooapi-extensible-enum": [ "m", "f", "x", "o", "u", "n" ] }, "learningComponentType": { "type": "string", "description": "The type of learning component, indicating the format or method of educational delivery.\nOne learning component of a certain type can have multiple offerings, one component can refer to a set of componentOfferings.\ne.g. the component lecture can be a set of lectures (group of offerings)\nAn example of such a case in natural language: the lecture takes place weekly for 7 weeks\nThis implies one learningComponent of type lecture with seven learningComponentOfferings of type lecture. \n\n| Code | Description |\n|---------------------|----------------------------------------------------------------|\n| `consultation` | Scheduled meeting for individual or group guidance. |\n| `excursion` | Educational trip or site visit. |\n| `external` | Activity outside the home institution (e.g. internship, |\n| | course at a partner institution). |\n| `independent_study` | Self-directed learning without scheduled contact hours. |\n| `learning_community`| Structured collaboration between education, research and |\n| | industry with shared ownership of learning and outcomes; |\n| | distinct from internships and from COIL. |\n| `lecture` | Classroom-based or online lecture given by an instructor. |\n| `practical` | Hands-on session focusing on application of concepts. |\n| `project` | Structured assignment carried out over a period of time. |\n| `skills_training` | Session focused on developing specific practical or |\n| | professional skills. |\n| `tutorial` | Interactive small-group session to reinforce learning. |\n| `workshop` | Intensive session focused on practical skills or knowledge. |\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "consultation", "excursion", "external", "independent_study", "learning_community", "lecture", "practical", "project", "skills_training", "tutorial", "workshop" ] }, "learningOutcomeLevel": { "type": "string", "description": "The level of the learning outcome. This field supports multiple frameworks for\ndescribing cognitive complexity. Two common frameworks are provided below: **Bloom’s**\nand **SOLO**. These are intended as examples — additional levels or entirely\ndifferent frameworks MAY be added as needed.\n\n**Bloom’s taxonomy** ([https://en.wikipedia.org/wiki/Bloom's_taxonomy](https://en.wikipedia.org/wiki/Bloom's_taxonomy)):\n\n| Level | Label | Description |\n|---------|------------|---------------------------------------------------------------------|\n| bloom_1 | Remember | Recall facts and basic concepts (define, list, state). |\n| bloom_2 | Understand | Explain ideas or concepts (describe, discuss, explain). |\n| bloom_3 | Apply | Use knowledge in new situations (implement, solve, use). |\n| bloom_4 | Analyse | Draw connections among ideas (differentiate, compare, examine). |\n| bloom_5 | Evaluate | Justify a decision or course of action (critique, assess, argue). |\n| bloom_6 | Create | Produce new or original work (design, construct, develop). |\n\n**SOLO taxonomy** ([https://en.wikipedia.org/wiki/Structure_of_observed_learning_outcome](https://en.wikipedia.org/wiki/Structure_of_observed_learning_outcome)):\n\n| Level | Label | Description |\n|---------|-------------------|-----------------------------------------------------------------|\n| solo_0 | Prestructural | No understanding; the student misses the point. |\n| solo_1 | Unistructural | Identifies or carries out simple procedures; limited to one |\n| | | relevant aspect. |\n| solo_2 | Multistructural | Addresses several relevant aspects, but sees them as unrelated; |\n| | | knowledge is additive. |\n| solo_3 | Relational | Integrates aspects into a coherent whole, showing deeper |\n| | | understanding of relationships. |\n| solo_4 | Extended abstract | Generalises and applies learning to new domains, showing |\n| | | theoretical and abstract thinking. |\n\nThis is an *extensible enumeration*. Implementers MAY introduce other recognised\ntaxonomies, institutional or national frameworks. \n", "x-ooapi-extensible-enum": [ "bloom_1", "bloom_2", "bloom_3", "bloom_4", "bloom_5", "bloom_6", "solo_0", "solo_1", "solo_2", "solo_3", "solo_4" ] }, "level": { "type": "string", "description": "The level of this course (ECTS year of study if applicable):\n\n- pre_vocational: Pre-vocational education, preparatory stage prior to vocational training, typically before secondary vocational education (Dutch: mbo) level\n- secondary_vocational_education: Secondary vocational education (Dutch: mbo)\n- secondary_vocational_education_1: Secondary vocational education level 1, corresponds to levelOfQualification 1 (Dutch: mbo 1)\n- secondary_vocational_education_2: Secondary vocational education level 2, corresponds to levelOfQualification 2 (Dutch: mbo 2)\n- secondary_vocational_education_3: Secondary vocational education level 3, corresponds to levelOfQualification 3 (Dutch: mbo 3)\n- secondary_vocational_education_4: Secondary vocational education level 4, corresponds to levelOfQualification 4 (Dutch: mbo 4)\n- associate_degree: Associate degree, corresponds to levelOfQualification 5\n- bachelor: Bachelor degree, corresponds to levelOfQualification 6\n- master: Master degree, corresponds to levelOfQualification 7\n- doctoral: Doctoral level, corresponds to levelOfQualification 8\n- post_doctoral: Post-doctoral level, advanced academic or professional qualification beyond the doctoral level\n- undefined: The level is not specified\n- undivided: Integrated programme not divided into bachelor and master phases\n- nt2_1: Dutch as a second language, Programme I, intended for vocational training (CEFR level A2–B1)\n- nt2_2: Dutch as a second language, Programme II, intended for higher education or professional purposes (CEFR level B2)\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "pre_vocational", "secondary_vocational_education", "secondary_vocational_education_1", "secondary_vocational_education_2", "secondary_vocational_education_3", "secondary_vocational_education_4", "associate_degree", "bachelor", "master", "doctoral", "post_doctoral", "undefined", "undivided", "nt2_1", "nt2_2" ] }, "levelOfQualification": { "type": "string", "description": "Level of qualification according to the European Qualifications Framework (EQF). \nSee: \n- https://europass.europa.eu/en/description-eight-eqf-levels \n- https://europass.europa.eu/en/europass-digital-tools/european-qualifications-framework \n- https://nlqf.nl/\n- https://database.nlqf.nl/assets/pdf/schema-en-print.pdf\n\nThis list is extended with:\n- eqf_0: Informal or pre-qualification learning, below EQF level 1, e.g. basic literacy or life skills\n- eqf_1: Basic general knowledge and skills to carry out simple tasks\n- eqf_2: Basic factual knowledge and practical skills in a field of work or study\n- eqf_3: Knowledge of facts, principles and processes, with basic problem-solving skills\n- eqf_4: Factual and theoretical knowledge in broad contexts within a field of work or study\n- nlqf_4plus: Dutch pre-university education (VWO), considered above EQF level 4 but not formally mapped to EQF level 5\n- eqf_5: Comprehensive, specialised knowledge and practical skills, typically short-cycle higher education (e.g. associate degree)\n- eqf_6: Advanced knowledge and skills for complex problem-solving, typically bachelor level\n- eqf_7: Highly specialised knowledge and critical awareness, typically master level\n- eqf_8: Knowledge at the most advanced frontier of a field, typically doctoral level\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "eqf_0", "eqf_1", "eqf_2", "eqf_3", "eqf_4", "nlqf_4plus", "eqf_5", "eqf_6", "eqf_7", "eqf_8" ] }, "modeOfDelivery": { "type": "string", "description": "The mode of delivery of the component, based on the EU vocabulary: \nhttps://op.europa.eu/en/web/eu-vocabularies/dataset/-/resource?uri=http://publications.europa.eu/resource/dataset/learning-assessment\n\n| Code | Description |\n|----------------------|-----------------------------------------------------------|\n| `blended` | Structured combination of online and in-person learning |\n| `coil` | Collaborative Online International Learning; joint, cross-|\n| | institutional, online delivery (virtual exchange / |\n| | co-taught across institutions) |\n| `hybrid` | Delivery using different modes in a flexible and |\n| | interchangeable way |\n| `joint_delivery` | Programme delivered collaboratively by two or more |\n| | institutions (national or international), with shared |\n| | responsibility for curriculum and teaching |\n| `online` | Real-time learning delivered entirely via the internet |\n| `presential` | Learning that takes place in a physical classroom setting |\n| `project_based` | Learning or assessment conducted as part of a project team|\n| `research_lab_based` | Learning that occurs within a research environment |\n| `work_based` | Learning through practical work or workplace experience |\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "blended", "coil", "hybrid", "joint_delivery", "online", "presential", "project_based", "research_lab_based", "work_based" ] }, "modeOfStudy": { "type": "string", "description": "Indicates the mode of study: full-time, part-time, dual or self-paced.\n\n- full_time: Standard daytime study schedule\n- part_time: Study scheduled outside regular working hours, such as evenings and weekends\n- dual_training: Combination of workplace learning and academic study\n- self_paced: Student sets their own pace and timing for study\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "full_time", "part_time", "dual_training", "self_paced" ] }, "organisationType": { "type": "string", "description": "The type of this organisation. When using non-root organisation types, make sure that there is always a parent organisation of type root available.\n\n- root: The top-level organisation, representing the organisation itself\n- institute: A subdivision of the root organisation, typically focused on a broad field of study\n- department: An organisational unit within an organisation or one of the subdivisions of an organisation, focused on a specific discipline\n- faculty: A major academic division within an institution, often overseeing multiple departments\n- branch: A geographically separate location or campus of an organisation\n- academy: A specialised academic unit, often focused on applied or artistic disciplines\n- school: An organisational unit typically used in primary, secondary, or specialised higher education contexts\n\nThis is an extensible enumeration. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "root", "institute", "department", "faculty", "branch", "academy", "school" ] }, "personAffiliation": { "type": "string", "description": "The affiliations of this person — the roles or relationships a person has with the organisation providing this endpoint:\n\n- student: Enrolled learner or participant in educational offerings\n- employee: Staff member employed by the organisation (e.g. teacher, administrator)\n- guest: External person temporarily affiliated, without formal student or employee status\n\nThis is an extensible enumeration. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "student", "employee", "guest" ] }, "programmeType": { "type": "string", "description": "The type of this programme:\n\n- programme: A full formal programme of study leading to a qualification or degree\n- minor: A smaller, complementary programme that broadens or deepens the main field of study\n- honours: An honours programme, typically with additional academic requirements or distinction\n- specialisation: A focused area of study within a broader programme or degree\n- track: A structured learning path within a programme, often thematically or methodologically defined\n- specification: A further defined variant or subset of a track or specialisation\n\nThis is an extensible enumeration. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "programme", "minor", "honours", "specialisation", "track", "specification" ] }, "qualificationAwarded": { "type": "string", "description": "Type of qualification that can be obtained upon completing the programme:\n- diploma\n- vocational_diploma\n- certificate\n- associate_degree: Associate degree — short-cycle higher education qualification (EQF level 5)\n- bachelor: Bachelor — undergraduate degree (EQF level 6)\n- master: Master — postgraduate degree (EQF level 7)\n- doctoral: Doctoral degree — research-based doctoral degree (EQF level 8)\n- none: No formal qualification is awarded for this programme\n\nIn case of a degree (for example bachelor or master), the type of degree can be specified using `qualificationDesignations`.\n", "x-ooapi-extensible-enum": [ "diploma", "vocational_diploma", "certificate", "associate_degree", "bachelor", "master", "doctoral", "none" ] }, "studyloadUnit": { "type": "string", "description": "The unit in which the study load is specified:\n\n- contact_time: Amount of time spent in scheduled classroom or contact hours.\n- ects: European Credit Transfer and Accumulation System (ECTS credits), typically 1 ECTS = 28 study hours.\n- sbu: Student workload hours, representing the total estimated effort.\n- sp: Study points used in some national systems (e.g. studiepunt in Flanders or the Netherlands).\n- hour: Plain number of hours, regardless of context (e.g. used for informal or modular learning units).\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "contact_time", "ects", "sbu", "sp", "hour" ] }, "supplementaryRole": { "type": "string", "description": "The fundamental semantic purpose of the supplementary content. The selected\n`role` describes the intent or function of the item (for example, badge,\nteaser or promotional highlight).\n\nThe `role` MUST NOT duplicate or encode the technical media form defined by\n`type`. The `type` specifies the underlying media form (such as text, image,\nvideo or http), whereas the `role` clarifies how that media is intended to be\ninterpreted or used.\n\n| Code | Description |\n|----------------|-----------------------------------------------------|\n| `announcement` | General-purpose announcement or notice |\n| `badge` | A visual label or achievement marker |\n| `marketing` | Promotional or marketing-related content |\n| `promo` | A short promotional highlight or teaser |\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "announcement", "badge", "marketing", "promo" ] }, "supplementaryType": { "type": "string", "description": "The fundamental media form of the supplementary content. The selected `type`\ndetermines how the associated `value` MUST be interpreted. It defines the\ntechnical representation of the content, independent of its semantic role.\n\nThe `type` specifies the underlying media form, such as text_plain,\ntext_md, text_http, image, video or uri.\n\nThe `role` defines the semantic intent of the item and MUST NOT duplicate the\ntechnical media form defined by `type`.\n\n| Code | Description |\n|-------------|--------------------------------------------------------------------------|\n| `image` | Visual media referenced via a URI (for example photographs or artwork) |\n| `text_http` | HTTP-encoded textual content |\n| `text_md` | Markdown-formatted text content. |\n| `text_plain`| Plain text content. |\n| `uri` | A URI linking to an external resource |\n| `video` | Video media referenced via a URI (for example recordings or trailers) |\n\nThis is an *extensible enumeration*. Use the prefix `x-` for custom values.\n", "x-ooapi-extensible-enum": [ "image", "text_http", "text_md", "text_plain", "uri", "video" ] } } }