API Format
Live Editor’s RESTful API allows you to read and write data to and from your Live Editor-hosted website. Outlined here are concepts to become familiar with in order to work with our API in your own applications.
Based on JSON API 1.0
JSON API is a “specification for building APIs in JSON.” We chose this format to provide consistency for our API’s JSON document formats, URLs, and more. The specification is also well-documented by a community with extensive expertise in designing APIs.
Following are the most notable conventions adopted into our API.
Content-Type
headers
The client must send all requests to the Live Editor
API with a Content-Type
header
of application/vnd.api+json
.
Any responses from the Live Editor API
containing JSON content in the response body will
also include a Content-Type
header of application/vnd.api+json
.
URLs and resource endpoints
Access to the API is based on your website’s admin subdomain and which Live Editor region it’s hosted on.
If your website’s subdomain is coffee
and is hosted in the North America region,
for example, the URL for accesing the
API is as follows:
https://coffee.api.liveeditorapp.com/
All resource endpoints are in “dasherized” format. Their names are plural.
For example, to reach the External URLs service, you would use the following URL:
https://coffee.api.liveeditorapp.com/external-urls
Versioning
By default, all requests receive version 1
of the
API. To maintain the stability of your
API client, it is recommended that you
explicitly request this version via an X-API-Version
header:
X-API-Version: 1
One day, there will probably be a version 2
. You don’t want to be surprised
on that day when your API client stops
working because we updated the API and you
receive the new default.
Data Schema
Each record represented in the JSON object returned
will contain id
, type
, and possibly an attributes
object.
All id
s will consist of a
UUID
(version
4). All id
s will be generated by the Live Editor
API; client-generated id
s will
be ignored.
All multi-word attribute names are “dasherized” (e.g., first-name
).
There are a couple different scenarios for how data will be structured: reading single records and reading a list of records.
Reading a single record
Reading a single record outputs a data
object containing the record.
Example:
{ "data": { "type": "users", "id": "26753e6f-d93c-48ba-bc48-8100d0330a0f", "attributes": { "first-name": "Steve", "last-name": "Scuba", "email": "scubasteve@example.com" } } }
Reading a list of records
Reading multiple records outputs a data
array containing the objects representing each
record.
Example:
{ "data": [ { "type": "users", "id": "dfb6958a-1268-493d-9770-8911aff51637", "attributes": { "first-name": "Steve", "last-name": "Scuba", "email": "scubasteve@example.com" } }, { "type": "users", "id": "db69c524-5416-4212-9f69-245ba09e763f", "attributes": { "first-name": "Happy", "last-name": "Gilmore", "email": "happy@example.com" } } ] }