E. JSON Schema
E.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",
"doctoral"
]
},
{
"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|.|-|_]+"
}
]
},
"creditsAwarded": {
"description": "A description of the credits that the student receives after the completion of the education.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"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",
"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
}
}
}
E.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"
}
},
"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|.|-|_]+"
}
]
},
"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
}
}
}
E.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",
"doctoral"
]
},
{
"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|.|-|_]+"
}
]
},
"creditsAwarded": {
"description": "A description of the credits that the student receives after the completion of the education.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"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",
"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
}
}
}
E.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",
"doctoral"
]
},
{
"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|.|-|_]+"
}
]
},
"creditsAwarded": {
"description": "A description of the credits that the student receives after the completion of the education.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"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",
"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
}
}
}
E.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",
"doctoral"
]
},
{
"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|.|-|_]+"
}
]
},
"creditsAwarded": {
"description": "A description of the credits that the student receives after the completion of the education.",
"$comment": "Origin: String (PrimitiveType); Character strings.",
"type": "string"
},
"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",
"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
}
}
}
E.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"
}
},
"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|.|-|_]+"
}
]
},
"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
}
}
}
E.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"
}
},
"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|.|-|_]+"
}
]
},
"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
}
}
}
E.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"
}
},
"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|.|-|_]+"
}
]
},
"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
}
}
}
E.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
}
}
}
E.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
}
E.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
}
}
}
E.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
}
}
}
E.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
}
}
}
E.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
}
E.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
}
}
}
E.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
}
}
}
E.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
}
E.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
}
}
}
E.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
}
E.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
}
}
}
E.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
}
}
}
E.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
}
}
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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 equivalent degree.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
},
"doctoral": {
"description": "A course of study that awards a PhD's or equivalent degree.",
"$comment": "Origin: Term (DerivedType); A term in an enumeration. The lexical constraints are the same as for `Token`.",
"type": "string"
}
},
"required": [
"graduate",
"undergraduate",
"doctoral"
],
"additionalProperties": false
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.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
}
E.48 IdentifierTypeEnum
{
"$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
}
E.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
}
E.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
}
E.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
}
E.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 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"
},
"schoolYear": {
"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"
},
"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
}
E.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
}
E.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
}
E.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
}
}
}
E.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
}
E.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
}
E.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
}
}
}
E.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
}
E.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
}
E.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
}
E.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
}
G. OpenAPI Schema: JSON
Edu-API Candidate Final Public
{
"openapi" : "3.0.1",
"info" : {
"title" : "OpenAPI schema for Edu-API",
"description" : "Edu-API Candidate Final Public",
"termsOfService" : "https://www.imsglobal.org/license.html",
"contact" : {
"name" : "IMS Global",
"url" : "https://www.imsglobal.org",
"email" : "support@imsglobal.org"
},
"license" : {
"name" : "IMS Global Specification Document License",
"url" : "https://www.imsglobal.org/license.html"
},
"version" : "1.0",
"x-status" : "Candidate Final",
"x-model-pid" : "org.1edtech.eduapi.v1p0.model",
"x-service-pid" : "org.1edtech.eduapi.v1p0.rest.servicemodel",
"x-src-operation-count" : 49,
"x-oas-operation-count" : 49
},
"servers" : [ {
"url" : "https://example.org/ims/eduapi/base/v1p0",
"description" : "The above Server URL should be changed to the actual server location."
} ],
"tags" : [ {
"name" : "Education Management",
"description" : "Operations relating to the Abstract Education Resources"
}, {
"name" : "Academic Session Management",
"description" : "Operations relating to AcademicSessions"
}, {
"name" : "Organization Management",
"description" : "Operations relating to Organizations"
}, {
"name" : "Person Management",
"description" : "Operations relating to Persons"
}, {
"name" : "Enrollment Management",
"description" : "Operations relating to Enrollments"
}, {
"name" : "Affiliation Management",
"description" : "Operations relating to Affiliations"
} ],
"paths" : {
"/educationTemplates" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getEducationTemplates() API call.",
"description" : "Read all education templates for an institution",
"operationId" : "getEducationTemplates",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getEducationTemplates() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A description of an abstract education.",
"items" : {
"$ref" : "#/components/schemas/Education"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.geteducationtemplates.operation"
}
},
"/educationTemplates/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getEducationTemplatesById() API call.",
"description" : "Read a collection template with a specific id",
"operationId" : "getEducationTemplatesById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Education",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getEducationTemplatesById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Education"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.geteducationtemplatesbyid.operation"
}
},
"/educationOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getEducationOfferings() API call.",
"description" : "Read all education templates for an institution",
"operationId" : "getEducationOfferings",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getEducationOfferings() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A description of an abstract educational offering.",
"items" : {
"$ref" : "#/components/schemas/EducationOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.geteducationofferings.operation"
}
},
"/educationsOfferings/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getEducationsOfferingById() API call.",
"description" : "Read a collection template with a specific id",
"operationId" : "getEducationsOfferingById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Education",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getEducationsOfferingById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/EducationOffering"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.geteducationsofferingbyid.operation"
}
},
"/collectionTemplates" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllCollectionTemplates() API call.",
"description" : "Read all collection templates for an institution",
"operationId" : "getAllCollectionTemplates",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllCollectionTemplates() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/CollectionTemplate"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcollectiontemplates.operation"
}
},
"/collectionTemplates/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getCollectionTemplateById() API call.",
"description" : "Read a collection template with a specific id",
"operationId" : "getCollectionTemplateById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CollectionTemplate",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getCollectionTemplateById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CollectionTemplate"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcollectiontemplatebyid.operation"
}
},
"/courseTemplates" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllCourseTemplates() API call.",
"description" : "Read all course templates for an institution",
"operationId" : "getAllCourseTemplates",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllCourseTemplates() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A time independent description of a learning experience, such that it may appear in a catalog.",
"items" : {
"$ref" : "#/components/schemas/CourseTemplate"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcoursetemplates.operation"
}
},
"/courseTemplates/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getCourseTemplateById() API call.",
"description" : "Read a course template with a specific id",
"operationId" : "getCourseTemplateById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CourseTemplate",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getCourseTemplateById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CourseTemplate"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcoursetemplatebyid.operation"
}
},
"/componentTemplates" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllComponentTemplates() API call.",
"description" : "Read all component templates for an institution",
"operationId" : "getAllComponentTemplates",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllComponentTemplates() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/ComponentTemplate"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcomponenttemplates.operation"
}
},
"/componentTemplates/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getComponentTemplateById() API call.",
"description" : "Read a component with a specific id",
"operationId" : "getComponentTemplateById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the ComponentTemplate",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getComponentTemplateById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ComponentTemplate"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcomponenttemplatebyid.operation"
}
},
"/collectionOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllCollectionOfferings() API call.",
"description" : "Read all collectionOfferings for an institution",
"operationId" : "getAllCollectionOfferings",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllCollectionOfferings() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/CollectionOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcollectionofferings.operation"
}
},
"/collectionOfferings/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getCollectionOfferingById() API call.",
"description" : "Read collectionOffering with a specific Id",
"operationId" : "getCollectionOfferingById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CollectionOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getCollectionOfferingById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CollectionOffering"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcollectionofferingbyid.operation"
}
},
"/courseOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllCourseOfferings() API call.",
"description" : "Read all courseOfferings for an institution",
"operationId" : "getAllCourseOfferings",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllCourseOfferings() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "Relates a course to one or more delivery scenarios.",
"items" : {
"$ref" : "#/components/schemas/CourseOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcourseofferings.operation"
}
},
"/courseOfferings/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getCourseOfferingById() API call.",
"description" : "Read courseOffering with a specific Id",
"operationId" : "getCourseOfferingById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CourseOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getCourseOfferingById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/CourseOffering"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcourseofferingbyid.operation"
}
},
"/componentOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllComponentOfferings() API call.",
"description" : "Read all ComponentOfferings for an institution",
"operationId" : "getAllComponentOfferings",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllComponentOfferings() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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",
"items" : {
"$ref" : "#/components/schemas/ComponentOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcomponentofferings.operation"
}
},
"/componentOfferings/{id}" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getComponentOfferingById() API call.",
"description" : "Read ComponentOffering with a specific Id",
"operationId" : "getComponentOfferingById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the ComponentOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getComponentOfferingById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/ComponentOffering"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcomponentofferingbyid.operation"
}
},
"/academicSessions/{id}/componentOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllComponentOfferingsBySession() API call.",
"description" : "Read all ComponentOfferings in a specified academic session",
"operationId" : "getAllComponentOfferingsBySession",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the AcademicSession",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllComponentOfferingsBySession() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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",
"items" : {
"$ref" : "#/components/schemas/ComponentOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcomponentofferingsbysession.operation"
}
},
"/academicSessions/{id}/courseOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllCourseOfferingsBySession() API call.",
"description" : "Read all CourseOfferings in a specified academic session",
"operationId" : "getAllCourseOfferingsBySession",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the AcademicSession",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllCourseOfferingsBySession() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "Relates a course to one or more delivery scenarios.",
"items" : {
"$ref" : "#/components/schemas/CourseOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcourseofferingsbysession.operation"
}
},
"/academicSessions/{id}/collectionOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getAllCollectionOfferingsBySession() API call.",
"description" : "Read all CollectionOfferings in a specified academic session",
"operationId" : "getAllCollectionOfferingsBySession",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the AcademicSession",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllCollectionOfferingsBySession() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/CollectionOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallcollectionofferingsbysession.operation"
}
},
"/students/{id}/collectionOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getCollectionOfferingsForStudent() API call.",
"description" : "Read all collectionOfferings for a student",
"operationId" : "getCollectionOfferingsForStudent",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Person representing the student",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getCollectionOfferingsForStudent() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/CollectionOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcollectionofferingsforstudent.operation"
}
},
"/staff/{id}/collectionOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getCollectionOfferingsForStaff() API call.",
"description" : "Read all collectionOfferings for a staff member",
"operationId" : "getCollectionOfferingsForStaff",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Person representing the staff member",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getCollectionOfferingsForStaff() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/CollectionOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcollectionofferingsforstaff.operation"
}
},
"/students/{id}/componentOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getComponentOfferingsForStudent() API call.",
"description" : "Read all componentOfferings for a student",
"operationId" : "getComponentOfferingsForStudent",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Person representing the student",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getComponentOfferingsForStudent() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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",
"items" : {
"$ref" : "#/components/schemas/ComponentOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcomponentofferingsforstudent.operation"
}
},
"/staff/{id}/componentOfferings" : {
"get" : {
"tags" : [ "EducationManagement" ],
"summary" : "The REST GET operation for the getComponentOfferingsForStaff() API call.",
"description" : "Read all componentOfferings for a staff member",
"operationId" : "getComponentOfferingsForStaff",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Person representing the staff member",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getComponentOfferingsForStaff() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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",
"items" : {
"$ref" : "#/components/schemas/ComponentOffering"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getcomponentofferingsforstaff.operation"
}
},
"/academicSessions" : {
"get" : {
"tags" : [ "AcademicSessionManagement" ],
"summary" : "The REST GET operation for the getAllAcademicSessions() API call.",
"description" : "Read all AcademicSessions for an institution",
"operationId" : "getAllAcademicSessions",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllAcademicSessions() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A calendar period during which a school or institution schedules classes, offerings, or other units of learning for availability.",
"items" : {
"$ref" : "#/components/schemas/AcademicSession"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallacademicsessions.operation"
}
},
"/academicSessions/{id}" : {
"get" : {
"tags" : [ "AcademicSessionManagement" ],
"summary" : "The REST GET operation for the getAcademicSessionById() API call.",
"description" : "Read an AcademicSession with a specific id",
"operationId" : "getAcademicSessionById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the AcademicSession",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAcademicSessionById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AcademicSession"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getacademicsessionbyid.operation"
}
},
"/organizations" : {
"get" : {
"tags" : [ "OrganizationManagement" ],
"summary" : "The REST GET operation for the getAllOrganizations() API call.",
"description" : "Read all Organizations for an institution",
"operationId" : "getAllOrganizations",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllOrganizations() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/Organization"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallorganizations.operation"
}
},
"/organizations/{id}" : {
"get" : {
"tags" : [ "OrganizationManagement" ],
"summary" : "The REST GET operation for the getOrganizationById() API call.",
"description" : "Read Organization with a specific Id",
"operationId" : "getOrganizationById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Organization",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getOrganizationById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Organization"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getorganizationbyid.operation"
}
},
"/staff/{id}/organizations" : {
"get" : {
"tags" : [ "OrganizationManagement" ],
"summary" : "The REST GET operation for the getOrganizationsForStaff() API call.",
"description" : "Read all organizations associated with a staff member",
"operationId" : "getOrganizationsForStaff",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Person representing the staff member",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getOrganizationsForStaff() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/Organization"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getorganizationsforstaff.operation"
}
},
"/students/{id}/organizations" : {
"get" : {
"tags" : [ "OrganizationManagement" ],
"summary" : "The REST GET operation for the getOrganizationsForStudent() API call.",
"description" : "Read all organizations associated with a student",
"operationId" : "getOrganizationsForStudent",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Person representing the student",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getOrganizationsForStudent() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/Organization"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getorganizationsforstudent.operation"
}
},
"/persons" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllPersons() API call.",
"description" : "Read all Persons for an institution",
"operationId" : "getAllPersons",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllPersons() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallpersons.operation"
}
},
"/persons/{id}" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getPersonById() API call.",
"description" : "Read Person with a specific id",
"operationId" : "getPersonById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Person",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getPersonById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getpersonbyid.operation"
}
},
"/staff" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStaff() API call.",
"description" : "Read all persons with role of staff",
"operationId" : "getAllStaff",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStaff() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstaff.operation"
}
},
"/students" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStudents() API call.",
"description" : "Read all persons with a role of student",
"operationId" : "getAllStudents",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStudents() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstudents.operation"
}
},
"/collectionOfferings/{id}/students" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStudentsForCollectionOffering() API call.",
"description" : "Read all students for a collectionOffering",
"operationId" : "getAllStudentsForCollectionOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CollectionOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStudentsForCollectionOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstudentsforcollectionoffering.operation"
}
},
"/collectionOfferings/{id}/staff" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStaffForCollectionOffering() API call.",
"description" : "Read all staff for a collectionOffering",
"operationId" : "getAllStaffForCollectionOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CollectionOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStaffForCollectionOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstaffforcollectionoffering.operation"
}
},
"/courseOfferings/{id}/students" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStudentsForCourseOffering() API call.",
"description" : "Read all students for a courseOffering",
"operationId" : "getAllStudentsForCourseOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CourseOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStudentsForCourseOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstudentsforcourseoffering.operation"
}
},
"/courseOfferings/{id}/staff" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStaffForCourseOffering() API call.",
"description" : "Read all staff for a courseOffering",
"operationId" : "getAllStaffForCourseOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CourseOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStaffForCourseOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstaffforcourseoffering.operation"
}
},
"/organizations/{id}/staff" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStaffForOrganization() API call.",
"description" : "Read all staff members of an org",
"operationId" : "getAllStaffForOrganization",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the organization",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStaffForOrganization() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstafffororganization.operation"
}
},
"/organizations/{id}/students" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStudentsForOrganization() API call.",
"description" : "Read all students of an organization",
"operationId" : "getAllStudentsForOrganization",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Organization",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStudentsForOrganization() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstudentsfororganization.operation"
}
},
"/componentOfferings/{id}/students" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStudentsForComponentOffering() API call.",
"description" : "Read all students for a componentOffering",
"operationId" : "getAllStudentsForComponentOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the ComponentOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStudentsForComponentOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstudentsforcomponentoffering.operation"
}
},
"/componentOfferings/{id}/staff" : {
"get" : {
"tags" : [ "PersonManagement" ],
"summary" : "The REST GET operation for the getAllStaffForComponentOffering() API call.",
"description" : "Read all students for a componentOffering",
"operationId" : "getAllStaffForComponentOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the ComponentOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllStaffForComponentOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"items" : {
"$ref" : "#/components/schemas/Person"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallstaffforcomponentoffering.operation"
}
},
"/enrollments" : {
"get" : {
"tags" : [ "EnrollmentManagement" ],
"summary" : "The REST GET operation for the getAllEnrollments() API call.",
"description" : "Read all Enrollments for an institution",
"operationId" : "getAllEnrollments",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllEnrollments() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.",
"items" : {
"$ref" : "#/components/schemas/Enrollment"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallenrollments.operation"
}
},
"/enrollments/{id}" : {
"get" : {
"tags" : [ "EnrollmentManagement" ],
"summary" : "The REST GET operation for the getEnrollmentById() API call.",
"description" : "Read Enrollment with a specific id",
"operationId" : "getEnrollmentById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Enrollment",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getEnrollmentById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Enrollment"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getenrollmentbyid.operation"
}
},
"/courseOfferings/{id}/enrollments" : {
"get" : {
"tags" : [ "EnrollmentManagement" ],
"summary" : "The REST GET operation for the getAllEnrollmentsForCourseOffering() API call.",
"description" : "Read all enrollments for a courseOffering",
"operationId" : "getAllEnrollmentsForCourseOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CourseOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllEnrollmentsForCourseOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.",
"items" : {
"$ref" : "#/components/schemas/Enrollment"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallenrollmentsforcourseoffering.operation"
}
},
"/collectionOfferings/{id}/enrollments" : {
"get" : {
"tags" : [ "EnrollmentManagement" ],
"summary" : "The REST GET operation for the getAllEnrollmentsForCollectionOffering() API call.",
"description" : "Read all enrollments for a courseOffering",
"operationId" : "getAllEnrollmentsForCollectionOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CourseOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllEnrollmentsForCollectionOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.",
"items" : {
"$ref" : "#/components/schemas/Enrollment"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallenrollmentsforcollectionoffering.operation"
}
},
"/componentOfferings/{id}/enrollments" : {
"get" : {
"tags" : [ "EnrollmentManagement" ],
"summary" : "The REST GET operation for the getAllEnrollmentsForComponentOffering() API call.",
"description" : "Read all enrollments for a courseOffering",
"operationId" : "getAllEnrollmentsForComponentOffering",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the CourseOffering",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllEnrollmentsForComponentOffering() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.",
"items" : {
"$ref" : "#/components/schemas/Enrollment"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallenrollmentsforcomponentoffering.operation"
}
},
"/academicSessions/{id}/enrollments" : {
"get" : {
"tags" : [ "EnrollmentManagement" ],
"summary" : "The REST GET operation for the getAllEnrollmentsBySession() API call.",
"description" : "Read all enrollments in a specified academic session",
"operationId" : "getAllEnrollmentsBySession",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the AcademicSession",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
}, {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllEnrollmentsBySession() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"description" : "The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.",
"items" : {
"$ref" : "#/components/schemas/Enrollment"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallenrollmentsbysession.operation"
}
},
"/affiliations" : {
"get" : {
"tags" : [ "AffiliationManagement" ],
"summary" : "The REST GET operation for the getAllAffiliations() API call.",
"description" : "Read all affiliations for an institution",
"operationId" : "getAllAffiliations",
"parameters" : [ {
"$ref" : "#/components/parameters/limit"
}, {
"$ref" : "#/components/parameters/offset"
}, {
"$ref" : "#/components/parameters/sort"
}, {
"$ref" : "#/components/parameters/orderBy"
}, {
"$ref" : "#/components/parameters/filter"
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAllAffiliations() API call.",
"headers" : {
"X-Total-Count" : {
"$ref" : "#/components/headers/X-Total-Count"
}
},
"content" : {
"application/json" : {
"schema" : {
"minItems" : 1,
"type" : "array",
"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.",
"items" : {
"$ref" : "#/components/schemas/Affiliation"
}
}
}
},
"links" : {
"next" : {
"$ref" : "#/components/links/next"
},
"last" : {
"$ref" : "#/components/links/last"
},
"first" : {
"$ref" : "#/components/links/first"
},
"prev" : {
"$ref" : "#/components/links/prev"
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getallaffiliations.operation"
}
},
"/affiliations/{id}" : {
"get" : {
"tags" : [ "AffiliationManagement" ],
"summary" : "The REST GET operation for the getAffiliationById() API call.",
"description" : "Read Affiliation with a specific id",
"operationId" : "getAffiliationById",
"parameters" : [ {
"name" : "id",
"in" : "path",
"description" : "The sourcedId of the Affiliation",
"required" : true,
"allowEmptyValue" : false,
"style" : "simple",
"schema" : {
"type" : "string",
"description" : "The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID."
}
} ],
"responses" : {
"200" : {
"description" : "The 200 (OK) response to the getAffiliationById() API call.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Affiliation"
}
}
}
},
"400" : {
"description" : "As defined in [[rfc9110]], indicating that the server cannot or will not process the request due to something that is perceived to be a client error.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"401" : {
"description" : "As defined in [[rfc9110]], indicating that the request has not been applied because it lacks valid authentication credentials for the target resource.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"403" : {
"description" : "As defined in [[rfc9110]], indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"404" : {
"description" : "As defined in [[rfc9110]], indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"422" : {
"description" : "As defined in [[rfc9110]], used when the server cannot validate an incoming entity.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"429" : {
"description" : "As defined in [[rfc6585]], indicating that the user has sent too many requests in a given amount of time ('rate limiting').",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"500" : {
"description" : "As defined in [[rfc9110]]. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
},
"default" : {
"description" : "The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Imsx_StatusInfo"
}
}
}
}
},
"security" : [ {
"CCGSecurity" : [ "http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" ]
} ],
"x-operation-pid" : "org.1edtech.eduapi.v1p0.rest.getaffiliationbyid.operation"
}
}
},
"components" : {
"schemas" : {
"TypedAddress" : {
"required" : [ "addressType" ],
"type" : "object",
"properties" : {
"addressCountry" : {
"type" : "string",
"description" : "A country.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"geo" : {
"$ref" : "#/components/schemas/GeoCoordinates"
},
"addressCountryCode" : {
"type" : "string",
"description" : "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.countrycode.class"
},
"streetAddress" : {
"type" : "string",
"description" : "A street address within the locality.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"addressType" : {
"description" : "The type of address. This is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "visitingAddress", "mailingAddress", "permanentAddress", "deliveryAddress", "billingAddress", "homeAddress", "workAddress", "formerAddress" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.addresstypeenum.class"
},
"postalCode" : {
"type" : "string",
"description" : "A postal code.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"addressLocality" : {
"type" : "string",
"description" : "A locality within the region.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"addressRegion" : {
"type" : "string",
"description" : "A region within the country.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"postOfficeBoxNumber" : {
"type" : "string",
"description" : "A post office box number for PO box addresses.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
}
},
"additionalProperties" : false,
"description" : "A typed address.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.typedaddress.class"
},
"TypedPhone" : {
"required" : [ "phoneType", "phone" ],
"type" : "object",
"properties" : {
"phoneType" : {
"description" : "The type of phone number. This is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "homePhone", "workPhone", "icePhone" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.phonetypeenum.class"
},
"phone" : {
"type" : "string",
"description" : "A phone number.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.phonenumber.class"
}
},
"additionalProperties" : false,
"description" : "A typed phone number.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.typedphone.class"
},
"Organization" : {
"required" : [ "sourcedId", "recordLanguage", "name", "organizationType", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"parent" : {
"type" : "string",
"description" : "A reference to a parent organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"otherAddresses" : {
"minItems" : 0,
"type" : "array",
"description" : "A list of other addresses.",
"items" : {
"$ref" : "#/components/schemas/TypedAddress"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.typedaddress.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"description" : {
"minItems" : 0,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"organizationType" : {
"type" : "string",
"description" : "The type of Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"extensions" : {
"$ref" : "#/components/schemas/organizationExtensions"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"children" : {
"minItems" : 0,
"type" : "array",
"description" : "References to child organizations.",
"items" : {
"type" : "string",
"description" : "A reference to an `Organization` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"name" : {
"minItems" : 1,
"type" : "array",
"description" : "A name for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryAddress" : {
"$ref" : "#/components/schemas/OptionallyTypedAddress"
}
},
"additionalProperties" : false,
"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.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.organization.class"
},
"educationOfferingExtensions" : {
"type" : "object",
"properties" : { },
"additionalProperties" : true,
"description" : "Extension properties related to education offerings",
"x-class-pid" : "org.1edtech.eduapi.v1p0.educationofferingextensions.class"
},
"personExtensions" : {
"type" : "object",
"properties" : { },
"additionalProperties" : true,
"description" : "Extension properties related to Edu-API persons",
"x-class-pid" : "org.1edtech.eduapi.v1p0.personextensions.class"
},
"CourseOffering" : {
"required" : [ "offeringType", "course", "sourcedId", "recordLanguage", "title", "description", "primaryCode", "organization", "academicSession", "offeringFormat", "registrationStatus", "startDate", "endDate", "recordStatus" ],
"type" : "object",
"properties" : {
"minNumberStudents" : {
"type" : "integer",
"description" : "The minimum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"synchronicity" : {
"description" : "An indicator of whether instructor and learner must both be present at the same time",
"anyOf" : [ {
"type" : "string",
"enum" : [ "hybrid", "asynchronous", "synchronous" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.synchronicityenum.class"
},
"parent" : {
"minItems" : 0,
"type" : "array",
"description" : "A reference to the parent collectionOffering.",
"items" : {
"type" : "string",
"description" : "A reference to an `EducationCollectionOffering` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.collectionofferingguidref.class"
},
"registrationStatus" : {
"type" : "string",
"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.",
"enum" : [ "open", "closed", "pending", "waitlist" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.registrationstatusenum.class"
},
"roleEnablement" : {
"minItems" : 0,
"type" : "array",
"description" : "An array to store associated dates for a course offering. 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.",
"items" : {
"$ref" : "#/components/schemas/RoleEnablement"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.roleenablement.class"
},
"offeringType" : {
"description" : "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "standard", "honors", "research", "independentStudy", "practicum", "internship", "studyAbroad", "capstone", "clinical", "correspondence", "fieldExperience", "seminar", "thesis" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.coursetypeenum.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"paceOfStudy" : {
"type" : "string",
"description" : "The tempo that the course is taught at as a percentage of a normal course.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.percentage.class"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"enrolledNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have already enrolled for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"academicSessionCode" : {
"type" : "string",
"description" : "A business code that a system might use to reference an academic session.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"offeringFormat" : {
"description" : "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"anyOf" : [ {
"type" : "string",
"enum" : [ "online", "blended", "onGround" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.offeringformatenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"course" : {
"type" : "string",
"description" : "A reference to the courseTemplate.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.coursetemplateguidref.class"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"pendingNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have a pending enrollment request for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"academicSession" : {
"type" : "string",
"description" : "A reference to an Edu-API Academic Session",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.academicsessionguidref.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationOfferingExtensions"
},
"maxNumberStudents" : {
"type" : "integer",
"description" : "The maximum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"locations" : {
"minItems" : 0,
"type" : "array",
"description" : "A container for describing where the entity takes place. This could be as a description or as a geo location",
"items" : {
"$ref" : "#/components/schemas/Location"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.location.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
}
},
"additionalProperties" : false,
"description" : "Relates a course to one or more delivery scenarios.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.courseoffering.class"
},
"PersonNameEntry" : {
"required" : [ "nameType" ],
"type" : "object",
"properties" : {
"nameType" : {
"description" : "The type of name described in this entry.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "legalName", "preferredName", "phoneticName", "aliasName", "formerName" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.personnametypeenum.class"
},
"honorificSuffix" : {
"type" : "string",
"description" : "Honorific suffix(es) following a person's name (e.g. 'M.D, PhD').",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"familyName" : {
"type" : "string",
"description" : "Family name. In the western world, often referred to as the 'last name' of a person.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"givenName" : {
"type" : "string",
"description" : "Given name. In the western world, often referred to as the 'first name' of a person.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"familyNamePrefix" : {
"type" : "string",
"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').",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"patronymicName" : {
"type" : "string",
"description" : "Patronymic name.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"honorificPrefix" : {
"type" : "string",
"description" : "Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr').",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"additionalName" : {
"type" : "string",
"description" : "Additional name. Includes what is often referred to as 'middle name' in the western world.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
}
},
"additionalProperties" : false,
"description" : "The PersonNameEntry complex type.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.personnameentry.class"
},
"IdentifierEntry" : {
"required" : [ "identifier", "identifierType" ],
"type" : "object",
"properties" : {
"identifier" : {
"type" : "string",
"description" : "An identifier.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.identifier.class"
},
"identifierType" : {
"description" : "The identifier type.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "systemId", "productId", "userName", "accountId", "emailAddress", "nationalIdentityNumber", "isbn", "issn", "lisSourcedId", "oneRosterSourcedId", "sisSourcedId", "ltiContextId", "ltiDeploymentId", "ltiToolId", "ltiPlatformId", "ltiUserId", "identifier" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifiertypeenum.class"
}
},
"additionalProperties" : false,
"description" : "A container to transmit additional needed identifiers",
"x-class-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"Imsx_CodeMinorField" : {
"required" : [ "imsx_codeMinorFieldName", "imsx_codeMinorFieldValue" ],
"type" : "object",
"properties" : {
"imsx_codeMinorFieldName" : {
"type" : "string",
"description" : "This should contain the identity of the system that has produced the code minor status code report.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.normalizedstring.class"
},
"imsx_codeMinorFieldValue" : {
"type" : "string",
"description" : "The code minor status code (this is a value from the corresponding enumerated vocabulary).",
"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" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.imsx_codeminorfieldvalue.class"
}
},
"additionalProperties" : false,
"description" : "This is the container for a single code minor status code.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.imsx_codeminorfield.class"
},
"OptionallyTypedAddress" : {
"type" : "object",
"properties" : {
"addressCountry" : {
"type" : "string",
"description" : "A country.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"geo" : {
"$ref" : "#/components/schemas/GeoCoordinates"
},
"addressCountryCode" : {
"type" : "string",
"description" : "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.countrycode.class"
},
"streetAddress" : {
"type" : "string",
"description" : "A street address within the locality.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"addressType" : {
"description" : "The type of address. This is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "visitingAddress", "mailingAddress", "permanentAddress", "deliveryAddress", "billingAddress", "homeAddress", "workAddress", "formerAddress" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.addresstypeenum.class"
},
"postalCode" : {
"type" : "string",
"description" : "A postal code.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"addressLocality" : {
"type" : "string",
"description" : "A locality within the region.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"addressRegion" : {
"type" : "string",
"description" : "A region within the country.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"postOfficeBoxNumber" : {
"type" : "string",
"description" : "A post office box number for PO box addresses.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
}
},
"additionalProperties" : false,
"description" : "A optionally typed address.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.optionallytypedaddress.class"
},
"academicSessionExtensions" : {
"type" : "object",
"properties" : { },
"additionalProperties" : true,
"description" : "Extension properties related to education academic sessions",
"x-class-pid" : "org.1edtech.eduapi.v1p0.academicsessionextensions.class"
},
"Education" : {
"required" : [ "sourcedId", "recordLanguage", "title", "description", "primaryCode", "organization", "level", "gradingScheme", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Any number of additional human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"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.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "graduate", "undergraduate", "doctoral" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.educationlevelenum.class"
},
"creditsAwarded" : {
"type" : "string",
"description" : "A description of the credits that the student receives after the completion of the education.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationExtensions"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"gradingScheme" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
}
},
"additionalProperties" : false,
"description" : "A description of an abstract education.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.education.class"
},
"CollectionOffering" : {
"required" : [ "offeringType", "collection", "sourcedId", "recordLanguage", "title", "description", "primaryCode", "organization", "academicSession", "offeringFormat", "registrationStatus", "startDate", "endDate", "recordStatus" ],
"type" : "object",
"properties" : {
"minNumberStudents" : {
"type" : "integer",
"description" : "The minimum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"synchronicity" : {
"description" : "An indicator of whether instructor and learner must both be present at the same time",
"anyOf" : [ {
"type" : "string",
"enum" : [ "hybrid", "asynchronous", "synchronous" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.synchronicityenum.class"
},
"parent" : {
"minItems" : 0,
"type" : "array",
"description" : "A reference to parent collectionOffering (if present).",
"items" : {
"type" : "string",
"description" : "A reference to an `EducationCollectionOffering` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.collectionofferingguidref.class"
},
"registrationStatus" : {
"type" : "string",
"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.",
"enum" : [ "open", "closed", "pending", "waitlist" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.registrationstatusenum.class"
},
"roleEnablement" : {
"minItems" : 0,
"type" : "array",
"description" : "An array to store associated dates for a course offering. 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.",
"items" : {
"$ref" : "#/components/schemas/RoleEnablement"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.roleenablement.class"
},
"offeringType" : {
"description" : "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "program", "generalEducation", "requiredCollection", "electiveCollection", "capstoneCollection", "majorCollection", "minorCollection", "programSpecialization", "nonDegreeCollection" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.collectiontypeenum.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"paceOfStudy" : {
"type" : "string",
"description" : "The tempo that the course is taught at as a percentage of a normal course.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.percentage.class"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"enrolledNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have already enrolled for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"academicSessionCode" : {
"type" : "string",
"description" : "A business code that a system might use to reference an academic session.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"offeringFormat" : {
"description" : "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"anyOf" : [ {
"type" : "string",
"enum" : [ "online", "blended", "onGround" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.offeringformatenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"pendingNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have a pending enrollment request for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"collection" : {
"type" : "string",
"description" : "A reference to the collectionTemplate.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.collectiontemplateguidref.class"
},
"academicSession" : {
"type" : "string",
"description" : "A reference to an Edu-API Academic Session",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.academicsessionguidref.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationOfferingExtensions"
},
"maxNumberStudents" : {
"type" : "integer",
"description" : "The maximum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"locations" : {
"minItems" : 0,
"type" : "array",
"description" : "A container for describing where the entity takes place. This could be as a description or as a geo location",
"items" : {
"$ref" : "#/components/schemas/Location"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.location.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
}
},
"additionalProperties" : false,
"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.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.collectionoffering.class"
},
"Enrollment" : {
"required" : [ "sourcedId", "recordLanguage", "isActive", "enrollmentStatus", "person", "role", "educationOffering", "offeringType", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"role" : {
"description" : "The role of the associated person in the given context.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "member", "chair", "staff", "student", "administrator", "aide", "guardian", "parent", "proctor", "relative", "teacher", "advisor", "teachingAssistant" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.roletypeenum.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"offeringType" : {
"description" : "The type of education being offered. This is based on an enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "collection", "course", "component" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.educationofferingtypeenum.class"
},
"educationOffering" : {
"type" : "string",
"description" : "A reference to an Edu-API offering entity. This is the instantiated Education the person is being enrolled on.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.educationofferingguidref.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"isActive" : {
"type" : "boolean",
"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.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.boolean.class"
},
"extensions" : {
"$ref" : "#/components/schemas/enrollmentExtensions"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"enrollmentStatus" : {
"description" : "The status of this enrollment.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "onLeave", "withdrawn", "accepted", "pending", "cancelled", "registered", "revoked", "Interruption", "finished", "withdrawnFailing", "withdrawnPassing", "dropped", "suspended", "enrolled", "declined", "deferred", "onHold" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.enrollmentstatusenum.class"
},
"person" : {
"type" : "string",
"description" : "A reference to an Edu-API Person.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.personguidref.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
}
},
"additionalProperties" : false,
"description" : "The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.enrollment.class"
},
"LanguageTypedString" : {
"required" : [ "recordLanguage", "value" ],
"type" : "object",
"properties" : {
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"value" : {
"type" : "string",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
}
},
"additionalProperties" : false,
"description" : "A String with an associated language code.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"ComponentTemplate" : {
"required" : [ "componentType", "sourcedId", "recordLanguage", "title", "description", "primaryCode", "organization", "level", "gradingScheme", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Any number of additional human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"componentType" : {
"description" : "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "individualizedInstruction", "integratedLectureLab", "laboratory", "lecture", "practicum", "recitation", "research", "seminar", "independentStudy", "fieldExperience", "exam" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.componenttypeenum.class"
},
"parent" : {
"minItems" : 0,
"type" : "array",
"description" : "A reference to the parent Course.",
"items" : {
"type" : "string",
"description" : "A reference to a `Course` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.coursetemplateguidref.class"
},
"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.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "graduate", "undergraduate", "doctoral" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.educationlevelenum.class"
},
"creditsAwarded" : {
"type" : "string",
"description" : "A description of the credits that the student receives after the completion of the education.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationExtensions"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"gradingScheme" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
}
},
"additionalProperties" : false,
"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.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.componenttemplate.class"
},
"TypedEmail" : {
"required" : [ "emailType", "email" ],
"type" : "object",
"properties" : {
"emailType" : {
"description" : "The type of email address. This is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "homeEmail", "workEmail", "iceEmail" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.emailtypeenum.class"
},
"email" : {
"type" : "string",
"description" : "An email address.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.emailaddress.class"
}
},
"additionalProperties" : false,
"description" : "A typed email address.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.typedemail.class"
},
"AcademicSession" : {
"required" : [ "sourcedId", "recordLanguage", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"parent" : {
"type" : "string",
"description" : "A reference to another Edu-API Academic Session that serves as a parent `AcademicSession`.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.academicsessionguidref.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"title" : {
"minItems" : 0,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"extensions" : {
"$ref" : "#/components/schemas/academicSessionExtensions"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"children" : {
"minItems" : 0,
"type" : "array",
"description" : "A reference to another Edu-API Academic Session that serves as a Child `AcademicSession`s.",
"items" : {
"type" : "string",
"description" : "A reference to an `AcademicSession` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.academicsessionguidref.class"
},
"sessionType" : {
"description" : "The type of academic session. This is based upon an enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "gradingPeriod", "semester", "schoolYear", "term", "studyPeriod" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.academicsessiontypeenum.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
}
},
"additionalProperties" : false,
"description" : "A calendar period during which a school or institution schedules classes, offerings, or other units of learning for availability.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.academicsession.class"
},
"Imsx_CodeMinor" : {
"required" : [ "imsx_codeMinorField" ],
"type" : "object",
"properties" : {
"imsx_codeMinorField" : {
"minItems" : 1,
"type" : "array",
"description" : "Each reported code minor status code.",
"items" : {
"$ref" : "#/components/schemas/Imsx_CodeMinorField"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.imsx_codeminorfield.class"
}
},
"additionalProperties" : false,
"description" : "This is the container for the set of code minor status codes reported in the responses from the Service Provider.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.imsx_codeminor.class"
},
"Affiliation" : {
"required" : [ "sourcedId", "person", "organization", "role", "affiliationStatus", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"extensions" : {
"minItems" : 0,
"type" : "array",
"description" : "A container for extension objects.",
"items" : {
"$ref" : "#/components/schemas/affiliationExtensions"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.affiliationextensions.class"
},
"role" : {
"description" : "The role of the associated person in the given context.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "member", "chair", "staff", "student", "administrator", "aide", "guardian", "parent", "proctor", "relative", "teacher", "advisor", "teachingAssistant" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.roletypeenum.class"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"affiliationStatus" : {
"description" : "The status of the person's affiliation with the organization. This is based upon an enumerated vocabulary",
"anyOf" : [ {
"type" : "string",
"enum" : [ "active", "inactive", "auditing", "withdrawn" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.affiliationstatusenum.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"person" : {
"type" : "string",
"description" : "A reference to an Edu-API Person.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.personguidref.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
}
},
"additionalProperties" : false,
"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.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.affiliation.class"
},
"PersonName" : {
"type" : "object",
"properties" : {
"honorificSuffix" : {
"type" : "string",
"description" : "Honorific suffix(es) following a person's name (e.g. 'M.D, PhD').",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"familyName" : {
"type" : "string",
"description" : "Family name. In the western world, often referred to as the 'last name' of a person.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"givenName" : {
"type" : "string",
"description" : "Given name. In the western world, often referred to as the 'first name' of a person.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"familyNamePrefix" : {
"type" : "string",
"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').",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"patronymicName" : {
"type" : "string",
"description" : "Patronymic name.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"honorificPrefix" : {
"type" : "string",
"description" : "Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr').",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"additionalName" : {
"type" : "string",
"description" : "Additional name. Includes what is often referred to as 'middle name' in the western world.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
}
},
"additionalProperties" : false,
"description" : "The set of parts that are used to define an Edu-API persons name, this design attempts to account for international naming needs.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.personname.class"
},
"EducationOffering" : {
"required" : [ "sourcedId", "offeringType", "recordLanguage", "title", "description", "primaryCode", "organization", "academicSession", "offeringFormat", "registrationStatus", "startDate", "endDate", "recordStatus" ],
"type" : "object",
"properties" : {
"minNumberStudents" : {
"type" : "integer",
"description" : "The minimum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"synchronicity" : {
"description" : "An indicator of whether instructor and learner must both be present at the same time",
"anyOf" : [ {
"type" : "string",
"enum" : [ "hybrid", "asynchronous", "synchronous" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.synchronicityenum.class"
},
"registrationStatus" : {
"type" : "string",
"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.",
"enum" : [ "open", "closed", "pending", "waitlist" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.registrationstatusenum.class"
},
"roleEnablement" : {
"minItems" : 0,
"type" : "array",
"description" : "An array to store associated dates for a course offering. 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.",
"items" : {
"$ref" : "#/components/schemas/RoleEnablement"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.roleenablement.class"
},
"offeringType" : {
"description" : "The type of education being offered. This is based on an enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "collection", "course", "component" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.educationofferingtypeenum.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"paceOfStudy" : {
"type" : "string",
"description" : "The tempo that the course is taught at as a percentage of a normal course.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.percentage.class"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"enrolledNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have already enrolled for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"academicSessionCode" : {
"type" : "string",
"description" : "A business code that a system might use to reference an academic session.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"offeringFormat" : {
"description" : "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"anyOf" : [ {
"type" : "string",
"enum" : [ "online", "blended", "onGround" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.offeringformatenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"pendingNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have a pending enrollment request for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"academicSession" : {
"type" : "string",
"description" : "A reference to an Edu-API Academic Session",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.academicsessionguidref.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationOfferingExtensions"
},
"maxNumberStudents" : {
"type" : "integer",
"description" : "The maximum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"locations" : {
"minItems" : 0,
"type" : "array",
"description" : "A container for describing where the entity takes place. This could be as a description or as a geo location",
"items" : {
"$ref" : "#/components/schemas/Location"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.location.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
}
},
"additionalProperties" : false,
"description" : "A description of an abstract educational offering.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.educationoffering.class"
},
"CourseTemplate" : {
"required" : [ "courseType", "sourcedId", "recordLanguage", "title", "description", "primaryCode", "organization", "level", "gradingScheme", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Any number of additional human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"parent" : {
"minItems" : 0,
"type" : "array",
"description" : "A reference to the parent EducationCollection.",
"items" : {
"type" : "string",
"description" : "A reference to an `EducationCollection` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.collectiontemplateguidref.class"
},
"courseType" : {
"description" : "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "standard", "honors", "research", "independentStudy", "practicum", "internship", "studyAbroad", "capstone", "clinical", "correspondence", "fieldExperience", "seminar", "thesis" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.coursetypeenum.class"
},
"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.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "graduate", "undergraduate", "doctoral" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.educationlevelenum.class"
},
"creditsAwarded" : {
"type" : "string",
"description" : "A description of the credits that the student receives after the completion of the education.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationExtensions"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"gradingScheme" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
}
},
"additionalProperties" : false,
"description" : "A time independent description of a learning experience, such that it may appear in a catalog.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.coursetemplate.class"
},
"Imsx_StatusInfo" : {
"required" : [ "imsx_codeMajor", "imsx_severity" ],
"type" : "object",
"properties" : {
"imsx_codeMinor" : {
"$ref" : "#/components/schemas/Imsx_CodeMinor"
},
"imsx_codeMajor" : {
"type" : "string",
"description" : "The code major value (from the corresponding enumerated vocabulary).",
"enum" : [ "failure", "processing", "success", "unsupported" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.imsx_codemajor.class"
},
"imsx_description" : {
"type" : "string",
"description" : "A human readable description supplied by the entity creating the status code information.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"imsx_severity" : {
"type" : "string",
"description" : "The severity value (from the corresponding enumerated vocabulary).",
"enum" : [ "error", "status", "warning" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.imsx_severity.class"
}
},
"additionalProperties" : false,
"description" : "This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.imsx_statusinfo.class"
},
"CollectionTemplate" : {
"required" : [ "collectionType", "sourcedId", "recordLanguage", "title", "description", "primaryCode", "organization", "level", "gradingScheme", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Any number of additional human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"parent" : {
"minItems" : 0,
"type" : "array",
"description" : "A reference to a parent EducationCollection (if present).",
"items" : {
"type" : "string",
"description" : "A reference to an `EducationCollection` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.collectiontemplateguidref.class"
},
"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.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "graduate", "undergraduate", "doctoral" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.educationlevelenum.class"
},
"creditsAwarded" : {
"type" : "string",
"description" : "A description of the credits that the student receives after the completion of the education.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"collectionType" : {
"description" : "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "program", "generalEducation", "requiredCollection", "electiveCollection", "capstoneCollection", "majorCollection", "minorCollection", "programSpecialization", "nonDegreeCollection" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.collectiontypeenum.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationExtensions"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"gradingScheme" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
}
},
"additionalProperties" : false,
"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.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.collectiontemplate.class"
},
"ComponentOffering" : {
"required" : [ "offeringType", "component", "sourcedId", "recordLanguage", "title", "description", "primaryCode", "organization", "academicSession", "offeringFormat", "registrationStatus", "startDate", "endDate", "recordStatus" ],
"type" : "object",
"properties" : {
"minNumberStudents" : {
"type" : "integer",
"description" : "The minimum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"synchronicity" : {
"description" : "An indicator of whether instructor and learner must both be present at the same time",
"anyOf" : [ {
"type" : "string",
"enum" : [ "hybrid", "asynchronous", "synchronous" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.synchronicityenum.class"
},
"parent" : {
"minItems" : 0,
"type" : "array",
"description" : "A reference to the parent courseOffering.",
"items" : {
"type" : "string",
"description" : "A reference to a `CourseOffering` object that has an allocated sourcedId (`GUID`)."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.courseofferingguidref.class"
},
"registrationStatus" : {
"type" : "string",
"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.",
"enum" : [ "open", "closed", "pending", "waitlist" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.registrationstatusenum.class"
},
"roleEnablement" : {
"minItems" : 0,
"type" : "array",
"description" : "An array to store associated dates for a course offering. 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.",
"items" : {
"$ref" : "#/components/schemas/RoleEnablement"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.roleenablement.class"
},
"offeringType" : {
"description" : "A representation of what the entity defines. It is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "individualizedInstruction", "integratedLectureLab", "laboratory", "lecture", "practicum", "recitation", "research", "seminar", "independentStudy", "fieldExperience", "exam" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.componenttypeenum.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
},
"description" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"title" : {
"minItems" : 1,
"type" : "array",
"description" : "A set of titles for the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"primaryCode" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"paceOfStudy" : {
"type" : "string",
"description" : "The tempo that the course is taught at as a percentage of a normal course.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.percentage.class"
},
"creditType" : {
"description" : "Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "credit", "nonCredit" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.credittypeenum.class"
},
"enrolledNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have already enrolled for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"academicSessionCode" : {
"type" : "string",
"description" : "A business code that a system might use to reference an academic session.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"offeringFormat" : {
"description" : "The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary",
"anyOf" : [ {
"type" : "string",
"enum" : [ "online", "blended", "onGround" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.offeringformatenum.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"teachingLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The main language used to relay the content of the offering.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherCodes" : {
"minItems" : 0,
"type" : "array",
"description" : "Human readable codes/identifiers for the entity being described",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"pendingNumberStudents" : {
"type" : "integer",
"description" : "The number of students that have a pending enrollment request for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"academicSession" : {
"type" : "string",
"description" : "A reference to an Edu-API Academic Session",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.academicsessionguidref.class"
},
"component" : {
"type" : "string",
"description" : "A reference to the componentTemplate.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.componenttemplateguidref.class"
},
"extensions" : {
"$ref" : "#/components/schemas/educationOfferingExtensions"
},
"maxNumberStudents" : {
"type" : "integer",
"description" : "The maximum number of students allowed to enroll for this offering",
"format" : "int32",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.integer.class"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"organizationCode" : {
"type" : "string",
"description" : "A business code used to system might use to reference an organization",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"organization" : {
"type" : "string",
"description" : "A reference to an Edu-API Organization.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.organizationguidref.class"
},
"locations" : {
"minItems" : 0,
"type" : "array",
"description" : "A container for describing where the entity takes place. This could be as a description or as a geo location",
"items" : {
"$ref" : "#/components/schemas/Location"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.location.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datez.class"
}
},
"additionalProperties" : false,
"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",
"x-class-pid" : "org.1edtech.eduapi.v1p0.componentoffering.class"
},
"Agents" : {
"required" : [ "agentType", "person" ],
"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.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "parent", "guardian", "emergencyContact" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.agenttypeenum.class"
},
"person" : {
"type" : "string",
"description" : "A reference to an Edu-API person. This represents the person acting in an agency capacity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.personguidref.class"
},
"domain" : {
"type" : "string",
"description" : "The context within which the person can act as an agent in.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"description" : {
"minItems" : 0,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
}
},
"additionalProperties" : false,
"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.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.agents.class"
},
"RoleEnablement" : {
"required" : [ "role" ],
"type" : "object",
"properties" : {
"role" : {
"description" : "The role of the associated person in the given context.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "member", "chair", "staff", "student", "administrator", "aide", "guardian", "parent", "proctor", "relative", "teacher", "advisor", "teachingAssistant" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.roletypeenum.class"
},
"endDate" : {
"type" : "string",
"description" : "The end date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"startDate" : {
"type" : "string",
"description" : "The start date of the associated event.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
}
},
"additionalProperties" : false,
"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.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.roleenablement.class"
},
"OptionallyTypedEmail" : {
"required" : [ "email" ],
"type" : "object",
"properties" : {
"emailType" : {
"description" : "The type of email address.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "homeEmail", "workEmail", "iceEmail" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.emailtypeenum.class"
},
"email" : {
"type" : "string",
"description" : "An email address.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.emailaddress.class"
}
},
"additionalProperties" : false,
"description" : "An optionally typed email address.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.optionallytypedemail.class"
},
"affiliationExtensions" : {
"type" : "object",
"properties" : { },
"additionalProperties" : true,
"description" : "Extension properties related to affiliations",
"x-class-pid" : "org.1edtech.eduapi.v1p0.affiliationextensions.class"
},
"enrollmentExtensions" : {
"type" : "object",
"properties" : { },
"additionalProperties" : true,
"description" : "Extension properties related to enrollments",
"x-class-pid" : "org.1edtech.eduapi.v1p0.enrollmentextensions.class"
},
"organizationExtensions" : {
"type" : "object",
"properties" : { },
"additionalProperties" : true,
"description" : "Extension properties related to education organizations",
"x-class-pid" : "org.1edtech.eduapi.v1p0.organizationextensions.class"
},
"GeoCoordinates" : {
"required" : [ "latitude", "longitude" ],
"type" : "object",
"properties" : {
"latitude" : {
"type" : "number",
"description" : "The latitude of the location [[WGS-84]].",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.float.class"
},
"longitude" : {
"type" : "number",
"description" : "The longitude of the location [[WGS-84]].",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.float.class"
}
},
"additionalProperties" : false,
"description" : "The geographic coordinates of a location.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.geocoordinates.class"
},
"educationExtensions" : {
"type" : "object",
"properties" : { },
"additionalProperties" : true,
"description" : "Extension properties related to education templates",
"x-class-pid" : "org.1edtech.eduapi.v1p0.educationextensions.class"
},
"OptionallyTypedPhone" : {
"required" : [ "phone" ],
"type" : "object",
"properties" : {
"phoneType" : {
"description" : "The type of address. This is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "homePhone", "workPhone", "icePhone" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.phonetypeenum.class"
},
"phone" : {
"type" : "string",
"description" : "A phone number.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.phonenumber.class"
}
},
"additionalProperties" : false,
"description" : "An optionally typed phone number.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.optionallytypedphone.class"
},
"Person" : {
"required" : [ "sourcedId", "recordLanguage", "recordStatus" ],
"type" : "object",
"properties" : {
"sourcedId" : {
"type" : "string",
"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).",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.guid.class"
},
"otherEmails" : {
"minItems" : 0,
"type" : "array",
"description" : "Additional email addresses of a subject.",
"items" : {
"$ref" : "#/components/schemas/TypedEmail"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.typedemail.class"
},
"placeOfBirth" : {
"type" : "string",
"description" : "The place of birth. Commonly a city or municipality.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"gender" : {
"description" : "The gender of the individual. It is based on an extensible enumerated vocabulary.",
"anyOf" : [ {
"type" : "string",
"enum" : [ "male", "female", "unspecified", "other" ]
}, {
"pattern" : "(ext:)[a-zA-Z0-9\\.\\-_]+",
"type" : "string"
} ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.genderenum.class"
},
"otherAddresses" : {
"minItems" : 0,
"type" : "array",
"description" : "A list of other addresses.",
"items" : {
"$ref" : "#/components/schemas/TypedAddress"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.typedaddress.class"
},
"dateOfDeath" : {
"type" : "string",
"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.",
"format" : "date",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.date.class"
},
"recordLanguage" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "The primary language used in the described entity.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"formattedName" : {
"type" : "string",
"description" : "the long form formatted name, this will often be dependent on region or system requirements.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.nfcstring.class"
},
"dateOfBirth" : {
"type" : "string",
"description" : "The date of birth.",
"format" : "date",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.date.class"
},
"agents" : {
"minItems" : 0,
"type" : "array",
"description" : "A container used that define relationships between an Edu-API person and other Edu-API Persons who can represent or act on behalf of them. This includes a way to describe the type of relationship between the two people. E.g. Parents or Guardians often serve as the agent for a student.",
"items" : {
"$ref" : "#/components/schemas/Agents"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.agents.class"
},
"legalName" : {
"$ref" : "#/components/schemas/PersonName"
},
"isDeceased" : {
"type" : "boolean",
"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.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.boolean.class"
},
"primaryPhone" : {
"$ref" : "#/components/schemas/OptionallyTypedPhone"
},
"extensions" : {
"$ref" : "#/components/schemas/personExtensions"
},
"otherIdentifiers" : {
"minItems" : 0,
"type" : "array",
"description" : "A list of additional identifiers for the described entity.",
"items" : {
"$ref" : "#/components/schemas/IdentifierEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.identifierentry.class"
},
"otherNames" : {
"minItems" : 0,
"type" : "array",
"description" : "A list of other names for this person.",
"items" : {
"$ref" : "#/components/schemas/PersonNameEntry"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.personnameentry.class"
},
"dateLastModified" : {
"type" : "string",
"description" : "A timestamp describing when this record was last modified.",
"format" : "date-time",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.datetimez.class"
},
"recordStatus" : {
"type" : "string",
"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.",
"enum" : [ "active", "deleted", "inactive" ],
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.recordstatustypeenum.class"
},
"countryOfBirth" : {
"type" : "string",
"description" : "The country of birth.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.primitive.string.class"
},
"otherPhones" : {
"minItems" : 0,
"type" : "array",
"description" : "A list of other phone numbers",
"items" : {
"$ref" : "#/components/schemas/TypedPhone"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.typedphone.class"
},
"pronouns" : {
"minItems" : 0,
"type" : "array",
"description" : "Pronoun(s) by which this person is referenced. Examples (in the case of English) include 'she/her/hers', 'he/him/his', 'they/them/theirs', 'ze/hir/hir', 'xe/xir', or a statement that the person's name should be used instead of any pronoun.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
},
"languagesSpoken" : {
"minItems" : 0,
"type" : "array",
"description" : "The list of languages that this person speaks.",
"items" : {
"pattern" : "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$",
"type" : "string",
"description" : "A language code [[BCP47]]."
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.languagecode.class"
},
"primaryAddress" : {
"$ref" : "#/components/schemas/OptionallyTypedAddress"
},
"primaryEmail" : {
"$ref" : "#/components/schemas/OptionallyTypedEmail"
}
},
"additionalProperties" : false,
"description" : "A Person represents a human being, alive or deceased, real or imaginary.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.person.class"
},
"Location" : {
"type" : "object",
"properties" : {
"identifier" : {
"type" : "string",
"description" : "An identifier.",
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.derived.identifier.class"
},
"geoLocation" : {
"$ref" : "#/components/schemas/GeoCoordinates"
},
"description" : {
"minItems" : 0,
"type" : "array",
"description" : "A set of descriptions of the associated entity with a designated language for each entry.",
"items" : {
"$ref" : "#/components/schemas/LanguageTypedString"
},
"x-srcprop-pid" : "org.1edtech.eduapi.v1p0.languagetypedstring.class"
}
},
"additionalProperties" : false,
"description" : "A container for describing the location an entity takes place at.",
"x-class-pid" : "org.1edtech.eduapi.v1p0.location.class"
}
},
"parameters" : {
"filter" : {
"name" : "filter",
"in" : "query",
"description" : "Specifies that the returned collection should be filtered using the supplied criteria.",
"required" : false,
"allowEmptyValue" : false,
"style" : "form",
"schema" : {
"type" : "string",
"description" : "Character strings."
}
},
"offset" : {
"name" : "offset",
"in" : "query",
"description" : "Specifices the number of the first record to be supplied in the segmented response message. Default: 0.",
"required" : false,
"allowEmptyValue" : false,
"style" : "form",
"schema" : {
"minimum" : 0,
"type" : "integer",
"format" : "int32"
}
},
"limit" : {
"name" : "limit",
"in" : "query",
"description" : "Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100.",
"required" : false,
"allowEmptyValue" : false,
"style" : "form",
"schema" : {
"minimum" : 1,
"type" : "integer",
"format" : "int32"
}
},
"orderBy" : {
"name" : "orderBy",
"in" : "query",
"description" : "Specifies whether the collection should be ordered ascending (asc) or descending (desc).",
"required" : false,
"allowEmptyValue" : false,
"style" : "form",
"schema" : {
"type" : "string",
"description" : "Character strings."
}
},
"sort" : {
"name" : "sort",
"in" : "query",
"description" : "Specifies that the collection should be sorted on the given data field value. The form of ordering is implementation dependent if the 'orderBy' attribute is not used.",
"required" : false,
"allowEmptyValue" : false,
"style" : "form",
"schema" : {
"type" : "string",
"description" : "Character strings."
}
}
},
"headers" : {
"X-Total-Count" : {
"description" : "The total number of resources that are available to be returned",
"schema" : {
"type" : "integer",
"format" : "int32"
}
}
},
"securitySchemes" : {
"CCGSecurity" : {
"type" : "oauth2",
"flows" : {
"clientCredentials" : {
"tokenUrl" : "https://www.example.com/eduapi/ccg/token/",
"scopes" : {
"http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly" : "Default read-only scope. Enables access to all GET operations except those in PersonManagement",
"http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy" : "Enables access to all GET operations in PersonManagement"
}
}
}
}
},
"links" : {
"next" : {
"operationId" : "getEducationTemplates",
"parameters" : {
"limit" : "$request.path.limit",
"offset" : "$request.path.offset"
},
"description" : "Get the next set of resources i.e. from offset to offset+limit"
},
"last" : {
"operationId" : "getEducationTemplates",
"parameters" : {
"limit" : "$request.path.limit",
"offset" : "$request.path.offset"
},
"description" : "Get the last set of resources i.e. from offset to end"
},
"prev" : {
"operationId" : "getEducationTemplates",
"parameters" : {
"limit" : "$request.path.limit",
"offset" : "$request.path.offset"
},
"description" : "Get the previous set of resources i.e. from last_offset to last_offset+limit"
},
"first" : {
"operationId" : "getEducationTemplates",
"parameters" : {
"limit" : "$request.path.limit",
"offset" : "$request.path.offset"
},
"description" : "Get the first set of resources i.e. from first to limit"
}
}
}
}