Access to the API must be achieved through an OAuth flow or by having a user that is logged in to the system (with a session, etc).

When communicating with the API, developers must set a header in the HTTP request to specify which version of the API they want to use:

Header Name Value Version Accessed
'Accept' 'application/vnd.exercises.openstax.v1' v1

Many of the API specifications provide a related JSON schema. These schemas are based on the standard defined at http://json-schema.org/. A lot of these schemas aren’t overly specific to the actions they are listed under, e.g. they always say that an id is required but that isn’t the case when new data is being posted to a create call.

Resources

Books
Lists of OpenStax books and pages in each book

Resource Description
GET /api/books Returns a list of books in both the ABL and some archive version or latest
GET /api/books/:uuid Returns a list of pages in some book

Exercises
A collection of related questions.

Resource Description
GET /api/exercises Return a set of Exercises matching query terms
GET /api/exercises/search Return a set of Exercises matching query terms
POST /api/exercises/search Return a set of Exercises matching query terms
POST /api/exercises Creates an Exercise
GET /api/exercises/:uid Gets the specified Exercise
PUT /api/exercises/:uid Updates the specified Exercise
DELETE /api/exercises/:uid Deletes the specified Exercise

Publications
Contains information about a publishable object.

Resource Description
PUT /api/object_name/:object_uid/publish Publishes the specified object

Users
A human user of OpenStax Exercises.

Resource Description
GET /api/users Return a set of Users matching query terms
GET /api/user Gets the current user's profile
PATCH /api/user Updates the current user's profile
DELETE /api/user Disables the current user's account

Vocab_terms
A vocabulary term, its definition and distractors

Resource Description
GET /api/vocab_terms Return a set of VocabTerms matching query terms
GET /api/vocab_terms/search Return a set of VocabTerms matching query terms
POST /api/vocab_terms/search Return a set of VocabTerms matching query terms
POST /api/vocab_terms Creates a VocabTerm
GET /api/vocab_terms/:uid Gets the specified VocabTerm
PUT /api/vocab_terms/:uid Updates the specified VocabTerm
DELETE /api/vocab_terms/:uid Deletes the specified VocabTerm