CREST (Carbon REST) is a RESTful hypermedia HTTP API that enables read and write access to parts of the EVE universe.
Things in the EVE universe are exposed as addressable
resources with a canonical URI. A representation of a
resource can be obtained by making an HTTP GET request to
the resource URI. Resources may be updated by making PUT
requests to their URI and removed by making DELETE requests
to their URI.
All resources are reachable from the root API entry point
URI. Clients should not construct URIs, but instead follow
URIs included in representations they have received. URIs
may be stored as bookmarks, shared in IMs, sent as emails
and published on web sites. CCP will endevour to support
URIs as permalinks, but client applications should be able
to cope with URIs becoming invalid as the API evolves and
resources may be served from different locations just as web
browsers cope with broken links.
Resources are represented as hypermedia documents which
link to related resources. The structure of representations
are described by media types. Clients specify the
representation they would like to received using the Accept
header of their request and specify which representations
they are sending in the Content-Type header.
Representations may be extended to add new relationships
and functionality, so clients must ignore all extra data
they receive. Representations will never rename or remove
Where renaming or removing attributes is required to
support new functionality, a new version of the
representation will be defined as a new media type and the
old representation will continue to be supported for as long
as possible. The newest version of a representation will be
served by default to ensure that new clients are developed
using the newest representations. Clients that are widely
distributed and not automatically updated should always
supply Accept headers if they rely on the structure of
Representations are formatted as JSON objects containing
name/value pairs and nested objects and arrays. Some
name/value pairs are optional, meaning that they may be
omitted by senders when not applicable. Some name/value
pairs have default values which will be used when a value is
The structure of all representations used by the CREST API
are described below in human readable HTML and machine
readable JSON schema formats. The schemas and documentation
are generated nightly by a spider making OPTIONS requests to
the self-describing CREST API.
Requests to non-public parts of the API are made on behalf
of a character. Client applications are further restricted
by the set of scopes a player has allowed the application to
use on behalf of a character. When making a request to a
non-public part of the API, client applications must supply
an OAuth 2 token granted by login.eveonline.com in the
Authorization header. If the character is not allowed to
make the request, or the token does not have the correct
scopes, the request will be denied.
Clients may specify the languages they would like to
receive responses in by providing the Accept-Language header
with their requests.
and URLs to nicely rendered views of resources to be shared. The open source code can
be found here https://github.com/jimpurbrick/crestexplorerjs.
returned by OPTIONS requests made to CREST resources in to JSON schemas.
The schemas can then either be used to generate client code, or crestschema
Presentations describing the design and use of CREST can be found here and here. Official CCP developer resources can be found here.