Likes Extension

The Likes extension adds support for users to like and dislike notes.

Implementations should make sure that users cannot like and dislike the same note at the same time. If a user dislikes a note they have already liked, the like should be removed, and vice versa.

Likes

Likes are a way for users to show appreciation for a note, like Twitter's "heart" button or Reddit's "upvote".

Entity Definition

  • Name
    type
    Required
    Required
    Type
    string
    Description

    Must be pub.versia:likes/Like.

  • Name
    author
    Required
    Required
    Type
    URI
    Description

    Creator of the Like.

  • Name
    liked
    Required
    Required
    Type
    URI
    Description

    URI of the note being liked. Must link to a Note.

Example Like

{
    "id": "3e7e4750-afd4-4d99-a256-02f0710a0520",
    "type": "pub.versia:likes/Like",
    "created_at": "2021-01-01T00:00:00.000Z",
    "author": "https://example.com/users/6e0204a2-746c-4972-8602-c4f37fc63bbe",
    "uri": "https://example.com/likes/3e7e4750-afd4-4d99-a256-02f0710a0520",
    "liked": "https://otherexample.org/notes/fmKZ763jzIU8"
}

Dislikes

Dislikes are a way for users to show disapproval for a note, like YouTube's "dislikes" or Reddit's "downvotes".

Entity Definition

  • Name
    type
    Required
    Required
    Type
    string
    Description

    Must be pub.versia:likes/Dislike.

  • Name
    author
    Required
    Required
    Type
    URI
    Description

    Creator of the Dislike.

  • Name
    disliked
    Required
    Required
    Type
    URI
    Description

    URI of the note being disliked. Must link to a Note.

Example Dislike

{
    "id": "3e7e4750-afd4-4d99-a256-02f0710a0520",
    "type": "pub.versia:likes/Dislike",
    "created_at": "2021-01-01T00:00:00.000Z",
    "author": "https://example.com/users/6e0204a2-746c-4972-8602-c4f37fc63bbe",
    "uri": "https://example.com/dislikes/3e7e4750-afd4-4d99-a256-02f0710a0520",
    "disliked": "https://otherexample.org/notes/fmKZ763jzIU8"
}

Undoing Likes and Dislikes

To undo a like or dislike, a Delete entity should be used. The deleted property of the Delete entity should link to the Like or Dislike entity to be removed.

User Collections

The Likes extension adds the following collections to the User entity:

  • likes: A Collection of all the notes the user has liked.
  • dislikes: A Collection of all the notes the user has disliked.
{
    "type": "User",
    ...
    "collections": {
        ...
        "pub.versia:likes/Likes": "https://example.com/users/6e0204a2-746c-4972-8602-c4f37fc63bbe/likes",
        "pub.versia:likes/Dislikes": "https://example.com/users/6e0204a2-746c-4972-8602-c4f37fc63bbe/dislikes"
    }
}