The xAPI was influenced by guidelines from the REST software architecture style. Consequently, the architecture of xAPI is based on Restful web-service APIs, JSON for its data format, and an abstract application interface for storing and retrieving the learning records. In terms interoperability, it first addresses structural data interoperability (the ability of two or more applications or agents to exchange information) by enforcing a consistent data structure in the form of Statement objects. This focus on structural interoperability was one of the top priorities of the community in order to enable the integration of learning experience data from diverse sources to any application or platform. The second way xAPI provides interoperability is by standardizing the API transfer methods used when communicating information about learning experiences between programs that comply with the specification. As part of this compliance, xAPI standardizes the format of requests and the expected responses. It is important to note that the systems storing or retrieving records are not limited to only Activity Providers. LRSs can communicate with other LRSs, or systems that support xAPI.
The term API (short for application programming interface) is broadly used throughout the software industry. It generally refers to a standard library of programming functions that software developers can use to integrate two or more separate software applications. The xAPI consists of 4 APIs: Statement API, State API, Agent API, and Activity Profile API. These four APIs are handled via RESTful HTTP methods (GET, PUT, POST, DELETE). The Statement API is used to store statements, and a collection of statements can be retrieved by performing a query on the "statements" endpoint. The statement API can be used solely to track learning records, and Activity Providers can optionally utilize the other 4 APIs to enable a richer reporting and learning analytics. For more information on the 4 APIs, see the xAPI specification.
Statement Object Model
Statements represent structured data about a tracked learning experience. Typically, the verb information represented in the Statement is past tense and indicates the learning experience or activity has already occurred. In their simplest form, Statements are represented as "Actor > Verb > Object (Activity)." More detailed statement representations can be also generated to provide learning activity results, context activities, and attachments. The xAPI Statement Model also outlines options for the storage and retrieval learning activity statements of a user or group of users. For more technical details and implementation requirements about the Statement Model, see the xAPI specification. For a visual representation of the Statement Data Model's Objects and Properties, see the Statement Data Model Diagram.
Learning Record Store (LRS)
A Learning Record Store (LRS) is the implementation of the server-side requirements associated with the xAPI specification. The LRS is a key component of the xAPI architecture. It is the application interface for storing, accessing, and often visualizing the data about learning experiences, activities, and performance. An LRS is also required to validate the format of the statements as many of the requirements in the xAPI specification are targeted toward the LRS component. An LRS could be optionally integrated with any application such as a LMS, Human Resources (HR) system, or it could serve as centralized data store in a enterprise learning ecosystem. Third party applications which send or retrieve learning activity data will interact with the LRS as the data store for xAPI data. An LRS could also simply provide value as a stand-alone application without any integration points.
As part of our research on xAPI, ADL developed an open-source LRS intended to provide a platform for testing and prototype purposes only. It should not be relied upon for scalability or security like a commercial LRS application should. The ADL LRS can be used in conjunction with many of the Open Source tools from ADL as well as others from the xAPI community.