Instance Messaging Extension
Misconfigured or buggy instances often have trouble federating with others. This extension enables instances to send simple federation debug messages.
This extension is intended to help developers debug federation issues between instances. It is not intended for general-purpose messaging.
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:
joe.socialandjane.orgare two instances.joe.socialtries to fetch a user profile fromjane.org, atjane.org/users/nkGEd8eI98for example.jane.orgresponds with a User object with a missing or incorrect field, such as an improperly validatedusername.joe.socialis 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:
- Name
endpoint- Required
- Required
- Type
- string
- Description
The endpoint to send federation debug messages to.
Sending Messages
To send a federation debug message, instances should make a
POSTrequest to the appropriate endpoint with a simple text body containing a helpful message.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:
Unhelpful Message
Federation failed.
Example Instance Metadata
{
"type": "InstanceMetadata",
"name": "Jane.org",
"software": {
"name": "Versia Server",
"version": "0.7.0"
},
"compatibility": {
"versions": [
"0.5.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": {
"pub.versia:instance_messaging": {
"endpoint": "https://jane.org/api/reports",
},
}
}