Notes

Notes represent a piece of content on a Versia instance. They can be posted by Users and are displayed in a user's feed. Notes can contain text, images, and other media.

Entity Definition

  • Name
    attachments
    Type
    ContentFormat[]
    Description

    Media attachments to the note. May be any format. Must be remote.

  • Name
    author
    Required
    Required
    Type
    URI
    Description

    URI of the User considered the author of the note.

  • Name
    category
    Type
    Category
    Description

    Category of the note. Useful for clients to render notes differently depending on their intended purpose.

    type Category =
        | "microblog" // Like Twitter, Mastodon
        | "forum" // Like Reddit
        | "blog" // Like WordPress, Medium
        | "image" // Like Instagram
        | "video" // Like YouTube, PeerTube
        | "audio" // Like SoundCloud, Spotify
        | "messaging"; // Like Discord, Element (Matrix), Signal
    
  • Name
    content
    Type
    ContentFormat
    Description

    The content of the note. Must be text format (text/html, text/markdown, etc). Must not be remote.

  • Name
    device
    Type
    Device
    Description

    Device used to post the note. Useful for functionality such as Twitter's "posted via" feature.

    type Device = {
        name: string;
        version?: string;
        url?: string;
    }
    
  • Name
    group
    Type
    URI | "public" | "followers"
    Description

    URI of a Group that the note is only visible in, or one of the following strings:

    • public: The note is visible to anyone.
    • followers: The note is visible only to the author's followers.

    If not provided, the note is only visible to the author and those mentioned in the note.

  • Name
    is_sensitive
    Type
    boolean
    Description

    Whether the note contains "sensitive content". This can be used with subject as a "content warning" feature.

  • Name
    mentions
    Type
    URI[]
    Description

    URIs of Users that should be notified of the note. Similar to Twitter's @ mentions. The note may also contain mentions in the content, however only the mentions in this field should trigger notifications.

  • Name
    previews
    Type
    LinkPreview[]
    Description

    Previews for any links in the publication. This is to avoid the stampeding mastodon problem where a link preview is fetched by every instance that sees the publication, creating an accidental DDOS attack.

    type LinkPreview = {
        link: string;
        title: string;
        description?: string;
        image?: string;
        icon?: string;
    }
    
  • Name
    quotes
    Type
    URI
    Description

    URI of the note that this note is quoting, if any. Quoting is similar to replying, but does not notify the author of the quoted note. Inspired by Twitter's "quote tweet" feature.

  • Name
    replies_to
    Type
    URI
    Description

    URI of the note that this note is a reply to, if any.

  • Name
    subject
    Type
    string
    Description

    A subject for the note. Useful for clients to display a "content warning" or "spoiler" feature, such as on Mastodon. Must be a plaintext string (text/plain).

Example Note

{
    "id": "01902e09-0f8b-72de-8ee3-9afc0cf5eae1",
    "type": "Note",
    "uri": "https://versia.social/objects/01902e09-0f8b-72de-8ee3-9afc0cf5eae1",
    "created_at": "2024-06-19T01:07:44.139Z",
    "attachments": [ 
        {
            "image/png": {
                "content": "https://cdn.versia.social/29e810bf4707fef373d886af322089d5db300fce66e4e073efc26827f10825f6/image.webp",
                "remote": true,
                "thumbhash": "1QcSHQRnh493V4dIh4eXh1h4kJUI",
                "height": 960,
                "size": 221275,
                "hash": {
                    "sha256": "967b8e86d8708c6283814f450efcbd3be94d3d24ca9a7ab435b2ff8b51dcbc21"
                },
                "width": 639
            }
        },
        {
            "text/plain": {
                "content": "https://cdn.lysand.org/68c02dd11c179ef4d170b05393f6e72133dd0ad733f40d41b42363d8784e8d5d/fire.txt",
                "remote": true,
                "size": 8,
                "hash": {
                    "sha256": "68c02dd11c179ef4d170b05393f6e72133dd0ad733f40d41b42363d8784e8d5d"
                }
            }
        }
    ],
    "author": "https://versia.social/users/018eb863-753f-76ff-83d6-fd590de7740a",
    "category": "microblog",
    "content": {
        "text/html": {
            "content": "<p>In the next versia-fe update: account settings, finally!</p>"
        },
        "text/plain": {
            "content": "In the next versia-fe update: account settings, finally!"
        }
    },
    "device": {
        "name": "Megalodon for Android",
        "version": "1.3.89",
        "url": "https://sk22.github.io/megalodon"
    },
    "extensions": {
        "pub.versia:custom_emojis": {
            "emojis": []
        }
    },
    "group": "public",
    "is_sensitive": false,
    "mentions": [],
    "subject": "Versia development"
}