A pastebin for markdown pages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
6.1 KiB

12 years ago
# NoteHub API
**Version 1.4, status: released.**
12 years ago
## Changelog
- **V1.4**: Bugfix: no whitespace elimination from the note text is needed now for the signature compuation.
- **V1.3**: New note ID format.
- **V1.2**: Theme & fonts can be specified during the publishing.
- **V1.1**: fields `publisher` and `title` in the response to the note retrieval.
- **V1.0**: initial release.
12 years ago
## Prerequisites
The NoteHub API can only be used in combination with a __Publisher ID__ (PID) and __Publisher Secret Key__ (PSK), which can be requested [here](#registration). The PSK can be revoked at any moment in case of an API abuse.
12 years ago
12 years ago
A PID is a string chosen by the publisher and cannot be longer than 16 characters (e.g.: __notepadPlugin__). A PSK will be generated by the NoteHub API and can be a string of any length and content.
12 years ago
All API requests must be issued with one special parameter `version` denoting the expected version of the API as a string, e.g. `1.0` (see examples below). You should always put the version of this document as a `version` parameter.
12 years ago
Once you obtained your PSK, you can test the API [here](http://notehub.org/api-test.html).
## <a name="registration"></a>NoteHub API Access Request
12 years ago
To register as a publisher and gain access to NoteHub API, please [send](mailto:notehub@icloud.com?subject=NoteHub API Access Request&body=Please add [a] desired PID as a 16 char string [b] your contact information, [c] short usage explanation and [d] the URL of the resource or it's website.) an email with the following information about you: the desired PID, your contact information, a short description of what you want to do and an URL of the resource where the API will be used or its website.
12 years ago
## Note Retrieval
A simple `GET` request to the following URL:
http://notehub.org/api/note
with the following parameters:
Parameter | Explanation | Type
--- | --- | ---
`noteID` | Note-ID | **required**
`version` | Used API version | **required**
12 years ago
will return a JSON object containing following self explaining fields: `note`, `title`, `longURL`, `shortURL`, `statistics`, `status`, `publisher`.
12 years ago
Example:
{
12 years ago
note: "markdown source",
title: "Lorem Ipsum.",
longURL: "http://notehub.org/2014/1/3/lorem-ipsum",
shortURL: "http://notehub.org/0vrcp",
12 years ago
statistics: {
published: "2014-1-3",
edited: "2014-1-12",
12 years ago
views: 24
},
status: {
success: true,
12 years ago
comment: "some server message"
},
publisher: "Publisher Description"
12 years ago
}
12 years ago
Hence, the status of the request can be evaluated by reading of the property `status.success`. The field `status.comment`might contain an error message, a warning or any other comments from the server.
12 years ago
The note ID is a string, containing the date of publishing and a few first words of the note (usually the title), e.g.: `"2014/1/3/lorem-ipsum"`. This ID will be generated by NoteHub automatically.
12 years ago
## Note Publishing
12 years ago
A note must be created by a `POST` request to the following URL:
12 years ago
http://notehub.org/api/note
12 years ago
12 years ago
with the following parameters:
12 years ago
Parameter | Explanation | Type
--- | --- | ---
`note` | Text to publish | **required**
`pid` | Publisher ID | **required**
`signature` | Signature | **required**
12 years ago
`password` | Secret token (plain or hashed) | *optional*
12 years ago
`version` | Used API version | **required**
`theme` | Theme name | *optional*
`text-font` | Text font name | *optional*
`header-font`| Header font name | *optional*
12 years ago
12 years ago
The Signature is the MD5 hash of the following string concatenation:
pid + psk + note
12 years ago
The signature serves as a proof, that the request is authentic and will be issued by the publisher corresponding to the provided PID. Please note, that _all_ of the values used in the signature computation, should be identical to the values passed with the request itself.
Ensure, that your note contains only `\\n` symbols as line breaks!
12 years ago
The parameters specifying the theme name and fonts are optional and only impact the URLs returned back.
The response of the server will contain the fields `noteID`, `longURL`, `shortURL`, `status`.
12 years ago
Example:
{
noteID: "2014/1/3/lorem-ipsum",
longURL: "http://notehub.org/2014/1/3/lorem-ipsum",
shortURL: "http://notehub.org/0vrcp",
12 years ago
status: {
success: true,
12 years ago
comment: "some server message"
12 years ago
}
}
The status object serves the same purpose as in the case of note retrieval.
## Note Update
12 years ago
To update a note, an `PUT` request must be issued to the following URL:
12 years ago
12 years ago
http://notehub.org/api/note
12 years ago
with the following parameters:
12 years ago
Parameter | Explanation | Type
--- | --- | ---
`noteID` | Note-ID | **required**
`note` | New text | **required**
`pid` | Publisher ID | **required**
`signature` | Signature | **required**
`password` | Secret token (plain or hashed) | **required**
`version` | Used API version | **required**
12 years ago
12 years ago
The Signature is the MD5 hash of the following string concatenation:
pid + psk + noteID + note + password
12 years ago
Please note, that all of the values used in the signature computation, should be identical to the values passed with the request itself.
Ensure, that your note contains only `\\n` symbols as line breaks!
12 years ago
The response of the server will contain the fields `longURL`, `shortURL`, `status`.
12 years ago
Example:
{
longURL: "http://notehub.org/2014/1/3/lorem-ipsum",
shortURL: "http://notehub.org/0vrcp",
12 years ago
status: {
success: true,
12 years ago
comment: "some server message"
12 years ago
}
}
The status object serves the same purpose as in the case of note retrieval and publishing.