lemmy/API.md

9.7 KiB

API

Actors

User / Person

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Person",
  "id": "https://rust-reddit-fediverse/api/v1/user/sally_smith",
  "name": "Sally Smith", // Their chosen alias
  "icon"?: {
    "type": "Image",
    "name": "User icon",
    "url": "https://rust-reddit-fediverse/api/v1/user/sally_smith/icon.png",
    "width": 32,
    "height": 32
  },
  "startTime": "2014-12-31T23:00:00-08:00",
  "summary"?: "This is sally's profile."
}

Community / Group

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Group",
  "id": "https://rust-reddit-fediverse/api/v1/community/today_i_learned",
  "name": "today_i_learned"
  "attributedTo": [ // The moderators
    "http://joe.example.org",
  ],
  "startTime": "2014-12-31T23:00:00-08:00",
  "summary"?: "The group's tagline",
  "attachment: [{}] // TBD, these would be where strong types for custom styles, and images would work.
}

Objects

Post / Page

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Page",
  "id": "https://rust-reddit-fediverse/api/v1/post/1",
  "name": "The title of a post, maybe a link to imgur",
  "url": "https://news.blah.com"
  "attributedTo": "http://joe.example.org", // The poster
  "startTime": "2014-12-31T23:00:00-08:00",

}

Post Listings / Ordered CollectionPage

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Page 1 of Sally's front page",
  "type": "OrderedCollectionPage",
  "id": "https://rust-reddit-fediverse/api/v1/posts?type={all, best, front}&sort={}&page=1,
  "partOf": "http://example.org/foo",
  "orderedItems": [Posts]
}

Comment / Note

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Note",
  "id": "https://rust-reddit-fediverse/api/v1/comment/1",
  "name": "A note",
  "content": "Looks like it is going to rain today. Bring an umbrella <a href='http://sally.example.org'>@sally</a>!"
  "attributedTo": john_id,
  "inReplyTo": "comment or post id",
  "startTime": "2014-12-31T23:00:00-08:00",
  "updated"?: "2014-12-12T12:12:12Z"
  "replies" // TODO, not sure if these objects should embed all replies in them or not.
  "to": [sally_id, group_id]
}

Comment Listings / Ordered CollectionPage

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Page 1 of comments for",
  "type": "OrderedCollectionPage",
  "id": "https://rust-reddit-fediverse/api/v1/comments?type={all,user,community,post,parent_comment}&id=1&page=1,
  "partOf": "http://example.org/foo",
  "orderedItems": [Comments]
}

Deleted thing / Tombstone

{
  "type": "Tombstone",
  "formerType": "Note / Post",
  "id": note / post_id,
  "deleted": "2016-03-17T00:00:00Z"
}

Actions

Comments

Create

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally created a note",
  "type": "Create",
  "actor": id,
  "object": comment_id, or post_id
}

Delete

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally deleted a note",
  "type": "Delete",
  "actor": id,
  "object": comment_id, or post_id
}

Update

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally created a note",
  "type": "Create",
  "actor": id,
  "object": comment_id, or post_id
  "content": "New comment",
  "updated": "New Date"
}

Read

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally read a comment",
  "type": "Read",
  "actor": user_id
  "object": comment_id
}

Like

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally liked a comment",
  "type": "Like",
  "actor": user_id
  "object": comment_id
  // TODO different types of reactions, or no?
}

Dislike

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally disliked a comment",
  "type": "Dislike",
  "actor": user_id
  "object": comment_id
  // TODO different types of reactions, or no?
}

Posts

Create

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally created a post",
  "type": "Create",
  "actor": id,
  "object": post_id
}

Delete

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally deleted a post",
  "type": "Delete",
  "actor": id,
  "object": comment_id, or post_id
}

Update

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally created a post",
  "type": "Create",
  "actor": id,
  "object": comment_id, or post_id
  TODO fields.
}

Read

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally read a post",
  "type": "Read",
  "actor": user_id
  "object": post_id
}

Communities

Create

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally created a community",
  "type": "Create",
  "actor": id,
  "object": community_id
}

Delete

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally deleted a community",
  "type": "Delete",
  "actor": id,
  "object": community_id
}

Update

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally created a community",
  "type": "Create",
  "actor": id,
  "object": community_id
  TODO fields.
}

Join

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally joined a community",
  "type": "Join",
  "actor": user_id,
  "object": community_id
}

Leave

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally left a community",
  "type": "Leave",
  "actor": user_id,
  "object": community_id
}

Moderator

Ban user from community / Block

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "The moderator blocked Sally from a group",
  "type": "Remove",
  "actor": mod_id,
  "object": user_id,
  "origin": group_id
}

Delete Comment

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally deleted a users comment",
  "type": "Delete",
  "actor": id,
  "object": community_id
}

Invite a moderator

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally invited John to mod a community",
  "type": "Invite",
  "id": "https://rust-reddit-fediverse/api/v1/invite/1",
  "actor": sally_id,
  "object": group_id,
  "target": john_id
}

Accept Invitation

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "John Accepted an invitation to mod a community",
  "type": "Accept",
  "actor": john_id,
  "object": invite_id
}

Reject Invitation

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "John Rejected an invitation to mod a community",
  "type": "Reject",
  "actor": john_id,
  "object": invite_id
}