What's an OSID?

The Open Knowledge Initiative has produced a series of Open Service Interface Definitions (OSIDs) informed by a broad architectural view of the educational technology landscape. As learning management systems have become a core component of the campus information technology infrastructure, O.K.I. seeks to simplify and enhance the creation of educational applications.


O·SID [o'cid] n. O.K.I. uses the term Open Service Interface Definition (OSID) to differentiate its service based specifications from the broader class of application programming interfaces. The O.K.I. architecture exposes a carefully selected collection of services. The definition of these services enforces a programming model that maintains a sharply delineated boundary between O.K.I. compliant applications and O.K.I. service implementations.

The OSIDs are an abstraction layer between the programmer and the enterprise infrastructure systems of his or her campus. Each OSID is characterized by a tightly defined set of methods and strict boundaries. This approach offers a number of important benefits to applications designed to the OSIDs:

  • Simple integration with existing infrastructure
  • Local innovations can be shared across campuses or universities
  • Adaptation to new technology without destabilizing the overall environment

Summary of OSIDs

Root OSID Root

The Root package, with a mechanism for loading OSID managers.

Javadoc | PDF Spec | HTML Spec

Agent Agent

OSID use Agents to represent individuals or processes that invoke specific Services. An example of an Agent is a specific Student, John Doe. This Agent might have the DisplayName “Doe, John”, the Id 123-45-6789, and a Type indicating a Student. Agents can be organized into Groups. A Group also has a DisplayName, Id, and characterizing Type. In addition, Groups have a description. A Group can contain zero or more Agents. A Group can contain zero or more Groups (subgroups). An Agent can only be added as a member of a Group if it is not already in the Group, but the same Agent can be a member of a subgroup. Agents can have sets of Properties associated with them. Each set of Properties has a Type. The Agent OSID provides a variety of methods for managing these Agents and Groups.

Javadoc | PDF Spec | HTML Spec

Assessment Assessment

The Assessment Open Service Interface Definition (OSID) supports creating, organizing, administrating, evaluating, storing and retrieving Assessments. Assessments are organized into Sections and within Sections into Items. Once composed, an Assessment can be Published in which case it is read to be Taken by an Agent1 (Student). Each Assessment, Section, or Item taken can have an Evaluation.

Javadoc | PDF Spec | HTML Spec


The Authentication OSID gathers required credentials from an agent, vouches for their authenticity and introduces the agent to the system. The Authentication OSID permits an application to abstract the authentication process without having to manage the details of the underlying authentication service.

Javadoc | PDF Spec | HTML Spec

Authorization width= Authorization

The Authorization OSID allows an application to establish and query a user's privileges to view, create, or modify application data, or use application functionality.

Javadoc | PDF Spec | HTML Spec

Course Management Course Management

The CourseManagement Open Service Interface Definition (OSID) primarily supports creating and managing a CourseCatalog. The catalog is organized into:
• CanonicalCourses, which are general and exist across terms;
• CourseOfferings for CanonicalCourses, which occur in a specific term, have a CourseGradeType1, a Status, etc; and
• CourseSections for CourseOfferings, which have a meeting location, schedule, student roster, etc.

Javadoc | PDF Spec | HTML Spec

Dictionary Dictionary

The Dictionary OSID provides a means to support multiple languages, domain-specific nomenclature and culture-specific conventions through interchangeable property files.

Javadoc | PDF Spec | HTML Spec

Filing Filing

The Filing OSID provides platform-independent means to handle files arranged in simple hierarchical containers

Javadoc | PDF Spec | HTML Spec

Grading Grading

The Grading Open Service Interface Definition (OSID) supports characterizing, storing and retrieving Grades. A Grade is specified with four elements: a GradeValue, GradeType, GradeScale, and ScoringDefinition. These four elements provide a general and flexible way to characterize a Grade. The Service also provides for managing GradeRecords, which join information about the Grade, the Agent1 (Student) whose Grade it is, and the object that was Graded. This Service also includes methods for iterating through the GradeTypes, GradeScales, and ScoringDefinitions supported by a particular implementation. One can also iterate through the GradableObjects included among the GradeRecords; and through the GradeRecords themselves.

Javadoc | PDF Spec | HTML Spec

Hierarchy Hierarchy

The Hierarchy OSID manages parent-child relationships among elements. In addition to simple tree structures, the OSID supports hierarchy that are recursive and have nodes with multiple parents. User authorizations are usually stored as a hierarchy.

Javadoc | PDF Spec | HTML Spec


The Id Open Service Interface Definition (OSID) supports managing and using Ids.

Javadoc | PDF Spec | HTML Spec

Logging Logging

The Logging OSID records and retrieves a variety of application activity history.

Javadoc | PDF Spec | HTML Spec

Repository Repository

The Repository Open Service Interface Definition covers storing and retrieving digital content, referred to as Assets, as well as information about the Assets. Assets, examples of which include: documents, course material, assessment item, images, video, audio, etc, reside in Repositories which have names and descriptions and which support a specific set of Asset Types. Repositories are themselves organized by the RepositoryManager that keeps track of repositories and supports certain operations such as searching for Assets across repositories. Associated with each Asset Type is a RecordStructure that defines the format of information comprising the Asset or information describing the Asset. An Asset can have content as well as Records, which are data in the format defined by the Asset’s RecordStructure. Assets may contain other Assets.

Javadoc | PDF Spec | HTML Spec

Scheduling Scheduling

The Scheduling OSID manages events in shared calendars.

Javadoc | PDF Spec | HTML Spec

Shared Shared

The Shared OSID contains fundamental objects used in the other OSIDs to provide their functionality.

Javadoc | PDF Spec | HTML Spec


The SQL Open Service Interface Definition (OSID) provides a means of storing, editing, and retrieving tabular data through the execution of SQL statements. The data store is presumed to be a relational database.

Javadoc | PDF Spec | HTML Spec

User Messaging User Messaging

The UserMessaging OSID supports communication and notification among users.

Javadoc | PDF Spec | HTML Spec

Work Flow Work Flow

The Workflow OSID provides a way to manage an interdependent succession of activities each of which has completion constraints.

Javadoc | PDF Spec | HTML Spec