---
allOf:
  - $ref: core-event-schema/state_event.yaml
description: "Acts as an `m.room.member` invite event, where there isn't a target user_id to invite. This event contains a token and a public key whose private key must be used to sign the token. Any user who can present that signature may use this invitation to join the target room."
properties:
  content:
    properties:
      display_name:
        description: "A user-readable string which represents the user who has been invited. This should not contain the user's third-party ID, as otherwise when the invite is accepted it would leak the association between the matrix ID and the third-party ID."
        type: string
      key_validity_url:
        description: "A URL which can be fetched, with querystring public_key=public_key, to validate whether the key has been revoked. The URL must return a JSON object containing a boolean property named 'valid'."
        type: string
      public_key:
        description: A base64-encoded ed25519 key with which token must be signed (though a signature from any entry in public_keys is also sufficient). This exists for backwards compatibility.
        type: string
      public_keys:
        description: Keys with which the token may be signed.
        items:
          properties:
            key_validity_url:
              description: "An optional URL which can be fetched, with querystring public_key=public_key, to validate whether the key has been revoked. The URL must return a JSON object containing a boolean property named 'valid'. If this URL is absent, the key must be considered valid indefinitely."
              type: string
            public_key:
              description: A base-64 encoded ed25519 key with which token may be signed.
              type: string
          required:
            - public_key
          title: PublicKeys
          type: object
        type: array
    required:
      - display_name
      - key_validity_url
      - public_key
    type: object
  state_key:
    description: 'The token, of which a signature must be produced in order to join the room.'
    type: string
  type:
    enum:
      - m.room.third_party_invite
    type: string
title: 'An invitation to a room issued to a third-party identifier, rather than a matrix user ID.'
type: object
