Open Education API · Schema
Organisation
A description of a group of people working together to achieve a goal
CompanyEducationHigher EducationOpen StandardsInteroperabilitySpecificationsNetherlands
Properties
| Name | Type | Description |
|---|---|---|
| organisationId | string | Unique id of this organisation |
| primaryCode | object | The primary human readable identifier for the organisation. This is often the source identifier as defined by the root organisation. |
| organisationType | object | |
| name | array | The name of the organisation |
| shortName | stringnull | Short name of the organisation |
| description | arraynull | If the organisation is an educational organisation, any general description should clearly mention the type of education organisation, especially in the case of a binary system. In Dutch; universiteit |
| addresses | arraynull | Addresses of this organisation |
| link | stringnull | URL of the organisation's website |
| logo | stringnull | Logo of this organisation |
| otherCodes | arraynull | An array of additional human readable codes/identifiers for the entity being described. |
| rootId | object | The identifier of the organisation which is the root organisation of this organisation. When the client does not request expansion of `root`, only this identifier is returned. This field is [`expandab |
| root | object | The expanded organisation object which is the root organisation of this organisation. When the client requests expansion of `root`, the full expanded organisation object MUST be returned here instead |
| parentId | object | The identifier of the organisational unit which is the parent of this organisation. When the client does not request expansion of `parent`, only this identifier is returned. This field is [`expandable |
| parent | object | The expanded organisation object which is the parent of this organisation. When the client requests expansion of `parent`, the full expanded organisation object MUST be returned here instead of only t |
| childIds | arraynull | The identifiers of the organisational units for which this organisation is the parent. When the client does not request expansion of `children`, only these identifiers are returned. This field is [`ex |
| children | arraynull | The expanded organisational unit objects for which this organisation is the parent. When the client requests expansion of `children`, the full expanded organisation objects MUST be returned here inste |
| consumer | object | |
| ext | object |
JSON Schema
{
"$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-organisation-schema.json",
"title": "Organisation",
"description": "A description of a group of people working together to achieve a goal",
"x-generated": "2026-10-09",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/open-education-api-openapi.yml#/components/schemas/Organisation",
"type": "object",
"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"
}
]
}
},
"$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"
}
}
},
"Ext": {
"type": "object",
"description": "Object for additional non-standard attributes"
},
"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"
}
}
},
"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"
}
]
}
}
},
"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"
]
},
"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"
]
}
}
}
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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/open-education-api-organisation"
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.