# Actors

**Actors** represent an entity that can "do something" (i.e. a person, creature, automated account, etc.) and are one of the [5 types of pushable object](objects).

## Schema

- type: "actor"
- self: uri(actor) required
- created: timestamp required
- modified: timestamp optional
- homepage: uri optional
- handle: string required [can be anything at all]
- displayName: string required
- avatar: uri optional
- bio: string optional
- pronouns: string optional
- automated: boolean optional default=false
- requestToFollow: boolean optional default=false
- endpoints: object required
    - basicFeed: uri(pagination(uri(any))) required
    - fullFeed: uri(pagination(any)) optional
    - filteredFeed: uri(pagination(any)) optional
    - follow: uri optional
    - unfollow: uri optional [if follow is present, unfollow must also be present]
    - acceptedFollow: uri optional
    - rejectedFollow: uri optional [if acceptFollow is present, rejectFollow must also be present]
    - block: uri optional
    - unblock: uri optional
- extensions: object optional default={}
    - (uri): any many

## Example

```json
{
    "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": {}
}
```