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
@id@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"
}
```