export const metadata = { title: 'Users', description: 'Definition of the User entity', } # Users The `User` entity represents an account on a Lysand instance. Users can post [Notes](/entities/notes), follow other users, and interact with content. Users are identified by their `id` property, which is unique within the instance. {{ className: 'lead' }} ## Addresses Users may be represented by a shorthand address, in the following formats: ``` @username@instance @uuid@instance ``` For example: ``` @jessew@social.lysand.org @018ec082-0ae1-761c-b2c5-22275a611771@social.lysand.org ``` This is similar to an email address or an ActivityPub address. ### Identifier Identifier **must** be either a valid `username` or a valid `id`. It should have the same username/id as the user's profile. Usernames can be changed by the user, so it is recommended to use `id` for long-term references. ### Instance Instance **must** be the host of the instance the user is on (hostname with optional port). ## Entity Definition The user's avatar. Must be an image format (`image/*`). Short description of the user. Must be text format (`text/*`). Display name, as shown to other users. May contain emojis and any Unicode character. Custom key/value pairs. For example, metadata like socials or pronouns. Must be text format (`text/*`). ```typescript type Field = { key: ContentFormat; value: ContentFormat; } ``` 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` (lowercase), `0-9`, `_` and `-`. Should be limited to reasonable lengths. A header image for the user's profile. Also known as a cover photo or a banner. Must be an image format (`image/*`). The user's public key. Must follow the [Lysand Public Key](/signatures) format. `actor` may be a URI to another user's profile, in which case this key may allow the user to act on behalf of the other user (see [delegation](/delegation)). ```typescript type URI = string; type PublicKey = { actor: URI; public_key: string; } ``` 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. User consent to be indexed by search engines. If `false`, the user's profile should not be indexed. The user's federation inbox. Refer to the [federation documentation](/federation). The user's federation outbox. Refer to the [federation documentation](/federation). User's followers. URI must resolve to a [Collection](/structures/collection) of [User](/entities/users) entities. Users that the user follows. URI must resolve to a [Collection](/structures/collection) of [User](/entities/users) entities. User's likes. URI must resolve to a [Collection](/structures/collection) of [Like](/entities/likes) entities. User's dislikes. URI must resolve to a [Collection](/structures/collection) of [Dislike](/entities/dislikes) entities. [Notes](/entities/notes) that the user wants to feature (also known as "pin") on their profile. URI must resolve to a [Collection](/structures/collection) of [Note](/entities/notes) entities. ```jsonc {{ 'title': 'Example User' }} { "id": "018ec082-0ae1-761c-b2c5-22275a611771", "type": "User", "uri": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771", "created_at": "2024-04-09T01:38:51.743Z", "avatar": { // [!code focus:100] "image/png": { "content": "https://avatars.githubusercontent.com/u/30842467?v=4" } }, "bio": { "text/html": { "content": "

🌸🌸🌸

" }, "text/plain": { "content": "🌸🌸🌸" } }, "dislikes": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771/dislikes", "display_name": "April The Pink (limited Sand Edition)", "extensions": { "org.lysand:custom_emojis": { "emojis": [] } }, "featured": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771/featured", "fields": [ { "key": { "text/html": { "content": "

Pronouns

" } }, "value": { "text/html": { "content": "

It/its

" } } } ], "followers": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771/followers", "following": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771/following", "header": null, "inbox": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771/inbox", "indexable": false, "likes": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771/likes", "manually_approves_followers": false, "outbox": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771/outbox", "public_key": { "actor": "https://social.lysand.org/users/018ec082-0ae1-761c-b2c5-22275a611771", "public_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }, "username": "aprl" } ```