Final

Edu-API Specification

IPR and Distribution Notices

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.

1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on 1EdTech's procedures with respect to rights in 1EdTech specifications can be found at the 1EdTech Intellectual Property Rights web page: https://www.1edtech.org/ip.

Copyright © 1EdTech Consortium, Inc. All Rights Reserved.

Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website: https://www.1edtech.org/standards/specification-license.

Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.

The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.

THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.

Trademark information: https://www.1edtech.org/about/legal/trademarks

Abstract

1EdTech's Edu-API standard defines a structured vocabulary and related services used to exchange education-related information between a variety of systems that manage higher education administration, student services, and teaching and learning. Edu-API addresses the need for standardized, interoperable data exchange between an institution's systems of record like a Student Information System and the downstream systems that consume that data, such as learning management systems, assessment platforms, and student service tools. The specification covers core academic entities including persons, organizations, academic sessions, course offerings, and enrollments, along with the relationships between them. This data can be used to present information to students, instructors, advisers, and administrators, enabling more effective decision-making and supporting learner success.

Introduction

This document serves as the primary specification for Edu-API v1.0. It covers the normative technical implementation requirements as well as provides the reader with context on the design decisions that led to this version.

Status of this document

This document is for the Final release of Edu-API V1.0, meaning the technical specification will also be in Final status. 1EdTech members are currently working towards successful implementations of the defined specification.

1EdTech strongly encourages its members and the community to provide feedback to continue the evolution and improvement of the Edu-API standard. To join the 1EdTech developer and conformance certification community focused on OneRoster and the other related 1EdTech standards please visit the 1EdTech EduERP alliance online here: https://standards.1edtech.org/edu-api/specifications/standards/v1p0

Audiences

The target readers for this document are:

  • Business Leaders - the people who are responsible for identifying the business need for Edu-API data interoperability.
  • Solution & Integration Architects - the people who are responsible for design of the systems exchanging Edu-API data.
  • Product & Integration Developers - people who will be doing the coding to add this functionality to the various systems.

Design Goals and Rationale

Edu-API is designed to address key provisioning/rostering use cases from the Student Information System (SIS) to consumers in a Higher Education context. Common consumers of Edu-API SIS data include Learning Management System (LMS) and other educational or administrative applications or solutions. The Edu-API core specification uses a REST binding with JSON data structures to achieve technical interoperability.

This includes the defining and provisioning of:

  • Courses and other educational entities, including Course collections, sometimes referred to as Programs;
  • Class sections, or other instantiations of education offerings, scheduled or unscheduled;
  • Education components, i.e. exams or other enrollable activities related to an education offering;
  • Persons, especially in the context of a relationship to an education or education offering, i.e., students and instructors;
  • Enrollments or other associations with an education offering.

Document Set

Here are the set of documents that make up the Edu-API v1p0 specification:

Technical Resources

Conformance

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

The key words MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULD, and SHOULD NOT in this document are to be interpreted as described in [RFC2119].

An implementation of this specification that fails to implement a MUST/REQUIRED/SHALL requirement or fails to abide by a MUST NOT/SHALL NOT prohibition is considered nonconformant. SHOULD/SHOULD NOT/RECOMMENDED statements constitute a best practice. Ignoring a best practice does not violate conformance but a decision to disregard such guidance should be carefully considered. MAY/OPTIONAL statements indicate that implementers are entirely free to choose whether or not to implement the option.

Key Concepts

The Edu-API document set makes liberal usage of the concepts and terminology described below.

Terminology

Below is a list of terms and acronyms that are used in the Edu-API document set.

Term Definition
GUID A Globally Unique Identifier
iPaaS Integration Platform as a Service is a system that standardizes
how applications are integrated into an ecosystem
JSON JavaScript Object Notation
LIS 1EdTech Learning Information Services: This is the legacy specification used to
support higher ed interoperability
LMS Learning Management System: A system that provides the framework and user
experience to handle the teaching and learning process
LTI 1EdTech Learning Tools Interoperability Standard. This is a specification that supports
integrations between learning platforms and learning tools via contextualized OIDC
based single sign on
OR 1EdTech OneRoster standard: This is a specification that deals with rostering and
other processes in the K12 Sector
REST Representational State Transfer
SIS Student Information System: The system that stores and tracks all student
information, including grades, attendance records, and more. The SIS is the most
common Edu-API Provider.

Edu-API Process Flow

Edu-API describes the two participants in Edu-API data exchanges as providers and consumers:

  • Edu-API Providers are systems, e.g. a Student Information System (SIS), that makes information available to other systems in the ecosystem.

  • Edu-API Consumers are systems, e.g. a Learning Management System (LMS), that make use of that information to facilitate teaching and learning or other important activities.

Author's note: This is intentionally the same terminology OneRoster uses.

Diagram showing the process flow in in Edu-API v1.0

Education and Education Templates

Edu-API defines different formats of Educations that may be offered throughout the world. To facilitate this the specification uses the concept of an Education as a general template for building out academic programs. Edu-API accomplishes this by the use of the following general structures:

  • Education Templates - In the context of Edu-API an Education Template is any kind of canonical non-instantiated learning units that have a structured relationship, e.g. a course,
  • Education Offerings - An instantiation of an Educational Template object. Once instantiated, an education becomes enrollable and contains information about the educational units as they contribute to a defined learning pathway.

The Edu-API specification defines 3 types of educations that can be used as either templates or offerings. Those are:

  • Collection - A grouping of educational items that together contribute to a defined learning pathway. For example a Major program,
  • Course - A unit of teaching that typically lasts one academic session. For example, a school runs its introductory level English course every term with four scheduled instances (represented by course offerings) and shared curriculum,
  • Component - Educational units that can be used to represent parts of a course. For example a physics course as described in a course catalog might include a lecture and a lab. In this scenario, the lecture and lab would both be represented in the Edu-API model as components.

Edu-API exchange methods

Synchronous

The primary exchange method defined in Edu-API v1.0 is a synchronous, REST API data exchange with JSON payloads. In this model, the Edu-API provider makes available a set of Edu-API REST endpoints that consumers use to access data. Unless otherwise stated, the examples and conventions in this document assume the RESTful implementation.

Asynchronous

An asynchronous binding of the Edu-API specification is also being developed by the Edu-API community. This binding will use the same payload definitions as the synchronous service. New service binding sections will be added to this document when that work is completed.

While this work is being done in parallel to the synchronous REST service, it is currently not included in Edu-API v1p0 final.

Relationship to OneRoster and LIS

OneRoster is a 1EdTech standard that supports interoperability needs in K12. LIS is the 1EdTech legacy standard that supports interoperability in the Higher Ed Space.

Edu-API was designed as the spiritual successor to LIS and as OneRoster for Higher Education. The goal was to supersede LIS with more modern usage patterns and build on the well adopted norms developed through OneRoster development cycles.

Conceptual Model

This conceptual model describes Edu-API concepts and the relationship between those concepts. The data model described in this document is the normative reference for the classes and properties that are used to implement Edu-API.

The conceptual model is targeted for all audiences (see Audiences), while the data model is targeted for Solution Architects and Product Developers.

The box surrounding the Education Offering represents the offering being bound to an academic session as its method of instantiation. This concept does not always hold true, but it is a common use scenario. Common outliers are programs in the field of competency based education (CBE).

Edu-API allows sessions that are not timebound to support these alternative patterns. This enables flexibility while retaining semantic consistency

Diagram show the major conceptual relationships in Edu-API v1.0

This diagram show how the 1st class entities are related in Edu-API v1.0. Here is an example using course as the education. A course offering, e.g. Biology 101 - Fall semester, takes place within an Academic Session (time bound or not), e.g. a semester. That course offering is an instance of template course, e.g. Biology 101. An Organization, e.g. a school, defines the course template and offers the course offering. John, a student, enrolls in the course offering, and is affiliated with, the school.

Edu-API Information Model

The logical data model shows how the entities in Edu-API's data model are related.

The logical data model shows how the entities in Edu-API's data model are related

Note: This diagram is a simplified, conceptual view of the Edu-API information model, not a complete or normative ERD. It shows the primary entities, selected key attributes, and their main relationships; it omits many attributes, data types, enumerations, extensions, and some relationships.

  1. Entities: Each box is an entity. The dark green header is the entity name; the rows below are its key attributes (not the full schema).
  2. Relationship lines: A line connects two related entities; the label names the relationship (e.g. Instantiates, Enrolled in).
  3. Cardinality marks (read at the end of the line closest to each entity):
    • Bar (|) — exactly one
    • Crow's foot (<) — many
    • Circle + crow's foot (o<) — zero or many
  4. Dashed groups: Templates (top) and Offerings (middle) are grouped. A line attached to a group's border applies to every entity in it (e.g. an Enrollment is for any Collection, Course, or Component Offering).
  5. Comprise: Collections contain Courses, and Courses contain Components, at both the Template and Offering level.
  6. Instantiates: Each Template is realized as zero or more Offerings of the same type.
  7. Self-loops: A line from an entity back to itself is a hierarchy (Org, AcademicSession parent/child) or a relationship between instances (Person agents).
  8. An Example: "One Person can have many Enrollments; each Enrollment is Enrolled On one Offering."

Service Objects

The set of objects that can be exchanged between Edu-API end-systems are:

  • An academicSession - a calendar period during which an institution schedules offerings or other units of learning. This includes a school year, semester, term, grading period or study period, which are types of academicSession. Academic sessions may be nested through parent/child relationships;
  • A collectionTemplate - a grouping of educational units, such as a program of study (e.g. a program, major or minor). Collection templates may be nested;
  • A courseTemplate - a time-independent description of a learning experience, such that it may appear in a catalog. A course template may belong to one or more collection templates;
  • A componentTemplate - a subsection of a course template, such as a lecture or laboratory. A component template belongs to one or more course templates;
  • A collectionOffering - a collection template delivered in a specific academic session, used to group offerings into a coherent whole for enrollment, administrative or other purposes;
  • A courseOffering - a course template delivered in a specific academic session. Each course template will be delivered through zero or more course offerings;
  • A componentOffering - a subsection of a course offering that may be separately enrollable, e.g. Biology 101 may be delivered through a lecture component offering and a laboratory component offering;
  • An enrollment - a person is enrolled, in a given role, on a collection, course or component offering;
  • An organization - an administrative unit, which can be the institution itself or a division or subdivision of it (e.g. a college or department). Organizations may be nested through parent/child relationships;
  • A person - the information about a human being, including names, contact information and demographic information such as gender and date of birth. A person may also reference other persons as agents (e.g. a guardian);
  • An affiliation - the relationship between a person and an organization, including the person's role (e.g. student, teacher, staff) and the time frame in which that role applies.

Collection, course and component templates are types of educationTemplate; Collection, course and component offerings are types of educationOffering.

Service Architecture

The internal organization of an implementation of the full abstract API is beyond the scope of this specification. The only constraint is that the external behavior of the abstract API complies with this specification. This means that a .NET, J2EE, etc. physical implementation of this abstract API does not have to represent the functionality using the same breakdown of operations/methods. This physical implementation is not subject to the conformance specification.

It is not a requirement for a system to implement this interface as defined i.e. to use the same parameters, etc. Conformance against this specification will be confirmed by inspecting the appropriate binding of the information model and ensuring that the relevant information is present and that different sequences of activity result in the predicted and mandated behavior. It is essential that the behaviors described by each of the operations are fully supported and that the behaviors described by different sequences are also maintained.

The basic architectural model for Edu-API v1.0 is shown below. In this architecture the scope of Edu-API v1.0 is shown as the dotted line. The scope of the interoperability is the data and behavioral models of the objects being exchanged.

The Edu-API service architecture

Non-Interoperability Identifiers

"Primary" & "Other"

In many places where there are a multitude of possible values for a given attribute, Edu-API has adopted a "primary" and "other" approach instead of using unordered lists, e.g. the person class has the properties primaryEmail and otherEmail. This allows a sentiment of importance or ranking to be communicated. It also serves consuming systems who only need 1 value. Edu-API does not describe the methodology as to how "primary" is designated, that determination is out of scope of the specification.

In-line Reference Codes

In some scenarios, consuming systems may not want or need to consume the full data model. In some potential situations, the Edu-API data model includes reference codes that are provided as a convenience for consuming systems.

e.g. the education offering entities include organizationCode with a description that includes "This attribute was added as a convenience shorthand for organization.primaryCode."

These codes MUST not be used as the interoperability key. In scenarios where a clash or conflict arises, the sourcedID value MUST be used as the source of truth.

Alignment with 1EdTech Frameworks

Security Framework

The Edu-API specification aligns with the 1EdTech Security Framework document. For security, all REST implementations MUST support OAuth 2.0 client credentials grant. More details are available in the service model descriptions.

Localization Frameworks

1EdTech is working on a framework definition that defines patterns for specifications to provide multilinguality as part of the data exchange. While Edu-API is used internationally, the Edu-API project group decided that at the time of publishing the first version of this specification it would not make use of the patterns described in that document.

Privacy Frameworks

The Edu-API specification is designed to align with the 1EdTech Privacy Framework, which defines a methodology for institutions and systems to work together to enable protections on sensitive data when context requires it. At the time of publishing this version of the specification, the 1EdTech Privacy Framework has not yet been finalized. Edu-API data and service models will be annotated in accordance with the framework's precepts in a future version of this specification once the framework is available.

Asynchronous Binding Framework

The Edu-API specification is designed to support asynchronous data exchange in addition to the synchronous REST binding described in this document. Any asynchronous binding will use the same data model and payload definitions as the synchronous REST service, ensuring consistency across exchange methods. At the time of publishing this version of the specification, the asynchronous binding approach is still under evaluation by the Edu-API project group. A new section describing the binding will be added to this document when a direction has been confirmed and the binding has been defined.

Edu-API Use Cases

Edu-API's model is robust and flexible, allowing for many use scenarios. The list presented below is ever evolving, and development of the Edu-API standard is ongoing.

Below is the primary set of use cases that the Edu-API workgroup has vetted for inclusion in the first release of Edu-API. This list will continue to evolve over time to include more use cases as raised by the Edu-API community.

N.B.: Edu-API v1.0 covers the major registration/provisioning/rostering use cases. This is not a comprehensive set of the possible uses for Edu-API v1.0. This list is intended to represent a common cross section of uses. For the definition of use cases related to exchange of results please reference the Edu-API Gradebook V1.0 Specifications use case definition section.

Actors and System Roles Edu-API use cases describe exchanges between two principal system types:

  • Edu-API Provider: The authoritative institutional system of record, typically a Student Information System (SIS) or related data service that exposes institutional entities and relationships through Edu-API.
  • Edu-API Consumer: Any downstream system that uses this data for teaching, learning, administration, or reporting, such as Learning Management Systems (LMS), analytics platforms, scheduling, or advising tools. Some use cases may involve additional specialized actors (for example, human resources, catalog, or accreditation systems) depending on institutional context.

Use Case Descriptions

ID Name Description
1 Roster Provisioning Ensure class rosters and enrollment information remains consistent across every system that needs it.
2 Role-Based Access Makes sure people get the right permissions based on their role at the institution.
3 Staff Provisioning by Org Ensures systems know which staff belong to which departments or campuses, and what they're allowed to do there.
4 Retrieve Class Schedule – Student Lets other systems look up a student's class schedule directly from the source of truth.
5 Retrieve Roster – Course Offering Gives instructional tools an accurate, up-to-date list of who's in a given course.
6 Educational Program Definition Defines what an academic program consists of before anyone can enroll in it.
7 Program Based Enrollment Enrolls a student in an academic program, rather than just an individual course.
8 Course Change Management Keeps course details such as instructors, schedules, and credits, in sync as they change over time.

Getting Started

Where can I get help?

If you have questions or need help with implementing Edu-API, here are some available resources:

1EdTech TrustEd Apps Directory

The 1EdTech TrustEd Apps Directory is the official listing of products that have passed 1EdTech conformance certification testing. Products that are listed in this directory are guaranteed to meet the 1EdTech standards for which they have passed testing. If you experience an integration issue with a product listed here, 1EdTech will work with the supplier to resolve the problem. If a product is NOT listed here it has either not passed 1EdTech testing or its certification has expired.

New to Edu-API

If you are new to Edu-API, the following reading order will help you get oriented:

  1. Start with the Abstract and Introduction for an overview of what Edu-API is and the problem it addresses.
  2. Review the Use Case Descriptions table to see the kinds of registration, rostering, and scheduling scenarios Edu-API is designed to support.
  3. Become familiar with the foundational concepts in Key Concepts. Use this section to understand the key actors in Edu-API, how the Educational stack is represented. It also serves as a reference guide for the terminology used throughout this document.
  4. Consult REST Binding for the technical details of the API itself: base path, serialization, security, and the full endpoint reference.
  5. If you need information on how Edu-API can be extended for your own implementation, see Extending & Profiling before you begin.

Design Differences from OneRoster

This comparison is scoped to OneRoster 1.2. If you are currently have OneRoster 1.1 implemented or are implementing OneRoster 1.1, consult OneRoster's own 1.1-to-1.2 migration documentation first, then review the OneRoster 1.2 differences below.

OneRoster 1.2 and Edu-API differ both in a variety of renamed fields as well as a handful of underlying design decisions that ripple through the whole model:

1. Identity is separated from context. OneRoster's User carries roles[] and primaryOrg directly on the identity record. Edu-API treats role and organizational context as relationships, not identity attributes; they live on Affiliation (org-level) and Enrollment (course-level) instead. If your provider currently emits a single User payload with roles embedded, you'll need to decompose that into the identity record plus one Affiliation per org membership and one Enrollment per course-level role, rather than a single flat payload.

Author's Note: OneRoster itself went through a version of this problem: 1.1 used a single role per person, which caused duplicate Person records for anyone holding multiple roles. 1.2 fixed this by making roles an array on User. Edu-API goes a step further: role isn't an array on the identity record at all, it lives entirely on the relationship (Affiliation/Enrollment). A person with multiple roles still has exactly one Person record, with multiple Affiliation/Enrollment records pointing to it.

2. Type is an attribute, not an entity choice. OneRoster requires specific subtypes for specific relationships for example, a Class must reference a Term, and an institution must be Org or School. Edu-API collapses these into single entities instead: CourseOffering can reference any AcademicSession regardless of type, and Organization uses a type attribute rather than a separate entity.

3. Composition is a first-class, reusable pattern. Edu-API's Collection→Course→Component structure (see Education and Education Templates) has no real OneRoster equivalent. OneRoster has no native way to group courses into a program, or to divide a course into parts. If your institution currently represents programs as an ad hoc convention on top of OneRoster (naming patterns, external tables), this is the first release where that structure has a defined home. OneRoster's academic scope can be represented in Edu-API using a courseTemplate to represent the course and a courseOffering to represent the class.

4. Enrollment lifecycle is split into two signals instead of one. A pattern that is used throughout Edu-API is a split between the status of a record and the status of the resource that record represents. For example, OneRoster's Enrollment uses a single status/primary flag. Edu-API splits this into isActive (a boolean) and enrollmentStatus (a lifecycle enum: registered, enrolled, deferred, on hold, etc.). If your current status logic is a single field, you'll need to map it onto two: whether the enrollment is currently active, and where it sits in its lifecycle.

Design Differences from LIS

LIS and Edu-API differ both in a variety of renamed fields as well as a handful of underlying design decisions that ripple through the whole model:

A theme running through several of these differences is that Edu-API treats role as a property of a relationship, and not of the Person record itself. A role only has meaning in context: affiliated with an organization, or enrolled in an offering. Edu-API attaches role to Affiliation and Enrollment records rather than to Person. Points 2 and 6 below are each a specific consequence of that same underlying decision.

1. Transport and protocol. LIS is a SOAP/XML service (or several independently-versioned services — Person, Course, Group, Membership Management), following the IMS GWS message pattern. Edu-API consolidates this into a single RESTful JSON service. This isn't just a wire-format swap — LIS's external VDEX vocabulary files also collapse into enumerations defined directly in the data model.

2. Identity is separated from context. Same underlying decision as Design Differences from OneRoster, point 1: LIS's Person.roles (EnterpriseRoles) carries role information directly on the identity record, and Edu-API moves it onto Affiliation/Enrollment instead.

3. Membership splits into org-level and offering-level entities. LIS's Membership is a single generic object that attaches a Person to a Group, a CourseTemplate, a CourseOffering, a CourseSection, or a SectionAssociation, distinguished by membershipIdType. Edu-API splits this by target: organizational membership becomes Affiliation, and offering-level participation becomes Enrollment.

Notable gap: LIS supports membership directly against a CourseTemplate which is useful for representing curriculum ownership (e.g. a committee member responsible for a course's content and prerequisites across all its offerings, independent of any scheduled section). Edu-API has no equivalent for this template-level relationship in either Affiliation or Enrollment.

4. Sections are represented differently. Sections are a core Higher Ed concept, and LIS models them with a single dedicated entity, CourseSection, covering both curricular sub-units (a lecture vs. a lab) and parallel, content-identical delivery instances (two lecture sections at different times). Edu-API doesn't have a single equivalent entity and instead splits the same real-world concept across two different mechanisms depending on which case applies: a curricular sub-unit maps to ComponentOffering, while a parallel delivery instance is simply another CourseOffering against the same CourseTemplate.

5. Composition moves from a generic entity to a purpose-built one. LIS already supports hierarchical composition — a Group can be related to other Groups as Parent, Child, Sibling, or via TemplateParent/SectionChild, letting institutions represent "any composition of like activities." Edu-API doesn't introduce composition as a new concept; it replaces the generic Group/Relationship mechanism with a purpose-built Collection→Course→Component hierarchy specific to educational structures (see Education and Education Templates), rather than a general-purpose grouping entity that could represent anything.

6. Role moves onto the binding object itself, enriching the relationship it describes. LIS keeps Role as a nested sub-object within a shared Membership record; a person's multiple roles live together under one container. Edu-API instead places role directly on the binding object itself, Enrollment for offerings and Affiliation for organizations, along with its own metadata. This is the same identity/relationship separation described in Design Differences from OneRoster, point 1.

Extending and Profiling

This standard can be extended in three ways:

  • Extend the Data Model with new classes and new properties to existing extensible classes
  • Extend the Extensible Enumerated Vocabularies in the Data Model.
  • Extend the API with new endpoints and new responses to existing endpoints

Extensions SHOULD be presented to the Edu-API project group for review and socialization.

Extensions MUST NOT be required.

Extensions WILL NOT be tested during conformance testing.

This standard can also be profiled. In general, profiling is used to:

  • Refine which endpoints are used and which operations are supported for each endpoint
  • Refine the data models by increasing the constraints on the base definitions

Extending the Data Model

It is recognized that implementers may wish to extend the specification. The mechanism for doing this is to use a specified extension space within the Edu-API data model, and for consumers to set their parsers to read those extension attributes. Extensions are ONLY permitted using the 'extensions' container in each class. In Edu-API each 1st class entity has a namespaced extensions container, e.g. the person class has personExtensions. This was done to prevent potential data collisions when multiple Edu-API data sets were being consumed.

For example, an institution tracking student-athlete eligibility might extend Person like this:

{
  "sourcedId":"a1b2c3d4-...",
  "legalName":
    { "firstName": "Jane", "lastName": "Doe" },
  "personExtensions":
    {
      "studentAthleteEligibility": "eligible",
      "advisingCohort": "STEM-2027"
    }
}

Extending Enumerated Vocabularies

Edu-API includes the ability to extend some of the enumerated vocabularies. Each proprietary term must start with the characters 'ext:'.

For example, an institution using "Concentration" as a distinct academic structure, separate from Major or Minor, could extend collectionType with a proprietary term:

{
  "sourcedId": "a1b235as-...",
  "collectionType": "ext:concentration"
}

Extending the API

The definition of new operations should follow the same format as described in this document. The new operations should be defined using a new interface type. Every operation must result in the return of a status code that describes the final state of the request on the target end system.

Profiles

Profiling is the process by which an 1EdTech specification is tailored to meet the requirements of a specific community: the community could be a reflection of a market sector, a geographic location, etc. An example of such a community is the Norwegian K-12/Schools for whom a profile of the 1EdTech OneRoster 1.2 specification has been created. The process of profiling starts with the corresponding base specification and defines a set of new constraints to make the subsequent modified specification better fit the requirements of the target community. Once the profile has been defined, the next step is to create the corresponding Conformance Test Systems and Certification process for that profile: these will be modified versions of the equivalents created for the base specification. It is recommended that profiling is undertaken within 1EdTech so that the 1EdTech model driven specification tools can be used.

A profile is the product produced by the process of specification Profiling. A Profile of an 1EdTech specification consists of a set of new constraints. In general an 1EdTech specification enables a wide range education and learning workflows, processes and practices. A profile is designed to establish and impose best practices for the target community. A profile MUST only increase constraints i.e. it MUST NOT relax constraints in the base specification. For example the multiplicity of a property in the data model MAY be changed from [1..] (required and permitting many) to [1..1] (required and only one) but MUST NOT become [0..] (optional and permitting many). The most common profiling changes include more strict data typing, changes to enumerations, vocabulary changes, prohibition of endpoints and creation of new endpoints. A profile could make use of the extension capabilities to extend the specification to support new features. The key objective of a profile is to remove, wherever possible, interoperability uncertainty e.g. by removing optionality.

It is strongly recommended that a profile of this standard is undertaken either by, or with the close support, of 1EdTech. However, no matter who is responsible for creating the profile artefacts (documents, schemas, etc.), it is strongly recommended that 1EdTech specification tools are used. This will ensure that the artefacts are consistent with the base specifications and that useful support documentation is automatically produced e.g. creation of a document that summarizes the differences between the base specification and the profile.

An example of an implemented profile is the OneRoster 1.2 Norwegian K12 Profile which was written to adopt OneRoster 1.2 to Norwegian specific requirements.

REST Binding

Edu-API V1.0 Defines a REST binding with JSON payloads for exchange of the resources it defines. Below are the details of how that REST binding should be implemented.

Serialization

The data model as described in this document is the canonical structural representation of Edu-API. All serializations are representations of that data model in a specific format. JSON data MUST be supported as the binding for Edu-API v1.0. Implementers MUST use the HTTP header field: Content-Type, with a value of application/json, to inform requesters that results will be returned in JSON.

JSON

The data model can be encoded in Javascript Object Notation (JSON) The JavaScript Object Notation (JSON) Data Interchange Format by mapping property types in the Data Model to JSON types as follows:

  • Numeric values representable as [IEEE-754] MUST be represented as a JSON Number;
  • Boolean values MUST be represented as a JSON Boolean;
  • Sequence values MUST be represented as a JSON Array, NOT as a single value;
  • Unordered sets (i.e., 0..* and 1..* multiplicities) of values MUST be represented as a JSON Array, NOT as a single value;
  • Complex types (i.e., not primitive types or derived types) MUST be represented as a JSON Object, NOT as a URI;
  • Other values MUST be represented as a JSON String;
  • Null values and empty arrays MUST be omitted from the serialized JSON. This includes empty Arrays;

Base Path

All paths MUST include, as the base of the path (excluding the hostname), the following string:

/1edtech/eduapi/base/v1p0

Edu-API Security

Edu-API aligns with the 1EdTech Security Framework.

For security, all REST implementations MUST support the OAuth 2.0 Client Credentials Grant. The authorization flow follows the 1EdTech Security Framework v1.1, where the provider defines and hosts the token endpoint.

OAuth 2.0 Usage

Consumers (clients) obtain tokens from the provider’s authorization server using their registered credentials. The request uses the grant_type=client_credentials and includes the scopes required by Edu-API.

  POST /token
grant_type=client_credentials
scope=http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly
client_id=&lt;client_id&gt;
client_secret=&lt;client_secret&gt;

The provider issues a short-lived bearer token. All Edu-API resource requests must include the token.

Authorization: Bearer <token>;
Scopes
  • http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly – grants read access to Edu-API core resources such as Persons, Organizations, Academic Sessions, Education Offerings, and Enrollments.
  • http://purl.1edtech.org/spec/eduapi/v1p0/scope/core.readonly.privacy – grants access to privacy-governed attributes according to institutional policy based on designations that align with the 1EdTech Privacy Framework.
Token Behavior
  • Tokens expire per provider policy and must be refreshed by repeating the token request. The 1EdTech security framework recommends that the expires_in attribute is 3600 i.e. one hour.
  • HTTP 401 indicates an invalid or expired token.
  • HTTP 403 indicates insufficient scope or authorization failure.
  • All communications must use TLS.
  • Client secrets must be stored securely and rotated periodically.

For full details, see the 1EdTech Security Framework v1.1.

Edu-API HTTP Status Response Codes

The Edu-API community defines a standard set of response codes that MUST be used for specific states, as outlined in this document and its OpenAPI definitions.

Other API states SHOULD use additional codes consistent with the semantics in [[RFC 9110]].

Here are the codes contained within the Edu-API specification:

Code Title Description
200 OK The request has succeeded. Returns the requested resource or collection.
204 No Content The request was successful but there is no content to send in the response.
400 Bad Request As defined in RFC 9110. Indicates that the server cannot or will not process the request due to a client error.
401 Unauthorized As defined in RFC 9110. The request has not been applied because it lacks valid authentication credentials for the target resource.
403 Forbidden As defined in RFC 9110. The server understood the request but refuses to fulfill it. The reason SHOULD be explained in the response.
404 Not Found As defined in RFC 9110. The origin server did not find a current representation for the target resource or is not willing to disclose one.
422 Unprocessable Entity As defined in RFC 9110. Used when the server cannot validate an incoming entity.
429 Too Many Requests As defined in RFC 6585. Indicates that the user has sent too many requests in a given amount of time (rate limiting).
500 Internal Server Error As defined in RFC 9110. Implementations SHOULD avoid using this code except for catastrophic conditions where no better code applies.
— Invalid Request (Default) The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload.

Service Operations to the REST Endpoints

The table below contains the full set of endpoints in the Edu-API REST binding

Service Call Endpoint HTTP Verb Description
getEducationTemplates /educationTemplates GET Read all education templates for an institution
getEducationTemplateById /educationTemplates/{id} GET Read a collection template with a specific id
getEducationOfferings /educationOfferings GET Read all education templates for an institution
getEducationOfferingById /educationOfferings/{id} GET Read a collection template with a specific id
getAllCollectionTemplates /collectionTemplates GET Read all collection templates for an institution
getCollectionTemplateById /collectionTemplates/{id} GET Read a collection template with a specific id
getAllCourseTemplates /courseTemplates GET Read all course templates for an institution
getCourseTemplateById /courseTemplates/{id} GET Read a course template with a specific id
getAllComponentTemplates /componentTemplates GET Read all component templates for an institution
getComponentTemplateById /componentTemplates/{id} GET Read a component with a specific id
getAllCollectionOfferings /collectionOfferings GET Read all collectionOfferings for an institution
getCollectionOfferingById /collectionOfferings/{id} GET Read collectionOffering with a specific Id
getAllCourseOfferings /courseOfferings GET Read all courseOfferings for an institution
getCourseOfferingById /courseOfferings/{id} GET Read courseOffering with a specific Id
getAllComponentOfferings /componentOfferings GET Read all ComponentOfferings for an institution
getComponentOfferingById /componentOfferings/{id} GET Read ComponentOffering with a specific Id
getAllComponentOfferingsBySession /academicSessions/{id}/componentOfferings GET Read all ComponentOfferings in a specified academic session
getAllCourseOfferingsBySession /academicSessions/{id}/courseOfferings GET Read all CourseOfferings in a specified academic session
getAllCollectionOfferingsBySession /academicSessions/{id}/collectionOfferings GET Read all CollectionOfferings in a specified academic session
getCollectionOfferingsForStudent /students/{id}/collectionOfferings GET Read all collectionOfferings for a student
getCollectionOfferingsForStaff /staff/{id}/collectionOfferings GET Read all collectionOfferings for a staff member
getComponentOfferingsForStudent /students/{id}/componentOfferings GET Read all componentOfferings for a student
getComponentOfferingsForStaff /staff/{id}/componentOfferings GET Read all componentOfferings for a staff member
getAllAcademicSessions /academicSessions GET Read all AcademicSessions for an institution
getAcademicSessionById /academicSessions/{id} GET Read an AcademicSession with a specific id
getAllOrganizations /organizations GET Read all Organizations for an institution
getOrganizationById /organizations/{id} GET Read Organization with a specific Id
getOrganizationsForStaff /staff/{id}/organizations GET Read all organizations associated with a staff member
getOrganizationsForStudent /students/{id}/organizations GET Read all organizations associated with a student
getAllPersons /persons GET Read all Persons for an institution
getPersonById /persons/{id} GET Read Person with a specific id
getAllStaff /staff GET Read all persons with role of staff
getAllStudents /students GET Read all persons with a role of student
getAllStudentsForCollectionOffering /collectionOfferings/{id}/students GET Read all students for a collectionOffering
getAllStaffForCollectionOffering /collectionOfferings/{id}/staff GET Read all staff for a collectionOffering
getAllStudentsForCourseOffering /courseOfferings/{id}/students GET Read all students for a courseOffering
getAllStaffForCourseOffering /courseOfferings/{id}/staff GET Read all staff for a courseOffering
getAllStaffForOrganization /organizations/{id}/staff GET Read all staff members of an org
getAllStudentsForOrganization /organizations/{id}/students GET Read all students of an organization
getAllStudentsForComponentOffering /componentOfferings/{id}/students GET Read all students for a componentOffering
getAllStaffForComponentOffering /componentOfferings/{id}/staff GET Read all students for a componentOffering
getAllEnrollments /enrollments GET Read all Enrollments for an institution
getEnrollmentById /enrollments/{id} GET Read Enrollment with a specific id
getAllEnrollmentsForCourseOffering /courseOfferings/{id}/enrollments GET Read all enrollments for a courseOffering
getAllEnrollmentsForCollectionOffering /collectionOfferings/{id}/enrollments GET Read all enrollments for a courseOffering
getAllEnrollmentsForComponentOffering /componentOfferings/{id}/enrollments GET Read all enrollments for a courseOffering
getAllEnrollmentsBySession /academicSessions/{id}/enrollments GET Read all enrollments in a specified academic session
getAllAffiliations /affiliations GET Read all affiliations for an institution
getAffiliationById /affiliations/{id} GET Read Affiliation with a specific id

Data Models

Edu-API Abstract Educations Model

Education

A description of an abstract education.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Any number of additional human readable codes/identifiers for the entity being described [0..*]
subjectCodes String The set of subjects, represented by codes that this education addresses [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
level EducationLevelEnum The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region. [1]
creditType CreditTypeEnum Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary. [1]
creditsAwarded String A description of the credits that the student receives after the completion of the education. [0..1]
gradingScheme LanguageTypedString A human readable string that describes the system that is used to evaluate performance within the collection. This can be represented in many ways and is mostly institutional specific. The most common systems are the A-F scheme and the 4.0 based GPA scaling system. [1..*]
teachingLanguage LanguageCode The main language used to deliver the content of the education. [0..1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions educationExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education is aligned. Any number groups of learning objectives can be assigned. [0..*]

EducationOffering

A description of an abstract educational offering.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
offeringType EducationOfferingTypeEnum The type of education being offered. This is based on an enumerated vocabulary. [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Human readable codes/identifiers for the entity being described [0..*]
locations Location A container for describing where the entity takes place. This could be as a description or as a geo location [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
academicSession AcademicSessionGUIDRef A reference to an Edu-API Academic Session [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
academicSessionCode String A business code that a system might use to reference an academic session. This value is provided for convenience and should match the value in academicSession.primaryCode. This attribute was added as a convenience shorthand for academicSession.primaryCode. [0..1]
offeringFormat OfferingFormatEnum The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary [1]
paceOfStudy Percentage The tempo that the course is taught at as a percentage of a normal course. [0..1]
registrationStatus RegistrationStatusEnum The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary. [1]
startDate DateTimeZ The start date of the associated event. [1]
endDate DateTimeZ The end date of the associated event. [1]
teachingLanguage LanguageCode The main language used to deliver the content of the offering. [0..1]
maxNumberStudents Integer The maximum number of students allowed to enroll for this offering [0..1]
minNumberStudents Integer The minimum number of students allowed to enroll for this offering [0..1]
enrolledNumberStudents Integer The number of students that have already enrolled for this offering [0..1]
pendingNumberStudents Integer The number of students that have a pending enrollment request for this offering [0..1]
roleEnablement RoleEnablement An array to store associated dates for an education offering. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the 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 as replacements. [0..*]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
synchronicity SynchronicityEnum An indicator of whether instructor and learner must both be present at the same time [0..1]
extensions educationOfferingExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education offering is aligned. Any number groups of learning objectives can be assigned. [0..*]

The Edu-API community and project group understands that the instructional landscape is complex and ever changing. In order to facilitate the continued evolution and to account for specifics and idiosyncrasies that were not discussed, we've defined a set of abstract classes that can be instantiated to define educational types that we do not define explicitly.

Education Templates

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.

Property Type Description Multiplicity
collectionType CollectionTypeEnum A representation of what the entity defines. It is based on an extensible enumerated vocabulary. [1]
parent CollectionTemplateGUIDRef A reference to a parent CollectionTemplate. [0..*]
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Any number of additional human readable codes/identifiers for the entity being described [0..*]
subjectCodes String The set of subjects, represented by codes that this education addresses [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
level EducationLevelEnum The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region. [1]
creditType CreditTypeEnum Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary. [1]
creditsAwarded String A description of the credits that the student receives after the completion of the education. [0..1]
gradingScheme LanguageTypedString A human readable string that describes the system that is used to evaluate performance within the collection. This can be represented in many ways and is mostly institutional specific. The most common systems are the A-F scheme and the 4.0 based GPA scaling system. [1..*]
teachingLanguage LanguageCode The main language used to deliver the content of the education. [0..1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions educationExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education is aligned. Any number groups of learning objectives can be assigned. [0..*]

CourseTemplate

A time independent description of a learning experience, such that it may appear in a catalog.

Property Type Description Multiplicity
courseType CourseTypeEnum A representation of what the entity defines. It is based on an extensible enumerated vocabulary. [1]
parent CollectionTemplateGUIDRef A reference to a parent CollectionTemplate. [0..*]
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Any number of additional human readable codes/identifiers for the entity being described [0..*]
subjectCodes String The set of subjects, represented by codes that this education addresses [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
level EducationLevelEnum The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region. [1]
creditType CreditTypeEnum Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary. [1]
creditsAwarded String A description of the credits that the student receives after the completion of the education. [0..1]
gradingScheme LanguageTypedString A human readable string that describes the system that is used to evaluate performance within the collection. This can be represented in many ways and is mostly institutional specific. The most common systems are the A-F scheme and the 4.0 based GPA scaling system. [1..*]
teachingLanguage LanguageCode The main language used to deliver the content of the education. [0..1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions educationExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education is aligned. Any number groups of learning objectives can be assigned. [0..*]

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.

Property Type Description Multiplicity
componentType ComponentTypeEnum A representation of what the entity defines. It is based on an extensible enumerated vocabulary. [1]
parent CourseTemplateGUIDRef A reference to a parent CourseTemplate. [0..*]
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Any number of additional human readable codes/identifiers for the entity being described [0..*]
subjectCodes String The set of subjects, represented by codes that this education addresses [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
level EducationLevelEnum The educational level that the entity is for. This is represented by an extensible enumerated vocabulary and commonly varies by institution and region. [1]
creditType CreditTypeEnum Reference to what the completion of this entity counts towards. This is represented by an extensible enumerated vocabulary. [1]
creditsAwarded String A description of the credits that the student receives after the completion of the education. [0..1]
gradingScheme LanguageTypedString A human readable string that describes the system that is used to evaluate performance within the collection. This can be represented in many ways and is mostly institutional specific. The most common systems are the A-F scheme and the 4.0 based GPA scaling system. [1..*]
teachingLanguage LanguageCode The main language used to deliver the content of the education. [0..1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions educationExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education is aligned. Any number groups of learning objectives can be assigned. [0..*]

Education Offerings

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.

Property Type Description Multiplicity
offeringType CollectionTypeEnum A representation of what the entity defines. It is based on an extensible enumerated vocabulary. [1]
collection CollectionTemplateGUIDRef A reference to the collectionTemplate. [1]
parent CollectionOfferingGUIDRef A reference to parent collectionOffering (if present). [0..*]
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Human readable codes/identifiers for the entity being described [0..*]
locations Location A container for describing where the entity takes place. This could be as a description or as a geo location [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
academicSession AcademicSessionGUIDRef A reference to an Edu-API Academic Session [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
academicSessionCode String A business code that a system might use to reference an academic session. This value is provided for convenience and should match the value in academicSession.primaryCode. This attribute was added as a convenience shorthand for academicSession.primaryCode. [0..1]
offeringFormat OfferingFormatEnum The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary [1]
paceOfStudy Percentage The tempo that the course is taught at as a percentage of a normal course. [0..1]
registrationStatus RegistrationStatusEnum The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary. [1]
startDate DateTimeZ The start date of the associated event. [1]
endDate DateTimeZ The end date of the associated event. [1]
teachingLanguage LanguageCode The main language used to deliver the content of the offering. [0..1]
maxNumberStudents Integer The maximum number of students allowed to enroll for this offering [0..1]
minNumberStudents Integer The minimum number of students allowed to enroll for this offering [0..1]
enrolledNumberStudents Integer The number of students that have already enrolled for this offering [0..1]
pendingNumberStudents Integer The number of students that have a pending enrollment request for this offering [0..1]
roleEnablement RoleEnablement An array to store associated dates for an education offering. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the 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 as replacements. [0..*]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
synchronicity SynchronicityEnum An indicator of whether instructor and learner must both be present at the same time [0..1]
extensions educationOfferingExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education offering is aligned. Any number groups of learning objectives can be assigned. [0..*]

CourseOffering

Relates a course to one or more delivery scenarios.

Property Type Description Multiplicity
offeringType CourseTypeEnum A representation of what the entity defines. It is based on an extensible enumerated vocabulary. [1]
course CourseTemplateGUIDRef A reference to the courseTemplate. [1]
parent CollectionOfferingGUIDRef A reference to the parent collectionOffering. [0..*]
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Human readable codes/identifiers for the entity being described [0..*]
locations Location A container for describing where the entity takes place. This could be as a description or as a geo location [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
academicSession AcademicSessionGUIDRef A reference to an Edu-API Academic Session [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
academicSessionCode String A business code that a system might use to reference an academic session. This value is provided for convenience and should match the value in academicSession.primaryCode. This attribute was added as a convenience shorthand for academicSession.primaryCode. [0..1]
offeringFormat OfferingFormatEnum The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary [1]
paceOfStudy Percentage The tempo that the course is taught at as a percentage of a normal course. [0..1]
registrationStatus RegistrationStatusEnum The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary. [1]
startDate DateTimeZ The start date of the associated event. [1]
endDate DateTimeZ The end date of the associated event. [1]
teachingLanguage LanguageCode The main language used to deliver the content of the offering. [0..1]
maxNumberStudents Integer The maximum number of students allowed to enroll for this offering [0..1]
minNumberStudents Integer The minimum number of students allowed to enroll for this offering [0..1]
enrolledNumberStudents Integer The number of students that have already enrolled for this offering [0..1]
pendingNumberStudents Integer The number of students that have a pending enrollment request for this offering [0..1]
roleEnablement RoleEnablement An array to store associated dates for an education offering. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the 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 as replacements. [0..*]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
synchronicity SynchronicityEnum An indicator of whether instructor and learner must both be present at the same time [0..1]
extensions educationOfferingExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education offering is aligned. Any number groups of learning objectives can be assigned. [0..*]

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

Property Type Description Multiplicity
offeringType ComponentTypeEnum A representation of what the entity defines. It is based on an extensible enumerated vocabulary. [1]
component ComponentTemplateGUIDRef A reference to the componentTemplate. [1]
parent CourseOfferingGUIDRef A reference to the parent courseOffering. [0..*]
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [1..*]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [1]
otherCodes IdentifierEntry Human readable codes/identifiers for the entity being described [0..*]
locations Location A container for describing where the entity takes place. This could be as a description or as a geo location [0..*]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
academicSession AcademicSessionGUIDRef A reference to an Edu-API Academic Session [1]
organizationCode String A business code that a system might use to reference an organization. This value is provided for convenience and should match the value in organization.primaryCode. This attribute was added as a convenience shorthand for organization.primaryCode. [0..1]
academicSessionCode String A business code that a system might use to reference an academic session. This value is provided for convenience and should match the value in academicSession.primaryCode. This attribute was added as a convenience shorthand for academicSession.primaryCode. [0..1]
offeringFormat OfferingFormatEnum The modality by which the entity is delivered. This is represented by an extensible enumerated vocabulary [1]
paceOfStudy Percentage The tempo that the course is taught at as a percentage of a normal course. [0..1]
registrationStatus RegistrationStatusEnum The status of the entity indicating whether it is open for enrollment for teachers and students. This is represented by an extensible enumerated vocabulary. [1]
startDate DateTimeZ The start date of the associated event. [1]
endDate DateTimeZ The end date of the associated event. [1]
teachingLanguage LanguageCode The main language used to deliver the content of the offering. [0..1]
maxNumberStudents Integer The maximum number of students allowed to enroll for this offering [0..1]
minNumberStudents Integer The minimum number of students allowed to enroll for this offering [0..1]
enrolledNumberStudents Integer The number of students that have already enrolled for this offering [0..1]
pendingNumberStudents Integer The number of students that have a pending enrollment request for this offering [0..1]
roleEnablement RoleEnablement An array to store associated dates for an education offering. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the 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 as replacements. [0..*]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
synchronicity SynchronicityEnum An indicator of whether instructor and learner must both be present at the same time [0..1]
extensions educationOfferingExtensions A container for extension objects. [0..1]
learningObjectiveSet LearningObjectiveSet The set of identifiers for the learning objectives to which this education offering is aligned. Any number groups of learning objectives can be assigned. [0..*]

Person & Roles

Person

A Person represents a human being, alive or deceased, real or imaginary.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
otherIdentifiers IdentifierEntry A list of additional identifiers for the described entity. [0..*]
recordLanguage LanguageCode The primary language used in the described entity. [1]
legalName PersonName A legal name. [0..1]
formattedName NFCString The long form formatted name. This will often be dependent on region or system requirements. [0..1]
otherNames PersonNameEntry A list of other names for this person. [0..*]
gender GenderEnum The gender of the individual. It is based on an extensible enumerated vocabulary. [0..1]
pronouns LanguageTypedString 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. [0..*]
languagesSpoken LanguageCode The list of languages that this person speaks. [0..*]
dateOfBirth Date The date of birth. [0..1]
placeOfBirth String The place of birth. Commonly a city or municipality. [0..1]
countryOfBirth String The country of birth. [0..1]
isDeceased Boolean 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. [0..1]
dateOfDeath Date 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. [0..1]
primaryEmail OptionallyTypedEmail The primary email address of a subject. [0..1]
otherEmails TypedEmail Additional email addresses of a subject. [0..*]
primaryPhone OptionallyTypedPhone A primary (preferred) phone number. In contexts where only one phone number is specified, the term phone is an alias for this term. [0..1]
otherPhones TypedPhone A list of other phone numbers [0..*]
primaryAddress OptionallyTypedAddress The primary address. [0..1]
otherAddresses TypedAddress A list of other addresses. [0..*]
agents Agents A container that defines a relationship between an Edu-API Person and other Edu-API Persons who can represent or act on their behalf. This includes a way to describe the type of relationship between the two people. For example, parents or guardians often serve as an agent for a student. [0..*]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
extensions personExtensions A container for extension objects. [0..1]

PersonName

The set of parts that are used to define an Edu-API persons name, this design attempts to account for international naming needs.

Property Type Description Multiplicity
familyName String Family name. In the western world, often referred to as the 'last name' of a person. [0..1]
givenName String Given name. In the western world, often referred to as the 'first name' of a person. [0..1]
additionalName String Additional name. Includes what is often referred to as 'middle name' in the western world. [0..1]
patronymicName String Patronymic name. [0..1]
honorificPrefix String Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr'). [0..1]
honorificSuffix String Honorific suffix(es) following a person's name (e.g. 'M.D, PhD'). [0..1]
familyNamePrefix String 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'). [0..1]

PersonNameEntry

A typed name entry for an Edu-API person, associating a name with a specific name type.

Property Type Description Multiplicity
nameType PersonNameTypeEnum The type of name described in this entry. [1]
familyName String Family name. In the western world, often referred to as the 'last name' of a person. [0..1]
givenName String Given name. In the western world, often referred to as the 'first name' of a person. [0..1]
additionalName String Additional name. Includes what is often referred to as 'middle name' in the western world. [0..1]
patronymicName String Patronymic name. [0..1]
honorificPrefix String Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr'). [0..1]
honorificSuffix String Honorific suffix(es) following a person's name (e.g. 'M.D, PhD'). [0..1]
familyNamePrefix String 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'). [0..1]

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.

Property Type Description Multiplicity
agentType AgentTypeEnum A description of the relationship between the agent and the person they act on behalf of. This is based on an extensible enumerated vocabulary. [1]
person PersonGUIDRef A reference to an Edu-API person. This represents the person acting in an agency capacity. [1]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [0..*]
domain String The context within which the person can act as an agent in. [0..1]

Contact Details & Location

Location

A container for describing the location an entity takes place at.

Property Type Description Multiplicity
identifier Identifier An identifier. [0..1]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [0..*]
geoLocation GeoCoordinates The identification of the geographic location entity using a set of longitude and latitude coordinates. [0..1]

GeoCoordinates

The geographic coordinates of a location.

Property Type Description Multiplicity
latitude Float The latitude of the location NGA Geomatics - WGS 84. [1]
longitude Float The longitude of the location NGA Geomatics - WGS 84. [1]

Address

A container for the components that describe a physical or postal address.

Property Type Description Multiplicity
addressCountry String A country. [0..1]
addressCountryCode CountryCode A country code. The value must be a ISO 3166-1 alpha-2 country code Codes for the representation of names of countries and their subdivisions — Part 1: Country code. [0..1]
addressRegion String A region within the country. [0..1]
addressLocality String A locality within the region. [0..1]
streetAddress String A street address within the locality. [0..1]
postOfficeBoxNumber String A post office box number for PO box addresses. [0..1]
postalCode String A postal code. [0..1]
geo GeoCoordinates The geographic coordinates of the location. [0..1]

TypedAddress

A typed address.

Property Type Description Multiplicity
addressType AddressTypeEnum The type of address. This is based on an extensible enumerated vocabulary. [1]
addressCountry String A country. [0..1]
addressCountryCode CountryCode A country code. The value must be a ISO 3166-1 alpha-2 country code Codes for the representation of names of countries and their subdivisions — Part 1: Country code. [0..1]
addressRegion String A region within the country. [0..1]
addressLocality String A locality within the region. [0..1]
streetAddress String A street address within the locality. [0..1]
postOfficeBoxNumber String A post office box number for PO box addresses. [0..1]
postalCode String A postal code. [0..1]
geo GeoCoordinates The geographic coordinates of the location. [0..1]

OptionallyTypedAddress

An optionally typed address.

Property Type Description Multiplicity
addressType AddressTypeEnum The type of address. This is based on an extensible enumerated vocabulary. [0..1]
addressCountry String A country. [0..1]
addressCountryCode CountryCode A country code. The value must be a ISO 3166-1 alpha-2 country code Codes for the representation of names of countries and their subdivisions — Part 1: Country code. [0..1]
addressRegion String A region within the country. [0..1]
addressLocality String A locality within the region. [0..1]
streetAddress String A street address within the locality. [0..1]
postOfficeBoxNumber String A post office box number for PO box addresses. [0..1]
postalCode String A postal code. [0..1]
geo GeoCoordinates The geographic coordinates of the location. [0..1]

TypedPhone

A typed phone number.

Property Type Description Multiplicity
phoneType PhoneTypeEnum The type of phone number. This is based on an extensible enumerated vocabulary. [1]
phone PhoneNumber A phone number. [1]

OptionallyTypedPhone

An optionally typed phone number.

Property Type Description Multiplicity
phoneType PhoneTypeEnum The type of address. This is based on an extensible enumerated vocabulary. [0..1]
phone PhoneNumber A phone number. [1]

TypedEmail

A typed email address.

Property Type Description Multiplicity
emailType EmailTypeEnum The type of email address. This is based on an extensible enumerated vocabulary. [1]
email EmailAddress An email address. [1]

OptionallyTypedEmail

An optionally typed email address.

Property Type Description Multiplicity
emailType EmailTypeEnum The type of email address. [0..1]
email EmailAddress An email address. [1]

Organizations

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.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [0..1]
otherCodes IdentifierEntry Human readable codes/identifiers for the entity being described [0..*]
name LanguageTypedString A name for the associated entity with a designated language for each entry. [1..*]
description LanguageTypedString A set of descriptions of the associated entity with a designated language for each entry. [0..*]
organizationType String The type of Organization. [1]
parent OrganizationGUIDRef A reference to a parent organization. [0..1]
children OrganizationGUIDRef References to child organizations. [0..*]
primaryAddress OptionallyTypedAddress The primary address. [0..1]
otherAddresses TypedAddress A list of other addresses. [0..*]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
extensions organizationExtensions A container for extension objects. [0..1]

Academic Sessions

AcademicSession

A calendar period during which a school or institution schedules classes, offerings, or other units of learning for availability.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
primaryCode IdentifierEntry The primary human readable identifier for the entity. This will often take the form of a human readable code as defined by the institution or region [0..1]
otherCodes IdentifierEntry Human readable codes/identifiers for the entity being described [0..*]
sessionType AcademicSessionTypeEnum The type of academic session. This is based upon an enumerated vocabulary. [0..1]
title LanguageTypedString A set of titles for the associated entity with a designated language for each entry. [0..*]
startDate DateTimeZ The start date of the associated event. [0..1]
endDate DateTimeZ The end date of the associated event. [0..1]
parent AcademicSessionGUIDRef A reference to another Edu-API Academic Session that serves as a parent AcademicSession. [0..1]
children AcademicSessionGUIDRef A reference to the child AcademicSession objects of this session. [0..*]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions academicSessionExtensions A container for extension objects. [0..1]

IdentifierEntry

A container to transmit additional needed identifiers

Property Type Description Multiplicity
identifier Identifier An identifier. [1]
identifierType IdentifierTypeEnum The identifier type. [1]

Affiliation

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.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
person PersonGUIDRef A reference to an Edu-API Person. [1]
organization OrganizationGUIDRef A reference to an Edu-API Organization. [1]
role RoleTypeEnum The role of the associated person in the given context. [1]
startDate DateTimeZ The start date of the associated event. [0..1]
endDate DateTimeZ The end date of the associated event. [0..1]
affiliationStatus AffiliationStatusEnum The status of the person's affiliation with the organization. This is based upon an enumerated vocabulary [1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions affiliationExtensions A container for extension objects. [0..*]

Enrollment

Enrollment

The contextualized joining of a person and a CourseOffering, CollectionOffering or ComponentOffering.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
isActive Boolean 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. [1]
enrollmentStatus EnrollmentStatusEnum The status of this enrollment. [1]
person PersonGUIDRef A reference to an Edu-API Person. [1]
role RoleTypeEnum The role of the associated person in the given context. [1]
startDate DateTimeZ The start date of the associated event. [0..1]
endDate DateTimeZ The end date of the associated event. [0..1]
educationOffering EducationOfferingGUIDRef A reference to an Edu-API offering entity. This is the instantiated Education the person is being enrolled on. [1]
offeringType EducationOfferingTypeEnum The type of education being offered. This is based on an enumerated vocabulary. [1]
recordStatus RecordStatusTypeEnum The status of this record. This value reflects the state of the record itself, not the status of the real-world entity or resource it represents. A record with a status of deleted indicates that it has been marked for removal and may be safely deleted by consuming systems. Systems may choose to remove such records, but are not required to do so [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions enrollmentExtensions A container for extension objects. [0..1]

RoleEnablement

An array to store associated dates for an education offering. Specifically, additional important date and time offsets surrounding when specific roles may be associated with the 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 as replacements.

Property Type Description Multiplicity
role RoleTypeEnum The role of the associated person in the given context. [1]
startDate DateTimeZ The start date of the associated event. [0..1]
endDate DateTimeZ The end date of the associated event. [0..1]

Learning Objectives

LearningObjectiveSet

This is the container for the set of learning objective identifiers that are from a single source responsible for creating those identifiers.

Property Type Description Multiplicity
sourcedId GUID 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). [1]
recordLanguage LanguageCode The primary language used in the described entity. [1]
recordStatus RecordStatusTypeEnum The status of this record. 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. [1]
dateLastModified DateTimeZ A timestamp describing when this record was last modified. [0..1]
extensions learningObjectiveSetExtensions A container for extension objects. [0..1]
source SourceExtEnum The source responsible for creating the learning objective identifiers. The permitted values are from an extensible vocabulary. [1]
learningObjectiveIds NormalizedString The set of unique identifiers for the associated learning objectives. If these are CASE identifiers they MUST be valid UUIDs. [1..*]

SourceExtEnum Enumeration

The predefined vocabulary for the source that was responsible for creating the learning objective identifiers.

Term Description
case The learning objective identifier is a CASE UUID as defined in the IMS CASE specification [CASE, 17].
unknown The source responsible for creating the learning objectives identifiers is unknown.
CTDL-ASN The learning objective identifier is a CTDL-ASN identifier.

This class can be extended with additional properties.

Enumerations

Below is the set of enumerated vocabularies in the Edu-API specifications. Systems are not required to support all options within the value sets. Suppliers and institutions should consult their partners to determine which values are supported. Edu-API defines 2 styles of enumerations:

  • Enum: a standard enumeration with a fixed vocabulary
  • EnumExt: an enumeration with an extensible vocabulary. The pattern for extending an EnumExt is to precede the new vocabulary term with the string 'ext:'. For example, if you were adding the term 'post graduate' to the vocabulary for educationLevelEnum you would call it ext:postGraduate

EducationOfferingTypeEnum Enumeration

The set of permitted values for educationOfferingType.

Term Description
collection 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.
course Relates a course to one or more delivery scenarios.
component 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

This class can be extended with additional properties.

AffiliationStatusEnum Enumeration

The set of permitted values for affiliationStatus.

Term Description
active The affiliation is active.
inactive The affiliation is inactive.
auditing The affiliation is under audit.
withdrawn The affiliation has been withdrawn.

This class can be extended with additional properties.

AgentTypeEnum Enumeration

The set of permitted values for agentType.

Term Description
parent Mother or father of the user.
guardian Guardian of the user and NOT the Mother or Father. May also be a Relative.
emergencyContact Any person designated as a contact in case of emergencies.

This class can be extended with additional properties.

AddressTypeEnum Enumeration

The set of permitted values for addressType.

Term Description
visitingAddress A visiting address.
mailingAddress A mailing address.
permanentAddress A permanent address.
deliveryAddress A delivery address.
billingAddress A billing address.
homeAddress A home address.
workAddress A work address.
formerAddress A former (previous) address.

This class can be extended with additional properties.

PhoneTypeEnum Enumeration

The set of permitted values for phoneType.

Term Description
homePhone A home phone number.
workPhone A work phone number.
icePhone A phone number to use in case of emergency.

This class can be extended with additional properties.

EmailTypeEnum Enumeration

The set of permitted values for emailType.

Term Description
homeEmail A home email address.
workEmail A work email address.
iceEmail An email address to use in case of emergency.

This class can be extended with additional properties.

EducationLevelEnum Enumeration

The set of permitted values for educationLevel.

Term Description
graduate A course of study that takes place after the award of an undergraduate academic degree.
undergraduate A course of study that awards a bachelor's or equivalent degree.
doctoral A course of study that awards a PhD's or equivalent degree.

This class can be extended with additional properties.

CreditTypeEnum Enumeration

The set of permitted values for creditType.

Term Description
credit The course of study awards credit towards a designated achievement or degree.
nonCredit The course of study does not award credit towards a designated achievement or degree.

This class can be extended with additional properties.

CollectionTypeEnum Enumeration

The set of permitted values for collectionType.

Term Description
program 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.
generalEducation A grouping of educational units or coursework that represent a general education.
requiredCollection A grouping of educational units or coursework that identifies the contained contents as being needed for completion.
electiveCollection A grouping of educational units or coursework taken at the students discretion.
capstoneCollection The culminating coursework or project that represents the completion of a student's program of study.
majorCollection A grouping of educational units or coursework that upon completion award a Major in that line of study
minorCollection A grouping of educational units or coursework that upon completion award a Minor in that line of study
programSpecialization A grouping of educational units or coursework that a focused area of study within a broader program, typically intended to develop specialized knowledge or skills.
nonDegreeCollection A set of educational units that do not contribute towards a degree.

This class can be extended with additional properties.

CourseTypeEnum Enumeration

The set of permitted values for courseType.

Term Description
standard A normal or general type of course
honors A course that offers a deeper or more rigorous learning experience than typically found at institutions of higher education.
research A course that is focused on investigation of a specific topic.
independentStudy A course undertaken by an individual student with little to no supervision.
practicum A course that is designed to give students supervised practical application of a previously or concurrently studied field or theory.
internship A course that offers real world work experience in a professional setting.
studyAbroad A course undertaken in a foreign country
capstone The culminating and usually integrative experience of an educational program
clinical A nursing course that includes clinical experience
correspondence A course of study in which students and teachers communicate by mail.
fieldExperience A course that provides an opportunity to apply knowledge gained in the classroom with supervised practice in the field
seminar A small, discussion-based course.
thesis An independent research course in which a student conducts thesis research under academic guidance.

This class can be extended with additional properties.

ComponentTypeEnum Enumeration

The set of permitted values for componentType.

Term Description
individualizedInstruction A component that provides instruction tailored to a single learner, typically delivered through one-on-one or self-paced guidance rather than a group instructional setting.
integratedLectureLab A component that combines a lecture and a lab into one offering.
laboratory A component portion that takes place in a laboratory.
lecture A component in which an instructor delivers a talk to an audience.
practicum A component that is designed to give students supervised practical application of a previously or concurrently studied field or theory.
recitation A component that provides time for the application of conceptual knowledge and extension of instruction that occurs in lecture through problem-solving or discussion.
research A component that is focused on investigation of a specific topic.
seminar A small, discussion-based component.
independentStudy A component undertaken by an individual student with little to no supervision
fieldExperience A component that provides an opportunity to apply knowledge gained in the classroom with supervised practice in the field
exam A component that is used to represent students who are taking an exam.

This class can be extended with additional properties.

OfferingFormatEnum Enumeration

The set of permitted values for offeringFormat.

Term Description
online The offering is given completely in an online/internet based mode.
blended The offering has a combination of online and in person instruction.
onGround The offering is given completely in person in a physical space.

This class can be extended with additional properties.

RegistrationStatusEnum Enumeration

The set of permitted values for registrationStatus.

Term Description
open Registration is open and accepting new requests.
closed Registration is closed and no longer accepting new requests.
pending Registration has been requested but that request is still pending.
waitlist The offering is full and the person has been put on a waitlist for registration.

EnrollmentStatusEnum Enumeration

The set of permitted values for enrollmentStatus.

Term Description
onLeave The person has an excused absence from the education.
withdrawn The person has made a decision to leave the education prior to completion.
accepted The person has been offered a place in the education.
pending The person has requested admission to an education but that request has not yet been processed.
cancelled The person has turned down the offered seat before the education starts.
registered The person has been accepted into an education and has selected offerings to enroll on.
revoked The organization has withdrawn a registration for a person.
interruption The person is taking a short break from their education.
finished The person has passed examination and no more activities are expected.
withdrawnFailing 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.
withdrawnPassing 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.
dropped 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.
suspended The organization has paused the persons seat in the education.
enrolled The person has accepted the seat and has been activated in the education.
declined Following review, the organization did not offer a seat in the education to the person.
deferred 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.
onHold 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.

This class can be extended with additional properties.

IdentifierTypeEnum Enumeration

The set of permitted values for identifierType.

Term Description
systemId Identifier assigned to an entity in context of a specific system.
productId Identifier assigned to a specific product.
userName A name used to identify a person within a system.
accountId Identifier assigned to a specific account.
emailAddress An email address.
nationalIdentityNumber Identifier assigned by the government of the person. e.g. a social security number in the USA
isbn International Standard Book Number that serve as product identifiers for Books.
issn International Standard Serial Number used as a product identifier for periodicals.
lisSourcedId An entity’s sourcedId in Learning Information System (LIS) data exchanges.
oneRosterSourcedId An entity’s sourcedId in OneRoster (OR) data exchanges.
sisSourcedId Student Information System Identifier.
ltiContextId Identifier for an entity in the context of an Learning Tools Interoperability(LTI) Launch.
ltiDeploymentId Identifier for a specific Learning Tools Interoperability(LTI) deployment of a tool.
ltiToolId Identifier of a tool in an Learning Tools Interoperability(LTI) integration.
ltiPlatformId Identifier of a platform in an Learning Tools Interoperability(LTI) integration.
ltiUserId Identifier of a user in an Learning Tools Interoperability(LTI) integration.
identifier Generic Identifier.

This class can be extended with additional properties.

PersonNameTypeEnum Enumeration

The set of permitted values for name types.

Term Description
legalName A legal name.
preferredName A preferred (lived) name.
phoneticName Phonetic pronunciation instructions for a name. Provided values MUST be valid to the syntax of the International Phonetic Alphabet International Phonetic Alphabet.
aliasName A fictitious name, pseudonym or alias.
formerName A formerly used name. Includes birth name.

This class can be extended with additional properties.

GenderEnum Enumeration

The gender of this person. Other values than those defined may be given to capture the gender identity of this Person.

Term Description
male The male gender.
female The female gender.
unspecified The gender is unknown or unspecified.
other Another gender identity.

This class can be extended with additional properties.

RoleTypeEnum Enumeration

The set of permitted values for roleType.

Term Description
member A person belonging to the group in reference.
chair A person who presides/leads over a group.
staff An employee of the organization.
student A person who is studying at an organization.
administrator A person who oversees management of some aspect in an organization.
aide Someone who provides appropriate aid to the person but NOT also one of the other roles.
guardian Guardian of the user and NOT the Mother or Father. May also be a Relative.
parent Mother or father of the user.
proctor A person who oversees a student examination.
relative A relative of the user and NOT the Mother or Father. May also be the Guardian.
teacher A Teacher at organization e.g. School. May be used for enrollment.
advisor A person who offers students information pertaining to their degree, courses of study, and university regulations.
teachingAssistant A person who teaches or supports an educational offering but is not the instructor of record.

This class can be extended with additional properties.

AcademicSessionTypeEnum Enumeration

The set of permitted values used to describe the temporal boundaries of an education.

Term Description
gradingPeriod Denotes a period over which some grade/result is to be awarded.
semester Denotes a semester period. There are typically two semesters per schoolYear.
schoolYear Denotes the school year.
term Denotes a term period. Typically there are three terms per schoolYear.
studyPeriod Denotes a subdivision of an academic term.

This class can be extended with additional properties.

RecordStatusTypeEnum Enumeration

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.

Term Description
active The record is present and actively used in the system.
deleted 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.
inactive The record is present, but not actively used in the system (it should not be removed, but also not used).

SynchronicityEnum Enumeration

The set of permitted values used to describe whether an education offering is taught in person, online, or via a hybrid, combined approach.

Term Description
hybrid Instruction includes both synchronous and asynchronous components.
asynchronous Instruction occurs without real-time interaction between instructor and learner.
synchronous Instruction requires real-time interaction between instructor and learner.

This class can be extended with additional properties.

Primitive Types

The primitive types in this section are shared by all 1EdTech specifications.

Type Description
Boolean A boolean, expressed as true or false
Date An Representation of dates and times. ISO 8601:2004. calendar date using the syntax YYYY-MM-DD.
DateTime An Representation of dates and times. ISO 8601:2004. time using the syntax YYYY-MM-DDThh:mm:ss.
Float
Integer
Language A language code Tags for Identifying Languages.
Namespace A namespace data type for defining data from a context other than that as the default for the data model. This is used for importing other data models.
NonNegativeInteger
NormalizedString A String conforming to the normalizedString definition in W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes.
PositiveInteger
String Character strings.

Derived Types

The derived types in this section are shared by all 1EdTech specifications.

Type Description
BaseTerm 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.
CountryCode A two-digit ISO 3166-1 alpha-2 country code Codes for the representation of names of countries and their subdivisions — Part 1: Country code.
DateTimeZ A DateTime with the trailing timezone specifier included, e.g. 2021-09-07T02:09:59+02:00
EmailAddress A NormalizedString representing an email address.
GUID The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.
GUIDRef The data-type for establishing a Globally Unique Identifier (GUID). There is no predefined structure for the GUID.
Identifier A NormalizedString that functions as an identifier.
LanguageCode A language code Tags for Identifying Languages.
NFCString A NormalizedString further normalized using Unicode Normalization Form C Unicode Normalization Forms.
Percentage A percentage expression without fractions. One, two or three digits followed by the '%' character.
PhoneNumber A NormalizedString representing a phone number.
Reference An Identifier that functions as a reference to another entity by means of spelling out the identifier of the referenced entity.
Term A term in an enumeration. The lexical constraints are the same as for Token.
UUID An Identifier with the lexical restrictions of a UUID A Universally Unique IDentifier (UUID) URN Namespace
UUIDRef A Reference using a UUID.

GUID References

Set of classes that allow references to Edu-API Objects via their GUIDs

Type Description
AcademicSessionGUIDRef A reference to an AcademicSession object that has an allocated sourcedId (GUID).
CollectionOfferingGUIDRef A reference to an EducationCollectionOffering object that has an allocated sourcedId (GUID).
CollectionTemplateGUIDRef A reference to an EducationCollection object that has an allocated sourcedId (GUID).
ComponentTemplateGUIDRef A reference to an EducationComponent object that has an allocated sourcedId (GUID).
CourseOfferingGUIDRef A reference to a CourseOffering object that has an allocated sourcedId (GUID).
CourseTemplateGUIDRef A reference to a Course object that has an allocated sourcedId (GUID).
EducationOfferingGUIDRef A reference to a EducationCollectionOffering, CourseOffering or EducationComponentOffering object that has an allocated sourcedId (GUID).
OrganizationGUIDRef A reference to an Organization object that has an allocated sourcedId (GUID).
PersonGUIDRef A reference to a Person object that has an allocated sourcedId (GUID).

Language

LanguageTypedString

A String with an associated language code.

Property Type Description Multiplicity
recordLanguage LanguageCode The primary language used in the described entity. [1]
value String The string value. [1]

Extension Points

learningObjectiveSetExtensions

Extension properties related Learning Objective Sets This class can be extended with additional properties.

educationOfferingExtensions

Extension properties related to education offerings This class can be extended with additional properties.

educationExtensions

Extension properties related to education templates This class can be extended with additional properties.

enrollmentExtensions

Extension properties related to enrollments This class can be extended with additional properties.

personExtensions

Extension properties related to Edu-API persons This class can be extended with additional properties.

affiliationExtensions

Extension properties related to affiliations This class can be extended with additional properties.

organizationExtensions

Extension properties related to education organizations This class can be extended with additional properties.

academicSessionExtensions

Extension properties related to education academic sessions This class can be extended with additional properties.

Service Definitions

Imsx_StatusInfo

This is the container for the status code and associated information returned within the HTTP messages received from the Service Provider.

Property Type Description Multiplicity
imsx_codeMajor Imsx_CodeMajor The code major value (from the corresponding enumerated vocabulary). [1]
imsx_severity Imsx_Severity The severity value (from the corresponding enumerated vocabulary). [1]
imsx_description String A human readable description supplied by the entity creating the status code information. [0..1]
imsx_codeMinor Imsx_CodeMinor The set of reported code minor status codes. [0..1]

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.

Term Description
failure Denotes that the transaction request has failed. The detailed reason will be reported in the accompanying 'codeMinor' fields.
processing 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.
success 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.
unsupported Denotes that the service provider does not support the requested operation. This is the required default response for an unsupported operation by an implementation.

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.

Term Description
error 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).
status The request has been completed and a response was received from the Service Provider.
warning The request has only been partially completed. For an asynchronous service a further response should be expected.

Imsx_CodeMinor

This is the container for the set of code minor status codes reported in the responses from the Service Provider.

Property Type Description Multiplicity
imsx_codeMinorField Imsx_CodeMinorField Each reported code minor status code. [1..*]

Imsx_CodeMinorField

This is the container for a single code minor status code.

Property Type Description Multiplicity
imsx_codeMinorFieldName NormalizedString This should contain the identity of the system that has produced the code minor status code report. [1]
imsx_codeMinorFieldValue Imsx_CodeMinorFieldValue The code minor status code (this is a value from the corresponding enumerated vocabulary). [1]

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.

Term Description
forbidden 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'.
fullsuccess 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.
internal_server_error 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'.
invalid_data 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'.
invalid_query_parameter 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'.
misdirected_request 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'.
not_acceptable 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'.
not_allowed 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'.
not_found 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'.
not_modified 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'.
server_busy 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'.
unauthorizedrequest 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'.
unknown 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.

Service Descriptions

EducationManagement

Operations relating to the Abstract Education Resources

getEducationTemplates

Read all education templates for an institution

Request

GET /1edtech/eduapi/base/v1p0/educationTemplates?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Education[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getEducationTemplateById

Read a collection template with a specific id

Request

GET /1edtech/eduapi/base/v1p0/educationTemplates/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Education Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Education Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getEducationOfferings

Read all education templates for an institution

Request

GET /1edtech/eduapi/base/v1p0/educationOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json EducationOffering[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getEducationOfferingById

Read a collection template with a specific id

Request

GET /1edtech/eduapi/base/v1p0/educationOfferings/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Education Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json EducationOffering Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllCollectionTemplates

Read all collection templates for an institution

Request

GET /1edtech/eduapi/base/v1p0/collectionTemplates?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CollectionTemplate[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getCollectionTemplateById

Read a collection template with a specific id

Request

GET /1edtech/eduapi/base/v1p0/collectionTemplates/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CollectionTemplate Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CollectionTemplate Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllCourseTemplates

Read all course templates for an institution

Request

GET /1edtech/eduapi/base/v1p0/courseTemplates?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CourseTemplate[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getCourseTemplateById

Read a course template with a specific id

Request

GET /1edtech/eduapi/base/v1p0/courseTemplates/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CourseTemplate Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CourseTemplate Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllComponentTemplates

Read all component templates for an institution

Request

GET /1edtech/eduapi/base/v1p0/componentTemplates?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json ComponentTemplate[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getComponentTemplateById

Read a component with a specific id

Request

GET /1edtech/eduapi/base/v1p0/componentTemplates/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the ComponentTemplate Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json ComponentTemplate Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllCollectionOfferings

Read all collectionOfferings for an institution

Request

GET /1edtech/eduapi/base/v1p0/collectionOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CollectionOffering[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getCollectionOfferingById

Read collectionOffering with a specific Id

Request

GET /1edtech/eduapi/base/v1p0/collectionOfferings/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CollectionOffering Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CollectionOffering Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllCourseOfferings

Read all courseOfferings for an institution

Request

GET /1edtech/eduapi/base/v1p0/courseOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CourseOffering[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getCourseOfferingById

Read courseOffering with a specific Id

Request

GET /1edtech/eduapi/base/v1p0/courseOfferings/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CourseOffering Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CourseOffering Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllComponentOfferings

Read all ComponentOfferings for an institution

Request

GET /1edtech/eduapi/base/v1p0/componentOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json ComponentOffering[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getComponentOfferingById

Read ComponentOffering with a specific Id

Request

GET /1edtech/eduapi/base/v1p0/componentOfferings/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the ComponentOffering Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json ComponentOffering Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllComponentOfferingsBySession

Read all ComponentOfferings in a specified academic session

Request

GET /1edtech/eduapi/base/v1p0/academicSessions/{id}/componentOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the AcademicSession Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json ComponentOffering[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllCourseOfferingsBySession

Read all CourseOfferings in a specified academic session

Request

GET /1edtech/eduapi/base/v1p0/academicSessions/{id}/courseOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the AcademicSession Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CourseOffering[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllCollectionOfferingsBySession

Read all CollectionOfferings in a specified academic session

Request

GET /1edtech/eduapi/base/v1p0/academicSessions/{id}/collectionOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the AcademicSession Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CollectionOffering[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getCollectionOfferingsForStudent

Read all collectionOfferings for a student

Request

GET /1edtech/eduapi/base/v1p0/students/{id}/collectionOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Person representing the student Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CollectionOffering[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getCollectionOfferingsForStaff

Read all collectionOfferings for a staff member

Request

GET /1edtech/eduapi/base/v1p0/staff/{id}/collectionOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Person representing the staff member Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json CollectionOffering[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getComponentOfferingsForStudent

Read all componentOfferings for a student

Request

GET /1edtech/eduapi/base/v1p0/students/{id}/componentOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Person representing the student Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json ComponentOffering[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getComponentOfferingsForStaff

Read all componentOfferings for a staff member

Request

GET /1edtech/eduapi/base/v1p0/staff/{id}/componentOfferings?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Person representing the staff member Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json ComponentOffering[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

AcademicSessionManagement

Operations relating to AcademicSessions

getAllAcademicSessions

Read all AcademicSessions for an institution

Request

GET /1edtech/eduapi/base/v1p0/academicSessions?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json AcademicSession[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAcademicSessionById

Read an AcademicSession with a specific id

Request

GET /1edtech/eduapi/base/v1p0/academicSessions/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the AcademicSession Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json AcademicSession Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

OrganizationManagement

Operations relating to Organizations

getAllOrganizations

Read all Organizations for an institution

Request

GET /1edtech/eduapi/base/v1p0/organizations?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Organization[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getOrganizationById

Read Organization with a specific Id

Request

GET /1edtech/eduapi/base/v1p0/organizations/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Organization Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Organization Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getOrganizationsForStaff

Read all organizations associated with a staff member

Request

GET /1edtech/eduapi/base/v1p0/staff/{id}/organizations?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Person representing the staff member Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Organization[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getOrganizationsForStudent

Read all organizations associated with a student

Request

GET /1edtech/eduapi/base/v1p0/students/{id}/organizations?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Person representing the student Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Organization[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

PersonManagement

Operations relating to Persons

getAllPersons

Read all Persons for an institution

Request

GET /1edtech/eduapi/base/v1p0/persons?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getPersonById

Read Person with a specific id

Request

GET /1edtech/eduapi/base/v1p0/persons/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Person Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStaff

Read all persons with role of staff

Request

GET /1edtech/eduapi/base/v1p0/staff?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStudents

Read all persons with a role of student

Request

GET /1edtech/eduapi/base/v1p0/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStudentsForCollectionOffering

Read all students for a collectionOffering

Request

GET /1edtech/eduapi/base/v1p0/collectionOfferings/{id}/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CollectionOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStaffForCollectionOffering

Read all staff for a collectionOffering

Request

GET /1edtech/eduapi/base/v1p0/collectionOfferings/{id}/staff?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CollectionOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStudentsForCourseOffering

Read all students for a courseOffering

Request

GET /1edtech/eduapi/base/v1p0/courseOfferings/{id}/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CourseOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStaffForCourseOffering

Read all staff for a courseOffering

Request

GET /1edtech/eduapi/base/v1p0/courseOfferings/{id}/staff?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CourseOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStaffForOrganization

Read all staff members of an org

Request

GET /1edtech/eduapi/base/v1p0/organizations/{id}/staff?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the organization Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStudentsForOrganization

Read all students of an organization

Request

GET /1edtech/eduapi/base/v1p0/organizations/{id}/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Organization Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStudentsForComponentOffering

Read all students for a componentOffering

Request

GET /1edtech/eduapi/base/v1p0/componentOfferings/{id}/students?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the ComponentOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllStaffForComponentOffering

Read all students for a componentOffering

Request

GET /1edtech/eduapi/base/v1p0/componentOfferings/{id}/staff?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the ComponentOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Person[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

EnrollmentManagement

Operations relating to Enrollments

getAllEnrollments

Read all Enrollments for an institution

Request

GET /1edtech/eduapi/base/v1p0/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Enrollment[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getEnrollmentById

Read Enrollment with a specific id

Request

GET /1edtech/eduapi/base/v1p0/enrollments/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Enrollment Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Enrollment Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllEnrollmentsForCourseOffering

Read all enrollments for a courseOffering

Request

GET /1edtech/eduapi/base/v1p0/courseOfferings/{id}/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CourseOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Enrollment[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllEnrollmentsForCollectionOffering

Read all enrollments for a courseOffering

Request

GET /1edtech/eduapi/base/v1p0/collectionOfferings/{id}/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CourseOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Enrollment[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllEnrollmentsForComponentOffering

Read all enrollments for a courseOffering

Request

GET /1edtech/eduapi/base/v1p0/componentOfferings/{id}/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the CourseOffering Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Enrollment[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAllEnrollmentsBySession

Read all enrollments in a specified academic session

Request

GET /1edtech/eduapi/base/v1p0/academicSessions/{id}/enrollments?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the AcademicSession Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Enrollment[] Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

AffiliationManagement

Operations relating to Affiliations

getAllAffiliations

Read all affiliations for an institution

Request

GET /1edtech/eduapi/base/v1p0/affiliations?limit={limit}&offset={offset}&sort={sort}&orderBy={orderBy}&filter={filter}

Request header, path, and query parameters

Parameter Parameter Type Description Required
limit query PositiveInteger Specifices the download segmentation value i.e. the maximum number of records to be contained in the response. Default: 100. Optional
offset query NonNegativeInteger Specifices the number of the first record to be supplied in the segmented response message. Default: 0. Optional
sort query String 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. Optional
orderBy query String Specifies whether the collection should be ordered ascending (asc) or descending (desc). Optional
filter query String Specifies that the returned collection should be filtered using the supplied criteria. Optional
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Affiliation[] Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

getAffiliationById

Read Affiliation with a specific id

Request

GET /1edtech/eduapi/base/v1p0/affiliations/{id}

Request header, path, and query parameters

Parameter Parameter Type Description Required
id path GUIDRef The sourcedId of the Affiliation Required
Responses

Allowed response codes and content types

Status Code Content-Type Header Content Type Content Description Content Required Confidentiality Level
200 application/json Affiliation Required Unrestricted
400 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server cannot or will not process the request due to something that is perceived to be a client error. Required Unrestricted
401 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the request has not been applied because it lacks valid authentication credentials for the target resource. Required Unrestricted
403 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the server understood the request but refuses to fulfill it. The exact reason SHOULD be explained in the response payload. Required Unrestricted
404 application/json Imsx_StatusInfo As defined in HTTP Semantics, indicating that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Required Unrestricted
422 application/json Imsx_StatusInfo As defined in HTTP Semantics, used when the server cannot validate an incoming entity. Required Unrestricted
429 application/json Imsx_StatusInfo As defined in Additional HTTP Status Codes, indicating that the user has sent too many requests in a given amount of time ('rate limiting'). Required Unrestricted
500 application/json Imsx_StatusInfo As defined in HTTP Semantics. Implementations SHOULD avoid using this error code - use only if there is catastrophic error and there is not a more appropriate code. Required Unrestricted
DEFAULT application/json Imsx_StatusInfo The request was invalid or cannot be served. The exact error SHOULD be explained in the response payload. Required Unrestricted

Query Parameters

Edu-API defines the following query parameters on the REST API binding. Below are the descriptions of their use in Edu-API.

Limit

Limit MUST be enabled on all responses that produce a collection to restrict the returned value in the response to a maximum number of records. Limit uses the reserved word "limit", e.g. ?limit=500.

Providers can declare their segmentation window to consumers by providing a maximum and/or minimum value in the limit parameter schema in their Open API definition file.

"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: 50.",
    "required" : false,
    "allowEmptyValue" : false,
    "style" : "form",
    "schema" : {
        "minimum" : 1,
        "maximum" : 50,
        "type" : "integer",
        "format" : "int32"
    }
}

Sorting

Sorting should be enabled on all responses that produce a collection, e.g. the response for a getAllPersons request should be returned in a sorted order. Sorting should be enabled on any attribute in a resource. Sorting uses the reserved word "sort", e.g. ?sort=attribute. The syntax for a request that retrieves all persons from the getAllPersons endpoint and sorts the results by the formattedName attribute would look like:

"GET /1edtech/eduapi/base/v1p0/persons?sort=formattedName"

Sort requests may be further supplemented via use of the reserved word orderBy. Order by takes the arguments asc for ascending or desc for descending. The syntax for a request that retrieves all persons from the getAllPersons and sorts the results by the formattedName attribute, ascending, would look like:

"GET /1edtech/eduapi/base/v1p0/persons?sort=formattedName&orderBy=asc"

Providers can declare their support for sorting to consumers by providing a enumerated list of fields in the sort parameter schema in their Open API definition file.

"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":true,
    "style":"form",
    "schema":{
        "type":"string",
        "description":"Character strings.",
        "enum": ["language", "legalName.familyName", "affiliation.role"]
    }
}

In this example, the provider is allowing sorting by the fields:

  • language
  • legalName.familyName
  • affiliation.role

If the enum is omitted, provider don't support sorting.

Note: JSON schema specification requires at least one value in enum declarations.

Implementation notes

  • If the consumer requests that the data is to be sorted by a non-existent field, data MAY be returned in the service provider's default sort order or an error response MAY be returned.

  • When sorting/ordering is requested on a property that is an array, the first value in the array is used as the basis of the sorting/ordering.

  • Sorting and ordering of nested properties should be supported. The syntax for sorting on a nested attribute MUST use a dot-notation approach. An example of sorting on the nested property of givenName is:

    "GET /1edtech/eduapi/base/v1p0/persons?sort=personName.givenName"

Note: Consumers should always consult with their service provider partners for details on their support for sorting in Edu-API

Filtering

Filtering should be enabled on all responses that produce a collection. Collections should be filterable for attributes matching a certain criteria. Filtering should be enabled on all attributes in the core description of the resource. Filter requests use the following syntax:

GET ...hostname/baseurl/resource?filter=

Providers SHOULD declare their support for filtering to consumers by providing a enumerated list of fields using the x-imssf-allowed-fields Open API extension in the filter parameter definition in their Open API definition file.

"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."

    },
    "x-imssf-allowed-fields": [
        "language",
        "legalName.familyName",
        "affiliation.role"
    ]
},

If the extension is omitted or contains an empty list, consumers SHOULD assume the provider doesn't allow filtering of any field in the resource.

Note: If the provider supports filtering, it must declare at least one expression in the list of supported expressions. See the next section for more details.

Providing the name of a top-level resource means that the provider supports filtering for every property of the nested resource.

Filter Predicates

  • Equals is represented by '='
  • Not Equal is represented by '!='
  • Greater Than is represented by '>'
  • Greater Than or Equal is represented by '>='
  • Greater Than or Equal is represented by '>='
  • Lesser Than is represented by '<'
  • Lesser Than or Equal is represented by '<='
  • Contains is represented by '~'

Providers may limit the expressions in the filter predictes to exclude unsupported expresions. Providers SHOULD declare to consumers their supported expressions by listing them via the x-imssf-supported-expressions Open API extension in the filter parameter definition in their Open API definition file.

"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."

    },
    "x-imssf-supported-expressions": [
        "Equals",
        "NotEquals"
    ]
},

The possible values of items inside the x-imssf-supported-expressions list are:

  • Equals
  • NotEqual
  • GreaterThan
  • GreaterThanOrEqual
  • LesserThan
  • LesserThanOrEqual
  • Contains
  • LogicalAnd
  • LogicalOr

If the extension is omitted or contains an empty list, consumers SHOULD assume the provider doesn't allow any expression defined in the query language. In this case, the provider should declare that doesn't support filtering following previous indications.

Implementation notes

  • All Filter queries MUST be URL encoded.
  • Values MUST be enclosed within single quotes and they MUST be handled as case insensitive. When the response is returned it is the receiving system that should consider whether or not case-sensitivity is important.
  • The attributes that can be used are those present in the class definition being filtered. If the consumer requests that the data is filtered by a non-existent field, no data is returned and the server must provide the associated transaction status code information of:
    • CodeMajor value is 'failure'
    • Severity value is 'error'
    • CodeMinor value is 'invalid_filter_field'.
  • Filtering on extensions is supported. Note then when querying on extensions, the property is loosely typed, performing a string comparison.
  • Filtering rules should conform to the use of the Unicode Collation Algorithm The Unicode Standard when using the relevant comparisons.

Complex filters

Complex filter requests can be created via the use of a <logical> parameter in the query string. Edu-API supports " AND " and " OR " (note the surrounding white space at each side) and that there is only one such operator used in any filter, i.e. a single 'AND' or a single 'OR' in the filter. A single white space must occur before and after the parameter. The syntax for a getAllPersons request that asks for a filter on formattedName = "John Doe" AND isDeceased = "false" is:

GET /1edtech/eduapi/base/v1p0/persons?filter=formattedName='John Doe' AND isDeceased='false'

The same example request, URL encoded, would look like.

GET /1edtech/eduapi/base/v1p0/persons?filter=formattedName%3D%27John%20Doe%27%20AND isDeceased%3E%27false%27

Providers can declare consumers of their support by adding LogicalAnd and LogicalOr to the list of supported expressions defined by the x-imssf-supported-expressions Open API extension.

Filtering on Arrays

When filtering on objects that are arrays, the only predicate permitted is "~" (Contains). The consumer's query expression provides a single filter value; if the array value on the provider has an element that matches that single filter value, then the array does match (it contains the searched for element).

For example, if the languagesSpoken attribute has the value ["English", "French (Canadian)", "German"], then the query expression ?filter=languagesSpoken~"English" exactly matches an element in the attribute's value array (so the record containing the attribute is returned). However, the query expression ?filter=languagesSpoken~"French" does not exactly match an element in the attribute's value array (so the record containing the attribute is not returned).

Providers can declare consumers of their support for array filtering by setting the boolean x-imssf-supported-array-filtering Open API extension in the filter parameter definition in their Open API definition file.

"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."

    },
    "x-imssf-supported-array-filtering": true
},

If the extension is omitted, consumers can assume the provider doesn't support this type of filtering.

Pagination

Requests for collections like getAllUsers run a danger of data overload. To avoid this, implementations should adopt a pagination mechanism. Pagination is controlled via two parameters appended to the request. These parameters are:

  • limit - the number of results to return (the default value is 100);
  • offset - the index of the first record to return (zero index and so the default value is 0).

The syntax for a request that returns the first 10 persons records:

GET /1edtech/eduapi/base/v1p0/persons?limit=10

The syntax for a request that returns the second 10 persons records:

GET /1edtech/eduapi/base/v1p0/persons?limit=10&offset=10

Providers return a list with the elements if the request have been successfully fulfilled. The size of the list size can be:

  • "0" if the provider is unable to locate any element within the requested page specified by "limit" and "offset". This indicates that there are no additional elements in the collection.
  • Less than "limit". Consumers can infer that there are no more elements in the collection.
  • Equals to "limit". In this scenario, the collection may contain additional elements.

Implementation notes

If the consumer requests that data be selected using non-existent field, ALL data for the record is returned. If the consumer requests that data be selected using a blank field the request will be treated as an invalid request. The server must provide the associated transaction status code information of:

  • CodeMajor value is 'failure';
  • Severity value is 'error';
  • CodeMinor value is 'invalid_selection_field'.

Examples

JSON Payload Examples

Below is a set of JSON payload examples for all the 1st class entities in the Edu-API Data model.

Person Example

{
  "sourcedId": "A1C-_9",
  "otherIdentifiers": [
    {
      "identifier": "51-_1",
      "identifierType": "systemId"
    },
    {
      "identifier": "C-_-1_--",
      "identifierType": "productId"
    }
  ],
  "recordLanguage": "pl-PL",
  "legalName": {
    "familyName": "...string...",
    "givenName": "...string...",
    "additionalName": "...string...",
    "patronymicName": "...string...",
    "honorificPrefix": "...string...",
    "honorificSuffix": "...string...",
    "familyNamePrefix": "...string..."
  },
  "formattedName": "...nfcstring...",
  "otherNames": [
    {
      "nameType": "legalName",
      "familyName": "...string...",
      "givenName": "...string...",
      "additionalName": "...string...",
      "patronymicName": "...string...",
      "honorificPrefix": "...string...",
      "honorificSuffix": "...string...",
      "familyNamePrefix": "...string..."
    },
    {
      "nameType": "preferredName",
      "familyName": "...string...",
      "givenName": "...string...",
      "additionalName": "...string...",
      "patronymicName": "...string...",
      "honorificPrefix": "...string...",
      "honorificSuffix": "...string...",
      "familyNamePrefix": "...string..."
    }
  ],
  "gender": "male",
  "pronouns": [
    {
      "recordLanguage": "sw-Latn-TZ",
      "value": "...string..."
    },
    {
      "recordLanguage": "en-PK",
      "value": "...string..."
    }
  ],
  "languagesSpoken": [
    "zgh-MA",
    "ar-EG"
  ],
  "dateOfBirth": "2026-10-21",
  "placeOfBirth": "...string...",
  "countryOfBirth": "...string...",
  "isDeceased": true,
  "dateOfDeath": "2026-10-21",
  "primaryEmail": {
    "emailType": "homeEmail",
    "email": "jfbyivbx@example.org"
  },
  "otherEmails": [
    {
      "emailType": "homeEmail",
      "email": "hvnnylfxm@example.org"
    },
    {
      "emailType": "workEmail",
      "email": "ucusg@example.org"
    }
  ],
  "primaryPhone": {
    "phoneType": "homePhone",
    "phone": "814348"
  },
  "otherPhones": [
    {
      "phoneType": "homePhone",
      "phone": "35161999451"
    },
    {
      "phoneType": "workPhone",
      "phone": "65834625"
    }
  ],
  "primaryAddress": {
    "addressType": "visitingAddress",
    "addressCountry": "...string...",
    "addressCountryCode": "AT",
    "addressRegion": "...string...",
    "addressLocality": "...string...",
    "streetAddress": "...string...",
    "postOfficeBoxNumber": "...string...",
    "postalCode": "...string...",
    "geo": {
      "latitude": 0.25954038,
      "longitude": 0.54931664
    }
  },
  "otherAddresses": [
    {
      "addressType": "visitingAddress",
      "addressCountry": "...string...",
      "addressCountryCode": "FI",
      "addressRegion": "...string...",
      "addressLocality": "...string...",
      "streetAddress": "...string...",
      "postOfficeBoxNumber": "...string...",
      "postalCode": "...string...",
      "geo": {
        "latitude": 0.46959054,
        "longitude": 0.61813444
      }
    },
    {
      "addressType": "mailingAddress",
      "addressCountry": "...string...",
      "addressCountryCode": "PN",
      "addressRegion": "...string...",
      "addressLocality": "...string...",
      "streetAddress": "...string...",
      "postOfficeBoxNumber": "...string...",
      "postalCode": "...string...",
      "geo": {
        "latitude": 0.9144417,
        "longitude": 0.6076639
      }
    }
  ],
  "agents": [
    {
      "agentType": "parent",
      "person": "-B21_",
      "description": [
        {
          "recordLanguage": "pl-PL",
          "value": "...string..."
        },
        {
          "recordLanguage": "as",
          "value": "...string..."
        }
      ],
      "domain": "...string..."
    },
    {
      "agentType": "guardian",
      "person": "4AD7_7",
      "description": [
        {
          "recordLanguage": "uz-Cyrl",
          "value": "...string..."
        },
        {
          "recordLanguage": "uz-Cyrl-UZ",
          "value": "...string..."
        }
      ],
      "domain": "...string..."
    }
  ],
  "dateLastModified": "2026-10-21T05:10:34+02:00",
  "recordStatus": "active"
}

Organization Example

{
  "sourcedId": "-__-B64_",
  "recordLanguage": "wae-Latn-CH",
  "primaryCode": {
    "identifier": "C5-----",
    "identifierType": "systemId"
  },
  "otherCodes": [
    {
      "identifier": "-913E---",
      "identifierType": "systemId"
    },
    {
      "identifier": "--_BB_",
      "identifierType": "productId"
    }
  ],
  "name": [
    {
      "recordLanguage": "fy-NL",
      "value": "...string..."
    },
    {
      "recordLanguage": "es-CO",
      "value": "...string..."
    }
  ],
  "description": [
    {
      "recordLanguage": "ksb",
      "value": "...string..."
    },
    {
      "recordLanguage": "pl",
      "value": "...string..."
    }
  ],
  "organizationType": "...string...",
  "parent": "-3-3BC",
  "children": [
    "687_-",
    "B6-_-_-C-"
  ],
  "primaryAddress": {
    "addressType": "visitingAddress",
    "addressCountry": "...string...",
    "addressCountryCode": "IL",
    "addressRegion": "...string...",
    "addressLocality": "...string...",
    "streetAddress": "...string...",
    "postOfficeBoxNumber": "...string...",
    "postalCode": "...string...",
    "geo": {
      "latitude": 0.9041316,
      "longitude": 0.09423703
    }
  },
  "otherAddresses": [
    {
      "addressType": "visitingAddress",
      "addressCountry": "...string...",
      "addressCountryCode": "VN",
      "addressRegion": "...string...",
      "addressLocality": "...string...",
      "streetAddress": "...string...",
      "postOfficeBoxNumber": "...string...",
      "postalCode": "...string...",
      "geo": {
        "latitude": 0.7970377,
        "longitude": 0.84079254
      }
    },
    {
      "addressType": "mailingAddress",
      "addressCountry": "...string...",
      "addressCountryCode": "CH",
      "addressRegion": "...string...",
      "addressLocality": "...string...",
      "streetAddress": "...string...",
      "postOfficeBoxNumber": "...string...",
      "postalCode": "...string...",
      "geo": {
        "latitude": 0.4666975,
        "longitude": 0.95312685
      }
    }
  ],
  "dateLastModified": "2026-10-21T05:10:34+02:00",
  "recordStatus": "active"
}

Academic Session Example

{
  "sourcedId": "_356-F5",
  "recordLanguage": "en-JM",
  "primaryCode": {
    "identifier": "F1-___F",
    "identifierType": "systemId"
  },
  "otherCodes": [
    {
      "identifier": "D-24_",
      "identifierType": "systemId"
    },
    {
      "identifier": "FCC-8",
      "identifierType": "productId"
    }
  ],
  "sessionType": "gradingPeriod",
  "title": [
    {
      "recordLanguage": "ee",
      "value": "...string..."
    },
    {
      "recordLanguage": "ln-CF",
      "value": "...string..."
    }
  ],
  "startDate": "2026-10-21T05:10:34+02:00",
  "endDate": "2026-10-21T05:10:34+02:00",
  "parent": "C73_E_-",
  "children": [
    "A-F_-",
    "3_8-1"
  ],
  "recordStatus": "active",
  "dateLastModified": "2026-10-21T05:10:34+02:00"
}

Enrollment Example

{
  "sourcedId": "8-A4_9_",
  "recordLanguage": "kde-TZ",
  "isActive": true,
  "enrollmentStatus": "onLeave",
  "person": "C--455E",
  "role": "member",
  "startDate": "2026-10-21T05:10:34+02:00",
  "endDate": "2026-10-21T05:10:34+02:00",
  "educationOffering": "143--8-",
  "offeringType": "collection",
  "recordStatus": "active",
  "dateLastModified": "2026-10-21T05:10:34+02:00"
}

Affilliation Example

{
  "sourcedId": "6CAE_6",
  "person": "9_--_",
  "organization": "2_-_E-5_",
  "role": "member",
  "startDate": "2026-10-21T05:10:34+02:00",
  "endDate": "2026-10-21T05:10:34+02:00",
  "affiliationStatus": "active",
  "recordStatus": "active",
  "dateLastModified": "2026-10-21T05:10:34+02:00"
}

Template Example: Course Template

{
  "courseType": "standard",
  "parent": [
    "-C8718B",
    "3-2_9-__"
  ],
  "sourcedId": "5-8-B__",
  "recordLanguage": "fi-Latn-FI",
  "title": [
    {
      "recordLanguage": "ta",
      "value": "...string..."
    },
    {
      "recordLanguage": "nb",
      "value": "...string..."
    }
  ],
  "description": [
    {
      "recordLanguage": "fr-NC",
      "value": "...string..."
    },
    {
      "recordLanguage": "mas",
      "value": "...string..."
    }
  ],
  "primaryCode": {
    "identifier": "--__C-11_",
    "identifierType": "systemId"
  },
  "otherCodes": [
    {
      "identifier": "-_-82F-",
      "identifierType": "systemId"
    },
    {
      "identifier": "2-2_-D__6",
      "identifierType": "productId"
    }
  ],
  "subjectCodes": [
    "...string...",
    "...string..."
  ],
  "organization": "__75-9_-",
  "organizationCode": "...string...",
  "level": "graduate",
  "creditType": "credit",
  "creditsAwarded": "...string...",
  "gradingScheme": [
    {
      "recordLanguage": "nl-BQ",
      "value": "...string..."
    },
    {
      "recordLanguage": "lrc-IQ",
      "value": "...string..."
    }
  ],
  "teachingLanguage": "kw",
  "recordStatus": "active",
  "dateLastModified": "2026-10-21T05:10:34+02:00",
  "learningObjectiveSet": [
    {
      "sourcedId": "2_9DE6-",
      "recordLanguage": "sr-RS",
      "recordStatus": "active",
      "dateLastModified": "2026-10-21T05:10:34+02:00",
      "source": "case",
      "learningObjectiveIds": [
        "...normalizedstring...",
        "...normalizedstring..."
      ]
    },
    {
      "sourcedId": "F_-D---8",
      "recordLanguage": "to-Latn-TO",
      "recordStatus": "deleted",
      "dateLastModified": "2026-10-21T05:10:34+02:00",
      "source": "unknown",
      "learningObjectiveIds": [
        "...normalizedstring...",
        "...normalizedstring..."
      ]
    }
  ]
}

Offering Example: Course Offering

{
  "offeringType": "standard",
  "course": "-_-3_5---",
  "parent": [
    "68_8_-48_",
    "-9_9-_FC"
  ],
  "sourcedId": "2-736-",
  "recordLanguage": "rwk-TZ",
  "title": [
    {
      "recordLanguage": "tzm",
      "value": "...string..."
    },
    {
      "recordLanguage": "kw",
      "value": "...string..."
    }
  ],
  "description": [
    {
      "recordLanguage": "es-BR",
      "value": "...string..."
    },
    {
      "recordLanguage": "fr-LU",
      "value": "...string..."
    }
  ],
  "primaryCode": {
    "identifier": "11A-4-_",
    "identifierType": "systemId"
  },
  "otherCodes": [
    {
      "identifier": "-_1A1-D9-",
      "identifierType": "systemId"
    },
    {
      "identifier": "___3-_",
      "identifierType": "productId"
    }
  ],
  "locations": [
    {
      "identifier": "C----",
      "description": [
        {
          "recordLanguage": "en-SG",
          "value": "...string..."
        },
        {
          "recordLanguage": "kab-DZ",
          "value": "...string..."
        }
      ],
      "geoLocation": {
        "latitude": 0.3478337,
        "longitude": 0.1747325
      }
    },
    {
      "identifier": "_F7_D",
      "description": [
        {
          "recordLanguage": "twq-Latn-NE",
          "value": "...string..."
        },
        {
          "recordLanguage": "sq-MK",
          "value": "...string..."
        }
      ],
      "geoLocation": {
        "latitude": 0.10868001,
        "longitude": 0.29674786
      }
    }
  ],
  "organization": "_--2FF-",
  "academicSession": "8--2--__7",
  "organizationCode": "...string...",
  "academicSessionCode": "...string...",
  "offeringFormat": "online",
  "paceOfStudy": "...percentage...",
  "registrationStatus": "open",
  "startDate": "2026-10-21T05:10:34+02:00",
  "endDate": "2026-10-21T05:10:34+02:00",
  "teachingLanguage": "es-PR",
  "maxNumberStudents": 0,
  "minNumberStudents": 0,
  "enrolledNumberStudents": 0,
  "pendingNumberStudents": 0,
  "roleEnablement": [
    {
      "role": "member",
      "startDate": "2026-10-21T05:10:34+02:00",
      "endDate": "2026-10-21T05:10:34+02:00"
    },
    {
      "role": "chair",
      "startDate": "2026-10-21T05:10:34+02:00",
      "endDate": "2026-10-21T05:10:34+02:00"
    }
  ],
  "recordStatus": "active",
  "dateLastModified": "2026-10-21T05:10:34+02:00",
  "synchronicity": "hybrid",
  "learningObjectiveSet": [
    {
      "sourcedId": "-4-_9",
      "recordLanguage": "kln-Latn-KE",
      "recordStatus": "active",
      "dateLastModified": "2026-10-21T05:10:34+02:00",
      "source": "case",
      "learningObjectiveIds": [
        "...normalizedstring...",
        "...normalizedstring..."
      ]
    },
    {
      "sourcedId": "-7D61_",
      "recordLanguage": "ff-Latn-MR",
      "recordStatus": "deleted",
      "dateLastModified": "2026-10-21T05:10:34+02:00",
      "source": "unknown",
      "learningObjectiveIds": [
        "...normalizedstring...",
        "...normalizedstring..."
      ]
    }
  ]
}
ID Name Description
1 Roster Provisioning Ensure class rosters and enrollment information remains consistent across every system that needs it.
2 Role-Based Access Makes sure people get the right permissions based on their role at the institution.
3 Staff Provisioning by Org Ensures systems know which staff belong to which departments or campuses, and what they're allowed to do there.
4 Retrieve Class Schedule – Student Lets other systems look up a student's class schedule directly from the source of truth.
5 Retrieve Roster – Course Offering Gives instructional tools an accurate, up-to-date list of who's in a given course.
6 Educational Program Definition Defines what an academic program consists of before anyone can enroll in it.
7 Program Based Enrollment Enrolls a student in an academic program, rather than just an individual course.
8 Course Change Management Keeps course details such as instructors, schedules, and credits, in sync as they change over time.

Use Case Details

Roster Provisioning

Goal Ensure institutional systems maintain consistent and up-to-date roster information across all connected applications.

Description Accurate roster data is essential for enrollment management, access control, and instructional delivery. This use case defines how Edu-API enables systems to synchronize authoritative person, enrollment, and course data so that all consuming applications maintain an aligned view of institutional participation.

Preconditions

Main Flow

  1. Retrieve persons: getAllPersons.
  2. Retrieve organizational and session context: getAllOrganizations and getAllAcademicSessions.
  3. Retrieve course offerings: getAllCourseOfferings.
  4. Retrieve enrollments: getAllEnrollments.
  5. Update local systems with current roster information.

Postconditions

  • Consuming systems accurately reflect institutional rosters.
  • Role and enrollment relationships are preserved.
  • Synchronization supports access, analytics, and reporting.

Edu-API References

Role-Based Access

Goal Ensure users have appropriate access, visibility, and permissions across systems based on their institutional roles.

Description Role-based access allows institutions to enforce consistent permissions and responsibilities across platforms. By exchanging role information through Edu-API, institutions enable consuming systems to apply organizational and course-level roles that reflect institutional policy.

Preconditions

Main Flow

  1. Retrieve persons: getAllPersons.
  2. Retrieve organizational affiliations: getAllAffiliations?personId={sourcedId}.
  3. Retrieve enrollments and course roles: getAllEnrollments?personId={sourcedId}.
  4. Apply role data to control access, display, and interaction within the consuming system.

Postconditions

  • Role assignments are consistent across systems.
  • Permissions and access levels match institutional policies.
  • Updates to roles in the SIS are reflected across consuming applications.

Edu-API References

Staff Provisioning by Org

Goal Enable institutions to manage and provision staff across departments and campuses based on organizational hierarchy and roles.

Description Institutions often allocate staff to multiple departments or campuses, requiring clear and consistent provisioning of roles and permissions. Edu-API provides structured mechanisms to describe and exchange staff assignments and affiliations, ensuring that connected systems recognize organizational context and permissions.

Preconditions

  • Both systems implement Edu-API v1.0 Core, including Person, Organization, and Affiliation.
  • Provider maintains authoritative staff affiliation records.
  • Consumer has valid credentials and endpoint configuration.

Main Flow

  1. Retrieve staff persons: getAllPersons?role=staff.
  2. Retrieve affiliations: getAllAffiliations?personId={sourcedId}.
  3. Retrieve associated organizations: getAllOrganizations.
  4. Assign or update staff access in consuming systems based on affiliation data.

Postconditions

  • Staff roles are accurately reflected across systems.
  • Organizational context for staff access is preserved.
  • Changes in assignments or roles are consistently propagated.

Edu-API References

Retrieve Class Schedule – Student

Goal Provide connected systems with access to a student’s current course schedule for academic, financial, and advising purposes.

Description A student’s class schedule underpins many administrative and academic workflows. This use case illustrates how Edu-API enables systems such as advising, attendance, or billing to retrieve authoritative enrollment and scheduling information directly from the SIS.

Preconditions

  • Both systems implement Edu-API v1.0 Core, including Person, CourseOffering, Enrollment, and AcademicSession.
  • Provider maintains accurate enrollment and schedule data.
  • Consumer is authenticated and authorized to retrieve student records.

Main Flow

  1. Retrieve the student’s enrolled courses: getAllCourseOfferings?personId={studentId}&role=student.
  2. Retrieve associated enrollments: getAllEnrollments?personId={studentId}.
  3. Retrieve related session and organization context as needed.
  4. Display or process schedule data for advising or reporting workflows.

Postconditions

  • Consuming systems display accurate and complete class schedules.
  • Institutional and downstream systems remain aligned on student enrollment data.
  • Updates to course schedules are propagated consistently.

Edu-API References

Retrieve Roster – Course Offering

Goal Ensure connected systems maintain accurate and up-to-date information about course participants for each offering.

Description Course rosters provide the authoritative list of learners and instructors for each offering. Edu-API allows downstream systems to query the SIS for complete roster data, ensuring consistent membership across instructional tools and reducing manual maintenance.

Preconditions

  • Both systems implement Edu-API v1.0 Core, including Person, CourseOffering, and Enrollment.
  • Provider exposes enrollment and offering relationships.
  • Consumer has valid authorization.

Main Flow

  1. Retrieve the course roster: getAllEnrollments?courseOfferingId={courseOfferingId}&role=student.
  2. Retrieve related enrollments and instructor assignments: getAllEnrollments?courseOfferingId={courseOfferingId}.
  3. Update or validate the local roster.
  4. Handle changes detected via dateLastModified.

Postconditions

  • Rosters in consuming systems are current and consistent.
  • Role and status information is accurately represented.
  • Course participation data aligns across systems.

Edu-API References

Educational Program Definition

Goal Establish a standardized and shareable representation of academic programs across systems.

Description Accurate representation of academic programs supports consistency across scheduling, accreditation, and reporting. Edu-API provides a model for defining programs hierarchically through collections, courses, and components, ensuring consistent meaning across institutional systems.

Preconditions

Main Flow

  1. Retrieve collections: getAllCollectionOfferings.
  2. Retrieve associated course and component offerings: getAllCourseOfferings, getAllComponentOfferings.
  3. Link hierarchical relationships to form a program definition.
  4. Exchange or synchronize program data between systems.

Postconditions

  • Programs are consistently represented across systems.
  • Hierarchical relationships between offerings are preserved.
  • Changes to program structure are accurately propagated.

Edu-API References

Program Based Enrollment

Goal Align student and staff enrollments with defined academic programs for institutional coherence and reporting.

Description Programs provide the organizing framework for courses and instructional components. Edu-API enables systems to associate enrollments with specific program structures, allowing institutions to manage participation consistently and support program-level analysis and compliance.

Institutional vocabulary may differ, the pattern described here can be extrapolated to work for any type of collection offering that might better map to an institution's lexicon.

Preconditions

Main Flow

  1. Retrieve programs: getAllCollectionOfferings?collectionType=program.
  2. Retrieve related enrollments: getAllEnrollments?collectionOfferingId={id}.
  3. Associate participants and staff with related course offerings.
  4. Update program alignment in consuming systems.

Postconditions

  • Enrollment data reflects program structures.
  • Course and program data remain synchronized.
  • Reporting and analytics reflect accurate participation context.

Edu-API References

Course Change Management

Goal Keep course templates and offerings synchronized between systems when institutional data changes.

Description Course information changes throughout the academic cycle—titles, credit hours, and learning outcomes at the template level; instructors and schedules at the offering level. Without standardized change propagation, downstream systems drift out of sync, causing misaligned data and administrative overhead. Edu-API enables detection, exchange, and reconciliation of updates across course templates, offerings, and enrollments.

Preconditions

  • Both systems implement Edu-API v1.0 Core, including CourseTemplate, CourseOffering, and Enrollment.
  • Provider exposes dateLastModified on templates, offerings, and enrollments.
  • Consumer is configured with valid authentication and API versioning.

Main Flow

  1. Retrieve updated course templates: getAllCourseTemplates?dateLastModified={since}.
  2. Apply updates to catalog data.
  3. Identify affected offerings: getAllCourseOfferings?courseTemplateId={id}.
  4. Retrieve updated offerings: getAllCourseOfferings?dateLastModified={since}.
  5. Reconcile enrollments: getAllEnrollments?courseOfferingId={id}&dateLastModified={since}.
  6. Log all operations for audit and traceability.

Postconditions

  • Connected systems reflect current course structures and enrollments.
  • Historical data remains intact.
  • Compliance and reporting records stay consistent.

Edu-API References

References

[RFC4122]
A Universally Unique IDentifier (UUID) URN Namespace. P. Leach; M. Mealling; R. Salz. IETF. July 2005. Status: Proposed Standard.
[RFC6585]
Additional HTTP Status Codes. M. Nottingham; R. Fielding. IETF. April 2012. Status: Proposed Standard.
[ISO3166-1]
Codes for the representation of names of countries and their subdivisions — Part 1: Country code. International Organization for Standardization (ISO). August 2020. Status: Published.
[RFC9110]
HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. IETF. June 2022. Status: Internet Standard.
[IPA]
International Phonetic Alphabet
[WGS-84]
NGA Geomatics - WGS 84
[ISO8601]
Representation of dates and times. ISO 8601:2004.. International Organization for Standardization (ISO). 2004. Status: ISO 8601:2004.
[BCP47]
Tags for Identifying Languages. Addison Phillips; Mark Davis. IETF. September 2009. Status: Best Current Practice.
[RFC8259]
The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed.. IETF. December 2017. Status: Internet Standard.
[UNICODE]
The Unicode Standard. Unicode Consortium.
[UAX15]
Unicode Normalization Forms. Ken Whistler. Unicode Consortium. 12 August 2026. Status: Unicode Standard Annex #15.
[XMLSCHEMA11-2]
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron. W3C. 5 April 2012. Status: REC.

IP Disclosures

IP disclosures are not listed yet.

List of Contributors

The following individuals contributed to the development of this document:

Name Affiliation Role
Joshua McGhee 1EdTech Author
Xavi Aracil 1EdTech Editor
Jake Owen Instructure Co-Chair
Stephen Brawn Oracle Corporation Co-Chair
Jed Breinholt Western Governors University Co-Chair
Jared Kosanovic University of Wisconsin Former Chair
Linda Feng D2L Corporation Former Chair
Mark McConahay AACRAO
Wade Weichel Blackboard, Inc
Ed Vannatter D2L Corporation
Viktor Haag D2L Corporation
Zak Wilson D2L Corporation
Jeff Merriam DXtera Institute
Dan Conley eLumen
Thomas Selland eLumen
Stuart Freeman Georgia Institute of Technology
Kristopher Snover Google LLC
Alex Medina Identity Automation
LeeAnn Friemoth Identity Automation
Jeremy Perkins Instructure
Nick Jenson Instructure
Peter Szucs Instructure
Mattias Sallstrom Ladok
Per Hörnblad Ladok / Umeå University
Giampiero Zito Mediterraneo Lab 4.0
TJ Vering Microsoft
Chad Strunk N2N Services
Joel Dunn N2N Services
Michael North Northwestern University
Anthony Dizon Oracle Corporation
Greg Sayre Oracle Corporation
Miguel Fernandez Oregon State University
Shawn Geller Pennsylvania State University
Jordan Ell Riipen
Amy Brainard Rutgers University
Ellen Law Rutgers University
Gerlie Jeltema South Orange County Community College District
John Watson South Orange County Community College District
Helena Ström SUNET
Johan Planmo SUNET
Ola Ljungkrona SUNET
Mark de Jong SURF
Ronald Ham SURF
Steven Williams UCLA
Tommy Larsson Umeå University
Cary Brown Unicon, Inc.
Mary Gwozdz Unicon, Inc.
Bas Toeter University of Amsterdam
Stephen Michaud University of British Columbia
Adam Flanders University of California Office of the President
Mary-Ellen Kreher University of California Office of the President
Amin Qazi University of California San Diego
Shefali Dhar University of Georgia
Rob Ditto University of Pennsylvania
Bethany Gordy University of Wisconsin
Andrew Alfers VitalSource
Brett Horton VitalSource

Changelog

Changelog entries are not listed yet.

Revision History

VersionDoc VersionDateComments
Base Document2022-01-01First release of Edu-API 1.0 Base Document.
Candidate Public Final2022-03-01First release of Edu-API 1.0 Candidate Final Draft Document.
Final2026-10-01Final Release

Related resources

Data Model

Class JSON Schema
Education https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_education-jsonschema1.json
EducationOffering https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_educationoffering-jsonschema1.json
CollectionTemplate https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_collectiontemplate-jsonschema1.json
CourseTemplate https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_coursetemplate-jsonschema1.json
ComponentTemplate https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_componenttemplate-jsonschema1.json
CollectionOffering https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_collectionoffering-jsonschema1.json
CourseOffering https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_courseoffering-jsonschema1.json
ComponentOffering https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_componentoffering-jsonschema1.json
Person https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_person-jsonschema1.json
Affiliation https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_affiliation-jsonschema1.json
Enrollment https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_enrollment-jsonschema1.json
Organization https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_organization-jsonschema1.json
AcademicSession https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_academicsession-jsonschema1.json
Imsx_StatusInfo https://purl.imsglobal.org/spec/eduapi/v1p0/schema/json/eduapi_v1p0_imsx_statusinfo-jsonschema1.json

Service Model

The service model is available as an OpenAPI document at the following URL:

Skill

The skill model is available as a JSON file at the following URL: