Update follower examples
This commit is contained in:
parent
9b4d94cd2f
commit
35e66dece5
2 changed files with 32 additions and 376 deletions
13
Gemfile.lock
13
Gemfile.lock
|
@ -16,27 +16,30 @@ GIT
|
|||
|
||||
GIT
|
||||
remote: git@github.com:tent/tent-apidoc.git
|
||||
revision: 3894f0a84d5ca02896139da07edd321b1551887a
|
||||
revision: 9bb0ab5c2f0bad683fa407148d0635a96c1ab71d
|
||||
branch: master
|
||||
specs:
|
||||
tent-apidoc (0.1.0)
|
||||
fabrication
|
||||
faker
|
||||
rack-test
|
||||
tent-client
|
||||
tentd
|
||||
|
||||
GIT
|
||||
remote: git@github.com:tent/tent-client-ruby.git
|
||||
revision: cefddd03e1d2b42dc4ccca0059d0dd7c333d06f3
|
||||
revision: d70a052f676173823a8d34de0e13aeb40a95e006
|
||||
branch: master
|
||||
specs:
|
||||
tent-client (0.0.1)
|
||||
faraday (= 0.8.4)
|
||||
faraday_middleware (= 0.8.8)
|
||||
json
|
||||
nokogiri
|
||||
|
||||
GIT
|
||||
remote: git@github.com:tent/tentd.git
|
||||
revision: 64b90e175e265f76db937dc9483e86e5ae1cc71c
|
||||
revision: 6c492a0953a32e8d0c1f1b0f0bd6ab30f821ce31
|
||||
branch: master
|
||||
specs:
|
||||
tentd (0.0.1)
|
||||
|
@ -114,6 +117,9 @@ GEM
|
|||
dm-core (~> 1.2.0)
|
||||
do_postgres (0.10.8)
|
||||
data_objects (= 0.10.8)
|
||||
fabrication (2.2.3)
|
||||
faker (1.0.1)
|
||||
i18n (~> 0.4)
|
||||
faraday (0.8.4)
|
||||
multipart-post (~> 1.1)
|
||||
faraday_middleware (0.8.8)
|
||||
|
@ -123,6 +129,7 @@ GEM
|
|||
girl_friday (0.10.0)
|
||||
connection_pool (~> 0.9.0)
|
||||
hashie (1.2.0)
|
||||
i18n (0.6.1)
|
||||
json (1.7.5)
|
||||
json-schema (1.0.9)
|
||||
json_pure (1.7.5)
|
||||
|
|
|
@ -5,7 +5,19 @@ each other.
|
|||
|
||||
### Server Discovery
|
||||
|
||||
Both discovery methods should be implemented.
|
||||
Server discovery is done through HTTP `Link` headers as well as HTML `link`
|
||||
tags. Multiple links may be presented, and should be tried by the client in
|
||||
order.
|
||||
|
||||
#### HTTP `Link` Header
|
||||
|
||||
The HTTP header allows discovery of Tent servers by just doing a HEAD request
|
||||
instead of getting the page and parsing it for the `link` tag. It should be
|
||||
added to all responses associated with the Tent entity.
|
||||
|
||||
```text
|
||||
Link: <https://tent.titanous.com>; rel="https://tent.io/rels/profile"
|
||||
```
|
||||
|
||||
#### HTML `link` tag
|
||||
|
||||
|
@ -13,63 +25,7 @@ The `link` tag should be placed in the `head` tag of all HTML pages associated
|
|||
with the Tent entity.
|
||||
|
||||
```html
|
||||
<link rel="tent" href="https://tent.titanous.com" />
|
||||
```
|
||||
|
||||
#### HTTP Header
|
||||
|
||||
The HTTP header allows discovery of Tent servers by just doing a HEAD request
|
||||
instead of getting the page and parsing it for the `link` tag. It should be
|
||||
added to all responses associated with the Tent entity.
|
||||
|
||||
```text
|
||||
Tent-Server: https://tent.titanous.com
|
||||
```
|
||||
|
||||
The `Tent-Server` header can contain multiple comma-separated urls that should
|
||||
be tried in order.
|
||||
|
||||
|
||||
### Entity Profile
|
||||
|
||||
```text
|
||||
GET /profile
|
||||
Accept: application/json
|
||||
```
|
||||
|
||||
```text
|
||||
200 OK
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type": {
|
||||
"url": "https://tent.io",
|
||||
"version": "0.1.0"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"entity": "titanous.com",
|
||||
"servers": [
|
||||
"https://tent.titanous.com",
|
||||
"https://eqt5g4fuenphqinx.onion",
|
||||
"https://titn.us/api"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": {
|
||||
"url": "https://tent.io/types/profile/music",
|
||||
"version": "0.1.0"
|
||||
},
|
||||
"bands": [ "foo", "bar" ]
|
||||
}
|
||||
]
|
||||
<link href="https://tent.titanous.com" rel="https://tent.io/rels/profile" />
|
||||
```
|
||||
|
||||
|
||||
|
@ -78,279 +34,52 @@ Content-Type: application/json
|
|||
A follow request is required in order to receive notifications about posts
|
||||
published by an entity.
|
||||
|
||||
The `secret` is only returned once and should be persisted along with the `id`
|
||||
for authentication.
|
||||
|
||||
### POST /followers
|
||||
|
||||
```text
|
||||
POST /followers
|
||||
Content-Type: application/json
|
||||
Accept: application/json
|
||||
```
|
||||
{create_follower example}
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "danielsiders.com",
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"types": [
|
||||
{
|
||||
"url": "https://tent.io/types/posts/status",
|
||||
"version": "~> 1.1",
|
||||
"view": "full"
|
||||
},
|
||||
{
|
||||
"url": "https://tent.io/types/posts/photo",
|
||||
"version": "~> 1.0",
|
||||
"view": "meta"
|
||||
},
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```text
|
||||
201 Created
|
||||
Content-Type: application/json
|
||||
Location: https://tent.titanous.com/api/followers/775ecf8
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "775ecf8"
|
||||
"secret": "b524ce27f1882bcad98092175fbe7040",
|
||||
"mac_algorithm": "hmac-sha-256"
|
||||
}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
All requests must be made using SSL.
|
||||
All requests should be made using SSL.
|
||||
|
||||
Authentication is required for all resources except some of the profile and
|
||||
publicly accessible posts.
|
||||
Authentication is required to access resources that are not marked as public.
|
||||
|
||||
Tent uses [MAC Access
|
||||
Authentication](http://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01)
|
||||
for all requests. The `id` and `secret` from the follow response are used as the
|
||||
MAC key identifier and MAC key respectively.
|
||||
for all requests.
|
||||
|
||||
All requests must be signed using MAC, and all notifications from the server
|
||||
are signed as well.
|
||||
|
||||
Currently the signatures in example requests are fake, they will be correct when
|
||||
the documentation generator is done.
|
||||
|
||||
|
||||
## Get Current Following
|
||||
|
||||
danielsiders.com checks its following of titanous.com
|
||||
|
||||
### GET /followers/:id
|
||||
|
||||
```text
|
||||
GET /followers/775ecf8
|
||||
Accept: application/json
|
||||
Authorization: MAC id="775ecf8",
|
||||
ts="1336363200",
|
||||
nonce="dj83hs9s",
|
||||
mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="
|
||||
```
|
||||
{get_follower example}
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "775ecf8",
|
||||
"entity": "danielsiders.com",
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"types": [
|
||||
{
|
||||
"url": "https://tent.io/types/posts/status",
|
||||
"version": "~> 1.1",
|
||||
"view": "full"
|
||||
},
|
||||
{
|
||||
"url": "https://tent.io/types/posts/photo",
|
||||
"version": "~> 1.0",
|
||||
"view": "meta"
|
||||
},
|
||||
],
|
||||
"mac_algorithm": "hmac-sha-256"
|
||||
}
|
||||
```
|
||||
|
||||
## Edit Following
|
||||
|
||||
### PATCH /followers/:id
|
||||
### PUT /followers/:id
|
||||
|
||||
```text
|
||||
PATCH /followers/775ecf8
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
Authorization: MAC id="775ecf8",
|
||||
ts="1336363200",
|
||||
nonce="dj83hs9s",
|
||||
mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="
|
||||
```
|
||||
{update_follower example}
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "775ecf8",
|
||||
"entity": "danielsiders.com",
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"types": [
|
||||
{
|
||||
"url": "https://tent.io/types/posts/status",
|
||||
"version": "~> 1.1",
|
||||
"view": "full"
|
||||
},
|
||||
{
|
||||
"url": "https://tent.io/types/posts/photo",
|
||||
"version": "~> 1.0",
|
||||
"view": "thumb"
|
||||
},
|
||||
],
|
||||
"mac_algorithm": "hmac-sha-256"
|
||||
}
|
||||
```
|
||||
|
||||
```text
|
||||
200 OK
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "775ecf8",
|
||||
"entity": "danielsiders.com",
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"types": [
|
||||
{
|
||||
"url": "https://tent.io/types/posts/status",
|
||||
"version": "~> 1.1",
|
||||
"view": "full"
|
||||
},
|
||||
{
|
||||
"url": "https://tent.io/types/posts/photo",
|
||||
"version": "~> 1.0",
|
||||
"view": "thumb"
|
||||
},
|
||||
],
|
||||
"mac_algorithm": "hmac-sha-256"
|
||||
}
|
||||
```
|
||||
|
||||
## Stop Following
|
||||
|
||||
### DELETE /followers/:id
|
||||
|
||||
```text
|
||||
DELETE /followers/775ecf8
|
||||
Authorization: MAC id="775ecf8",
|
||||
ts="1336363200",
|
||||
nonce="dj83hs9s",
|
||||
mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="
|
||||
```
|
||||
{delete_follower example}
|
||||
|
||||
```text
|
||||
204 No Content
|
||||
```
|
||||
|
||||
## Notifications
|
||||
|
||||
Notification from titanous.com to danielsiders.com that new content has been
|
||||
posted.
|
||||
|
||||
### POST /notifications
|
||||
|
||||
```text
|
||||
POST /notifications
|
||||
Content-Type: application/json
|
||||
Authorization: MAC id="775ecf8",
|
||||
ts="1336363200",
|
||||
nonce="dj83hs9s",
|
||||
mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "jA4Mzdh",
|
||||
"entity": "titanous.com",
|
||||
"time": 1345322351,
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"scope": "public",
|
||||
"content": {
|
||||
"type": {
|
||||
"url": "https://tent.io/types/posts/status",
|
||||
"version": "0.1.0",
|
||||
"view": "full"
|
||||
},
|
||||
"text": "Tent.io is awesome!"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### POST /notifications
|
||||
|
||||
```text
|
||||
POST /notifications
|
||||
Content-Type: application/json
|
||||
Authorization: MAC id="775ecf8",
|
||||
ts="1336363200",
|
||||
nonce="dj83hs9s",
|
||||
mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "8c73440",
|
||||
"entity": "titanous.com",
|
||||
"time": 1345322351,
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"scope": "public",
|
||||
"content": {
|
||||
"type": {
|
||||
"url": "https://tent.io/types/posts/delete",
|
||||
"version": "0.1.0",
|
||||
"view": "full"
|
||||
},
|
||||
"id": "jA4Mzdh",
|
||||
"entity": "titanous.com",
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Fetch Post Feed
|
||||
|
||||
|
@ -406,83 +135,3 @@ Authorization: MAC id="775ecf8",
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
```text
|
||||
GET /posts
|
||||
Accept: application/json
|
||||
Authorization: MAC id="775ecf8",
|
||||
ts="1336363200",
|
||||
nonce="dj83hs9s",
|
||||
mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="
|
||||
```
|
||||
|
||||
```text
|
||||
200 OK
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "jA4Mzdh",
|
||||
"entity": "titanous.com",
|
||||
"time": 1345322351,
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"scope": "public",
|
||||
"content": {
|
||||
"type": {
|
||||
"url": "https://tent.io/types/posts/status",
|
||||
"version": "0.1.0",
|
||||
"view": "full"
|
||||
},
|
||||
"text": "Tent.io is awesome!"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Fetch Single Post
|
||||
|
||||
### GET /posts/:id
|
||||
|
||||
```text
|
||||
GET /posts/jA4Mzdh
|
||||
Accept: application/json
|
||||
Authorization: MAC id="775ecf8",
|
||||
ts="1336363200",
|
||||
nonce="dj83hs9s",
|
||||
mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="
|
||||
```
|
||||
|
||||
```text
|
||||
200 OK
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "jA4Mzdh",
|
||||
"entity": "titanous.com",
|
||||
"time": 1345322351,
|
||||
"licenses": [
|
||||
{
|
||||
"url": "https://tent.io/types/licenses/creative-commons",
|
||||
"version": "3.0.0"
|
||||
}
|
||||
],
|
||||
"scope": "public",
|
||||
"content": {
|
||||
"type": {
|
||||
"url": "https://tent.io/types/posts/status",
|
||||
"version": "0.1.0",
|
||||
"view": "full"
|
||||
},
|
||||
"text": "Tent.io is awesome!"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue