type: object
description: |
    Public-facing shape of a notification — what `/social/notifications` and
    `/social/notification/{id}` return to the recipient client. Mirrors
    `PublicNotification` in
    [`cloud/src/SocialAPI/Schemas.ts`](../../../../cloud/src/SocialAPI/Schemas.ts).
    Differs from the stored `Notification` in that the `senderBigscreenAccountId`
    has been resolved into a `senderSocialProfile`, and the row id is exposed
    as `notificationId` rather than `id`.
required: [notificationId, createdAt, notificationType, notificationStatus]
properties:
    notificationId: { type: string }
    createdAt:
        type: integer
        description: Notification creation, Unix timestamp in **milliseconds**.
    senderSocialProfile:
        $ref: "./PublicSocialProfile.yaml"
    notificationType: { $ref: "./NotificationType.yaml" }
    notificationStatus: { $ref: "./NotificationStatus.yaml" }
    title: { type: string }
    body: { type: string }
    metaData:
        type: object
        description: |
            `NotificationMetaData` — free-form per-`notificationType` payload.
            Common keys: `roomId` (for `RoomInvite` / `KnockKnock`), `version`.
        properties:
            roomId: { type: string }
            version: { type: string }
        additionalProperties: true
example:
    notificationId: "ntf_01HZT12345ABC678DEF90GHJKM"
    createdAt: 1762462440000
    senderSocialProfile:
        socialId: "soc_01HZR12345ABC678DEF90GHJKM"
        username: "alice"
        smallImageUrl: "https://cdn.bigscreenvr.com/avatars/alice_sm.png"
        stats:
            friendsCount: 42
            followersCount: 18
            lastOnlineDate: 1762462440
    notificationType: FriendRequest
    notificationStatus: Unread
    title: "alice wants to be your friend"
    body: ""
    metaData: {}
