mirror of
https://github.com/versia-pub/docs.git
synced 2025-12-06 06:18:19 +01:00
feat: ✨ Add Instance Messaging extension
This commit is contained in:
parent
8e92899b84
commit
94881b113b
87
app/extensions/instance-messaging/page.mdx
Normal file
87
app/extensions/instance-messaging/page.mdx
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
export const metadata = {
|
||||
title: "Instance Messaging Extension",
|
||||
description: "Instance Messaging allows instances to send federation debug messages."
|
||||
}
|
||||
|
||||
# Instance Messaging Extension
|
||||
|
||||
Misconfigured or buggy instances often have trouble federating with others. This extension enables instances to send simple federation debug messages. {{ className: "lead" }}
|
||||
|
||||
<Note>
|
||||
This extension is intended to help developers debug federation issues between instances. It is not intended for general-purpose messaging.
|
||||
</Note>
|
||||
|
||||
## Purpose
|
||||
|
||||
Often, federation "fails silently" with no indication of what went wrong, as instances are incapable of communicating with each other outside of administrators manually checking logs.
|
||||
|
||||
For example, let's consider the following scenario:
|
||||
1. `joe.social` and `jane.org` are two instances.
|
||||
2. `joe.social` tries to fetch a user profile from `jane.org`, at `jane.org/users/nkGEd8eI98` for example.
|
||||
3. `jane.org` responds with a [User](/entities/user) object with a missing or incorrect field, such as an improperly validated `username`.
|
||||
4. `joe.social` is incapable of processing the response and silently fails to fetch the user profile.
|
||||
|
||||
In this scenario, `jane.org` has no way of knowing what went wrong, as `joe.social` does not provide any feedback.
|
||||
|
||||
## Instance Metadata Extensions
|
||||
|
||||
This extension adds the following metadata to instances:
|
||||
|
||||
<Row>
|
||||
<Col>
|
||||
<Properties>
|
||||
<Property name="endpoint" type="string" required={true}>
|
||||
The endpoint to send federation debug messages to.
|
||||
|
||||
### Sending Messages
|
||||
|
||||
To send a federation debug message, instances **should** make a `POST` request to the appropriate endpoint with a simple text body containing a helpful message.
|
||||
|
||||
```text {{ "title": "Helpful Message" }}
|
||||
Validation failed for https://jane.org/users/nkGEd8eI98.
|
||||
Reasons:
|
||||
- `username` must be alphanumeric. Found invalid character `@`.
|
||||
```
|
||||
|
||||
Do not send useless messages, such as:
|
||||
|
||||
```text {{ "title": "Unhelpful Message" }}
|
||||
Federation failed.
|
||||
```
|
||||
</Property>
|
||||
</Properties>
|
||||
</Col>
|
||||
|
||||
<Col sticky>
|
||||
|
||||
```jsonc {{ "title": "Example Instance Metadata" }}
|
||||
{
|
||||
"type": "InstanceMetadata",
|
||||
"name": "Jane.org",
|
||||
"software": {
|
||||
"name": "Versia Server",
|
||||
"version": "0.7.0"
|
||||
},
|
||||
"compatibility": {
|
||||
"versions": [
|
||||
"0.4.0"
|
||||
],
|
||||
"extensions": [
|
||||
"pub.versia:reactions",
|
||||
"pub.versia:polls",
|
||||
"pub.versia:reports",
|
||||
"pub.versia:instance_messaging"
|
||||
]
|
||||
},
|
||||
"host": "jane.org",
|
||||
"created_at": "2021-07-01T00:00:00Z",
|
||||
"extensions": { // [!code focus:5]
|
||||
"pub.versia:instance_messaging": {
|
||||
"endpoint": "https://jane.org/api/reports",
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</Col>
|
||||
</Row>
|
||||
|
|
@ -288,6 +288,10 @@ export const navigation: NavGroup[] = [
|
|||
title: "Extensions",
|
||||
links: [
|
||||
{ title: "Custom Emojis", href: "/extensions/custom-emojis" },
|
||||
{
|
||||
title: "Instance Messaging",
|
||||
href: "/extensions/instance-messaging",
|
||||
},
|
||||
{ title: "Likes", href: "/extensions/likes" },
|
||||
{ title: "Migration", href: "/extensions/migration" },
|
||||
{ title: "Polls", href: "/extensions/polls" },
|
||||
|
|
|
|||
Loading…
Reference in a new issue