---
allOf:
  - $ref: core-event-schema/event.yaml

description: |-
  Begins a key verification process. Typically sent as a [to-device](/client-server-api/#send-to-device-messaging) event. The `method`
  field determines the type of verification. The fields in the event will differ depending
  on the `method`. This definition includes fields that are in common among all variants.
properties:
  content:
    properties:
      from_device:
        type: string
        description: |-
          The device ID which is initiating the process.
      transaction_id:
        type: string
        description: |-
          Required when sent as a to-device message. An opaque identifier for
          the verification process. Must be unique with respect to the devices
          involved. Must be the same as the `transaction_id` given in the
          `m.key.verification.request` if this process is originating from a
          request.
      method:
        type: string
        description: |-
          The verification method to use.
      next_method:
        type: string
        description: |-
          Optional method to use to verify the other user's key with. Applicable
          when the `method` chosen only verifies one user's key. This field will
          never be present if the `method` verifies keys both ways.
      m.relates_to:
        allOf:
          - $ref: m.key.verification.m.relates_to.yaml
    required:
      - from_device
      - method
    type: object
  type:
    enum:
      - m.key.verification.start
    type: string
type: object
