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. | ||
|  | 
 |