230 lines
6.9 KiB
Plaintext
230 lines
6.9 KiB
Plaintext
|
> The Atom Publishing Protocol (AtomPub) is an application-level
|
||
|
> protocol for publishing and editing Web resources. The protocol is
|
||
|
> based on HTTP transfer of Atom-formatted representations. The Atom
|
||
|
> format is documented in the Atom Syndication Format.
|
||
|
|
||
|
You can find more information about AtomPub in [RFC5023](https://tools.ietf.org/html/rfc5023).
|
||
|
|
||
|
> Activity Streams is an open format specification for activity stream protocols,
|
||
|
> which are used to syndicate activities taken in social web applications and
|
||
|
> services.
|
||
|
|
||
|
You can find more information about Activity Streams at [activitystrea.ms](http://activitystrea.ms/).
|
||
|
|
||
|
## Authentication
|
||
|
|
||
|
The API supports both
|
||
|
[HTTP Basic](https://en.wikipedia.org/wiki/Basic_access_authentication)
|
||
|
and [OAuth](https://en.wikipedia.org/wiki/OAuth).
|
||
|
|
||
|
## Service document
|
||
|
|
||
|
The service document for an account is found at
|
||
|
`/api/statusnet/app/service/<nickname>.xml`
|
||
|
|
||
|
Each service document has one workspace ('Main') and four collections:
|
||
|
|
||
|
* **notices**: notices generated by the user
|
||
|
* **subscriptions**: subscriptions by the user
|
||
|
* **favorites**: the user's favorites
|
||
|
* **memberships**: the user's group memberships
|
||
|
|
||
|
Collections are identified by the `<activity:verb>` element(s) in their
|
||
|
`<collection>` element.
|
||
|
|
||
|
## Notices
|
||
|
|
||
|
Notice feeds, in reverse-chronological order, are at
|
||
|
`/api/statuses/user_timeline/<id>.atom`.
|
||
|
|
||
|
This is a partial feed; navigation links are included in the feed to scroll forward
|
||
|
and back.
|
||
|
|
||
|
Notices are represented as Activity Streams events with the "Post" verb and "Note" object-type:
|
||
|
|
||
|
<entry>
|
||
|
<activity:object-type>
|
||
|
http://activitystrea.ms/schema/1.0/note
|
||
|
</activity:object-type>
|
||
|
[...]
|
||
|
<activity:verb>
|
||
|
http://activitystrea.ms/schema/1.0/post
|
||
|
</activity:verb>
|
||
|
[...]
|
||
|
</entry>
|
||
|
|
||
|
Repeats are be represented as Activity Streams events with the "Share" verb, and with the activity object being an entry representing a Notice:
|
||
|
|
||
|
<entry>
|
||
|
<activity:verb>
|
||
|
http://activitystrea.ms/schema/1.0/share
|
||
|
</activity:verb>
|
||
|
[...]
|
||
|
<activity:object>
|
||
|
<activity:object-type>
|
||
|
http://activitystrea.ms/schema/1.0/activity
|
||
|
</activity:object-type>
|
||
|
[...]
|
||
|
<activity:verb>
|
||
|
http://activitystrea.ms/schema/1.0/post
|
||
|
</activity:verb>
|
||
|
[...]
|
||
|
<activity:object>
|
||
|
<activity:object-type>
|
||
|
http://activitystrea.ms/schema/1.0/note
|
||
|
</activity:object-type>
|
||
|
[...]
|
||
|
</activity:object>
|
||
|
[...]
|
||
|
</activity:object>
|
||
|
[...]
|
||
|
</entry>
|
||
|
|
||
|
Posted files will be represented by the "Post" verb and "Image, File, Video" object-type.
|
||
|
|
||
|
### Single-notice URL
|
||
|
|
||
|
Single notices are be available as an Activity Streams event at `/api/statuses/show/<notice-id>.atom`.
|
||
|
|
||
|
<entry>
|
||
|
<activity:object-type>
|
||
|
http://activitystrea.ms/schema/1.0/note
|
||
|
</activity:object-type>
|
||
|
[...]
|
||
|
<activity:verb>
|
||
|
http://activitystrea.ms/schema/1.0/post
|
||
|
</activity:verb>
|
||
|
<author>
|
||
|
<activity:object-type>
|
||
|
http://activitystrea.ms/schema/1.0/person
|
||
|
</activity:object-type>
|
||
|
[...]
|
||
|
</author>
|
||
|
</entry>
|
||
|
|
||
|
### Posting a notice
|
||
|
|
||
|
A notice can be posted by sending a POST request containing a single `<entry>`
|
||
|
element to the URL of the notice feed. These should have a "Post" verb, and a "Note"
|
||
|
object-type, but since these are the default values, Atom entries that aren't
|
||
|
marked up as Activity Streams objects should be fine to post.
|
||
|
|
||
|
The resulting entry will be returned, per the APP, in Activity Streams format. The
|
||
|
location of the notice can be read from the Content-Location HTTP header of the
|
||
|
result or from the rel=self URL in the resulting entry.
|
||
|
|
||
|
### Editing a notice
|
||
|
|
||
|
Notices cannot be edited. PUT requests to a notice URL will fail.
|
||
|
|
||
|
### Deleting a notice
|
||
|
|
||
|
A single notice can be deleted by posting a DELETE HTTP request to the notice's
|
||
|
Atom representation.
|
||
|
|
||
|
Example with cURL:
|
||
|
|
||
|
curl -u username:password -X DELETE \
|
||
|
http://example.org/api/statuses/show/<notice-id>.atom
|
||
|
|
||
|
## Subscriptions
|
||
|
|
||
|
The subscriptions feed, in reverse-chronological order, is at
|
||
|
`/api/statusnet/app/subscriptions/<id>.atom`.
|
||
|
|
||
|
This is a partial feed; it includes the navigation links necessary to scroll forward
|
||
|
and back.
|
||
|
|
||
|
Subscriptions are represented as Activity Streams entries with the "Follow" verb and
|
||
|
"Person" object-type.
|
||
|
|
||
|
### Subscription URL
|
||
|
|
||
|
A subscription has an URL at
|
||
|
`/api/statusnet/app/subscriptions/<subscriber id>/<subscribed id>.atom`.
|
||
|
|
||
|
### Adding a new subscription
|
||
|
|
||
|
To add a new subscription, POST an Activity Streams `<entry>` with a "Follow" verb
|
||
|
and "Person" object-type.
|
||
|
|
||
|
The resulting entry will be returned, per the APP, in Activity Streams format. The
|
||
|
location of the subscription can be read from the Content-Location HTTP header of
|
||
|
the result or from the rel=self URL in the resulting entry.
|
||
|
|
||
|
### Editing a subscription
|
||
|
|
||
|
Subscriptions cannot be edited. PUT requests to the subscription URL will result in
|
||
|
an error.
|
||
|
|
||
|
### Deleting a subscription
|
||
|
|
||
|
To delete a subscription, send a DELETE HTTP request to the Subscription URL.
|
||
|
|
||
|
## Favorites
|
||
|
|
||
|
The feed of the user's favorites, in reverse-chronological order, is at
|
||
|
`/api/statusnet/app/favorites/<user id>.atom`.
|
||
|
|
||
|
This is a partial feed; it includes the navigation links necessary to scroll forward
|
||
|
and back.
|
||
|
|
||
|
Favorites are represented as Activity Streams entries with the "Favorite" verb and
|
||
|
"Note" object-type.
|
||
|
|
||
|
### Favorite URL
|
||
|
|
||
|
Favorite entries have a self URL at
|
||
|
`/api/statusnet/app/favorites/<user id>/<notice id>.atom`.
|
||
|
|
||
|
### Favoriting a notice
|
||
|
|
||
|
To favorite a notice, POST an Activity Streams `<entry>` with the "Favorite" verb and
|
||
|
"Note" object-type.
|
||
|
|
||
|
The resulting favorite will be returned, per the APP, in Activity Streams format.
|
||
|
The location of the favorite can be read from the Content-Location HTTP header of
|
||
|
the result or from the rel=self URL in the resulting entry.
|
||
|
|
||
|
### Editing a favorite
|
||
|
|
||
|
Favorites cannot be edited. PUT requests to a favorite URL will fail.
|
||
|
|
||
|
### Deleting a favorite
|
||
|
|
||
|
To "unfavorite" a notice, POST a DELETE request to the URL for the favorite.
|
||
|
|
||
|
## Groups
|
||
|
|
||
|
A feed of group memberships, in reverse-chron order, is available at
|
||
|
`/api/statusnet/app/memberships/<user id>.atom`.
|
||
|
|
||
|
This is a partial feed; it includes the navigation links necessary to scroll forward
|
||
|
and back.
|
||
|
|
||
|
Memberships are represented as Activity Streams entries with the "Join" ber and
|
||
|
"Group" object-type.
|
||
|
|
||
|
### Membership URL
|
||
|
|
||
|
Each membership has a representation at
|
||
|
`/api/statusnet/app/memberships/<user id>/<group id>.atom`.
|
||
|
|
||
|
### Joining a group
|
||
|
|
||
|
To join a group, POST an activity entry with a "Join" verb and "Group" object-type to
|
||
|
the memberships feed.
|
||
|
|
||
|
The resulting membership will be returned, per the APP, in Activity Streams format.
|
||
|
The location of the membership can be read from the Content-Location HTTP header of
|
||
|
the result or from the rel=self URL in the resulting entry.
|
||
|
|
||
|
### Editing group membership
|
||
|
|
||
|
Group memberships cannot be edited. PUT requests to a membership feed will fail.
|
||
|
|
||
|
### Leaving a group
|
||
|
|
||
|
To leave a group, send a DELETE request to the membership URL.
|
||
|
|