description: "Allows users to control who can interact with their Notes"
}
# Interaction Controls
Often, it is desirable to post a Note, but control who is allowed to interact with it (e.g. send replies, like, dislike, etc.). This has traditionally not been possible in most federated networks: the Interaction Controls extension adds this possibility.
## Usage
The entity defined in this document must be inserted in the `pub.versia:interaction_controls` key of a [Note](/entities/note)'s extensions field.
- `group`: Includes every User in the [Group](/extensions/groups) that this Note was posted to, if any. If Note is not posted to a [Group](/extensions/groups), this value has no effect.
Permission groups are evaluated from highest to lowest priority: if two groups conflict each other, the group with the highest priority must be used.
</Property>
</Properties>
</Col>
<Col sticky>
```jsonc {{ title: "Example"}}
{
"reply": {
"allowed": [
"group"
],
},
"pub.versia:likes#Like": {
"disallowed": [
"everyone"
]
}
}
```
</Col>
</Row>
## Usage
### Interaction Types
The following interaction types are defined as part of the core Versia spec:
- `reply`: Sending a Note with `replies_to` including this Note.
- `quote`: Sending a Note with `quotes` including this Note.
Extensions **may** choose to register their own interaction types (such as `pub.versia:likes#Like` for the [Like Extension](/extensions/likes)). The naming scheme for interaction types is identical to [Extensions](/extensions)'s `type` property, but with a hashtag (`#`) in place of a forward slash (`/`).
Implementations that find a user attempting to create an interaction they are not allowed to **MAY** return a `403 Forbidden` HTTP status code when processing the Note during federation, or use the [Instance Messaging](/extensions/instance-messaging) extension. The Note **must** be discarded.
It is important for implementations to backfill any related [Collections](/structures/collection)/[URI Collections](/structures/collection#uri-collection) (e.g. user followers) in order to not incorrectly reject Notes based off of outdated data.
To avoid server load from constant Collection refreshing, implementations **could** only refetch associated Collections when forbidden interactions are detected, then recalculate permissions again.