---
allOf:
  - $ref: core-event-schema/room_event.yaml
description: This message represents a generic file.
properties:
  content:
    properties:
      body:
        description: A human-readable description of the file. This is recommended to be the filename of the original upload.
        type: string
      filename:
        description: The original filename of the uploaded file.
        type: string
      info:
        description: Information about the file referred to in `url`.
        properties:
          mimetype:
            description: The mimetype of the file e.g. `application/msword`.
            type: string
          size:
            description: The size of the file in bytes.
            type: integer
          thumbnail_url:
            description: |-
              The URL to the thumbnail of the file. Only present if the
              thumbnail is unencrypted.
            type: string
          thumbnail_file:
            description: |-
              Information on the encrypted thumbnail file, as specified in
              [End-to-end encryption](/client-server-api/#sending-encrypted-attachments).
              Only present if the thumbnail is encrypted.
            title: EncryptedFile
            type: object
          thumbnail_info:
            allOf:
              - $ref: core-event-schema/msgtype_infos/thumbnail_info.yaml
            description: Metadata about the image referred to in `thumbnail_url`.
        title: FileInfo
        type: object
      msgtype:
        enum:
          - m.file
        type: string
      url:
        description: |-
          Required if the file is unencrypted. The URL (typically [MXC URI](/client-server-api/#matrix-content-mxc-uris))
          to the file.
        type: string
      file:
        description: |-
          Required if the file is encrypted. Information on the encrypted
          file, as specified in
          [End-to-end encryption](/client-server-api/#sending-encrypted-attachments).
        title: EncryptedFile
        type: object
    required:
      - msgtype
      - body
    type: object
  type:
    enum:
      - m.room.message
    type: string
title: FileMessage
type: object
