D. JSON Schema
D.1 Education
A description of an abstract education.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_education-jsonschema1.json",
"title": "JSON Schema for the Education class.",
"description": "A description of an abstract education.",
"type": "object",
"properties": {
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"level": {
"description": "The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region.",
"$comment": "Origin: EducationLevelEnum (EnumExt); The set of permitted values for `edcucationLevel`.",
"oneOf": [
{
"type": "string",
"enum": [
"graduate",
"undergraduate"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"creditType": {
"description": "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: CreditTypeEnum (EnumExt); The set of permitted values for `creditType`.",
"oneOf": [
{
"type": "string",
"enum": [
"credit",
"nonCredit"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"gradingScheme": {
"$ref": "#/$defs/LanguageTypedString"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"extensions": {
"$ref": "#/$defs/educationExtensions"
}
},
"required": [
"sourcedId",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"level",
"creditType",
"gradingScheme",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"educationExtensions": {
"description": "Extension properties related to education templates",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.2 EducationOffering
A description of an abstract educational offering.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_educationoffering-jsonschema1.json",
"title": "JSON Schema for the EducationOffering class.",
"description": "A description of an abstract educational offering.",
"type": "object",
"properties": {
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"offeringType": {
"description": "The type of education being offered. This is based on an enumerated vocabulary.",
"$comment": "Origin: EducationOfferingTypeEnum (EnumExt); The set of permitted values for `educationOfferingType`.",
"oneOf": [
{
"type": "string",
"enum": [
"collection",
"course",
"component"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"locations": {
"type": "array",
"items": {
"$ref": "#/$defs/Location"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"academicSession": {
"description": "A reference to an Edu-API Academic Session",
"$comment": "Origin: AcademicSessionGUIDRef (DerivedType); A reference to an `AcademicSession` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"academicSessionCode": {
"description": "A business code that a system might use to reference an academic session.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"offeringFormat": {
"description": "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"$comment": "Origin: OfferingFormatEnum (EnumExt); The set of permitted values for `offeringFormat`.",
"oneOf": [
{
"type": "string",
"enum": [
"online",
"blended",
"onGround"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"paceOfStudy": {
"description": "The tempo that the course is taught at as a percentage of a normal course.",
"$comment": "Origin: Percentage (DerivedType); A percentage expression without fractions. One, two or three digits followed by the '%' character.",
"type": "string"
},
"registrationStatus": {
"description": "The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: RegistrationStatusEnum (Enum); The set of permitted values for `registrationStatus`.",
"type": "string",
"enum": [
"open",
"closed",
"pending",
"waitlist"
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"maxNumberStudents": {
"description": "The maximum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"minNumberStudents": {
"description": "The minimum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"enrolledNumberStudents": {
"description": "The number of students that have already enrolled for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"pendingNumberStudents": {
"description": "The number of students that have a pending enrollment request for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"roleEnablement": {
"type": "array",
"items": {
"$ref": "#/$defs/RoleEnablement"
}
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"synchronicity": {
"description": "An indicator of whether instructor and learner must both be present at the same time",
"$comment": "Origin: SynchronicityEnum (EnumExt); The set of permitted values used to describe whether an education offering is taught in person, online, or via a hybrid, combined approach.",
"oneOf": [
{
"type": "string",
"enum": [
"hybrid",
"asynchronous",
"synchronous"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"extensions": {
"$ref": "#/$defs/educationOfferingExtensions"
}
},
"required": [
"sourcedId",
"offeringType",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"academicSession",
"offeringFormat",
"registrationStatus",
"startDate",
"endDate",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"RoleEnablement": {
"description": "An array to store associated dates for a entity. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the course offering before or after the official start and end dates. These dates are meant to be considered additional metadata about the course offering and applied independent of the startDate and endDate. They are not intended to be used to as replacements.",
"type": "object",
"properties": {
"role": {
"description": "The role of the associated person in the given context.",
"$comment": "Origin: RoleTypeEnum (EnumExt); The set of permitted values for `roleType`.",
"oneOf": [
{
"type": "string",
"enum": [
"member",
"chair",
"staff",
"student",
"administrator",
"aide",
"guardian",
"parent",
"proctor",
"relative",
"teacher",
"advisor",
"teachingAssistant"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
}
},
"required": [
"role"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"Location": {
"description": "A container for describing the location an entity takes place at.",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"geoLocation": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false
},
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"educationOfferingExtensions": {
"description": "Extension properties related to education offerings",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.3 CollectionTemplate
A grouping of educational units. In the context of Edu-API an education is any kind of canonical or non-instantiated learning units that have a structured relationship, e.g. a course. When grouped, these educational units can be used to define such concepts as programs of study.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_collectiontemplate-jsonschema1.json",
"title": "JSON Schema for the CollectionTemplate class.",
"description": "A grouping of educational units. In the context of Edu-API an education is any kind of canonical or non-instantiated learning units that have a structured relationship, e.g. a course. When grouped, these educational units can be used to define such concepts as programs of study.",
"type": "object",
"properties": {
"collectionType": {
"description": "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"$comment": "Origin: CollectionTypeEnum (EnumExt); The set of permitted values for `collectionType`.",
"oneOf": [
{
"type": "string",
"enum": [
"program",
"generalEducation",
"requiredCollection",
"electiveCollection",
"capstoneCollection",
"majorCollection",
"minorCollection",
"programSpecialization",
"nonDegreeCollection"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"parent": {
"type": "array",
"items": {
"description": "A reference to a parent EducationCollection (if present).",
"$comment": "Origin: CollectionTemplateGUIDRef (DerivedType); A reference to an `EducationCollection` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"level": {
"description": "The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region.",
"$comment": "Origin: EducationLevelEnum (EnumExt); The set of permitted values for `edcucationLevel`.",
"oneOf": [
{
"type": "string",
"enum": [
"graduate",
"undergraduate"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"creditType": {
"description": "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: CreditTypeEnum (EnumExt); The set of permitted values for `creditType`.",
"oneOf": [
{
"type": "string",
"enum": [
"credit",
"nonCredit"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"gradingScheme": {
"$ref": "#/$defs/LanguageTypedString"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"extensions": {
"$ref": "#/$defs/educationExtensions"
}
},
"required": [
"collectionType",
"sourcedId",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"level",
"creditType",
"gradingScheme",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"educationExtensions": {
"description": "Extension properties related to education templates",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.4 CourseTemplate
A time independent description of a learning experience, such that it may appear in a catalog.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_coursetemplate-jsonschema1.json",
"title": "JSON Schema for the CourseTemplate class.",
"description": "A time independent description of a learning experience, such that it may appear in a catalog.",
"type": "object",
"properties": {
"courseType": {
"description": "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"$comment": "Origin: CourseTypeEnum (EnumExt); The set of permitted values for `courseType`.",
"oneOf": [
{
"type": "string",
"enum": [
"standard",
"honors",
"research",
"independentStudy",
"practicum",
"internship",
"studyAbroad",
"capstone",
"clinical",
"correspondence",
"fieldExperience",
"seminar",
"thesis"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"parent": {
"type": "array",
"items": {
"description": "A reference to the parent EducationCollection.",
"$comment": "Origin: CollectionTemplateGUIDRef (DerivedType); A reference to an `EducationCollection` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"level": {
"description": "The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region.",
"$comment": "Origin: EducationLevelEnum (EnumExt); The set of permitted values for `edcucationLevel`.",
"oneOf": [
{
"type": "string",
"enum": [
"graduate",
"undergraduate"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"creditType": {
"description": "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: CreditTypeEnum (EnumExt); The set of permitted values for `creditType`.",
"oneOf": [
{
"type": "string",
"enum": [
"credit",
"nonCredit"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"gradingScheme": {
"$ref": "#/$defs/LanguageTypedString"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"extensions": {
"$ref": "#/$defs/educationExtensions"
}
},
"required": [
"courseType",
"sourcedId",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"level",
"creditType",
"gradingScheme",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"educationExtensions": {
"description": "Extension properties related to education templates",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.5 ComponentTemplate
A subsection of a Course or Class. It may be a lesson unit within a Class or it may be a separately enrolled unit with a Course. For example, Biology 101 may consist of a Lecture component and a Lab component.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_componenttemplate-jsonschema1.json",
"title": "JSON Schema for the ComponentTemplate class.",
"description": "A subsection of a Course or Class. It may be a lesson unit within a Class or it may be a separately enrolled unit with a Course. For example, Biology 101 may consist of a Lecture component and a Lab component.",
"type": "object",
"properties": {
"componentType": {
"description": "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"$comment": "Origin: ComponentTypeEnum (EnumExt); The set of permitted values for `componentType`.",
"oneOf": [
{
"type": "string",
"enum": [
"individualizedInstruction",
"integratedLectureLab",
"laboratory",
"lecture",
"practicum",
"recitation",
"research",
"seminar",
"independentStudy",
"fieldExperience",
"exam"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"parent": {
"type": "array",
"items": {
"description": "A reference to the parent Course.",
"$comment": "Origin: CourseTemplateGUIDRef (DerivedType); A reference to a `Course` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"level": {
"description": "The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region.",
"$comment": "Origin: EducationLevelEnum (EnumExt); The set of permitted values for `edcucationLevel`.",
"oneOf": [
{
"type": "string",
"enum": [
"graduate",
"undergraduate"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"creditType": {
"description": "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: CreditTypeEnum (EnumExt); The set of permitted values for `creditType`.",
"oneOf": [
{
"type": "string",
"enum": [
"credit",
"nonCredit"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"gradingScheme": {
"$ref": "#/$defs/LanguageTypedString"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"extensions": {
"$ref": "#/$defs/educationExtensions"
}
},
"required": [
"componentType",
"sourcedId",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"level",
"creditType",
"gradingScheme",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"educationExtensions": {
"description": "Extension properties related to education templates",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.6 CollectionOffering
A collection of courses or other learning units, used to group them into a coherent whole for enrollment, administrative, or other purposes. A Program is one example of a Course Collection.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_collectionoffering-jsonschema1.json",
"title": "JSON Schema for the CollectionOffering class.",
"description": "A collection of courses or other learning units, used to group them into a coherent whole for enrollment, administrative, or other purposes. A Program is one example of a Course Collection.",
"type": "object",
"properties": {
"offeringType": {
"description": "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"$comment": "Origin: CollectionTypeEnum (EnumExt); The set of permitted values for `collectionType`.",
"oneOf": [
{
"type": "string",
"enum": [
"program",
"generalEducation",
"requiredCollection",
"electiveCollection",
"capstoneCollection",
"majorCollection",
"minorCollection",
"programSpecialization",
"nonDegreeCollection"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"collection": {
"description": "A reference to the collectionTemplate.",
"$comment": "Origin: CollectionTemplateGUIDRef (DerivedType); A reference to an `EducationCollection` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"parent": {
"type": "array",
"items": {
"description": "A reference to parent collectionOffering (if present).",
"$comment": "Origin: CollectionOfferingGUIDRef (DerivedType); A reference to an `EducationCollectionOffering` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"locations": {
"type": "array",
"items": {
"$ref": "#/$defs/Location"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"academicSession": {
"description": "A reference to an Edu-API Academic Session",
"$comment": "Origin: AcademicSessionGUIDRef (DerivedType); A reference to an `AcademicSession` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"academicSessionCode": {
"description": "A business code that a system might use to reference an academic session.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"offeringFormat": {
"description": "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"$comment": "Origin: OfferingFormatEnum (EnumExt); The set of permitted values for `offeringFormat`.",
"oneOf": [
{
"type": "string",
"enum": [
"online",
"blended",
"onGround"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"paceOfStudy": {
"description": "The tempo that the course is taught at as a percentage of a normal course.",
"$comment": "Origin: Percentage (DerivedType); A percentage expression without fractions. One, two or three digits followed by the '%' character.",
"type": "string"
},
"registrationStatus": {
"description": "The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: RegistrationStatusEnum (Enum); The set of permitted values for `registrationStatus`.",
"type": "string",
"enum": [
"open",
"closed",
"pending",
"waitlist"
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"maxNumberStudents": {
"description": "The maximum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"minNumberStudents": {
"description": "The minimum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"enrolledNumberStudents": {
"description": "The number of students that have already enrolled for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"pendingNumberStudents": {
"description": "The number of students that have a pending enrollment request for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"roleEnablement": {
"type": "array",
"items": {
"$ref": "#/$defs/RoleEnablement"
}
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"synchronicity": {
"description": "An indicator of whether instructor and learner must both be present at the same time",
"$comment": "Origin: SynchronicityEnum (EnumExt); The set of permitted values used to describe whether an education offering is taught in person, online, or via a hybrid, combined approach.",
"oneOf": [
{
"type": "string",
"enum": [
"hybrid",
"asynchronous",
"synchronous"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"extensions": {
"$ref": "#/$defs/educationOfferingExtensions"
}
},
"required": [
"offeringType",
"collection",
"sourcedId",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"academicSession",
"offeringFormat",
"registrationStatus",
"startDate",
"endDate",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"RoleEnablement": {
"description": "An array to store associated dates for a entity. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the course offering before or after the official start and end dates. These dates are meant to be considered additional metadata about the course offering and applied independent of the startDate and endDate. They are not intended to be used to as replacements.",
"type": "object",
"properties": {
"role": {
"description": "The role of the associated person in the given context.",
"$comment": "Origin: RoleTypeEnum (EnumExt); The set of permitted values for `roleType`.",
"oneOf": [
{
"type": "string",
"enum": [
"member",
"chair",
"staff",
"student",
"administrator",
"aide",
"guardian",
"parent",
"proctor",
"relative",
"teacher",
"advisor",
"teachingAssistant"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
}
},
"required": [
"role"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"Location": {
"description": "A container for describing the location an entity takes place at.",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"geoLocation": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false
},
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"educationOfferingExtensions": {
"description": "Extension properties related to education offerings",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.7 CourseOffering
Relates a course to one or more delivery scenarios.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_courseoffering-jsonschema1.json",
"title": "JSON Schema for the CourseOffering class.",
"description": "Relates a course to one or more delivery scenarios.",
"type": "object",
"properties": {
"offeringType": {
"description": "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"$comment": "Origin: CourseTypeEnum (EnumExt); The set of permitted values for `courseType`.",
"oneOf": [
{
"type": "string",
"enum": [
"standard",
"honors",
"research",
"independentStudy",
"practicum",
"internship",
"studyAbroad",
"capstone",
"clinical",
"correspondence",
"fieldExperience",
"seminar",
"thesis"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"course": {
"description": "A reference to the courseTemplate.",
"$comment": "Origin: CourseTemplateGUIDRef (DerivedType); A reference to a `Course` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"parent": {
"type": "array",
"items": {
"description": "A reference to the parent collectionOffering.",
"$comment": "Origin: CollectionOfferingGUIDRef (DerivedType); A reference to an `EducationCollectionOffering` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"locations": {
"type": "array",
"items": {
"$ref": "#/$defs/Location"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"academicSession": {
"description": "A reference to an Edu-API Academic Session",
"$comment": "Origin: AcademicSessionGUIDRef (DerivedType); A reference to an `AcademicSession` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"academicSessionCode": {
"description": "A business code that a system might use to reference an academic session.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"offeringFormat": {
"description": "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"$comment": "Origin: OfferingFormatEnum (EnumExt); The set of permitted values for `offeringFormat`.",
"oneOf": [
{
"type": "string",
"enum": [
"online",
"blended",
"onGround"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"paceOfStudy": {
"description": "The tempo that the course is taught at as a percentage of a normal course.",
"$comment": "Origin: Percentage (DerivedType); A percentage expression without fractions. One, two or three digits followed by the '%' character.",
"type": "string"
},
"registrationStatus": {
"description": "The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: RegistrationStatusEnum (Enum); The set of permitted values for `registrationStatus`.",
"type": "string",
"enum": [
"open",
"closed",
"pending",
"waitlist"
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"maxNumberStudents": {
"description": "The maximum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"minNumberStudents": {
"description": "The minimum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"enrolledNumberStudents": {
"description": "The number of students that have already enrolled for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"pendingNumberStudents": {
"description": "The number of students that have a pending enrollment request for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"roleEnablement": {
"type": "array",
"items": {
"$ref": "#/$defs/RoleEnablement"
}
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"synchronicity": {
"description": "An indicator of whether instructor and learner must both be present at the same time",
"$comment": "Origin: SynchronicityEnum (EnumExt); The set of permitted values used to describe whether an education offering is taught in person, online, or via a hybrid, combined approach.",
"oneOf": [
{
"type": "string",
"enum": [
"hybrid",
"asynchronous",
"synchronous"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"extensions": {
"$ref": "#/$defs/educationOfferingExtensions"
}
},
"required": [
"offeringType",
"course",
"sourcedId",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"academicSession",
"offeringFormat",
"registrationStatus",
"startDate",
"endDate",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"RoleEnablement": {
"description": "An array to store associated dates for a entity. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the course offering before or after the official start and end dates. These dates are meant to be considered additional metadata about the course offering and applied independent of the startDate and endDate. They are not intended to be used to as replacements.",
"type": "object",
"properties": {
"role": {
"description": "The role of the associated person in the given context.",
"$comment": "Origin: RoleTypeEnum (EnumExt); The set of permitted values for `roleType`.",
"oneOf": [
{
"type": "string",
"enum": [
"member",
"chair",
"staff",
"student",
"administrator",
"aide",
"guardian",
"parent",
"proctor",
"relative",
"teacher",
"advisor",
"teachingAssistant"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
}
},
"required": [
"role"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"Location": {
"description": "A container for describing the location an entity takes place at.",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"geoLocation": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false
},
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"educationOfferingExtensions": {
"description": "Extension properties related to education offerings",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.8 ComponentOffering
A subsection of a courseOffering. It may be a lesson or separately enrollable unit within a courseOffering. For example, Biology 101 may consist of a Lecture component offering and a Lab component offering
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_componentoffering-jsonschema1.json",
"title": "JSON Schema for the ComponentOffering class.",
"description": "A subsection of a courseOffering. It may be a lesson or separately enrollable unit within a courseOffering. For example, Biology 101 may consist of a Lecture component offering and a Lab component offering",
"type": "object",
"properties": {
"offeringType": {
"description": "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"$comment": "Origin: ComponentTypeEnum (EnumExt); The set of permitted values for `componentType`.",
"oneOf": [
{
"type": "string",
"enum": [
"individualizedInstruction",
"integratedLectureLab",
"laboratory",
"lecture",
"practicum",
"recitation",
"research",
"seminar",
"independentStudy",
"fieldExperience",
"exam"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"component": {
"description": "A reference to the componentTemplate.",
"$comment": "Origin: ComponentTemplateGUIDRef (DerivedType); A reference to an `EducationComponent` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"parent": {
"type": "array",
"items": {
"description": "A reference to the parent courseOffering.",
"$comment": "Origin: CourseOfferingGUIDRef (DerivedType); A reference to a `CourseOffering` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"title": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"locations": {
"type": "array",
"items": {
"$ref": "#/$defs/Location"
}
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"academicSession": {
"description": "A reference to an Edu-API Academic Session",
"$comment": "Origin: AcademicSessionGUIDRef (DerivedType); A reference to an `AcademicSession` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organizationCode": {
"description": "A business code used to system might use to reference an organization",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"academicSessionCode": {
"description": "A business code that a system might use to reference an academic session.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"offeringFormat": {
"description": "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"$comment": "Origin: OfferingFormatEnum (EnumExt); The set of permitted values for `offeringFormat`.",
"oneOf": [
{
"type": "string",
"enum": [
"online",
"blended",
"onGround"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"paceOfStudy": {
"description": "The tempo that the course is taught at as a percentage of a normal course.",
"$comment": "Origin: Percentage (DerivedType); A percentage expression without fractions. One, two or three digits followed by the '%' character.",
"type": "string"
},
"registrationStatus": {
"description": "The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary.",
"$comment": "Origin: RegistrationStatusEnum (Enum); The set of permitted values for `registrationStatus`.",
"type": "string",
"enum": [
"open",
"closed",
"pending",
"waitlist"
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateZ (DerivedType); A `Date` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"teachingLanguage": {
"description": "The main language used to relay the content of the offering.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"maxNumberStudents": {
"description": "The maximum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"minNumberStudents": {
"description": "The minimum number of students allowed to enroll for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"enrolledNumberStudents": {
"description": "The number of students that have already enrolled for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"pendingNumberStudents": {
"description": "The number of students that have a pending enrollment request for this offering",
"$comment": "Origin: Integer (PrimitiveType)",
"type": "integer"
},
"roleEnablement": {
"type": "array",
"items": {
"$ref": "#/$defs/RoleEnablement"
}
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"synchronicity": {
"description": "An indicator of whether instructor and learner must both be present at the same time",
"$comment": "Origin: SynchronicityEnum (EnumExt); The set of permitted values used to describe whether an education offering is taught in person, online, or via a hybrid, combined approach.",
"oneOf": [
{
"type": "string",
"enum": [
"hybrid",
"asynchronous",
"synchronous"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"extensions": {
"$ref": "#/$defs/educationOfferingExtensions"
}
},
"required": [
"offeringType",
"component",
"sourcedId",
"recordLanguage",
"title",
"description",
"primaryCode",
"organization",
"academicSession",
"offeringFormat",
"registrationStatus",
"startDate",
"endDate",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"RoleEnablement": {
"description": "An array to store associated dates for a entity. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the course offering before or after the official start and end dates. These dates are meant to be considered additional metadata about the course offering and applied independent of the startDate and endDate. They are not intended to be used to as replacements.",
"type": "object",
"properties": {
"role": {
"description": "The role of the associated person in the given context.",
"$comment": "Origin: RoleTypeEnum (EnumExt); The set of permitted values for `roleType`.",
"oneOf": [
{
"type": "string",
"enum": [
"member",
"chair",
"staff",
"student",
"administrator",
"aide",
"guardian",
"parent",
"proctor",
"relative",
"teacher",
"advisor",
"teachingAssistant"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
}
},
"required": [
"role"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"Location": {
"description": "A container for describing the location an entity takes place at.",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"geoLocation": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false
},
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"educationOfferingExtensions": {
"description": "Extension properties related to education offerings",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.9 Person
A Person represents a human being, alive or deceased, real or imaginary.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_person-jsonschema1.json",
"title": "JSON Schema for the Person class.",
"description": "A Person represents a human being, alive or deceased, real or imaginary.",
"type": "object",
"properties": {
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"otherIdentifiers": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"legalName": {
"$ref": "#/$defs/PersonName"
},
"formattedName": {
"description": "the long form formatted name, this will often be dependent on region or system requirements.",
"$comment": "Origin: NFCString (DerivedType); A `NormalizedString` further normalized using Unicode Normalization Form C [[UAX15]].",
"type": "string"
},
"otherNames": {
"type": "array",
"items": {
"$ref": "#/$defs/PersonNameEntry"
}
},
"gender": {
"description": "The gender of the individual. It is based on an extensible enumerated vocabulary.",
"$comment": "Origin: GenderEnum (EnumExt); The gender of this person. Other values than those defined may be given to capture the gender identity of this Person.",
"oneOf": [
{
"type": "string",
"enum": [
"male",
"female",
"unspecified",
"other"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"pronouns": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"languagesSpoken": {
"type": "array",
"items": {
"description": "The list of languages that this person speaks.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
}
},
"dateOfBirth": {
"description": "The date of birth.",
"$comment": "Origin: Date (PrimitiveType); An [[ISO8601]] calendar date using the syntax YYYY-MM-DD.",
"type": "string",
"format": "date"
},
"placeOfBirth": {
"description": "The place of birth. Commonly a city or municipality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"countryOfBirth": {
"description": "The country of birth.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"isDeceased": {
"description": "Used to identify if the person being described is alive or dead. If this property is absent or set to `false` but the `dateOfDeath` property is set, then the consuming system should interpret that as the person being deceased.",
"$comment": "Origin: Boolean (PrimitiveType); A boolean, expressed as `true` or `false`",
"type": "boolean"
},
"dateOfDeath": {
"description": "The date of death. The presence of this property means that the person being described is known to be deceased. In scenarios where this conflicts with the `isDeceased` flag, this property takes precedence and consuming systems should interpret that as the person being deceased.",
"$comment": "Origin: Date (PrimitiveType); An [[ISO8601]] calendar date using the syntax YYYY-MM-DD.",
"type": "string",
"format": "date"
},
"primaryEmail": {
"$ref": "#/$defs/OptionallyTypedEmail"
},
"otherEmails": {
"type": "array",
"items": {
"$ref": "#/$defs/TypedEmail"
}
},
"primaryPhone": {
"$ref": "#/$defs/OptionallyTypedPhone"
},
"otherPhones": {
"type": "array",
"items": {
"$ref": "#/$defs/TypedPhone"
}
},
"primaryAddress": {
"$ref": "#/$defs/OptionallyTypedAddress"
},
"otherAddresses": {
"type": "array",
"items": {
"$ref": "#/$defs/TypedAddress"
}
},
"agents": {
"type": "array",
"items": {
"$ref": "#/$defs/Agents"
}
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"extensions": {
"$ref": "#/$defs/personExtensions"
}
},
"required": [
"sourcedId",
"recordLanguage",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"OptionallyTypedEmail": {
"description": "An optionally typed email address.",
"type": "object",
"properties": {
"emailType": {
"description": "The type of email address.",
"$comment": "Origin: EmailTypeEnum (EnumExt); The set of permitted values for `emailType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homeEmail",
"workEmail",
"iceEmail"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"email": {
"description": "An email address.",
"$comment": "Origin: EmailAddress (DerivedType); A `NormalizedString` representing an email address.",
"type": "string"
}
},
"required": [
"email"
],
"additionalProperties": false
},
"Agents": {
"description": "A container with the set of Edu-API persons that can act on behalf of the person in question. This includes description of the type of relationship exists and the context it is applicable in.",
"type": "object",
"properties": {
"agentType": {
"description": "A description of the relationship between the agent and the person the are an agent for. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AgentTypeEnum (EnumExt); The set of permitted values for `agentType`.",
"oneOf": [
{
"type": "string",
"enum": [
"parent",
"guardian",
"emergencyContact"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"person": {
"description": "A reference to an Edu-API person. This represents the person acting in an agency capacity.",
"$comment": "Origin: PersonGUIDRef (DerivedType); A reference to a `Person` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"domain": {
"description": "The context within which the person can act as an agent in.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"agentType",
"person"
],
"additionalProperties": false
},
"TypedPhone": {
"description": "A typed phone number.",
"type": "object",
"properties": {
"phoneType": {
"description": "The type of phone number. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: PhoneTypeEnum (EnumExt); The set of permitted values for `phoneType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homePhone",
"workPhone",
"icePhone"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"phone": {
"description": "A phone number.",
"$comment": "Origin: PhoneNumber (DerivedType); A `NormalizedString` representing a phone number.",
"type": "string"
}
},
"required": [
"phoneType",
"phone"
],
"additionalProperties": false
},
"PersonNameEntry": {
"description": "No description supplied.",
"type": "object",
"properties": {
"nameType": {
"description": "The type of name described in this entry.",
"$comment": "Origin: PersonNameTypeEnum (EnumExt); The set of permitted values for name types.",
"oneOf": [
{
"type": "string",
"enum": [
"legalName",
"preferredName",
"phoneticName",
"aliasName",
"formerName"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"familyName": {
"description": "Family name. In the western world, often referred to as the 'last name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"givenName": {
"description": "Given name. In the western world, often referred to as the 'first name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"additionalName": {
"description": "Additional name. Includes what is often referred to as 'middle name' in the western world.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"patronymicName": {
"description": "Patronymic name.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificPrefix": {
"description": "Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificSuffix": {
"description": "Honorific suffix(es) following a person's name (e.g. 'M.D, PhD').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"familyNamePrefix": {
"description": "Family name prefix. As used in some locales, this is the leading part of a family name (e.g. 'de' in the name 'de Boer').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"nameType"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"OptionallyTypedAddress": {
"description": "A optionally typed address.",
"type": "object",
"properties": {
"addressType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AddressTypeEnum (EnumExt); The set of permitted values for `addressType`.",
"oneOf": [
{
"type": "string",
"enum": [
"visitingAddress",
"mailingAddress",
"permanentAddress",
"deliveryAddress",
"billingAddress",
"homeAddress",
"workAddress",
"formerAddress"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"addressCountry": {
"description": "A country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressCountryCode": {
"description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"type": "string"
},
"addressRegion": {
"description": "A region within the country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressLocality": {
"description": "A locality within the region.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"streetAddress": {
"description": "A street address within the locality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postOfficeBoxNumber": {
"description": "A post office box number for PO box addresses.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postalCode": {
"description": "A postal code.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"geo": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false
},
"TypedAddress": {
"description": "A typed address.",
"type": "object",
"properties": {
"addressType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AddressTypeEnum (EnumExt); The set of permitted values for `addressType`.",
"oneOf": [
{
"type": "string",
"enum": [
"visitingAddress",
"mailingAddress",
"permanentAddress",
"deliveryAddress",
"billingAddress",
"homeAddress",
"workAddress",
"formerAddress"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"addressCountry": {
"description": "A country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressCountryCode": {
"description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"type": "string"
},
"addressRegion": {
"description": "A region within the country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressLocality": {
"description": "A locality within the region.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"streetAddress": {
"description": "A street address within the locality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postOfficeBoxNumber": {
"description": "A post office box number for PO box addresses.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postalCode": {
"description": "A postal code.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"geo": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [
"addressType"
],
"additionalProperties": false
},
"personExtensions": {
"description": "Extension properties related to Edu-API persons",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"PersonName": {
"description": "The set of parts that are used to define an Edu-API persons name, this design attempts to account for international naming needs.",
"type": "object",
"properties": {
"familyName": {
"description": "Family name. In the western world, often referred to as the 'last name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"givenName": {
"description": "Given name. In the western world, often referred to as the 'first name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"additionalName": {
"description": "Additional name. Includes what is often referred to as 'middle name' in the western world.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"patronymicName": {
"description": "Patronymic name.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificPrefix": {
"description": "Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificSuffix": {
"description": "Honorific suffix(es) following a person's name (e.g. 'M.D, PhD').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"familyNamePrefix": {
"description": "Family name prefix. As used in some locales, this is the leading part of a family name (e.g. 'de' in the name 'de Boer').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
},
"TypedEmail": {
"description": "A typed email address.",
"type": "object",
"properties": {
"emailType": {
"description": "The type of email address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: EmailTypeEnum (EnumExt); The set of permitted values for `emailType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homeEmail",
"workEmail",
"iceEmail"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"email": {
"description": "An email address.",
"$comment": "Origin: EmailAddress (DerivedType); A `NormalizedString` representing an email address.",
"type": "string"
}
},
"required": [
"emailType",
"email"
],
"additionalProperties": false
},
"OptionallyTypedPhone": {
"description": "An optionally typed phone number.",
"type": "object",
"properties": {
"phoneType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: PhoneTypeEnum (EnumExt); The set of permitted values for `phoneType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homePhone",
"workPhone",
"icePhone"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"phone": {
"description": "A phone number.",
"$comment": "Origin: PhoneNumber (DerivedType); A `NormalizedString` representing a phone number.",
"type": "string"
}
},
"required": [
"phone"
],
"additionalProperties": false
}
}
}
D.10 PersonName
The set of parts that are used to define an Edu-API persons name, this design attempts to account for international naming needs.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_personname-jsonschema1.json",
"title": "JSON Schema for the PersonName class.",
"description": "The set of parts that are used to define an Edu-API persons name, this design attempts to account for international naming needs.",
"type": "object",
"properties": {
"familyName": {
"description": "Family name. In the western world, often referred to as the 'last name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"givenName": {
"description": "Given name. In the western world, often referred to as the 'first name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"additionalName": {
"description": "Additional name. Includes what is often referred to as 'middle name' in the western world.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"patronymicName": {
"description": "Patronymic name.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificPrefix": {
"description": "Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificSuffix": {
"description": "Honorific suffix(es) following a person's name (e.g. 'M.D, PhD').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"familyNamePrefix": {
"description": "Family name prefix. As used in some locales, this is the leading part of a family name (e.g. 'de' in the name 'de Boer').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.11 Agents
A container with the set of Edu-API persons that can act on behalf of the person in question. This includes description of the type of relationship exists and the context it is applicable in.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_agents-jsonschema1.json",
"title": "JSON Schema for the Agents class.",
"description": "A container with the set of Edu-API persons that can act on behalf of the person in question. This includes description of the type of relationship exists and the context it is applicable in.",
"type": "object",
"properties": {
"agentType": {
"description": "A description of the relationship between the agent and the person the are an agent for. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AgentTypeEnum (EnumExt); The set of permitted values for `agentType`.",
"oneOf": [
{
"type": "string",
"enum": [
"parent",
"guardian",
"emergencyContact"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"person": {
"description": "A reference to an Edu-API person. This represents the person acting in an agency capacity.",
"$comment": "Origin: PersonGUIDRef (DerivedType); A reference to a `Person` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"domain": {
"description": "The context within which the person can act as an agent in.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"agentType",
"person"
],
"additionalProperties": false,
"$defs": {
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
}
}
}
D.12 Affiliation
A container that describes an Edu-API persons relationships to organizations; including their role(s) and the time frames those roles are in place.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_affiliation-jsonschema1.json",
"title": "JSON Schema for the Affiliation class.",
"description": "A container that describes an Edu-API persons relationships to organizations; including their role(s) and the time frames those roles are in place.",
"type": "object",
"properties": {
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"person": {
"description": "A reference to an Edu-API Person.",
"$comment": "Origin: PersonGUIDRef (DerivedType); A reference to a `Person` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"organization": {
"description": "A reference to an Edu-API Organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"role": {
"description": "The role of the associated person in the given context.",
"$comment": "Origin: RoleTypeEnum (EnumExt); The set of permitted values for `roleType`.",
"oneOf": [
{
"type": "string",
"enum": [
"member",
"chair",
"staff",
"student",
"administrator",
"aide",
"guardian",
"parent",
"proctor",
"relative",
"teacher",
"advisor",
"teachingAssistant"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"affiliationStatus": {
"description": "The status of the person's affiliation with the organization. This is based upon an enumerated vocabulary",
"$comment": "Origin: AffiliationStatusEnum (EnumExt); The set of permitted values for `affiliationStatus`.",
"oneOf": [
{
"type": "string",
"enum": [
"active",
"inactive",
"auditing",
"withdrawn"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"extensions": {
"type": "array",
"items": {
"$ref": "#/$defs/affiliationExtensions"
}
}
},
"required": [
"sourcedId",
"person",
"organization",
"role",
"affiliationStatus",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"affiliationExtensions": {
"description": "Extension properties related to affiliations",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.13 Enrollment
The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_enrollment-jsonschema1.json",
"title": "JSON Schema for the Enrollment class.",
"description": "The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.",
"type": "object",
"properties": {
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"isActive": {
"description": "Used to identify if the enrollment described in this entity is currently active or inactive. A value of true indicates that the enrollment is active, a value of false indicates the enrollment is inactive. To be used in conjunction with enrollmentStatus when more details about the enrollment state are required. See the best practices guide for guidance on how to use these properties in tandem.",
"$comment": "Origin: Boolean (PrimitiveType); A boolean, expressed as `true` or `false`",
"type": "boolean"
},
"enrollmentStatus": {
"description": "The status of this enrollment.",
"$comment": "Origin: EnrollmentStatusEnum (EnumExt); The set of permitted values for `enrollmentStatus`.",
"oneOf": [
{
"type": "string",
"enum": [
"onLeave",
"withdrawn",
"accepted",
"pending",
"cancelled",
"registered",
"revoked",
"Interruption",
"finished",
"withdrawnFailing",
"withdrawnPassing",
"dropped",
"suspended",
"enrolled",
"declined",
"deferred",
"onHold"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"person": {
"description": "A reference to an Edu-API Person.",
"$comment": "Origin: PersonGUIDRef (DerivedType); A reference to a `Person` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"role": {
"description": "The role of the associated person in the given context.",
"$comment": "Origin: RoleTypeEnum (EnumExt); The set of permitted values for `roleType`.",
"oneOf": [
{
"type": "string",
"enum": [
"member",
"chair",
"staff",
"student",
"administrator",
"aide",
"guardian",
"parent",
"proctor",
"relative",
"teacher",
"advisor",
"teachingAssistant"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"educationOffering": {
"description": "A reference to an Edu-API offering entity. This is the instantiated Education the person is being enrolled on.",
"$comment": "Origin: EducationOfferingGUIDRef (DerivedType); A reference to a `EducationCollectionOffering`, `CourseOffering` or `EducationComponentOffering` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"offeringType": {
"description": "The type of education being offered. This is based on an enumerated vocabulary.",
"$comment": "Origin: EducationOfferingTypeEnum (EnumExt); The set of permitted values for `educationOfferingType`.",
"oneOf": [
{
"type": "string",
"enum": [
"collection",
"course",
"component"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"extensions": {
"$ref": "#/$defs/enrollmentExtensions"
}
},
"required": [
"sourcedId",
"recordLanguage",
"isActive",
"enrollmentStatus",
"person",
"role",
"educationOffering",
"offeringType",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"enrollmentExtensions": {
"description": "Extension properties related to enrollments",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.14 RoleEnablement
An array to store associated dates for a entity. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the course offering before or after the official start and end dates. These dates are meant to be considered additional metadata about the course offering and applied independent of the startDate and endDate. They are not intended to be used to as replacements.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_roleenablement-jsonschema1.json",
"title": "JSON Schema for the RoleEnablement class.",
"description": "An array to store associated dates for a entity. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the course offering before or after the official start and end dates. These dates are meant to be considered additional metadata about the course offering and applied independent of the startDate and endDate. They are not intended to be used to as replacements.",
"type": "object",
"properties": {
"role": {
"description": "The role of the associated person in the given context.",
"$comment": "Origin: RoleTypeEnum (EnumExt); The set of permitted values for `roleType`.",
"oneOf": [
{
"type": "string",
"enum": [
"member",
"chair",
"staff",
"student",
"administrator",
"aide",
"guardian",
"parent",
"proctor",
"relative",
"teacher",
"advisor",
"teachingAssistant"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
}
},
"required": [
"role"
],
"additionalProperties": false
}
D.15 Organization
An administrative unit, it can be a division or subdivision of an institution or the institution itself. Examples: College of Arts and Letters, English Department.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_organization-jsonschema1.json",
"title": "JSON Schema for the Organization class.",
"description": "An administrative unit, it can be a division or subdivision of an institution or the institution itself. Examples: College of Arts and Letters, English Department.",
"type": "object",
"properties": {
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"name": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"organizationType": {
"description": "The type of Organization.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"parent": {
"description": "A reference to a parent organization.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"children": {
"type": "array",
"items": {
"description": "References to child organizations.",
"$comment": "Origin: OrganizationGUIDRef (DerivedType); A reference to an `Organization` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"primaryAddress": {
"$ref": "#/$defs/OptionallyTypedAddress"
},
"otherAddresses": {
"type": "array",
"items": {
"$ref": "#/$defs/TypedAddress"
}
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"extensions": {
"$ref": "#/$defs/organizationExtensions"
}
},
"required": [
"sourcedId",
"recordLanguage",
"name",
"organizationType",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"OptionallyTypedAddress": {
"description": "A optionally typed address.",
"type": "object",
"properties": {
"addressType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AddressTypeEnum (EnumExt); The set of permitted values for `addressType`.",
"oneOf": [
{
"type": "string",
"enum": [
"visitingAddress",
"mailingAddress",
"permanentAddress",
"deliveryAddress",
"billingAddress",
"homeAddress",
"workAddress",
"formerAddress"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"addressCountry": {
"description": "A country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressCountryCode": {
"description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"type": "string"
},
"addressRegion": {
"description": "A region within the country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressLocality": {
"description": "A locality within the region.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"streetAddress": {
"description": "A street address within the locality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postOfficeBoxNumber": {
"description": "A post office box number for PO box addresses.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postalCode": {
"description": "A postal code.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"geo": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false
},
"TypedAddress": {
"description": "A typed address.",
"type": "object",
"properties": {
"addressType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AddressTypeEnum (EnumExt); The set of permitted values for `addressType`.",
"oneOf": [
{
"type": "string",
"enum": [
"visitingAddress",
"mailingAddress",
"permanentAddress",
"deliveryAddress",
"billingAddress",
"homeAddress",
"workAddress",
"formerAddress"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"addressCountry": {
"description": "A country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressCountryCode": {
"description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"type": "string"
},
"addressRegion": {
"description": "A region within the country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressLocality": {
"description": "A locality within the region.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"streetAddress": {
"description": "A street address within the locality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postOfficeBoxNumber": {
"description": "A post office box number for PO box addresses.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postalCode": {
"description": "A postal code.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"geo": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [
"addressType"
],
"additionalProperties": false
},
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
},
"organizationExtensions": {
"description": "Extension properties related to education organizations",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.16 AcademicSession
A calendar period during which a school or institution schedules classes, offerings, or other units of learning for availability.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_academicsession-jsonschema1.json",
"title": "JSON Schema for the AcademicSession class.",
"description": "A calendar period during which a school or institution schedules classes, offerings, or other units of learning for availability.",
"type": "object",
"properties": {
"sourcedId": {
"description": "The sourcedId of the object. This is the interoperability identifier that systems will refer to when making API calls, or when needing to identify an object. Systems SHOULD be able to map whichever local ids (e.g. database key fields) they use to sourcedId. The sourcedId of an object MUST be an anonymized or pseudonymized identifier of an entity and as such will not contain Personally Identifiable Information (PII) or Personal Data (PD).",
"$comment": "Origin: GUID (DerivedType); The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.",
"type": "string"
},
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"primaryCode": {
"$ref": "#/$defs/IdentifierEntry"
},
"otherCodes": {
"type": "array",
"items": {
"$ref": "#/$defs/IdentifierEntry"
}
},
"sessionType": {
"description": "The type of academic session. This is based upon an enumerated vocabulary.",
"$comment": "Origin: AcademicSessionTypeEnum (EnumExt); The set of permitted values used to describe the temporal boundaries of an education.",
"oneOf": [
{
"type": "string",
"enum": [
"gradingPeriod",
"semester",
"schoolYear",
"term",
"studyPeriod"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"title": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"startDate": {
"description": "The start date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"endDate": {
"description": "The end date of the associated event.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"parent": {
"description": "A reference to another Edu-API Academic Session that serves as a parent `AcademicSession`.",
"$comment": "Origin: AcademicSessionGUIDRef (DerivedType); A reference to an `AcademicSession` object that has an allocated sourcedId (`GUID`).",
"type": "string"
},
"children": {
"type": "array",
"items": {
"description": "A reference to another Edu-API Academic Session that serves as a Child `AcademicSession`s.",
"$comment": "Origin: AcademicSessionGUIDRef (DerivedType); A reference to an `AcademicSession` object that has an allocated sourcedId (`GUID`).",
"type": "string"
}
},
"recordStatus": {
"description": "The status of this record. A record which is flagged 'toBeDeleted' is to be considered safe to delete. Systems can delete records that are flagged as such if they wish, but they are not required to do so.",
"$comment": "Origin: RecordStatusTypeEnum (Enum); The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "string",
"enum": [
"active",
"deleted",
"inactive"
]
},
"dateLastModified": {
"description": "A timestamp describing when this record was last modified.",
"$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
"type": "string",
"format": "date-time"
},
"extensions": {
"$ref": "#/$defs/academicSessionExtensions"
}
},
"required": [
"sourcedId",
"recordLanguage",
"recordStatus"
],
"additionalProperties": false,
"$defs": {
"IdentifierEntry": {
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
},
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"academicSessionExtensions": {
"description": "Extension properties related to education academic sessions",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
D.17 IdentifierEntry
A container to transmit additional needed identifiers
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_identifierentry-jsonschema1.json",
"title": "JSON Schema for the IdentifierEntry class.",
"description": "A container to transmit additional needed identifiers",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"identifierType": {
"description": "The identifier type.",
"$comment": "Origin: IdentifierTypeEnum (EnumExt)",
"oneOf": [
{
"type": "string",
"enum": [
"systemId",
"productId",
"userName",
"accountId",
"emailAddress",
"nationalIdentityNumber",
"isbn",
"issn",
"lisSourcedId",
"oneRosterSourcedId",
"sisSourcedId",
"ltiContextId",
"ltiDeploymentId",
"ltiToolId",
"ltiPlatformId",
"ltiUserId",
"identifier"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
}
},
"required": [
"identifier",
"identifierType"
],
"additionalProperties": false
}
D.18 Location
A container for describing the location an entity takes place at.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_location-jsonschema1.json",
"title": "JSON Schema for the Location class.",
"description": "A container for describing the location an entity takes place at.",
"type": "object",
"properties": {
"identifier": {
"description": "An identifier.",
"$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
"type": "string"
},
"description": {
"type": "array",
"items": {
"$ref": "#/$defs/LanguageTypedString"
}
},
"geoLocation": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false,
"$defs": {
"LanguageTypedString": {
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
},
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
}
}
}
D.19 GeoCoordinates
The geographic coordinates of a location.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_geocoordinates-jsonschema1.json",
"title": "JSON Schema for the GeoCoordinates class.",
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
}
D.20 Address
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_address-jsonschema1.json",
"title": "JSON Schema for the Address class.",
"description": "No description supplied.",
"type": "object",
"properties": {
"addressCountry": {
"description": "A country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressCountryCode": {
"description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"type": "string"
},
"addressRegion": {
"description": "A region within the country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressLocality": {
"description": "A locality within the region.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"streetAddress": {
"description": "A street address within the locality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postOfficeBoxNumber": {
"description": "A post office box number for PO box addresses.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postalCode": {
"description": "A postal code.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"geo": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false,
"$defs": {
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
}
}
}
D.21 TypedAddress
A typed address.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_typedaddress-jsonschema1.json",
"title": "JSON Schema for the TypedAddress class.",
"description": "A typed address.",
"type": "object",
"properties": {
"addressType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AddressTypeEnum (EnumExt); The set of permitted values for `addressType`.",
"oneOf": [
{
"type": "string",
"enum": [
"visitingAddress",
"mailingAddress",
"permanentAddress",
"deliveryAddress",
"billingAddress",
"homeAddress",
"workAddress",
"formerAddress"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"addressCountry": {
"description": "A country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressCountryCode": {
"description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"type": "string"
},
"addressRegion": {
"description": "A region within the country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressLocality": {
"description": "A locality within the region.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"streetAddress": {
"description": "A street address within the locality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postOfficeBoxNumber": {
"description": "A post office box number for PO box addresses.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postalCode": {
"description": "A postal code.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"geo": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [
"addressType"
],
"additionalProperties": false,
"$defs": {
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
}
}
}
D.22 OptionallyTypedAddress
A optionally typed address.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_optionallytypedaddress-jsonschema1.json",
"title": "JSON Schema for the OptionallyTypedAddress class.",
"description": "A optionally typed address.",
"type": "object",
"properties": {
"addressType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: AddressTypeEnum (EnumExt); The set of permitted values for `addressType`.",
"oneOf": [
{
"type": "string",
"enum": [
"visitingAddress",
"mailingAddress",
"permanentAddress",
"deliveryAddress",
"billingAddress",
"homeAddress",
"workAddress",
"formerAddress"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"addressCountry": {
"description": "A country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressCountryCode": {
"description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"type": "string"
},
"addressRegion": {
"description": "A region within the country.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"addressLocality": {
"description": "A locality within the region.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"streetAddress": {
"description": "A street address within the locality.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postOfficeBoxNumber": {
"description": "A post office box number for PO box addresses.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"postalCode": {
"description": "A postal code.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"geo": {
"$ref": "#/$defs/GeoCoordinates"
}
},
"required": [],
"additionalProperties": false,
"$defs": {
"GeoCoordinates": {
"description": "The geographic coordinates of a location.",
"type": "object",
"properties": {
"latitude": {
"description": "The latitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
},
"longitude": {
"description": "The longitude of the location [[WGS-84]].",
"$comment": "Origin: Float (PrimitiveType)",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": false
}
}
}
D.23 TypedPhone
A typed phone number.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_typedphone-jsonschema1.json",
"title": "JSON Schema for the TypedPhone class.",
"description": "A typed phone number.",
"type": "object",
"properties": {
"phoneType": {
"description": "The type of phone number. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: PhoneTypeEnum (EnumExt); The set of permitted values for `phoneType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homePhone",
"workPhone",
"icePhone"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"phone": {
"description": "A phone number.",
"$comment": "Origin: PhoneNumber (DerivedType); A `NormalizedString` representing a phone number.",
"type": "string"
}
},
"required": [
"phoneType",
"phone"
],
"additionalProperties": false
}
D.24 OptionallyTypedPhone
An optionally typed phone number.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_optionallytypedphone-jsonschema1.json",
"title": "JSON Schema for the OptionallyTypedPhone class.",
"description": "An optionally typed phone number.",
"type": "object",
"properties": {
"phoneType": {
"description": "The type of address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: PhoneTypeEnum (EnumExt); The set of permitted values for `phoneType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homePhone",
"workPhone",
"icePhone"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"phone": {
"description": "A phone number.",
"$comment": "Origin: PhoneNumber (DerivedType); A `NormalizedString` representing a phone number.",
"type": "string"
}
},
"required": [
"phone"
],
"additionalProperties": false
}
D.25 TypedEmail
A typed email address.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_typedemail-jsonschema1.json",
"title": "JSON Schema for the TypedEmail class.",
"description": "A typed email address.",
"type": "object",
"properties": {
"emailType": {
"description": "The type of email address. This is based on an extensible enumerated vocabulary.",
"$comment": "Origin: EmailTypeEnum (EnumExt); The set of permitted values for `emailType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homeEmail",
"workEmail",
"iceEmail"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"email": {
"description": "An email address.",
"$comment": "Origin: EmailAddress (DerivedType); A `NormalizedString` representing an email address.",
"type": "string"
}
},
"required": [
"emailType",
"email"
],
"additionalProperties": false
}
D.26 OptionallyTypedEmail
An optionally typed email address.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_optionallytypedemail-jsonschema1.json",
"title": "JSON Schema for the OptionallyTypedEmail class.",
"description": "An optionally typed email address.",
"type": "object",
"properties": {
"emailType": {
"description": "The type of email address.",
"$comment": "Origin: EmailTypeEnum (EnumExt); The set of permitted values for `emailType`.",
"oneOf": [
{
"type": "string",
"enum": [
"homeEmail",
"workEmail",
"iceEmail"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"email": {
"description": "An email address.",
"$comment": "Origin: EmailAddress (DerivedType); A `NormalizedString` representing an email address.",
"type": "string"
}
},
"required": [
"email"
],
"additionalProperties": false
}
D.27 educationOfferingExtensions
Extension properties related to education offerings
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_educationofferingextensions-jsonschema1.json",
"title": "JSON Schema for the educationOfferingExtensions class.",
"description": "Extension properties related to education offerings",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
D.28 educationExtensions
Extension properties related to education templates
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_educationextensions-jsonschema1.json",
"title": "JSON Schema for the educationExtensions class.",
"description": "Extension properties related to education templates",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
D.29 enrollmentExtensions
Extension properties related to enrollments
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_enrollmentextensions-jsonschema1.json",
"title": "JSON Schema for the enrollmentExtensions class.",
"description": "Extension properties related to enrollments",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
D.30 personExtensions
Extension properties related to Edu-API persons
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_personextensions-jsonschema1.json",
"title": "JSON Schema for the personExtensions class.",
"description": "Extension properties related to Edu-API persons",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
D.31 affiliationExtensions
Extension properties related to affiliations
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_affiliationextensions-jsonschema1.json",
"title": "JSON Schema for the affiliationExtensions class.",
"description": "Extension properties related to affiliations",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
D.32 organizationExtensions
Extension properties related to education organizations
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_organizationextensions-jsonschema1.json",
"title": "JSON Schema for the organizationExtensions class.",
"description": "Extension properties related to education organizations",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
D.33 academicSessionExtensions
Extension properties related to education academic sessions
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_academicsessionextensions-jsonschema1.json",
"title": "JSON Schema for the academicSessionExtensions class.",
"description": "Extension properties related to education academic sessions",
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
D.34 EducationOfferingTypeEnum
The set of permitted values for educationOfferingType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_educationofferingtypeenum-jsonschema1.json",
"title": "JSON Schema for the EducationOfferingTypeEnum class.",
"description": "The set of permitted values for `educationOfferingType`.",
"type": "object",
"properties": {
"collection": {
"description": "A collection of courses or other learning units, used to group them into a coherent whole for enrollment, administrative, or other purposes. A Program is one example of a Course Collection.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"course": {
"description": "Relates a course to one or more delivery scenarios.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"component": {
"description": "A subsection of a courseOffering. It may be a lesson or separately enrollable unit within a courseOffering. For example, Biology 101 may consist of a Lecture component offering and a Lab component offering",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.35 AffiliationStatusEnum
The set of permitted values for affiliationStatus
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_affiliationstatusenum-jsonschema1.json",
"title": "JSON Schema for the AffiliationStatusEnum class.",
"description": "The set of permitted values for `affiliationStatus`.",
"type": "object",
"properties": {
"active": {
"description": "The affiliation is active.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"inactive": {
"description": "The affiliation is inactive.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"auditing": {
"description": "The affiliation is under audit.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"withdrawn": {
"description": "The affiliation has been withdrawn.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.36 AgentTypeEnum
The set of permitted values for agentType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_agenttypeenum-jsonschema1.json",
"title": "JSON Schema for the AgentTypeEnum class.",
"description": "The set of permitted values for `agentType`.",
"type": "object",
"properties": {
"parent": {
"description": "Mother or father of the user.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"guardian": {
"description": "Guardian of the user and NOT the Mother or Father. May also be a Relative.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"emergencyContact": {
"description": "Any person designated as a contact in case of emergencies.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.37 AddressTypeEnum
The set of permitted values for addressType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_addresstypeenum-jsonschema1.json",
"title": "JSON Schema for the AddressTypeEnum class.",
"description": "The set of permitted values for `addressType`.",
"type": "object",
"properties": {
"visitingAddress": {
"description": "A visiting address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"mailingAddress": {
"description": "A mailing address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"permanentAddress": {
"description": "A permanent address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"deliveryAddress": {
"description": "A delivery address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"billingAddress": {
"description": "A billing address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"homeAddress": {
"description": "A home address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"workAddress": {
"description": "A work address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"formerAddress": {
"description": "A former (previous) address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.38 PhoneTypeEnum
The set of permitted values for phoneType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_phonetypeenum-jsonschema1.json",
"title": "JSON Schema for the PhoneTypeEnum class.",
"description": "The set of permitted values for `phoneType`.",
"type": "object",
"properties": {
"homePhone": {
"description": "A home phone number.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"workPhone": {
"description": "A work phone number.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"icePhone": {
"description": "A phone number to use in case of emergency.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.39 EmailTypeEnum
The set of permitted values for emailType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_emailtypeenum-jsonschema1.json",
"title": "JSON Schema for the EmailTypeEnum class.",
"description": "The set of permitted values for `emailType`.",
"type": "object",
"properties": {
"homeEmail": {
"description": "A home email address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"workEmail": {
"description": "A work email address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"iceEmail": {
"description": "An email address to use in case of emergency.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.40 EducationLevelEnum
The set of permitted values for edcucationLevel
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_educationlevelenum-jsonschema1.json",
"title": "JSON Schema for the EducationLevelEnum class.",
"description": "The set of permitted values for `edcucationLevel`.",
"type": "object",
"properties": {
"graduate": {
"description": "A course of study that takes place after the award of an undergraduate academic degree.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"undergraduate": {
"description": "A course of study that awards a bachelor's or equivelant degree.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"graduate",
"undergraduate"
],
"additionalProperties": false
}
D.41 CreditTypeEnum
The set of permitted values for creditType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_credittypeenum-jsonschema1.json",
"title": "JSON Schema for the CreditTypeEnum class.",
"description": "The set of permitted values for `creditType`.",
"type": "object",
"properties": {
"credit": {
"description": "The course of study awards credit towards a designated achievement or degree.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"nonCredit": {
"description": "The course of study does not award credit towards a designated achievement or degree.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"credit",
"nonCredit"
],
"additionalProperties": false
}
D.42 CollectionTypeEnum
The set of permitted values for collectionType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_collectiontypeenum-jsonschema1.json",
"title": "JSON Schema for the CollectionTypeEnum class.",
"description": "The set of permitted values for `collectionType`.",
"type": "object",
"properties": {
"program": {
"description": "An organized and defined set of learning activities that enable a student to develop knowledge. A program typically leads to a degree or some other type of accreditation.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"generalEducation": {
"description": "A grouping of educational units or coursework that represent an general education.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"requiredCollection": {
"description": "A grouping of educational units or coursework that identifies the contained contents as being needed for completion.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"electiveCollection": {
"description": "A grouping of educational units or coursework taken at the students discretion.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"capstoneCollection": {
"description": "The apogee or completion of a students coursework",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"majorCollection": {
"description": "A grouping of educational units or coursework that upon completion award a Major in that line of study",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"minorCollection": {
"description": "A grouping of educational units or coursework that upon completion award a Minor in that line of study",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"programSpecialization": {
"description": "A grouping of educational units or coursework that",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"nonDegreeCollection": {
"description": "A set of educational units that do not contribute towards a degree.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"program",
"generalEducation",
"requiredCollection",
"electiveCollection",
"capstoneCollection",
"majorCollection",
"minorCollection",
"programSpecialization",
"nonDegreeCollection"
],
"additionalProperties": false
}
D.43 CourseTypeEnum
The set of permitted values for courseType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_coursetypeenum-jsonschema1.json",
"title": "JSON Schema for the CourseTypeEnum class.",
"description": "The set of permitted values for `courseType`.",
"type": "object",
"properties": {
"standard": {
"description": "A normal or general type of course",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"honors": {
"description": "An education that offers a deeper, or more complex comparable learning than experiences typically found at institutions of higher education",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"research": {
"description": "A course that is focused on investigation of a specific topic.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"independentStudy": {
"description": "A course undertaken by an individual student with little to no supervision.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"practicum": {
"description": "A course that is designed to give students supervised practical application of a previously or concurrently studied field or theory.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"internship": {
"description": "A course that offers real world work experience in a professional setting.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"studyAbroad": {
"description": "A course undertaken in a foreign country",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"capstone": {
"description": "The culminating and usually integrative experience of an educational program",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"clinical": {
"description": "A nursing course that includes clinical experience",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"correspondence": {
"description": "A course of study in which student and teachers communicate by mail.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"fieldExperience": {
"description": "A course that provides an opportunity to apply knowledge gained in the classroom with supervised practice in the field",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"seminar": {
"description": "A small, discussion-based course.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"thesis": {
"description": "A independent research course in which you conduct your thesis research with guidance.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"standard",
"honors",
"research",
"independentStudy",
"practicum",
"internship",
"studyAbroad",
"capstone",
"clinical",
"correspondence",
"fieldExperience",
"seminar",
"thesis"
],
"additionalProperties": false
}
D.44 ComponentTypeEnum
The set of permitted values for componentType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_componenttypeenum-jsonschema1.json",
"title": "JSON Schema for the ComponentTypeEnum class.",
"description": "The set of permitted values for `componentType`.",
"type": "object",
"properties": {
"individualizedInstruction": {
"description": "tbd",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"integratedLectureLab": {
"description": "A component that combines a lecture and a lab into one offering.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"laboratory": {
"description": "A component portion that takes place in a laboratory.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"lecture": {
"description": "A component talk to an audience.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"practicum": {
"description": "A component that is designed to give students supervised practical application of a previously or concurrently studied field or theory.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"recitation": {
"description": "A component that provides time for the application of conceptual knowledge and extension of instruction that occurs in lecture through problem-solving or discussion.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"research": {
"description": "A component that is focused on investigation of a specific topic.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"seminar": {
"description": "A small, discussion-based component.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"independentStudy": {
"description": "A component undertaken by an individual student with little to no supervision",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"fieldExperience": {
"description": "A component that provides an opportunity to apply knowledge gained in the classroom with supervised practice in the field",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"exam": {
"description": "A component that is used to represent students who are taking an exam.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"individualizedInstruction",
"integratedLectureLab",
"laboratory",
"lecture",
"practicum",
"recitation",
"research",
"seminar",
"independentStudy",
"fieldExperience",
"exam"
],
"additionalProperties": false
}
D.46 RegistrationStatusEnum
The set of permitted values for registrationStatus
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_registrationstatusenum-jsonschema1.json",
"title": "JSON Schema for the RegistrationStatusEnum class.",
"description": "The set of permitted values for `registrationStatus`.",
"type": "object",
"properties": {
"open": {
"description": "Registration is open and accepting new requests.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"closed": {
"description": "Registration is closed and no longer accepting new requests.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"pending": {
"description": "Registration has been requested but that request is still pending.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"waitlist": {
"description": "The offering is full and the person has been put on a waitlist for registration.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"open",
"closed",
"pending",
"waitlist"
],
"additionalProperties": false
}
D.47 EnrollmentStatusEnum
The set of permitted values for enrollmentStatus
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_enrollmentstatusenum-jsonschema1.json",
"title": "JSON Schema for the EnrollmentStatusEnum class.",
"description": "The set of permitted values for `enrollmentStatus`.",
"type": "object",
"properties": {
"onLeave": {
"description": "The person has an excused absence from the education.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"withdrawn": {
"description": "The person has made a decision to leave the education prior to completion.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"accepted": {
"description": "The person has been offered a place in the education.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"pending": {
"description": "The person has requested admission to an education but that request has not yet been processed.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"cancelled": {
"description": "The person has turned down the offered seat before the education stats.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"registered": {
"description": "The person has been accepted into an education and has selected offerings to enroll on.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"revoked": {
"description": "The organization has withdrawn a registration for a person.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"Interruption": {
"description": "The person is taking a short break from their education.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"finished": {
"description": "The person has passed examination and no more activities are expected.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"withdrawnFailing": {
"description": "The person has made a decision to leave the education prior to completion but after the completion of the add drop period while having a currently failing grade. Withdrawn will often result in a record in a students official transcript.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"withdrawnPassing": {
"description": "The person has made a decision to leave the education prior to completion but after the completion of the add drop period while having a currently passing grade. Withdrawn will often result in a record in a students official transcript.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"dropped": {
"description": "The person has left the education within the allotted add/drop period. This will often not result in a record on the students official transcript.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"suspended": {
"description": "The organization has paused the persons seat in the education.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"enrolled": {
"description": "The person has accepted the seat and has been activated in the education.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"declined": {
"description": "Following review, the organization did not offer a seat in the education to the person.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"deferred": {
"description": "A person has been offered a spot in an education but has chosen to delay their start date. A person with a deferred enrollment will be issued a new enrollment at the time of their actual start.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"onHold": {
"description": "The organization has placed a block on the person's enrollment based on procedural requirements. e.g. They have not completed the required prerequisite material.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"onLeave",
"withdrawn",
"accepted",
"pending",
"cancelled",
"registered",
"revoked",
"Interruption",
"finished",
"withdrawnFailing",
"withdrawnPassing",
"dropped",
"suspended",
"enrolled",
"declined",
"deferred",
"onHold"
],
"additionalProperties": false
}
D.48 IdentifierTypeEnum
Note
TBD - split into subgroups per entity type
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_identifiertypeenum-jsonschema1.json",
"title": "JSON Schema for the IdentifierTypeEnum class.",
"description": "No description supplied.",
"type": "object",
"properties": {
"systemId": {
"description": "Identifier assigned to an entity in context of a specific system.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"productId": {
"description": "Identifier assigned to a specific product.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"userName": {
"description": "the name of a user.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"accountId": {
"description": "Identifier assigned to a specific account.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"emailAddress": {
"description": "An email address.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"nationalIdentityNumber": {
"description": "Identifier assigned by the governement of the person. e.g. a social security number in the USA",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"isbn": {
"description": "International Standard Book Number that serve as product identifiers for Books.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"issn": {
"description": "International Standard Book Number that serve as product identifiers for periodicals.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"lisSourcedId": {
"description": "An entities sourcedId in Learning Information System (LIS) data exchanges.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"oneRosterSourcedId": {
"description": "An entities sourcedId in OneRoster(OR) data exchanges.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"sisSourcedId": {
"description": "Student Information System Identifier.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"ltiContextId": {
"description": "Identifier for an entity in the context of an Learning Tools Interoperability(LTI) Launch.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"ltiDeploymentId": {
"description": "Identifier for a specific Learning Tools Interoperability(LTI) deployment of a tool.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"ltiToolId": {
"description": "Identifier of a tool in an Learning Tools Interoperability(LTI) integration.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"ltiPlatformId": {
"description": "Identifier of a platform in an Learning Tools Interoperability(LTI) integration.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"ltiUserId": {
"description": "Identifier of a user in an Learning Tools Interoperability(LTI) integration.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"identifier": {
"description": "Generic Identifier.",
"$comment": "Origin: BaseTerm (DerivedType); A term in an enumeration which serves as a common term for all other entries in this enumeration, and as such is less specific. The lexical constraints are the same as for `Term`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.49 PersonNameTypeEnum
The set of permitted values for name types.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_personnametypeenum-jsonschema1.json",
"title": "JSON Schema for the PersonNameTypeEnum class.",
"description": "The set of permitted values for name types.",
"type": "object",
"properties": {
"legalName": {
"description": "A legal name.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"preferredName": {
"description": "A preferred (lived) name.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"phoneticName": {
"description": "Phonetic pronunciation instructions for a name. Provided values MUST be valid to the syntax of the International Phonetic Alphabet [[IPA]].",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"aliasName": {
"description": "A fictitious name, pseudonym or alias.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"formerName": {
"description": "A formerly used name. Includes birth name.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.50 GenderEnum
The gender of this person. Other values than those defined may be given to capture the gender identity of this Person.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_genderenum-jsonschema1.json",
"title": "JSON Schema for the GenderEnum class.",
"description": "The gender of this person. Other values than those defined may be given to capture the gender identity of this Person.",
"type": "object",
"properties": {
"male": {
"description": "The male gender.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"female": {
"description": "The female gender.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"unspecified": {
"description": "The gender is unknown or unspecified.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"other": {
"description": "Another gender identity.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"male",
"female"
],
"additionalProperties": false
}
D.51 RoleTypeEnum
The set of permitted values for roleType
.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_roletypeenum-jsonschema1.json",
"title": "JSON Schema for the RoleTypeEnum class.",
"description": "The set of permitted values for `roleType`.",
"type": "object",
"properties": {
"member": {
"description": "A person belonging to the group in reference.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"chair": {
"description": "A person who presides/leads over a group.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"staff": {
"description": "An employee of the organization.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"student": {
"description": "A person who is studying at an organization.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"administrator": {
"description": "A person who oversees management of some aspect in an organization.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"aide": {
"description": "Someone who provides appropriate aid to the person but NOT also one of the other roles.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"guardian": {
"description": "Guardian of the user and NOT the Mother or Father. May also be a Relative.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"parent": {
"description": "Mother or father of the user.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"proctor": {
"description": "A person who oversees a student examination.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"relative": {
"description": "A relative of the user and NOT the Mother or Father. May also be the Guardian.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"teacher": {
"description": "A Teacher at organization e.g. School. May be used for enrollment.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"advisor": {
"description": "A person who offers students information pertaining to their degree, courses of study, and university regulations.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"teachingAssistant": {
"description": "A person who teaches or supports an educational offering but is not the instructor of record.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [],
"additionalProperties": false
}
D.52 AcademicSessionTypeEnum
The set of permitted values used to describe the temporal boundaries of an education.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_academicsessiontypeenum-jsonschema1.json",
"title": "JSON Schema for the AcademicSessionTypeEnum class.",
"description": "The set of permitted values used to describe the temporal boundaries of an education.",
"type": "object",
"properties": {
"gradingPeriod": {
"description": "Denotes a period over which some grade/result is to be awarded.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"semester": {
"description": "Denotes the school year.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"schoolYear": {
"description": "Denotes a semester period. There are typically two semesters per schoolYear.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"term": {
"description": "Denotes a term period. Typically there are three terms per schoolYear.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"studyPeriod": {
"description": "Denotes a subdivision of an academic term.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"gradingPeriod",
"semester",
"schoolYear",
"term",
"studyPeriod"
],
"additionalProperties": false
}
D.53 RecordStatusTypeEnum
The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_recordstatustypeenum-jsonschema1.json",
"title": "JSON Schema for the RecordStatusTypeEnum class.",
"description": "The set of values to describe the state of a record in the source system. For systems migrating from, or making use of OneRoster, deleted is to be considered synonymous with toBeDeleted.",
"type": "object",
"properties": {
"active": {
"description": "The record is present and actively used in the system.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"deleted": {
"description": "The record has been, or will immediately be, removed from the upstream system; downstream systems can also remove this record as it won't be used again.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"inactive": {
"description": "The record is present, but not actively used in the system (it should not be removed, but also not used).",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"active",
"deleted",
"inactive"
],
"additionalProperties": false
}
D.54 SynchronicityEnum
The set of permitted values used to describe whether an education offering is taught in person, online, or via a hybrid, combined approach.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_synchronicityenum-jsonschema1.json",
"title": "JSON Schema for the SynchronicityEnum class.",
"description": "The set of permitted values used to describe whether an education offering is taught in person, online, or via a hybrid, combined approach.",
"type": "object",
"properties": {
"hybrid": {
"description": "No description supplied.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"asynchronous": {
"description": "No description supplied.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"synchronous": {
"description": "No description supplied.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"hybrid",
"asynchronous",
"synchronous"
],
"additionalProperties": false
}
D.55 Imsx_StatusInfo
This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_imsx_statusinfo-jsonschema1.json",
"title": "JSON Schema for the Imsx_StatusInfo class.",
"description": "This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.",
"type": "object",
"properties": {
"imsx_codeMajor": {
"description": "The code major value (from the corresponding enumerated vocabulary).",
"$comment": "Origin: Imsx_CodeMajor (Enumeration); This is the set of primary status report values i.e. the major code assigned to the status block. This is used in conjunction with the 'Severity' structure in the status object.",
"type": "string",
"enum": [
"failure",
"processing",
"success",
"unsupported"
]
},
"imsx_severity": {
"description": "The severity value (from the corresponding enumerated vocabulary).",
"$comment": "Origin: Imsx_Severity (Enumeration); This is the context for the status report values. This is used in conjunction with the 'CodeMajor' structure in the status object.",
"type": "string",
"enum": [
"error",
"status",
"warning"
]
},
"imsx_description": {
"description": "A human readable description supplied by the entity creating the status code information.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"imsx_codeMinor": {
"$ref": "#/$defs/Imsx_CodeMinor"
}
},
"required": [
"imsx_codeMajor",
"imsx_severity"
],
"additionalProperties": false,
"$defs": {
"Imsx_CodeMinor": {
"description": "This is the container for the set of code minor status codes reported in the responses from the Service Provider.",
"type": "object",
"properties": {
"imsx_codeMinorField": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/Imsx_CodeMinorField"
}
}
},
"required": [
"imsx_codeMinorField"
],
"additionalProperties": false
},
"Imsx_CodeMinorField": {
"description": "This is the container for a single code minor status code.",
"type": "object",
"properties": {
"imsx_codeMinorFieldName": {
"description": "This should contain the identity of the system that has produced the code minor status code report.",
"$comment": "Origin: NormalizedString (PrimitiveType); A `String` conforming to the `normalizedString` definition in [[XMLSCHEMA-2]].",
"type": "string"
},
"imsx_codeMinorFieldValue": {
"description": "The code minor status code (this is a value from the corresponding enumerated vocabulary).",
"$comment": "Origin: Imsx_CodeMinorFieldValue (Enumeration); This is the set of codeMinor status codes that are used to provide further insight into the completion status of the end-to-end transaction i.e. this should be used to provide more information than would be supplied by an HTTP code.",
"type": "string",
"enum": [
"forbidden",
"fullsuccess",
"internal_server_error",
"invalid_data",
"invalid_query_parameter",
"misdirected_request",
"not_acceptable",
"not_allowed",
"not_found",
"not_modified",
"server_busy",
"unauthorizedrequest",
"unknown"
]
}
},
"required": [
"imsx_codeMinorFieldName",
"imsx_codeMinorFieldValue"
],
"additionalProperties": false
}
}
}
D.56 Imsx_CodeMajor
This is the set of primary status report values i.e. the major code assigned to the status block. This is used in conjunction with the 'Severity' structure in the status object.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_imsx_codemajor-jsonschema1.json",
"title": "JSON Schema for the Imsx_CodeMajor class.",
"description": "This is the set of primary status report values i.e. the major code assigned to the status block. This is used in conjunction with the 'Severity' structure in the status object.",
"type": "object",
"properties": {
"failure": {
"description": "Denotes that the transaction request has failed. The detailed reason will be reported in the accompanying 'codeMinor' fields.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"processing": {
"description": "Denotes that the request is being processed at the destination or there has been a local transmission failure. This value is used in asynchronous services.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"success": {
"description": "Denotes that the request has been successfully completed. If the associated 'severity' value is 'warning' then the request has been partially successful i.e. best effort by the service provider. Other parts of the status information may provide more insight into a partial success response.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"unsupported": {
"description": "Denotes that the service provider does not support the requested operation. This is the required default response for an unsupported operation by an implementation.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"failure",
"processing",
"success",
"unsupported"
],
"additionalProperties": false
}
D.57 Imsx_Severity
This is the context for the status report values. This is used in conjunction with the 'CodeMajor' structure in the status object.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_imsx_severity-jsonschema1.json",
"title": "JSON Schema for the Imsx_Severity class.",
"description": "This is the context for the status report values. This is used in conjunction with the 'CodeMajor' structure in the status object.",
"type": "object",
"properties": {
"error": {
"description": "A catastrophic error has occurred in processing the request and so the request was not completed (the Service Provider may not even have received the request).",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"status": {
"description": "The request has been completed and a response was received from the Service Provider.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"warning": {
"description": "The request has only been partially completed. For an asynchronous service a further response should be expected.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"error",
"status",
"warning"
],
"additionalProperties": false
}
D.58 Imsx_CodeMinor
This is the container for the set of code minor status codes reported in the responses from the Service Provider.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_imsx_codeminor-jsonschema1.json",
"title": "JSON Schema for the Imsx_CodeMinor class.",
"description": "This is the container for the set of code minor status codes reported in the responses from the Service Provider.",
"type": "object",
"properties": {
"imsx_codeMinorField": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/Imsx_CodeMinorField"
}
}
},
"required": [
"imsx_codeMinorField"
],
"additionalProperties": false,
"$defs": {
"Imsx_CodeMinorField": {
"description": "This is the container for a single code minor status code.",
"type": "object",
"properties": {
"imsx_codeMinorFieldName": {
"description": "This should contain the identity of the system that has produced the code minor status code report.",
"$comment": "Origin: NormalizedString (PrimitiveType); A `String` conforming to the `normalizedString` definition in [[XMLSCHEMA-2]].",
"type": "string"
},
"imsx_codeMinorFieldValue": {
"description": "The code minor status code (this is a value from the corresponding enumerated vocabulary).",
"$comment": "Origin: Imsx_CodeMinorFieldValue (Enumeration); This is the set of codeMinor status codes that are used to provide further insight into the completion status of the end-to-end transaction i.e. this should be used to provide more information than would be supplied by an HTTP code.",
"type": "string",
"enum": [
"forbidden",
"fullsuccess",
"internal_server_error",
"invalid_data",
"invalid_query_parameter",
"misdirected_request",
"not_acceptable",
"not_allowed",
"not_found",
"not_modified",
"server_busy",
"unauthorizedrequest",
"unknown"
]
}
},
"required": [
"imsx_codeMinorFieldName",
"imsx_codeMinorFieldValue"
],
"additionalProperties": false
}
}
}
D.59 Imsx_CodeMinorField
This is the container for a single code minor status code.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_imsx_codeminorfield-jsonschema1.json",
"title": "JSON Schema for the Imsx_CodeMinorField class.",
"description": "This is the container for a single code minor status code.",
"type": "object",
"properties": {
"imsx_codeMinorFieldName": {
"description": "This should contain the identity of the system that has produced the code minor status code report.",
"$comment": "Origin: NormalizedString (PrimitiveType); A `String` conforming to the `normalizedString` definition in [[XMLSCHEMA-2]].",
"type": "string"
},
"imsx_codeMinorFieldValue": {
"description": "The code minor status code (this is a value from the corresponding enumerated vocabulary).",
"$comment": "Origin: Imsx_CodeMinorFieldValue (Enumeration); This is the set of codeMinor status codes that are used to provide further insight into the completion status of the end-to-end transaction i.e. this should be used to provide more information than would be supplied by an HTTP code.",
"type": "string",
"enum": [
"forbidden",
"fullsuccess",
"internal_server_error",
"invalid_data",
"invalid_query_parameter",
"misdirected_request",
"not_acceptable",
"not_allowed",
"not_found",
"not_modified",
"server_busy",
"unauthorizedrequest",
"unknown"
]
}
},
"required": [
"imsx_codeMinorFieldName",
"imsx_codeMinorFieldValue"
],
"additionalProperties": false
}
D.60 Imsx_CodeMinorFieldValue
This is the set of codeMinor status codes that are used to provide further insight into the completion status of the end-to-end transaction i.e. this should be used to provide more information than would be supplied by an HTTP code.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_imsx_codeminorfieldvalue-jsonschema1.json",
"title": "JSON Schema for the Imsx_CodeMinorFieldValue class.",
"description": "This is the set of codeMinor status codes that are used to provide further insight into the completion status of the end-to-end transaction i.e. this should be used to provide more information than would be supplied by an HTTP code.",
"type": "object",
"properties": {
"forbidden": {
"description": "This is used to indicate that the server can be reached and process the request but refuses to take any further action. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '403'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"fullsuccess": {
"description": "The request has been fully and successfully implemented by the service provider. For a REST binding this will have an HTTP code of '200' for a successful search request.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"internal_server_error": {
"description": "This should be used only if there is catastrophic error and there is not a more appropriate code. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '500'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"invalid_data": {
"description": "This error condition may occur if a JSON request/response body contains well-formed (i.e. syntactically correct), but semantically erroneous, JSON instructions. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and a HTTP code of '422'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"invalid_query_parameter": {
"description": "An invalid data query parameter field was supplied and the query could not be processed. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '400'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"misdirected_request": {
"description": "This is used to indicate that the request was made with a protocol that is not supported by the server. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '421'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"not_acceptable": {
"description": "This is used to indicate that the server cannot provide a response with a Content-Type that matches any of the content types in the request Accept header. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '406'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"not_allowed": {
"description": "This is used to indicate that the server does not allow the HTTP method. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '405'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"not_found": {
"description": "This is used to indicate that the server did not find the resource. This would be accompanied by the 'codeMajor/severity' values of 'failure/status' and for a REST binding a HTTP code of '404'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"not_modified": {
"description": "This is used to indicate that the server did not modify the resource. This would be accompanied by the 'codeMajor/severity' values of 'success/status' and for a REST binding a HTTP code of '304'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"server_busy": {
"description": "The server is receiving too many requests. Retry at a later time. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '429'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"unauthorizedrequest": {
"description": "The request was not correctly authorised. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code of '401'.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"unknown": {
"description": "Any other error occurred. This would be accompanied by the 'codeMajor/severity' values of 'failure/error' and for a REST binding a HTTP code corresponding to the error.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"forbidden",
"fullsuccess",
"internal_server_error",
"invalid_data",
"invalid_query_parameter",
"misdirected_request",
"not_acceptable",
"not_allowed",
"not_found",
"not_modified",
"server_busy",
"unauthorizedrequest",
"unknown"
],
"additionalProperties": false
}
D.61 PersonNameEntry
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_personnameentry-jsonschema1.json",
"title": "JSON Schema for the PersonNameEntry class.",
"description": "No description supplied.",
"type": "object",
"properties": {
"nameType": {
"description": "The type of name described in this entry.",
"$comment": "Origin: PersonNameTypeEnum (EnumExt); The set of permitted values for name types.",
"oneOf": [
{
"type": "string",
"enum": [
"legalName",
"preferredName",
"phoneticName",
"aliasName",
"formerName"
]
},
{
"type": "string",
"pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
}
]
},
"familyName": {
"description": "Family name. In the western world, often referred to as the 'last name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"givenName": {
"description": "Given name. In the western world, often referred to as the 'first name' of a person.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"additionalName": {
"description": "Additional name. Includes what is often referred to as 'middle name' in the western world.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"patronymicName": {
"description": "Patronymic name.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificPrefix": {
"description": "Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"honorificSuffix": {
"description": "Honorific suffix(es) following a person's name (e.g. 'M.D, PhD').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"familyNamePrefix": {
"description": "Family name prefix. As used in some locales, this is the leading part of a family name (e.g. 'de' in the name 'de Boer').",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"nameType"
],
"additionalProperties": false
}
D.62 LanguageTypedString
A String with an associated language code.
{
"$schema": "https://json-schema.org/draft/2019-09/schema#",
"$id": "https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_languagetypedstring-jsonschema1.json",
"title": "JSON Schema for the LanguageTypedString class.",
"description": "A String with an associated language code.",
"type": "object",
"properties": {
"recordLanguage": {
"description": "The primary language used in the described entity.",
"$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
"type": "string",
"pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
},
"value": {
"description": "No description supplied.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
}
},
"required": [
"recordLanguage",
"value"
],
"additionalProperties": false
}