mirror of
https://github.com/versia-pub/docs.git
synced 2025-12-06 06:18:19 +01:00
feat: 📝 Document ServerMetadata
This commit is contained in:
parent
9f3bd64d7d
commit
8de6686a9a
131
app/entities/server-metadata/page.mdx
Normal file
131
app/entities/server-metadata/page.mdx
Normal file
|
|
@ -0,0 +1,131 @@
|
||||||
|
export const metadata = {
|
||||||
|
title: 'Server Metadata',
|
||||||
|
description: 'Metadata about a Versia instance, such as capabilities and endpoints.',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Server Metadata
|
||||||
|
|
||||||
|
Contains metadata about a Versia instance, such as capabilities and endpoints. {{ className: 'lead' }}
|
||||||
|
|
||||||
|
Not to be confused with [Server Actor](/entities/server-actor), which is a User representing an instance in the federation.
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
This entity is only used as part of [Server Discovery](/federation/discovery#server-discovery), and not as part of federation.
|
||||||
|
</Note>
|
||||||
|
|
||||||
|
## Entity Definition
|
||||||
|
|
||||||
|
<Row>
|
||||||
|
<Col>
|
||||||
|
<Properties>
|
||||||
|
<Property name="id" type="null">
|
||||||
|
This entity does not have an ID.
|
||||||
|
</Property>
|
||||||
|
<Property name="uri" type="null">
|
||||||
|
This entity does not have a URI.
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="string" required={true}>
|
||||||
|
Friendly name of the instance, for humans.
|
||||||
|
</Property>
|
||||||
|
<Property name="software" type="Software" required={true}>
|
||||||
|
Information about the software running the instance.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type Software = {
|
||||||
|
name: string;
|
||||||
|
version: string;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `name`: Name of the software.
|
||||||
|
- `version`: Version of the software. Should use [SemVer](https://semver.org/).
|
||||||
|
</Property>
|
||||||
|
<Property name="compatibility" type="Compatibility" required={true}>
|
||||||
|
Information about the compatibility of the instance.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type Compatibility = {
|
||||||
|
versions: string[];
|
||||||
|
extensions: string[];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `versions`: Supported Versia Protocol versions.
|
||||||
|
- Versions marked as "Working Draft X" are represented as `0.X`.
|
||||||
|
- `extensions`: Supported extensions.
|
||||||
|
</Property>
|
||||||
|
<Property name="description" type="string" required={false}>
|
||||||
|
Long description of the instance, for humans. Should be around 100-200 words.
|
||||||
|
</Property>
|
||||||
|
<Property name="host" type="string" required={true}>
|
||||||
|
Hostname of the instance. Includes the port if it is not the default (i.e. `443` for HTTPS).
|
||||||
|
</Property>
|
||||||
|
<Property name="shared_inbox" type="URI" required={false}>
|
||||||
|
URI to the instance's shared inbox, if supported.
|
||||||
|
</Property>
|
||||||
|
<Property name="moderators" type="URI" required={false}>
|
||||||
|
URI to [Collection](/structures/collection) of instance moderators.
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
This is for human consumption (such as moderator contact), not for any kind of protocol authorization.
|
||||||
|
</Note>
|
||||||
|
</Property>
|
||||||
|
<Property name="admins" type="URI" required={false}>
|
||||||
|
URI to [Collection](/structures/collection) of instance administrators.
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
This is for human consumption (such as admin contact), not for any kind of protocol authorization.
|
||||||
|
</Note>
|
||||||
|
</Property>
|
||||||
|
<Property name="logo" type="ContentFormat" required={false} typeLink="/structures/content-format">
|
||||||
|
Logo of the instance. Must be an image format (`image/*`).
|
||||||
|
</Property>
|
||||||
|
<Property name="banner" type="ContentFormat" required={false} typeLink="/structures/content-format">
|
||||||
|
Banner of the instance. Must be an image format (`image/*`).
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Col>
|
||||||
|
|
||||||
|
<Col sticky>
|
||||||
|
|
||||||
|
```jsonc {{ 'title': 'ServerMetadata' }}
|
||||||
|
{
|
||||||
|
"type": "ServerMetadata",
|
||||||
|
"name": "Jim's Jolly Jimjams",
|
||||||
|
"software": {
|
||||||
|
"name": "Versia Server",
|
||||||
|
"version": "1.2.0-beta.3"
|
||||||
|
},
|
||||||
|
"compatibility": {
|
||||||
|
"versions": [
|
||||||
|
"0.3.0",
|
||||||
|
"0.4.0"
|
||||||
|
],
|
||||||
|
"extensions": [
|
||||||
|
"pub.versia:reactions",
|
||||||
|
"pub.versia:polls",
|
||||||
|
"pub.versia:reports"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"description": "Server for Jim's Jolly Jimjams, a social network for fans of Jimjams.",
|
||||||
|
"host": "social.jimjams.com",
|
||||||
|
"shared_inbox": "https://social.jimjams.com/inbox",
|
||||||
|
"moderators": "https://social.jimjams.com/moderators",
|
||||||
|
"admins": "https://social.jimjams.com/admins",
|
||||||
|
"logo": {
|
||||||
|
"image/png": {
|
||||||
|
"content": "https://social.jimjams.com/files/logo.png"
|
||||||
|
},
|
||||||
|
"image/webp": {
|
||||||
|
"content": "https://social.jimjams.com/files/logo.webp"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"banner": null,
|
||||||
|
"extensions": {
|
||||||
|
"example.extension:monthly_active_users": 1000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
|
@ -91,7 +91,7 @@ Instance **must** be the host of the instance the user is on (hostname with opti
|
||||||
<Property name="inbox" type="URI" required={true} typeLink="/types#uri">
|
<Property name="inbox" type="URI" required={true} typeLink="/types#uri">
|
||||||
The user's federation inbox. Refer to the [federation documentation](/federation).
|
The user's federation inbox. Refer to the [federation documentation](/federation).
|
||||||
|
|
||||||
Some instances may have a shared inbox, in which case that should be used instead. Refer to [Server Metadata](/entities/server-metadata) for more information.
|
Some instances may also have a shared inbox. Refer to [Server Metadata](/entities/server-metadata) for more information.
|
||||||
</Property>
|
</Property>
|
||||||
<Property name="collections" type="UserCollections" required={true}>
|
<Property name="collections" type="UserCollections" required={true}>
|
||||||
Collections related to the user. Must contain at least `outbox`, `followers`, `following`, and `featured`.
|
Collections related to the user. Must contain at least `outbox`, `followers`, `following`, and `featured`.
|
||||||
|
|
|
||||||
|
|
@ -69,10 +69,10 @@ Accept: application/json
|
||||||
"uri": "https://versia.social",
|
"uri": "https://versia.social",
|
||||||
"version": "3.2.0",
|
"version": "3.2.0",
|
||||||
"supported_extensions": [
|
"supported_extensions": [
|
||||||
"org.lysand:reactions",
|
"pub.versia:reactions",
|
||||||
"org.lysand:polls",
|
"pub.versia:polls",
|
||||||
"org.lysand:custom_emojis",
|
"pub.versia:custom_emojis",
|
||||||
"org.lysand:is_cat"
|
"pub.versia:is_cat"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
@ -277,6 +277,7 @@ export const navigation: NavGroup[] = [
|
||||||
{ title: "FollowAccept", href: "/entities/follow-accept" },
|
{ title: "FollowAccept", href: "/entities/follow-accept" },
|
||||||
{ title: "FollowReject", href: "/entities/follow-reject" },
|
{ title: "FollowReject", href: "/entities/follow-reject" },
|
||||||
{ title: "Notes", href: "/entities/note" },
|
{ title: "Notes", href: "/entities/note" },
|
||||||
|
{ title: "ServerMetadata", href: "/entities/server-metadata" },
|
||||||
{ title: "Unfollow", href: "/entities/unfollow" },
|
{ title: "Unfollow", href: "/entities/unfollow" },
|
||||||
{ title: "Users", href: "/entities/user" },
|
{ title: "Users", href: "/entities/user" },
|
||||||
],
|
],
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue