{ "type": "object", "title": "The current membership state of a user in the room.", "description": "Adjusts the membership state for a user in a room. It is preferable to use the membership APIs (``/rooms//invite`` etc) when performing membership actions rather than adjusting the state directly as there are a restricted set of valid transformations. For example, user A cannot force user B to join a room, and trying to force this state change directly will fail. The ``third_party_invite`` property will be set if the invite was an ``m.room.third_party_invite`` event, and absent if the invite was an ``m.room.member`` event.", "allOf": [{ "$ref": "core-event-schema/state_event.json" }], "properties": { "content": { "type": "object", "properties": { "membership": { "type": "string", "description": "The membership state of the user.", "enum": ["invite","join","knock","leave","ban"] }, "avatar_url": { "type": "string", "description": "The avatar URL for this user, if any. This is added by the homeserver." }, "displayname": { "type": ["string", "null"], "description": "The display name for this user, if any. This is added by the homeserver." }, "third_party_invite": { "type": "object", "title": "invite", "properties": { "token": { "type": "string", "description": "A token which must be correctly signed, in order to join the room." }, "key_validity_url": { "type": "string", "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'." }, "public_key": { "type": "string", "description": "A base64-encoded ed25519 key with which token must be signed." }, "signed": { "type": "object", "title": "signed_third_party_invite", "properties": { "mxid": { "type": "string", "description": "The invited matrix user ID. Must be equal to the user_id property of the event." }, "token": { "type": "string", "description": "The token property of the containing third_party_invite object.", }, "signatures": { "type": "object", "description": "A single signature from the verifying server, in the format specified by the Signing Events section." } } }, "sender": { "type": "string", "description": "The matrix user ID of the user who send the invite which is being used." } }, "required": ["token", "key_validity_url", "public_key", "signature", "sender"] } }, "required": ["membership"] }, "state_key": { "type": "string", "description": "The ``user_id`` this membership event relates to." }, "type": { "type": "string", "enum": ["m.room.member"] }, "invite_room_state": { "type": "array", "description": "A subset of the state of the room at the time of the invite, if ``membership`` is ``invite``", "items": { "type": "object", "title": "StateEvent", "description": "A stripped down state event, with only the ``type``, ``state_key`` and ``content`` keys.", "properties": { "type": { "type": "string" }, "state_key": { "type": "string" }, "content": { "type": "object" } } } } } }