# ink.branchline.markNotificationsRead

> Published by [branchline.ink](https://lexicon.garden/identity/did:plc:brvu7akhdvsqcomb67pafw25)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:brvu7akhdvsqcomb67pafw25/ink.branchline.markNotificationsRead)
- [Documentation](https://lexicon.garden/lexicon/did:plc:brvu7akhdvsqcomb67pafw25/ink.branchline.markNotificationsRead/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:brvu7akhdvsqcomb67pafw25/ink.branchline.markNotificationsRead/examples)

## Definitions

### `ink.branchline.markNotificationsRead`

**Type**: `procedure`

Mark one or more notification groups as read for the authenticated viewer. Each entry stamps the viewer's readAt for that groupKey, hiding the group from ink.branchline.listNotifications until fresh activity pushes latestAt past the stamp. Responds 401 without a session.

#### Input

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `entries` | `array` | Yes |  |

#### Output

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `updated` | `integer` | Yes |  |

#### Errors

- **Unauthorized**: The caller is not signed in.

### `ink.branchline.markNotificationsRead#entry`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `readAt` | `string` (datetime) | Yes | latestAt of the group at the moment it was dismissed. Typically the same value returned in the notification view. |
| `groupKey` | `string` | Yes | Opaque identifier returned by ink.branchline.listNotifications. |

## Raw Schema

```json
{
  "id": "ink.branchline.markNotificationsRead",
  "defs": {
    "main": {
      "type": "procedure",
      "input": {
        "schema": {
          "type": "object",
          "required": [
            "entries"
          ],
          "properties": {
            "entries": {
              "type": "array",
              "items": {
                "ref": "#entry",
                "type": "ref"
              },
              "maxLength": 100,
              "minLength": 1
            }
          }
        },
        "encoding": "application/json"
      },
      "errors": [
        {
          "name": "Unauthorized",
          "description": "The caller is not signed in."
        }
      ],
      "output": {
        "schema": {
          "type": "object",
          "required": [
            "updated"
          ],
          "properties": {
            "updated": {
              "type": "integer",
              "minimum": 0
            }
          }
        },
        "encoding": "application/json"
      },
      "description": "Mark one or more notification groups as read for the authenticated viewer. Each entry stamps the viewer's readAt for that groupKey, hiding the group from ink.branchline.listNotifications until fresh activity pushes latestAt past the stamp. Responds 401 without a session."
    },
    "entry": {
      "type": "object",
      "required": [
        "groupKey",
        "readAt"
      ],
      "properties": {
        "readAt": {
          "type": "string",
          "format": "datetime",
          "description": "latestAt of the group at the moment it was dismissed. Typically the same value returned in the notification view."
        },
        "groupKey": {
          "type": "string",
          "description": "Opaque identifier returned by ink.branchline.listNotifications."
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
