AT Protocol notification API

Notification management

OpenAPI Specification

atproto-notification-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Bluesky Application API (app.bsky) actor notification API
  description: The Bluesky application-layer Lexicon API providing feed, actor, graph, notification, and video endpoints for the microblogging application built on AT Protocol. The AppView is accessible unauthenticated at public.api.bsky.app for read operations, and at api.bsky.app for authenticated write operations. Schemas are defined using Lexicon, AT Protocol's schema definition language.
  version: 1.0.0
  contact:
    name: Bluesky
    url: https://docs.bsky.app/
  license:
    name: MIT / Apache-2.0
    url: https://github.com/bluesky-social/atproto/blob/main/LICENSE.txt
servers:
- url: https://public.api.bsky.app/xrpc
  description: Public AppView (unauthenticated read operations)
- url: https://api.bsky.app/xrpc
  description: Authenticated AppView (write operations)
security:
- bearerAuth: []
- {}
tags:
- name: notification
  description: Notification management
paths:
  /app.bsky.notification.listNotifications:
    get:
      operationId: app_bsky_notification_listNotifications
      summary: List Notifications
      description: Enumerate notifications for the requesting account. Requires auth.
      tags:
      - notification
      parameters:
      - name: reasons
        in: query
        required: false
        description: Notification reasons to include in response.
        schema:
          type: array
          items:
            type: string
        style: form
        explode: true
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
      - name: priority
        in: query
        required: false
        schema:
          type: boolean
      - name: cursor
        in: query
        required: false
        schema:
          type: string
      - name: seenAt
        in: query
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Notifications
          content:
            application/json:
              schema:
                type: object
                required:
                - notifications
                properties:
                  cursor:
                    type: string
                  notifications:
                    type: array
                    items:
                      $ref: '#/components/schemas/Notification'
                  priority:
                    type: boolean
                  seenAt:
                    type: string
                    format: date-time
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /app.bsky.notification.getUnreadCount:
    get:
      operationId: app_bsky_notification_getUnreadCount
      summary: Get Unread Count
      description: Count the number of unread notifications for the requesting account. Requires auth.
      tags:
      - notification
      parameters:
      - name: priority
        in: query
        required: false
        schema:
          type: boolean
      - name: seenAt
        in: query
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Unread notification count
          content:
            application/json:
              schema:
                type: object
                required:
                - count
                properties:
                  count:
                    type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Label:
      type: object
      required:
      - src
      - uri
      - val
      - cts
      properties:
        ver:
          type: integer
        src:
          type: string
          description: DID of the actor who created this label
        uri:
          type: string
          description: AT URI of the record, repository (account), or other resource this label applies to
        cid:
          type: string
          description: Optionally constrains label to specific version of record/blob
        val:
          type: string
          description: The short string name of the value or type of this label
          maxLength: 128
        neg:
          type: boolean
          description: If true, this is a negation label, overwriting a previous label
        cts:
          type: string
          format: date-time
          description: Timestamp when this label was created
        exp:
          type: string
          format: date-time
          description: Timestamp at which this label expires
    Error:
      type: object
      required:
      - error
      - message
      properties:
        error:
          type: string
        message:
          type: string
    ViewerState:
      type: object
      description: Metadata about the relationship between the requesting account and the subject account.
      properties:
        muted:
          type: boolean
        mutedByList:
          type: object
          additionalProperties: true
        blockedBy:
          type: boolean
        blocking:
          type: string
          description: AT-URI of the blocking record, if present
        blockingByList:
          type: object
          additionalProperties: true
        following:
          type: string
          description: AT-URI of the follow record, if present
        followedBy:
          type: string
          description: AT-URI of the follow record from the subject to the requester
        knownFollowers:
          type: object
          additionalProperties: true
    Notification:
      type: object
      required:
      - uri
      - cid
      - author
      - reason
      - record
      - isRead
      - indexedAt
      properties:
        uri:
          type: string
          description: AT-URI of the notification record
        cid:
          type: string
        author:
          $ref: '#/components/schemas/ProfileView'
        reason:
          type: string
          description: Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', 'starterpack-joined'
          enum:
          - like
          - repost
          - follow
          - mention
          - reply
          - quote
          - starterpack-joined
        reasonSubject:
          type: string
          description: AT-URI of the record that is the subject of the notification
        record:
          type: object
          additionalProperties: true
        isRead:
          type: boolean
        indexedAt:
          type: string
          format: date-time
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
    ProfileView:
      type: object
      required:
      - did
      - handle
      properties:
        did:
          type: string
        handle:
          type: string
        displayName:
          type: string
        description:
          type: string
        avatar:
          type: string
          format: uri
        associated:
          type: object
          additionalProperties: true
        indexedAt:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        viewer:
          $ref: '#/components/schemas/ViewerState'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
  responses:
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad request or validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Access JWT obtained from com.atproto.server.createSession
externalDocs:
  description: Bluesky HTTP API Reference
  url: https://docs.bsky.app/docs/advanced-guides/atproto