Actors represent an entity that can “do something” (e.g. a person, creature, automated service, etc.) and are one of the 5 types of pushable object.
Actors have a set of “endpoints”, which are used as a way to “do something” to that actor. For example, sending an authenticated POST request to the follow
endpoint (on behalf of another actor) will notify the remote instance that your actor is now following the remote actor, or if the remote actor has requestToFollow
set, that a follow request was sent. The exceptions to this are the feed endpoints, which should be GET-requested, and will return a list of objects published by the actor.
Note about the follow
endpoint: it should return a single word, active
or pending
, representing whether the follow was immediately accepted or if it's waiting to be approved. If for whatever reason the remote server doesn't do that, you can guess based on whether the actor has requestToFollow set (pending
) or not (active
), but this could lead to desynchronisation issues in certain cases
todo: document all of these different endpoints
{ "type": "actor", "self": "https://social.example/user/winter", "created": "2025-01-01T09:00:00Z", "homepage": "https://social.example/@winter", "handle": "winter", "displayName": "winter the eternal", "avatar": "https://social.example/upload/1423.png", "bio": "hi i'm winter!!\n\nmeow", "pronouns": "it/she", "requestToFollow": true, "endpoints": { "basicFeed": "https://social.example/user/winter/feed", "follow": "https://social.example/user/winter/rpc/follow", "unfollow": "https://social.example/user/winter/rpc/unfollow", "acceptedFollow": "https://social.example/user/winter/rpc/accepted", "rejectedFollow": "https://social.example/user/winter/rpc/rejected" }, "extensions": { "https://example.org/extension/bloop": "bloop!" } }