type: object
title: Receipt Event
description: Informs the client of new receipts.
x-changedInMatrixVersion:
    "1.4": |
        Added `m.read.private` receipts to the event's `content`.
allOf:
    - $ref: "core-event-schema/event.yaml"
properties:
    content:
        type: object
        description: |-
            The mapping of event ID to a collection of receipts for this
            event ID. The event ID is the ID of the event being acknowledged
            and *not* an ID for the receipt itself.
        patternProperties:
            "^\\$":
                type: object
                x-pattern-format: "mx-event-id"
                title: Event Receipts
                description: |-
                    The collection of receipts for this event ID.
                properties:
                    "m.read":
                        type: object
                        description: |-
                            A collection of users who have sent `m.read` receipts for
                            this event. The string key is the user ID the receipt 
                            belongs to.
                        patternProperties:
                            "^@": &receiptUserMap
                                type: object
                                title: Receipt
                                description: |-
                                    The mapping of user ID to receipt. The user ID is the
                                    entity who sent this receipt.
                                x-pattern-format: "mx-user-id"
                                properties:
                                    ts:
                                        type: integer
                                        format: int64
                                        description: The timestamp the receipt was sent at.
                                    thread_id:
                                        type: string
                                        x-addedInMatrixVersion: "1.4"
                                        description: |-
                                            The root thread event's ID (or `main`) for which
                                            thread this receipt is intended to be under. If
                                            not specified, the read receipt is *unthreaded*
                                            (default).
                    "m.read.private":
                        type: object
                        description: |-
                            Similar to `m.read`, the users who have sent `m.read.private`
                            receipts for this event. Due to the nature of private read
                            receipts, this should only ever have the current user's ID.
                        patternProperties:
                            "^@": *receiptUserMap
        additionalProperties: false
    type:
        type: string
        enum: ["m.receipt", "m.receipt.private"]
required: ["type", "content"]
