Group
A group is simply a collection of persons. Groups can be used to accommodate various usecases. Groups MAY optionally have a relation to an Offering, however the meaning of such relations is left unspecified and is left up to the implementer.
Properties
| Name | Type | Description |
|---|---|---|
| groupId | string | Unique id for this group |
| primaryCode | object | The primary human readable identifier for this group. This is often the source identifier as defined by the institution. |
| groupType | object | |
| name | array | The name of this group |
| description | array | The description of this group |
| startDate | string | The day on which this group starts being active, RFC3339 (full-date) |
| endDate | string | The day on which this group ends being active, RFC3339 (full-date) |
| personCount | number | The number of persons that are member of this group |
| otherCodes | array | An array of additional human readable codes/identifiers for the entity being described. |
| consumers | array | The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more informatio |
| organization | object | The organization that manages this group. [`expandable`](.#tag/organization_model) By default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` t |
| 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-group-schema.json",
"title": "Group",
"description": "A group is simply a collection of persons. Groups can be used to accommodate various usecases.\n\nGroups MAY optionally have a relation to an Offering, however the meaning of such relations is left unspecified and is left up to the implementer.\n",
"x-generated": "2026-10-09",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/open-education-api-v5-openapi.yml#/components/schemas/Group",
"type": "object",
"required": [
"groupId",
"groupType",
"name",
"primaryCode"
],
"properties": {
"groupId": {
"type": "string",
"description": "Unique id for this group",
"format": "uuid"
},
"primaryCode": {
"description": "The primary human readable identifier for this group. This is often the source identifier as defined by the institution.",
"$ref": "#/$defs/IdentifierEntry"
},
"groupType": {
"$ref": "#/$defs/groupType"
},
"name": {
"type": "array",
"description": "The name of this group",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"description": "The description of this group",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"startDate": {
"type": "string",
"description": "The day on which this group starts being active, RFC3339 (full-date)",
"format": "date"
},
"endDate": {
"type": "string",
"description": "The day on which this group ends being active, RFC3339 (full-date)",
"format": "date"
},
"personCount": {
"type": "number",
"description": "The number of persons that are member of this group",
"format": "int32",
"minimum": 0
},
"otherCodes": {
"type": "array",
"description": "An array of additional human readable codes/identifiers for the entity being described.",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"consumers": {
"description": "The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.",
"type": "array",
"items": {
"$ref": "#/$defs/Consumer"
}
},
"organization": {
"description": "The organization that manages this group. [`expandable`](.#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
"oneOf": [
{
"$ref": "#/$defs/Identifier",
"title": "organizationId"
},
{
"$ref": "#/$defs/Organization",
"title": "Expanded organization"
}
]
},
"ext": {
"$ref": "#/$defs/Ext"
}
},
"$defs": {
"Address": {
"type": "object",
"description": "The full street address",
"required": [
"addressType"
],
"properties": {
"addressType": {
"$ref": "#/$defs/addressType"
},
"street": {
"type": "string",
"description": "The street name"
},
"streetNumber": {
"type": "string",
"description": "The street number"
},
"additional": {
"type": "array",
"description": "Further details like building name, suite, apartment number, etc.",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"postalCode": {
"type": "string",
"description": "Postal code"
},
"city": {
"type": "string",
"description": "name of the city / locality"
},
"countryCode": {
"type": "string",
"description": "the country code according to [iso-3166-1-alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)"
},
"geolocation": {
"type": "object",
"description": "Geolocation of the entrance of this address (WGS84 coordinate reference system)",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"format": "double"
},
"longitude": {
"type": "number",
"format": "double"
}
}
},
"ext": {
"$ref": "#/$defs/Ext"
}
}
},
"Consumer": {
"type": "object",
"description": "Object for communicating data to a specific consumer (destination). This object has no relationship with the `consumer` query parameter.",
"required": [
"consumerKey"
],
"properties": {
"consumerKey": {
"description": "The key of the consumer (destination) for which this information is intended. See the [consumer registry](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information.",
"type": "string"
}
},
"additionalProperties": true
},
"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
},
"LanguageTypedString": {
"type": "object",
"description": "A String with an associated language code.",
"properties": {
"language": {
"description": "The language used in the described entity. A string formatted according to RFC3066.",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "String to describe the entity.",
"type": "string"
}
}
},
"Organization": {
"type": "object",
"description": "A description of a group of people working together to achieve a goal",
"required": [
"organizationId",
"organizationType",
"name",
"shortName",
"primaryCode"
],
"properties": {
"organizationId": {
"type": "string",
"description": "Unique id of this organization",
"format": "uuid",
"readOnly": true
},
"primaryCode": {
"description": "The primary human readable identifier for the organization. This is often the source identifier as defined by the institution.",
"$ref": "#/$defs/IdentifierEntry",
"readOnly": true
},
"organizationType": {
"$ref": "#/$defs/organizationType"
},
"name": {
"type": "array",
"description": "The name of the organization",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"shortName": {
"type": "string",
"description": "Short name of the organization",
"maxLength": 256
},
"description": {
"type": "array",
"description": "Any general description of the organization should clearly mention the type of higher education organization, especially in the case of a binary system. In Dutch; universiteit (university) or hogeschool (university of applied sciences).",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"addresses": {
"type": "array",
"description": "Addresses of this organization",
"items": {
"$ref": "#/$defs/Address"
}
},
"link": {
"type": "string",
"description": "URL of the organization's website",
"format": "uri",
"maxLength": 2048
},
"logo": {
"type": "string",
"description": "Logo of this organization",
"format": "uri",
"maxLength": 2048
},
"otherCodes": {
"type": "array",
"description": "An array of additional human readable codes/identifiers for the entity being described.",
"minItems": 1,
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"parent": {
"description": "The organizational unit which is the parent of this organization. [`expandable`](#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
"oneOf": [
{
"$ref": "#/$defs/Identifier",
"title": "organizationId"
},
{
"$ref": "#/$defs/Organization",
"title": "Organization object"
}
]
},
"children": {
"type": "array",
"description": "All the organizational units for which this organization is the parent. [`expandable`](#tag/organization_model)\nBy default only the `organizationId` (a string) is returned. If the client requested an expansion of `organization` the full organization object should be returned.\n",
"items": {
"oneOf": [
{
"$ref": "#/$defs/Identifier",
"title": "organizationId"
},
{
"$ref": "#/$defs/Organization",
"title": "Organization object"
}
]
}
},
"consumers": {
"description": "The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.",
"type": "array",
"items": {
"$ref": "#/$defs/Consumer"
}
},
"ext": {
"$ref": "#/$defs/Ext"
}
}
},
"addressType": {
"type": "string",
"description": "Address type\n- postal: post\n- visit: bezoek\n- deliveries: bezorg\n- billing: factuur\n- teaching: the address where education takes place\n",
"enum": [
"postal",
"visit",
"deliveries",
"billing",
"teaching"
]
},
"codeType": {
"type": "string",
"description": "The code/identifier type. \n\nThis is an *extensible enumeration*. Use `x-` to prefix custom values\n\nThe predefined values are:\n - `brin`: The registration number for a Dutch educational institution that is issued by the Dutch Ministry of Education, Culture and Science\n - `crohoCreboCode`: programs with a CREBO and CROHO number are accredited by the Dutch Ministry of Education, Culture and Science (OCW)\n - `programCode`: Identifier for the program (collection of courses)\n - `componentCode`: The code for a component (part of a course)\n - `offeringCode`: The code to identify a specific offering (program, course or component offering)\n - `organizationId`: The identifier for the organization\n - `buildingId`: The number or code to identify a building\n - `bagId`: The identification of a building as it is known in the Dutch Building Administration (BAG)\n - `roomCode`: The code for a room\n - `systemId`: Identifier assigned to an entity in context of a specific system\n - `productId`: Identifier assigned to a specific product\n - `nationalIdentityNumber`: Identifier assigned by the governement of the person. e.g. a social security number in the USA\n - `studentNumber`: Identifier for the student\n - `studielinkNumber`: Identifier for the person as determined by Studielink\n - `esi`: European Student Identifier\n - `userName`: The name of a user\n - `accountId`: Identifier assigned to a specific account\n - `emailAdress`: An email address\n - `groupCode`: The identifier for a group (of persons)\n - `isbn`: International Standard Book Number that serve as product identifiers for Books\n - `issn`: International Standard Book Number that serve as product identifiers for periodicals\n - `orcId`: Open Researcher and Contributor ID\n - `uuid`: A universally unique identifier\n - `schacHome`: Home organization using the domain name of the organization\n - `identifier`: Generic Identifier\n",
"x-ooapi-extensible-enum": [
"brin",
"crohoCreboCode",
"programCode",
"componentCode",
"offeringCode",
"organizationId",
"buildingId",
"bagId",
"roomCode",
"systemId",
"productId",
"nationalIdentityNumber",
"studentNumber",
"studielinkNumber",
"esi",
"userName",
"accountId",
"emailAdress",
"groupCode",
"isbn",
"issn",
"orcId",
"uuid",
"schacHome",
"identifier"
]
},
"groupType": {
"type": "string",
"description": "The type of this group\n- learning group: A collection of participants carrying out common learning activities\n- class: A collection of participants carrying out jointly scheduled educational activities\n- team: A collection of members of a team, either students, employees or mixed.\n",
"enum": [
"learning group",
"class",
"team"
]
},
"organizationType": {
"type": "string",
"description": "The type of this organization. Each OOAPI endpoint should have a single organization with type `root`, describing the root organization.\n- root: the root of this organization, representing the Educational Institution itself\n- institute: instituut\n- department: departement\n- faculty: faculteit\n- branch: vestiging\n- academy: academie\n- school: school\n",
"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
curl "https://apis.io/api/v1/json-schemas/open-education-api-group"
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.