# place.stream.moderation.permission

> Record granting moderation permissions to a user for this streamer's content.

- Kind: record
- Record key: tid
- Authority: moderation.stream.place
- Lexicon: 1
- Published by [stream.place](https://lexicon.garden/identity/did:plc:rbvrr34edl5ddpuwcubjiost), not the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.moderation.permission)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.moderation.permission/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.moderation.permission/analytics)

## Record (`place.stream.moderation.permission`)

Type: record · key tid

### Properties

- `createdAt` (string · datetime, required): Client-declared timestamp when this moderator was added.
- `expirationTime` (string · datetime): Optional expiration time for this delegation. If set, the delegation is invalid after this time.
- `moderator` (string · did, required): The DID of the user granted moderator permissions.
- `permissions` (array, required): Array of permissions granted to this moderator. 'ban' covers blocks/bans (with optional expiration), 'hide' covers message gates, 'livestream.manage' allows updating livestream metadata.
  - `items` (string)
    - Constraints: enum: ban | hide | livestream.manage | message.pin | vod.comment.hide

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record granting moderation permissions to a user for this streamer's content.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "description": "Client-declared timestamp when this moderator was added.",
            "format": "datetime",
            "type": "string"
          },
          "expirationTime": {
            "description": "Optional expiration time for this delegation. If set, the delegation is invalid after this time.",
            "format": "datetime",
            "type": "string"
          },
          "moderator": {
            "description": "The DID of the user granted moderator permissions.",
            "format": "did",
            "type": "string"
          },
          "permissions": {
            "description": "Array of permissions granted to this moderator. 'ban' covers blocks/bans (with optional expiration), 'hide' covers message gates, 'livestream.manage' allows updating livestream metadata.",
            "items": {
              "enum": [
                "ban",
                "hide",
                "livestream.manage",
                "message.pin",
                "vod.comment.hide"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "moderator",
          "permissions",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "place.stream.moderation.permission",
  "lexicon": 1
}
```
