# Federation ## Supported federation protocols and standards - [ActivityPub](https://www.w3.org/TR/activitypub/) (Server-to-Server) - [WebFinger](https://webfinger.net/) - [Http Signatures](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures) - [NodeInfo](https://nodeinfo.diaspora.software/) ## Supported FEPs - [FEP-f1d5: NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md) ## NodeInfo NeoDB instances can be identified from user agent string (`NeoDB/x.x (+https://example.org)`) and `protocols` in its nodeinfo, e.g. https://neodb.social/nodeinfo/2.0/ : ```json { "version": "2.0", "software": { "name": "neodb", "version": "0.10.4.13", "repository": "https://github.com/neodb-social/neodb", "homepage": "https://neodb.net/" }, "protocols": ["activitypub", "neodb"], } ``` ## ActivityPub NeoDB's ActivityPub implementation is based on [Takahē](https://jointakahe.org), with some change to enable interchange of additional information between NeoDB instances. ### Activity NeoDB add additional fields to `Note` activity: - `relatedWith` is a list of NeoDB specific activities which are associated with this `Note`. For each activity, `id` and `href` are both unique links to that activity, `withRegardTo` links to the catalog item, `attributedTo` links to the user, `type` is one of: - `Status`, its `status` can be one of: `complete`, `progress`, `wishlist` and `dropped` - `Rating`, its `value` is rating grade (int, 1-10), `worst` is always 1, `best` is always 10 - `Comment`, its `content` is comment text - `Review`, its `name` is review title, `content` is its body, `mediaType` is always `text/markdown` for now - `Note`, its `content` is note text - `tag` is used to store list of NeoDB catalog items, which are related with this activity. `type` of NeoDB catalog item can be one of `Edition`, `Movie`, `TVShow`, `TVSeason`, `TVEpisode`, `Album`, `Game`, `Podcast`, `PodcastEpisode`, `Performance`, `PerformanceProduction`; href will be the link to that item. Example: ```json { "@context": ["https://www.w3.org/ns/activitystreams", { "blurhash": "toot:blurhash", "Emoji": "toot:Emoji", "focalPoint": { "@container": "@list", "@id": "toot:focalPoint" }, "Hashtag": "as:Hashtag", "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount", "featured": { "@id": "toot:featured", "@type": "@id" } }, "https://w3id.org/security/v1"], "id": "https://neodb.social/@april_long_face@neodb.social/posts/380919151408919488/", "type": "Note", "relatedWith": [{ "id": "https://neodb.social/p/5oyF0qRx96mKKmVpFzHtMM", "type": "Status", "status": "complete", "withRegardTo": "https://neodb.social/movie/7hfF7d0aFMaqHpFjUpq4zR", "attributedTo": "https://neodb.social/@april_long_face@neodb.social/", "href": "https://neodb.social/p/5oyF0qRx96mKKmVpFzHtMM", "published": "2024-11-17T10:16:42.745240+00:00", "updated": "2024-11-17T10:16:42.750917+00:00" }, { "id": "https://neodb.social/p/47cJnbQTkbSSN2izLwQMjo", "type": "Comment", "withRegardTo": "https://neodb.social/movie/7hfF7d0aFMaqHpFjUpq4zR", "attributedTo": "https://neodb.social/@april_long_face@neodb.social/", "content": "Broadway cin\u00e9math\u00e8que, at least I laughed hard.", "href": "https://neodb.social/p/47cJnbQTkbSSN2izLwQMjo", "published": "2024-11-17T10:16:42.745240+00:00", "updated": "2024-11-17T10:16:42.777276+00:00" }, { "id": "https://neodb.social/p/3AyYu974qo6OU09AAsPweQ", "type": "Rating", "best": 10, "value": 7, "withRegardTo": "https://neodb.social/movie/7hfF7d0aFMaqHpFjUpq4zR", "worst": 1, "attributedTo": "https://neodb.social/@april_long_face@neodb.social/", "href": "https://neodb.social/p/3AyYu974qo6OU09AAsPweQ", "published": "2024-11-17T10:16:42.784220+00:00", "updated": "2024-11-17T10:16:42.786458+00:00" }], "attributedTo": "https://neodb.social/@april_long_face@neodb.social/", "content": "
\u770b\u8fc7 \u963f\u8bfa\u62c9 \ud83c\udf15\ud83c\udf15\ud83c\udf15\ud83c\udf17\ud83c\udf11
Broadway cin\u00e9math\u00e8que, at least I laughed hard.