Users

The User entity represents an account on a Versia instance. Users can post Notes, follow other users, and interact with content. Users are identified by their id property, which is unique within the instance.

Addresses

Users may be represented by a shorthand address, in the following formats:

@username@instance
@id@instance

For example:

@jessew@versia.social
@018ec082-0ae1-761c-b2c5-22275a611771@versia.social

This is similar to an email address or an ActivityPub address. Usernames are case-insensitive.

Identifier

Identifier must be either a valid username or a valid id. It should have the same username/id as the user's profile.

Instance

Instance must be the Domain that the user is on.

Entity Definition

  • Name
    avatar
    Type
    ContentFormat
    Description

    The user's avatar. Must be an image format (image/*).

  • Name
    bio
    Type
    ContentFormat
    Description

    Short description of the user. Must be text format (text/*).

  • Name
    display_name
    Type
    string
    Description

    Display name, as shown to other users. May contain emojis and any Unicode character.

  • Name
    fields
    Required
    Required
    Type
    Field[]
    Description

    Custom key/value pairs. For example, metadata like socials or pronouns. Must be text format (text/*).

    type Field = {
        key: ContentFormat;
        value: ContentFormat;
    }
    
  • Name
    username
    Required
    Required
    Type
    string
    Description

    Alpha-numeric username. Must be unique within the instance. Must be treated as changeable by the user.

    Can only contain the following characters: a-z, A-Z (case-insensitive), 0-9, _ and -. Should be limited to reasonable lengths.

  • Name
    header
    Type
    ContentFormat
    Description

    A header image for the user's profile. Also known as a cover photo or a banner. Must be an image format (image/*).

  • Name
    manually_approves_followers
    Required
    Required
    Type
    boolean
    Description

    If true, the user must approve any new followers manually. If false, followers are automatically approved. This does not affect federation, and is meant to be used for clients to display correct UI.

  • Name
    indexable
    Required
    Required
    Type
    boolean
    Description

    User consent to be indexed by search engines. If false, the user's profile should not be indexed.

Example User

{
    "id": "018ec082-0ae1-761c-b2c5-22275a611771",
    "type": "User",
    "created_at": "2024-04-09T01:38:51.743Z",
    "avatar": { 
        "image/png": {
            "content": "https://avatars.githubusercontent.com/u/30842467?v=4"
        }
    },
    "bio": {
        "text/html": {
            "content": "<p>🌸🌸🌸</p>"
        },
        "text/plain": {
            "content": "🌸🌸🌸"
        }
    },
    "display_name": "April The Pink (limited Sand Edition)",
    "extensions": {
        "pub.versia:custom_emojis": {
            "emojis": []
        }
    },
    "fields": [
        {
            "key": {
                "text/html": {
                    "content": "<p>Pronouns</p>"
                }
            },
            "value": {
                "text/html": {
                    "content": "<p>It/its</p>"
                }
            }
        }
    ],
    "header": null,
    "indexable": false,
    "manually_approves_followers": false,
    "username": "aprl"
}

Collections

The following Collections are available:

  • outbox: Collection of notes authored by the user.
  • followers: URI Collection of users that follow the user.
  • following: URI Collection of users that the user follows.
  • featured: Collection of notes that the user wants to feature on their profile ("pinned" notes).

These can be fetched using the Federation API