Update API docs to new layout

This commit is contained in:
Tom Moor
2018-12-22 18:24:49 -08:00
parent 122fdfa34b
commit 4599e03121
5 changed files with 869 additions and 843 deletions

View File

@@ -0,0 +1,169 @@
// @flow
import * as React from 'react';
import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet';
import styled from 'styled-components';
import Header from '../components/Header';
import Content from '../components/Content';
export default function Pricing() {
return (
<Grid>
<Helmet>
<title>Developers - Outline</title>
</Helmet>
<Header background="#AA34F0">
<h1>Developers</h1>
<p>Outline is built on an open, best-in-class, API</p>
</Header>
<Content>
<Grid>
<Grid.Unit
size={{ tablet: 1 / 4 }}
visible={{ mobile: false, tablet: true }}
>
<nav>
<h2>Introduction</h2>
<List>
<li>
<MenuItem href="#requests">Making requests</MenuItem>
</li>
<li>
<MenuItem href="#authentication">Authentication</MenuItem>
</li>
<li>
<MenuItem href="#errors">Errors</MenuItem>
</li>
</List>
<h2>API</h2>
<List>
<li>
<MenuItem href="/developers/api">Reference</MenuItem>
</li>
</List>
</nav>
</Grid.Unit>
<Grid.Unit size={{ tablet: 3 / 4 }}>
<p>
As developers, its our mission to make the API as great as
possible. While Outline is still in public beta, we might make
small adjustments, including breaking changes to the API.
</p>
<h2>Making requests</h2>
<p>
Outlines API follows simple RPC style conventions where each API
endpoint is a method on{' '}
<Code>https://www.getoutline.com/api/&lt;METHOD&gt;</Code>. Both{' '}
<Code>GET</Code> and <Code>POST</Code> methods are supported but
its recommeded that you make all call using <Code>POST</Code>.
Only HTTPS is supported in production.
</p>
<p>
For <Code>GET</Code> requests query string parameters are expected
(e.g.
<Code>/api/document.info?id=...&token=...</Code>). When making{' '}
<Code>POST</Code> requests, request parameters are parsed
depending on <Code>Content-Type</Code> header. To make a call
using JSON payload, one must pass{' '}
<Code>Content-Type: application/json</Code> header:
</p>
<p>
<strong>Example POST request:</strong>
</p>
<Pre>
<Code>
{`curl https://www.getoutline.com/api/documents.info
-X POST
-H 'authorization: Bearer API_KEY'
-H 'content-type: application/json'
-H 'accept: application/json'
-d '{"id": "outline-api-NTpezNwhUP"}'
`}
</Code>
</Pre>
<p>
<strong>Example GET request:</strong>
</p>
<Pre>
<Code>
{`curl https://www.getoutline.com/api/documents.info?id=outline-api-NTpezNwhUP&token=API_KEY
`}
</Code>
</Pre>
<h2>Authentication</h2>
<p>
To access private API endpoints, you must provide a valid API key.
You can create new API keys in your{' '}
<a href={`${process.env.URL}/settings`}>account settings</a>. Be
careful when handling your keys as they give access to all of your
documents.
</p>
<p>
To authenticate with Outline API, you can supply the API key as a
header (<Code>Authorization: Bearer YOUR_API_KEY</Code>) or as
part of the payload using <Code>token</Code> parameter. If youre
making <Code>GET</Code> requests, header based authentication is
recommended so that your keys dont leak into logs.
</p>
<p>
Some API endpoints allow unauhenticated requests for public
resources and they can be called without an API key.
</p>
<h2>Errors</h2>
<p>
All successful API requests will be returned with <Code>200</Code>{' '}
status code and <Code>ok: true</Code> in the response payload. If
theres an error while making the request, appropriate status code
is returned with the <Code>error</Code> message:
</p>
<Pre>
<Code>
{`{
"ok": false,
"error: "Not Found"
}
`}
</Code>
</Pre>
</Grid.Unit>
</Grid>
</Content>
</Grid>
);
}
const Pre = styled.pre`
padding: 0.5em 1em;
background: #f9fbfc;
border-radius: 4px;
border: 1px solid #e8ebed;
overflow: scroll;
`;
const Code = styled.code`
font-size: 15px;
`;
const MenuItem = styled.a`
display: flex;
align-items: center;
font-size: 16px;
color: ${props => props.theme.text};
`;
const List = styled.ul`
list-style: none;
margin: 0;
padding: 0;
`;