async-matrix 0.1.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +131 -0
- data/data/matrix-spec/api/client-server/account-data.yaml +389 -0
- data/data/matrix-spec/api/client-server/account_deactivation.yaml +149 -0
- data/data/matrix-spec/api/client-server/admin.yaml +512 -0
- data/data/matrix-spec/api/client-server/administrative_contact.yaml +620 -0
- data/data/matrix-spec/api/client-server/appservice_ping.yaml +183 -0
- data/data/matrix-spec/api/client-server/appservice_room_directory.yaml +104 -0
- data/data/matrix-spec/api/client-server/authed-content-repo.yaml +590 -0
- data/data/matrix-spec/api/client-server/banning.yaml +177 -0
- data/data/matrix-spec/api/client-server/capabilities.yaml +235 -0
- data/data/matrix-spec/api/client-server/content-repo.yaml +887 -0
- data/data/matrix-spec/api/client-server/create_room.yaml +306 -0
- data/data/matrix-spec/api/client-server/cross_signing.yaml +300 -0
- data/data/matrix-spec/api/client-server/definitions/auth_data.yaml +34 -0
- data/data/matrix-spec/api/client-server/definitions/auth_response.yaml +62 -0
- data/data/matrix-spec/api/client-server/definitions/client_device.yaml +44 -0
- data/data/matrix-spec/api/client-server/definitions/client_event.yaml +49 -0
- data/data/matrix-spec/api/client-server/definitions/client_event_without_room_id.yaml +147 -0
- data/data/matrix-spec/api/client-server/definitions/cross_signing_key.yaml +57 -0
- data/data/matrix-spec/api/client-server/definitions/device_keys.yaml +70 -0
- data/data/matrix-spec/api/client-server/definitions/errors/error.yaml +26 -0
- data/data/matrix-spec/api/client-server/definitions/errors/rate_limited.yaml +34 -0
- data/data/matrix-spec/api/client-server/definitions/event_batch.yaml +22 -0
- data/data/matrix-spec/api/client-server/definitions/event_filter.yaml +55 -0
- data/data/matrix-spec/api/client-server/definitions/invite_3pid.yaml +45 -0
- data/data/matrix-spec/api/client-server/definitions/key_backup_auth_data.yaml +36 -0
- data/data/matrix-spec/api/client-server/definitions/key_backup_data.yaml +50 -0
- data/data/matrix-spec/api/client-server/definitions/key_backup_session_data.yaml +57 -0
- data/data/matrix-spec/api/client-server/definitions/m.login.terms_params.yaml +83 -0
- data/data/matrix-spec/api/client-server/definitions/m.mentions.yaml +33 -0
- data/data/matrix-spec/api/client-server/definitions/m.oauth_params.yaml +30 -0
- data/data/matrix-spec/api/client-server/definitions/m.relates_to.yaml +45 -0
- data/data/matrix-spec/api/client-server/definitions/megolm_export_session_data.yaml +39 -0
- data/data/matrix-spec/api/client-server/definitions/olm_payload.yaml +88 -0
- data/data/matrix-spec/api/client-server/definitions/one_time_keys.yaml +27 -0
- data/data/matrix-spec/api/client-server/definitions/openid_token.yaml +37 -0
- data/data/matrix-spec/api/client-server/definitions/protocol.yaml +44 -0
- data/data/matrix-spec/api/client-server/definitions/public_rooms_chunk.yaml +74 -0
- data/data/matrix-spec/api/client-server/definitions/public_rooms_response.yaml +59 -0
- data/data/matrix-spec/api/client-server/definitions/push_condition.yaml +53 -0
- data/data/matrix-spec/api/client-server/definitions/push_rule.yaml +53 -0
- data/data/matrix-spec/api/client-server/definitions/push_ruleset.yaml +206 -0
- data/data/matrix-spec/api/client-server/definitions/recent_emoji.yaml +29 -0
- data/data/matrix-spec/api/client-server/definitions/request_email_validation.yaml +36 -0
- data/data/matrix-spec/api/client-server/definitions/request_msisdn_validation.yaml +36 -0
- data/data/matrix-spec/api/client-server/definitions/request_token_response.yaml +46 -0
- data/data/matrix-spec/api/client-server/definitions/room_event_filter.yaml +60 -0
- data/data/matrix-spec/api/client-server/definitions/room_key_backup.yaml +37 -0
- data/data/matrix-spec/api/client-server/definitions/room_summary.yaml +44 -0
- data/data/matrix-spec/api/client-server/definitions/security.yaml +47 -0
- data/data/matrix-spec/api/client-server/definitions/sso_login_flow.yaml +98 -0
- data/data/matrix-spec/api/client-server/definitions/state_event_batch.yaml +21 -0
- data/data/matrix-spec/api/client-server/definitions/sync_filter.yaml +86 -0
- data/data/matrix-spec/api/client-server/definitions/tag.yaml +24 -0
- data/data/matrix-spec/api/client-server/definitions/third_party_signed.yaml +45 -0
- data/data/matrix-spec/api/client-server/definitions/timeline_batch.yaml +36 -0
- data/data/matrix-spec/api/client-server/definitions/user_identifier.yaml +27 -0
- data/data/matrix-spec/api/client-server/definitions/wellknown/full.yaml +38 -0
- data/data/matrix-spec/api/client-server/definitions/wellknown/homeserver.yaml +25 -0
- data/data/matrix-spec/api/client-server/definitions/wellknown/identity_server.yaml +25 -0
- data/data/matrix-spec/api/client-server/device_management.yaml +314 -0
- data/data/matrix-spec/api/client-server/directory.yaml +318 -0
- data/data/matrix-spec/api/client-server/event_context.yaml +161 -0
- data/data/matrix-spec/api/client-server/filter.yaml +224 -0
- data/data/matrix-spec/api/client-server/inviting.yaml +149 -0
- data/data/matrix-spec/api/client-server/joining.yaml +238 -0
- data/data/matrix-spec/api/client-server/key_backup.yaml +993 -0
- data/data/matrix-spec/api/client-server/keys.yaml +482 -0
- data/data/matrix-spec/api/client-server/kicking.yaml +110 -0
- data/data/matrix-spec/api/client-server/knocking.yaml +152 -0
- data/data/matrix-spec/api/client-server/leaving.yaml +163 -0
- data/data/matrix-spec/api/client-server/list_joined_rooms.yaml +68 -0
- data/data/matrix-spec/api/client-server/list_public_rooms.yaml +280 -0
- data/data/matrix-spec/api/client-server/login.yaml +321 -0
- data/data/matrix-spec/api/client-server/login_token.yaml +138 -0
- data/data/matrix-spec/api/client-server/logout.yaml +86 -0
- data/data/matrix-spec/api/client-server/message_pagination.yaml +194 -0
- data/data/matrix-spec/api/client-server/notifications.yaml +152 -0
- data/data/matrix-spec/api/client-server/oauth_server_metadata.yaml +238 -0
- data/data/matrix-spec/api/client-server/old_sync.yaml +379 -0
- data/data/matrix-spec/api/client-server/openid.yaml +98 -0
- data/data/matrix-spec/api/client-server/password_management.yaml +246 -0
- data/data/matrix-spec/api/client-server/peeking_events.yaml +122 -0
- data/data/matrix-spec/api/client-server/policy_server.yaml +82 -0
- data/data/matrix-spec/api/client-server/presence.yaml +169 -0
- data/data/matrix-spec/api/client-server/profile.yaml +366 -0
- data/data/matrix-spec/api/client-server/pusher.yaml +303 -0
- data/data/matrix-spec/api/client-server/pushrules.yaml +633 -0
- data/data/matrix-spec/api/client-server/read_markers.yaml +103 -0
- data/data/matrix-spec/api/client-server/receipts.yaml +139 -0
- data/data/matrix-spec/api/client-server/redaction.yaml +116 -0
- data/data/matrix-spec/api/client-server/refresh.yaml +119 -0
- data/data/matrix-spec/api/client-server/registration.yaml +488 -0
- data/data/matrix-spec/api/client-server/registration_tokens.yaml +93 -0
- data/data/matrix-spec/api/client-server/relations.yaml +382 -0
- data/data/matrix-spec/api/client-server/report_content.yaml +283 -0
- data/data/matrix-spec/api/client-server/room_event_by_timestamp.yaml +147 -0
- data/data/matrix-spec/api/client-server/room_initial_sync.yaml +188 -0
- data/data/matrix-spec/api/client-server/room_send.yaml +130 -0
- data/data/matrix-spec/api/client-server/room_state.yaml +159 -0
- data/data/matrix-spec/api/client-server/room_summary.yaml +138 -0
- data/data/matrix-spec/api/client-server/room_upgrades.yaml +130 -0
- data/data/matrix-spec/api/client-server/rooms.yaml +380 -0
- data/data/matrix-spec/api/client-server/search.yaml +385 -0
- data/data/matrix-spec/api/client-server/space_hierarchy.yaml +237 -0
- data/data/matrix-spec/api/client-server/sso_login_redirect.yaml +135 -0
- data/data/matrix-spec/api/client-server/support.yaml +142 -0
- data/data/matrix-spec/api/client-server/sync.yaml +692 -0
- data/data/matrix-spec/api/client-server/tags.yaml +183 -0
- data/data/matrix-spec/api/client-server/third_party_lookup.yaml +324 -0
- data/data/matrix-spec/api/client-server/third_party_membership.yaml +139 -0
- data/data/matrix-spec/api/client-server/threads_list.yaml +167 -0
- data/data/matrix-spec/api/client-server/to_device.yaml +104 -0
- data/data/matrix-spec/api/client-server/typing.yaml +103 -0
- data/data/matrix-spec/api/client-server/users.yaml +136 -0
- data/data/matrix-spec/api/client-server/versions.yaml +108 -0
- data/data/matrix-spec/api/client-server/voip.yaml +93 -0
- data/data/matrix-spec/api/client-server/wellknown.yaml +60 -0
- data/data/matrix-spec/api/client-server/whoami.yaml +121 -0
- data/data/matrix-spec/event-schemas/examples/core/event.json +6 -0
- data/data/matrix-spec/event-schemas/examples/core/room_edu.json +3 -0
- data/data/matrix-spec/event-schemas/examples/core/room_event.json +11 -0
- data/data/matrix-spec/event-schemas/examples/core/state_event.json +4 -0
- data/data/matrix-spec/event-schemas/examples/invite_room_state.json +18 -0
- data/data/matrix-spec/event-schemas/examples/knock_room_state.json +18 -0
- data/data/matrix-spec/event-schemas/examples/m.accepted_terms.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.call.answer.yaml +21 -0
- data/data/matrix-spec/event-schemas/examples/m.call.candidates.yaml +16 -0
- data/data/matrix-spec/event-schemas/examples/m.call.hangup.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.call.invite.yaml +22 -0
- data/data/matrix-spec/event-schemas/examples/m.call.negotiate.yaml +22 -0
- data/data/matrix-spec/event-schemas/examples/m.call.reject.yaml +9 -0
- data/data/matrix-spec/event-schemas/examples/m.call.sdp_stream_metadata_changed.yaml +16 -0
- data/data/matrix-spec/event-schemas/examples/m.call.select_answer.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.direct.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.dummy.yaml +4 -0
- data/data/matrix-spec/event-schemas/examples/m.forwarded_room_key.yaml +14 -0
- data/data/matrix-spec/event-schemas/examples/m.fully_read.yaml +7 -0
- data/data/matrix-spec/event-schemas/examples/m.identity_server.yaml +7 -0
- data/data/matrix-spec/event-schemas/examples/m.ignored_user_list.yaml +9 -0
- data/data/matrix-spec/event-schemas/examples/m.invite_permission_config.yaml +7 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.accept.yaml +12 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.cancel.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.done.yaml +6 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.key.yaml +7 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.mac.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.ready.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.request.yaml +11 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.start$m.sas.v1.yaml +12 -0
- data/data/matrix-spec/event-schemas/examples/m.key.verification.start.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.key_backup.yaml +7 -0
- data/data/matrix-spec/event-schemas/examples/m.marked_unread.yaml +7 -0
- data/data/matrix-spec/event-schemas/examples/m.policy.rule.room.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.policy.rule.server.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.policy.rule.user.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.presence.yaml +12 -0
- data/data/matrix-spec/event-schemas/examples/m.push_rules.yaml +177 -0
- data/data/matrix-spec/event-schemas/examples/m.reaction.yaml +11 -0
- data/data/matrix-spec/event-schemas/examples/m.receipt.yaml +18 -0
- data/data/matrix-spec/event-schemas/examples/m.recent_emoji.yaml +16 -0
- data/data/matrix-spec/event-schemas/examples/m.room.avatar.yaml +14 -0
- data/data/matrix-spec/event-schemas/examples/m.room.canonical_alias.yaml +12 -0
- data/data/matrix-spec/event-schemas/examples/m.room.create.yaml +13 -0
- data/data/matrix-spec/event-schemas/examples/m.room.encrypted$megolm.yaml +11 -0
- data/data/matrix-spec/event-schemas/examples/m.room.encrypted$olm.yaml +14 -0
- data/data/matrix-spec/event-schemas/examples/m.room.encryption.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.room.guest_access.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.room.history_visibility.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.room.join_rules$restricted.yaml +18 -0
- data/data/matrix-spec/event-schemas/examples/m.room.join_rules.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.room.member$invite_room_state.yaml +15 -0
- data/data/matrix-spec/event-schemas/examples/m.room.member$join_authorised_via_users_server.yaml +12 -0
- data/data/matrix-spec/event-schemas/examples/m.room.member$knock_room_state.yaml +15 -0
- data/data/matrix-spec/event-schemas/examples/m.room.member$third_party_invite.yaml +20 -0
- data/data/matrix-spec/event-schemas/examples/m.room.member.yaml +12 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.audio.yaml +14 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.emote.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.file.yaml +14 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.image.yaml +16 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.key.verification.request.yaml +19 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.location.yaml +18 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.notice.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.server_notice.yaml +11 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.text.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.room.message$m.video.yaml +23 -0
- data/data/matrix-spec/event-schemas/examples/m.room.name.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.room.pinned_events.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.room.policy.yaml +11 -0
- data/data/matrix-spec/event-schemas/examples/m.room.power_levels.yaml +24 -0
- data/data/matrix-spec/event-schemas/examples/m.room.redaction.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.room.server_acl.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.room.third_party_invite.yaml +14 -0
- data/data/matrix-spec/event-schemas/examples/m.room.tombstone.yaml +9 -0
- data/data/matrix-spec/event-schemas/examples/m.room.topic.yaml +16 -0
- data/data/matrix-spec/event-schemas/examples/m.room_key.withheld.yaml +12 -0
- data/data/matrix-spec/event-schemas/examples/m.room_key.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.room_key_request$cancel_request.yaml +8 -0
- data/data/matrix-spec/event-schemas/examples/m.room_key_request$request.yaml +14 -0
- data/data/matrix-spec/event-schemas/examples/m.secret.request.yaml +9 -0
- data/data/matrix-spec/event-schemas/examples/m.secret.send.yaml +7 -0
- data/data/matrix-spec/event-schemas/examples/m.space.child.yaml +10 -0
- data/data/matrix-spec/event-schemas/examples/m.space.parent.yaml +9 -0
- data/data/matrix-spec/event-schemas/examples/m.sticker.yaml +22 -0
- data/data/matrix-spec/event-schemas/examples/m.tag.yaml +9 -0
- data/data/matrix-spec/event-schemas/examples/m.typing.yaml +7 -0
- data/data/matrix-spec/event-schemas/moderation_policy_rule.yaml +32 -0
- data/data/matrix-spec/event-schemas/schema/components/m_text_content_block.yaml +28 -0
- data/data/matrix-spec/event-schemas/schema/components/sdp_stream_metadata.yaml +43 -0
- data/data/matrix-spec/event-schemas/schema/components/signed_third_party_invite.yaml +48 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/call_event.yaml +27 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/event.yaml +16 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/msgtype_infos/avatar_info.yaml +30 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/msgtype_infos/image_info.yaml +52 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/msgtype_infos/thumbnail_info.yaml +22 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/room_event.yaml +17 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/state_event.yaml +8 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/stripped_state.yaml +48 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/sync_room_event.yaml +49 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/sync_state_event.yaml +36 -0
- data/data/matrix-spec/event-schemas/schema/core-event-schema/unsigned_prop.yaml +23 -0
- data/data/matrix-spec/event-schemas/schema/m.accepted_terms.yaml +25 -0
- data/data/matrix-spec/event-schemas/schema/m.call.answer.yaml +44 -0
- data/data/matrix-spec/event-schemas/schema/m.call.candidates.yaml +52 -0
- data/data/matrix-spec/event-schemas/schema/m.call.hangup.yaml +57 -0
- data/data/matrix-spec/event-schemas/schema/m.call.invite.yaml +53 -0
- data/data/matrix-spec/event-schemas/schema/m.call.negotiate.yaml +78 -0
- data/data/matrix-spec/event-schemas/schema/m.call.reject.yaml +29 -0
- data/data/matrix-spec/event-schemas/schema/m.call.sdp_stream_metadata_changed.yaml +24 -0
- data/data/matrix-spec/event-schemas/schema/m.call.select_answer.yaml +29 -0
- data/data/matrix-spec/event-schemas/schema/m.direct.yaml +29 -0
- data/data/matrix-spec/event-schemas/schema/m.dummy.yaml +25 -0
- data/data/matrix-spec/event-schemas/schema/m.forwarded_room_key.yaml +70 -0
- data/data/matrix-spec/event-schemas/schema/m.fully_read.yaml +26 -0
- data/data/matrix-spec/event-schemas/schema/m.identity_server.yaml +28 -0
- data/data/matrix-spec/event-schemas/schema/m.ignored_user_list.yaml +30 -0
- data/data/matrix-spec/event-schemas/schema/m.invite_permission_config.yaml +21 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.accept.yaml +63 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.cancel.yaml +72 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.done.yaml +24 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.key.yaml +31 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.m.relates_to.yaml +23 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.mac.yaml +43 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.ready.yaml +41 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.request.yaml +47 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.start$m.reciprocate.v1.yaml +45 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.start$m.sas.v1.yaml +76 -0
- data/data/matrix-spec/event-schemas/schema/m.key.verification.start.yaml +46 -0
- data/data/matrix-spec/event-schemas/schema/m.key_backup.yaml +24 -0
- data/data/matrix-spec/event-schemas/schema/m.marked_unread.yaml +26 -0
- data/data/matrix-spec/event-schemas/schema/m.policy.rule.room.yaml +17 -0
- data/data/matrix-spec/event-schemas/schema/m.policy.rule.server.yaml +17 -0
- data/data/matrix-spec/event-schemas/schema/m.policy.rule.user.yaml +17 -0
- data/data/matrix-spec/event-schemas/schema/m.presence.yaml +50 -0
- data/data/matrix-spec/event-schemas/schema/m.push_rules.yaml +23 -0
- data/data/matrix-spec/event-schemas/schema/m.reaction.yaml +45 -0
- data/data/matrix-spec/event-schemas/schema/m.receipt.yaml +65 -0
- data/data/matrix-spec/event-schemas/schema/m.recent_emoji.yaml +29 -0
- data/data/matrix-spec/event-schemas/schema/m.room.avatar.yaml +29 -0
- data/data/matrix-spec/event-schemas/schema/m.room.canonical_alias.yaml +40 -0
- data/data/matrix-spec/event-schemas/schema/m.room.create.yaml +86 -0
- data/data/matrix-spec/event-schemas/schema/m.room.encrypted.yaml +91 -0
- data/data/matrix-spec/event-schemas/schema/m.room.encryption.yaml +38 -0
- data/data/matrix-spec/event-schemas/schema/m.room.guest_access.yaml +28 -0
- data/data/matrix-spec/event-schemas/schema/m.room.history_visibility.yaml +30 -0
- data/data/matrix-spec/event-schemas/schema/m.room.join_rules.yaml +78 -0
- data/data/matrix-spec/event-schemas/schema/m.room.member.yaml +174 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.audio.yaml +73 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.emote.yaml +36 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.file.yaml +85 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.image.yaml +63 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.key.verification.request.yaml +70 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.location.yaml +50 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.notice.yaml +36 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.server_notice.yaml +41 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.text.yaml +36 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message$m.video.yaml +95 -0
- data/data/matrix-spec/event-schemas/schema/m.room.message.yaml +25 -0
- data/data/matrix-spec/event-schemas/schema/m.room.name.yaml +35 -0
- data/data/matrix-spec/event-schemas/schema/m.room.pinned_events.yaml +27 -0
- data/data/matrix-spec/event-schemas/schema/m.room.policy.yaml +41 -0
- data/data/matrix-spec/event-schemas/schema/m.room.power_levels.yaml +139 -0
- data/data/matrix-spec/event-schemas/schema/m.room.redaction.yaml +29 -0
- data/data/matrix-spec/event-schemas/schema/m.room.server_acl.yaml +88 -0
- data/data/matrix-spec/event-schemas/schema/m.room.third_party_invite.yaml +79 -0
- data/data/matrix-spec/event-schemas/schema/m.room.tombstone.yaml +29 -0
- data/data/matrix-spec/event-schemas/schema/m.room.topic.yaml +53 -0
- data/data/matrix-spec/event-schemas/schema/m.room_key.withheld.yaml +88 -0
- data/data/matrix-spec/event-schemas/schema/m.room_key.yaml +38 -0
- data/data/matrix-spec/event-schemas/schema/m.room_key_request.yaml +73 -0
- data/data/matrix-spec/event-schemas/schema/m.secret.request.yaml +42 -0
- data/data/matrix-spec/event-schemas/schema/m.secret.send.yaml +35 -0
- data/data/matrix-spec/event-schemas/schema/m.space.child.yaml +50 -0
- data/data/matrix-spec/event-schemas/schema/m.space.parent.yaml +36 -0
- data/data/matrix-spec/event-schemas/schema/m.sticker.yaml +36 -0
- data/data/matrix-spec/event-schemas/schema/m.tag.yaml +28 -0
- data/data/matrix-spec/event-schemas/schema/m.typing.yaml +29 -0
- data/lib/async/matrix/api/chain.rb +575 -0
- data/lib/async/matrix/api/concat.rb +105 -0
- data/lib/async/matrix/api/path_tree.rb +208 -0
- data/lib/async/matrix/api.rb +204 -0
- data/lib/async/matrix/application_service/bot.rb +235 -0
- data/lib/async/matrix/application_service/config/schema/analytics.json +21 -0
- data/lib/async/matrix/application_service/config/schema/appservice.json +82 -0
- data/lib/async/matrix/application_service/config/schema/backfill.json +91 -0
- data/lib/async/matrix/application_service/config/schema/bridge.json +209 -0
- data/lib/async/matrix/application_service/config/schema/config.json +61 -0
- data/lib/async/matrix/application_service/config/schema/database.json +38 -0
- data/lib/async/matrix/application_service/config/schema/direct_media.json +35 -0
- data/lib/async/matrix/application_service/config/schema/double_puppet.json +24 -0
- data/lib/async/matrix/application_service/config/schema/encryption.json +164 -0
- data/lib/async/matrix/application_service/config/schema/homeserver.json +58 -0
- data/lib/async/matrix/application_service/config/schema/logging.json +50 -0
- data/lib/async/matrix/application_service/config/schema/management_room_texts.json +25 -0
- data/lib/async/matrix/application_service/config/schema/matrix.json +45 -0
- data/lib/async/matrix/application_service/config/schema/permissions.json +54 -0
- data/lib/async/matrix/application_service/config/schema/provisioning.json +23 -0
- data/lib/async/matrix/application_service/config/schema/public_media.json +39 -0
- data/lib/async/matrix/application_service/config/schema/relay.json +43 -0
- data/lib/async/matrix/application_service/config/vivify.rb +110 -0
- data/lib/async/matrix/application_service/config.rb +214 -123
- data/lib/async/matrix/application_service/dispatcher.rb +115 -113
- data/lib/async/matrix/application_service/error_response.rb +26 -26
- data/lib/async/matrix/application_service/event.rb +217 -1
- data/lib/async/matrix/application_service/server.rb +286 -215
- data/lib/async/matrix/application_service/transaction.rb +52 -52
- data/lib/async/matrix/application_service/transaction_store.rb +62 -62
- data/lib/async/matrix/client.rb +919 -179
- data/lib/async/matrix/connection.rb +8 -8
- data/lib/async/matrix/endpoint.rb +45 -45
- data/lib/async/matrix/error.rb +49 -43
- data/lib/async/matrix/media_client.rb +173 -0
- data/lib/async/matrix/notifier.rb +92 -92
- data/lib/async/matrix/schema/registry.rb +355 -0
- data/lib/async/matrix/schema/validation_error.rb +226 -0
- data/lib/async/matrix/schema.rb +174 -0
- data/lib/async/matrix/server.rb +7 -7
- data/lib/async/matrix/stream.rb +7 -7
- data/lib/async/matrix/version.rb +1 -1
- data/lib/async/matrix.rb +5 -2
- metadata +353 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/room_event.yaml
|
|
6
|
+
description: This message represents a single video clip.
|
|
7
|
+
properties:
|
|
8
|
+
content:
|
|
9
|
+
properties:
|
|
10
|
+
body:
|
|
11
|
+
description: |-
|
|
12
|
+
If `filename` is not set or the value of both properties are
|
|
13
|
+
identical, this is the filename of the original upload. Otherwise,
|
|
14
|
+
this is a caption for the video.
|
|
15
|
+
type: string
|
|
16
|
+
x-changedInMatrixVersion:
|
|
17
|
+
"1.10": This property can act as a caption for the video.
|
|
18
|
+
format:
|
|
19
|
+
description: |-
|
|
20
|
+
The format used in the `formatted_body`. This is required if `formatted_body`
|
|
21
|
+
is specified. Currently only `org.matrix.custom.html` is supported.
|
|
22
|
+
type: string
|
|
23
|
+
x-addedInMatrixVersion: "1.10"
|
|
24
|
+
formatted_body:
|
|
25
|
+
description: |-
|
|
26
|
+
The formatted version of the `body`, when it acts as a caption. This
|
|
27
|
+
is required if `format` is specified.
|
|
28
|
+
type: string
|
|
29
|
+
x-addedInMatrixVersion: "1.10"
|
|
30
|
+
filename:
|
|
31
|
+
description: The original filename of the uploaded file.
|
|
32
|
+
type: string
|
|
33
|
+
x-addedInMatrixVersion: "1.10"
|
|
34
|
+
info:
|
|
35
|
+
description: Metadata about the video clip referred to in `url`.
|
|
36
|
+
properties:
|
|
37
|
+
duration:
|
|
38
|
+
description: The duration of the video in milliseconds.
|
|
39
|
+
type: integer
|
|
40
|
+
h:
|
|
41
|
+
description: The height of the video in pixels.
|
|
42
|
+
type: integer
|
|
43
|
+
w:
|
|
44
|
+
description: The width of the video in pixels.
|
|
45
|
+
type: integer
|
|
46
|
+
mimetype:
|
|
47
|
+
description: The mimetype of the video e.g. `video/mp4`.
|
|
48
|
+
type: string
|
|
49
|
+
size:
|
|
50
|
+
description: The size of the video in bytes.
|
|
51
|
+
type: integer
|
|
52
|
+
thumbnail_url:
|
|
53
|
+
description: |-
|
|
54
|
+
The URL (typically [`mxc://` URI](/client-server-api/#matrix-content-mxc-uris)) to an image thumbnail of
|
|
55
|
+
the video clip. Only present if the thumbnail is unencrypted.
|
|
56
|
+
type: string
|
|
57
|
+
thumbnail_file:
|
|
58
|
+
description: |-
|
|
59
|
+
Information on the encrypted thumbnail file, as specified in
|
|
60
|
+
[End-to-end encryption](/client-server-api/#sending-encrypted-attachments).
|
|
61
|
+
Only present if the thumbnail is encrypted.
|
|
62
|
+
title: EncryptedFile
|
|
63
|
+
type: object
|
|
64
|
+
thumbnail_info:
|
|
65
|
+
allOf:
|
|
66
|
+
- $ref: core-event-schema/msgtype_infos/thumbnail_info.yaml
|
|
67
|
+
description: Metadata about the image referred to in `thumbnail_url`.
|
|
68
|
+
title: VideoInfo
|
|
69
|
+
type: object
|
|
70
|
+
msgtype:
|
|
71
|
+
enum:
|
|
72
|
+
- m.video
|
|
73
|
+
type: string
|
|
74
|
+
url:
|
|
75
|
+
description: |-
|
|
76
|
+
Required if the file is unencrypted. The URL (typically [`mxc://` URI](/client-server-api/#matrix-content-mxc-uris))
|
|
77
|
+
to the video clip.
|
|
78
|
+
type: string
|
|
79
|
+
file:
|
|
80
|
+
description: |-
|
|
81
|
+
Required if the file is encrypted. Information on the encrypted
|
|
82
|
+
file, as specified in
|
|
83
|
+
[End-to-end encryption](/client-server-api/#sending-encrypted-attachments).
|
|
84
|
+
title: EncryptedFile
|
|
85
|
+
type: object
|
|
86
|
+
required:
|
|
87
|
+
- msgtype
|
|
88
|
+
- body
|
|
89
|
+
type: object
|
|
90
|
+
type:
|
|
91
|
+
enum:
|
|
92
|
+
- m.room.message
|
|
93
|
+
type: string
|
|
94
|
+
title: VideoMessage
|
|
95
|
+
type: object
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/room_event.yaml
|
|
6
|
+
description: 'This event is used when sending messages in a room. Messages are not limited to be text. The `msgtype` key outlines the type of message, e.g. text, audio, image, video, etc. The `body` key is text and MUST be used with every kind of `msgtype` as a fallback mechanism for when a client cannot render a message. This allows clients to display *something* even if it is just plain text.'
|
|
7
|
+
properties:
|
|
8
|
+
content:
|
|
9
|
+
properties:
|
|
10
|
+
body:
|
|
11
|
+
description: The textual representation of this message.
|
|
12
|
+
type: string
|
|
13
|
+
msgtype:
|
|
14
|
+
description: 'The type of message, e.g. `m.image`, `m.text`'
|
|
15
|
+
type: string
|
|
16
|
+
required:
|
|
17
|
+
- msgtype
|
|
18
|
+
- body
|
|
19
|
+
type: object
|
|
20
|
+
type:
|
|
21
|
+
enum:
|
|
22
|
+
- m.room.message
|
|
23
|
+
type: string
|
|
24
|
+
title: Message
|
|
25
|
+
type: object
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/state_event.yaml
|
|
6
|
+
description: |-
|
|
7
|
+
A room has an opaque room ID which is not human-friendly to read. A room
|
|
8
|
+
alias is human-friendly, but not all rooms have room aliases. The room name
|
|
9
|
+
is a human-friendly string designed to be displayed to the end-user. The
|
|
10
|
+
room name is not unique, as multiple rooms can have the same room name set.
|
|
11
|
+
|
|
12
|
+
If a room has an `m.room.name` event with an absent, null, or empty `name`
|
|
13
|
+
field, it should be treated the same as a room with no `m.room.name` event.
|
|
14
|
+
|
|
15
|
+
An event of this type is automatically created when creating a room using
|
|
16
|
+
`/createRoom` with the `name` key.
|
|
17
|
+
properties:
|
|
18
|
+
content:
|
|
19
|
+
properties:
|
|
20
|
+
name:
|
|
21
|
+
description: The name of the room.
|
|
22
|
+
type: string
|
|
23
|
+
required:
|
|
24
|
+
- name
|
|
25
|
+
type: object
|
|
26
|
+
state_key:
|
|
27
|
+
description: A zero-length string.
|
|
28
|
+
pattern: '^$'
|
|
29
|
+
type: string
|
|
30
|
+
type:
|
|
31
|
+
enum:
|
|
32
|
+
- m.room.name
|
|
33
|
+
type: string
|
|
34
|
+
title: RoomName
|
|
35
|
+
type: object
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/state_event.yaml
|
|
6
|
+
description: This event is used to "pin" particular events in a room for other participants to review later. The order of the pinned events is guaranteed and based upon the order supplied in the event. Clients should be aware that the current user may not be able to see some of the events pinned due to visibility settings in the room. Clients are responsible for determining if a particular event in the pinned list is displayable, and have the option to not display it if it cannot be pinned in the client.
|
|
7
|
+
properties:
|
|
8
|
+
content:
|
|
9
|
+
properties:
|
|
10
|
+
pinned:
|
|
11
|
+
description: An ordered list of event IDs to pin.
|
|
12
|
+
items:
|
|
13
|
+
type: string
|
|
14
|
+
type: array
|
|
15
|
+
required:
|
|
16
|
+
- pinned
|
|
17
|
+
type: object
|
|
18
|
+
state_key:
|
|
19
|
+
description: A zero-length string.
|
|
20
|
+
pattern: '^$'
|
|
21
|
+
type: string
|
|
22
|
+
type:
|
|
23
|
+
enum:
|
|
24
|
+
- m.room.pinned_events
|
|
25
|
+
type: string
|
|
26
|
+
title: Pinned events in a room
|
|
27
|
+
type: object
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/state_event.yaml
|
|
6
|
+
description: |-
|
|
7
|
+
A [Policy Server](/client-server-api/#policy-servers) configuration. If invalid
|
|
8
|
+
or not set, the room does not use a Policy Server.
|
|
9
|
+
properties:
|
|
10
|
+
content:
|
|
11
|
+
properties:
|
|
12
|
+
via:
|
|
13
|
+
description: |-
|
|
14
|
+
The server name to use as a Policy Server. MUST have a joined user in
|
|
15
|
+
the room.
|
|
16
|
+
type: string
|
|
17
|
+
public_keys:
|
|
18
|
+
description: |-
|
|
19
|
+
The unpadded base64-encoded public keys for the Policy Server. MUST contain at
|
|
20
|
+
least `ed25519`.
|
|
21
|
+
type: object
|
|
22
|
+
properties:
|
|
23
|
+
ed25519:
|
|
24
|
+
type: string
|
|
25
|
+
description: The unpadded base64-encoded ed25519 public key for the Policy Server.
|
|
26
|
+
required: ['ed25519']
|
|
27
|
+
additionalProperties:
|
|
28
|
+
description: The unpadded base64-encoded public key for the key algorithm.
|
|
29
|
+
type: string
|
|
30
|
+
type: object
|
|
31
|
+
required:
|
|
32
|
+
- via
|
|
33
|
+
- public_keys
|
|
34
|
+
state_key:
|
|
35
|
+
description: An empty string.
|
|
36
|
+
type: string
|
|
37
|
+
type:
|
|
38
|
+
enum:
|
|
39
|
+
- m.room.policy
|
|
40
|
+
type: string
|
|
41
|
+
type: object
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/state_event.yaml
|
|
6
|
+
description: |-
|
|
7
|
+
This event specifies the minimum level a user must have in order to perform a
|
|
8
|
+
certain action. It also specifies the levels of each user in the room.
|
|
9
|
+
|
|
10
|
+
If a `user_id` is in the `users` list, then that `user_id` has the
|
|
11
|
+
associated power level. Otherwise they have the default level
|
|
12
|
+
`users_default`. If `users_default` is not supplied, it is assumed to be
|
|
13
|
+
0. If the room contains no `m.room.power_levels` event, the room's creator has
|
|
14
|
+
a power level of 100, and all other users have a power level of 0.
|
|
15
|
+
|
|
16
|
+
Except for membership events and redactions, the level required to
|
|
17
|
+
send a certain event is governed purely by `events`, `state_default`
|
|
18
|
+
and `events_default`. If an event type is specified in `events`, then
|
|
19
|
+
the user must have at least the level specified in order to send that
|
|
20
|
+
event. If the event type is not supplied, it defaults to `events_default`
|
|
21
|
+
for message events and `state_default` for state events.
|
|
22
|
+
|
|
23
|
+
If there is no `state_default` in the `m.room.power_levels` event, or
|
|
24
|
+
there is no `m.room.power_levels` event, the `state_default` is 50.
|
|
25
|
+
If there is no `events_default` in the `m.room.power_levels` event,
|
|
26
|
+
or there is no `m.room.power_levels` event, the `events_default` is 0.
|
|
27
|
+
|
|
28
|
+
Membership events are not subject to `events`, `events_default`, or
|
|
29
|
+
`state_default`. Instead, the power level required to invite a user
|
|
30
|
+
to the room, kick a user from the room, or ban a user from the room
|
|
31
|
+
is defined by `invite`, `kick`, and `ban`, respectively. The levels
|
|
32
|
+
for `kick` and `ban` default to 50 if they are not specified in the
|
|
33
|
+
`m.room.power_levels` event, or if the room contains no
|
|
34
|
+
`m.room.power_levels` event. `invite` defaults to 0 in either case.
|
|
35
|
+
Other membership values are handled during event authorization. See
|
|
36
|
+
the authorization rules in [room versions](/rooms) for further details.
|
|
37
|
+
|
|
38
|
+
For redactions of a user's own events, the required power level is
|
|
39
|
+
determined by the `m.room.redaction` event power level, as per `events`
|
|
40
|
+
and `events_default`. The power level required to redact an event sent
|
|
41
|
+
by another user is _additionally_ governed by `redact`. The level for
|
|
42
|
+
`redact` defaults to 50 if it is not specified in the `m.room.power_levels`
|
|
43
|
+
event, or if the room contains no `m.room.power_levels` event.
|
|
44
|
+
|
|
45
|
+
**Note:**
|
|
46
|
+
|
|
47
|
+
The allowed range for power level values is `[-(2**53)+1, (2**53)-1]`,
|
|
48
|
+
as required by the [Canonical JSON specification](/appendices/#canonical-json).
|
|
49
|
+
|
|
50
|
+
properties:
|
|
51
|
+
content:
|
|
52
|
+
properties:
|
|
53
|
+
ban:
|
|
54
|
+
description: The level required to ban a user. Defaults to 50 if unspecified.
|
|
55
|
+
type: integer
|
|
56
|
+
events:
|
|
57
|
+
additionalProperties:
|
|
58
|
+
type: integer
|
|
59
|
+
description: |-
|
|
60
|
+
The level required to send specific event types. This is a mapping from event type to power level required.
|
|
61
|
+
|
|
62
|
+
Though not a default, when the server sends the initial power levels event during [room creation](/client-server-api#creation)
|
|
63
|
+
in [room versions](/rooms) 12 and higher, the `m.room.tombstone` event MUST be explicitly defined and given
|
|
64
|
+
a power level higher than `state_default`. For example, power level 150. Clients may override this using the
|
|
65
|
+
described `power_level_content_override` field.
|
|
66
|
+
x-changedInMatrixVersion:
|
|
67
|
+
"1.16": Described `m.room.tombstone` defaults during creation of a room version 12 or higher room.
|
|
68
|
+
title: Event power levels
|
|
69
|
+
type: object
|
|
70
|
+
events_default:
|
|
71
|
+
description: |-
|
|
72
|
+
The default level required to send message events. Can be
|
|
73
|
+
overridden by the `events` key. Defaults to 0 if unspecified.
|
|
74
|
+
type: integer
|
|
75
|
+
invite:
|
|
76
|
+
description: The level required to invite a user. Defaults to 0 if unspecified.
|
|
77
|
+
type: integer
|
|
78
|
+
kick:
|
|
79
|
+
description: The level required to kick a user. Defaults to 50 if unspecified.
|
|
80
|
+
type: integer
|
|
81
|
+
redact:
|
|
82
|
+
description: The level required to redact an event sent by another user. Defaults to 50 if unspecified.
|
|
83
|
+
type: integer
|
|
84
|
+
state_default:
|
|
85
|
+
description: |-
|
|
86
|
+
The default level required to send state events. Can be overridden
|
|
87
|
+
by the `events` key. Defaults to 50 if unspecified.
|
|
88
|
+
type: integer
|
|
89
|
+
users:
|
|
90
|
+
patternProperties:
|
|
91
|
+
"^@":
|
|
92
|
+
x-pattern-format: mx-user-id
|
|
93
|
+
type: integer
|
|
94
|
+
description: |-
|
|
95
|
+
The power levels for specific users. This is a mapping from `user_id` to power level for that user.
|
|
96
|
+
|
|
97
|
+
**Note**: In [room versions](/rooms) 12 and higher it is not permitted to specify the room creators here.
|
|
98
|
+
x-changedInMatrixVersion:
|
|
99
|
+
"1.16": Added a note that room creators cannot be specified here in room versions 12 and higher.
|
|
100
|
+
title: User power levels
|
|
101
|
+
type: object
|
|
102
|
+
users_default:
|
|
103
|
+
x-changedInMatrixVersion:
|
|
104
|
+
"1.16": The room creator power level now changes depending on room version.
|
|
105
|
+
description: |-
|
|
106
|
+
The power level for users in the room whose `user_id` is not mentioned in the `users` key. Defaults to 0 if
|
|
107
|
+
unspecified.
|
|
108
|
+
|
|
109
|
+
**Note**: In [room versions](/rooms) 1 through 11, when there is no `m.room.power_levels`
|
|
110
|
+
event in the room, the room creator has a power level of 100, and all other users have a
|
|
111
|
+
power level of 0.
|
|
112
|
+
|
|
113
|
+
**Note**: In room versions 12 and higher, room creators have infinite power level regardless
|
|
114
|
+
of the existence of `m.room.power_levels` in the room. When `m.room.power_levels` is not
|
|
115
|
+
in the room however, all other users have a power level of 0.
|
|
116
|
+
type: integer
|
|
117
|
+
notifications:
|
|
118
|
+
properties:
|
|
119
|
+
room:
|
|
120
|
+
type: integer
|
|
121
|
+
description: The level required to trigger an `@room` notification. Defaults to 50 if unspecified.
|
|
122
|
+
additionalProperties:
|
|
123
|
+
type: integer
|
|
124
|
+
description: |-
|
|
125
|
+
The power level requirements for specific notification types.
|
|
126
|
+
This is a mapping from `key` to power level for that notifications key.
|
|
127
|
+
title: Notifications
|
|
128
|
+
type: object
|
|
129
|
+
type: object
|
|
130
|
+
state_key:
|
|
131
|
+
description: A zero-length string.
|
|
132
|
+
pattern: '^$'
|
|
133
|
+
type: string
|
|
134
|
+
type:
|
|
135
|
+
enum:
|
|
136
|
+
- m.room.power_levels
|
|
137
|
+
type: string
|
|
138
|
+
title: Defines the power levels (privileges) of users in the room.
|
|
139
|
+
type: object
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/room_event.yaml
|
|
6
|
+
description: 'This event is created by the server to describe which event has been redacted, by whom, and optionally why. The event that has been redacted is specified in the `redacts` event level key. Redacting an event means that all keys not required by the protocol are stripped off, allowing messages to be hidden or allowing admins to remove offensive or illegal content.'
|
|
7
|
+
properties:
|
|
8
|
+
content:
|
|
9
|
+
properties:
|
|
10
|
+
redacts:
|
|
11
|
+
description: The event ID that was redacted. Required for, and present starting in, room version 11.
|
|
12
|
+
type: string
|
|
13
|
+
format: mx-event-id
|
|
14
|
+
pattern: "^\\$"
|
|
15
|
+
reason:
|
|
16
|
+
description: 'The reason for the redaction, if any.'
|
|
17
|
+
type: string
|
|
18
|
+
type: object
|
|
19
|
+
redacts:
|
|
20
|
+
description: Required for, and only present in, room versions 1 - 10. The event ID that was redacted.
|
|
21
|
+
type: string
|
|
22
|
+
format: mx-event-id
|
|
23
|
+
pattern: "^\\$"
|
|
24
|
+
type:
|
|
25
|
+
enum:
|
|
26
|
+
- m.room.redaction
|
|
27
|
+
type: string
|
|
28
|
+
title: Redaction
|
|
29
|
+
type: object
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
title: Server ACL
|
|
5
|
+
description: |-
|
|
6
|
+
An event to indicate which servers are permitted to participate in the
|
|
7
|
+
room. Server ACLs may allow or deny groups of hosts. All servers participating
|
|
8
|
+
in the room, including those that are denied, are expected to uphold the
|
|
9
|
+
server ACL. Servers that do not uphold the ACLs MUST be added to the denied hosts
|
|
10
|
+
list in order for the ACLs to remain effective.
|
|
11
|
+
|
|
12
|
+
The `allow` and `deny` lists are lists of [glob-style patterns](/appendices#glob-style-matching).
|
|
13
|
+
When comparing against the server ACLs, the suspect server's port
|
|
14
|
+
number must not be considered. Therefore `evil.com`, `evil.com:8448`, and
|
|
15
|
+
`evil.com:1234` would all match rules that apply to `evil.com`, for example.
|
|
16
|
+
|
|
17
|
+
The ACLs are applied to servers when they make requests, and are applied in
|
|
18
|
+
the following order:
|
|
19
|
+
|
|
20
|
+
1. If there is no `m.room.server_acl` event in the room state, allow.
|
|
21
|
+
2. If the server name is an IP address (v4 or v6) literal, and `allow_ip_literals`
|
|
22
|
+
is present and `false`, deny.
|
|
23
|
+
3. If the server name matches an entry in the `deny` list, deny.
|
|
24
|
+
4. If the server name matches an entry in the `allow` list, allow.
|
|
25
|
+
5. Otherwise, deny.
|
|
26
|
+
|
|
27
|
+
**Note:**
|
|
28
|
+
Server ACLs do not restrict the events relative to the room DAG via authorisation
|
|
29
|
+
rules, but instead act purely at the network layer to determine which servers are
|
|
30
|
+
allowed to connect and interact with a given room.
|
|
31
|
+
|
|
32
|
+
**Warning:**
|
|
33
|
+
Failing to provide an `allow` rule of some kind will prevent **all**
|
|
34
|
+
servers from participating in the room, including the sender. This renders
|
|
35
|
+
the room unusable. A common allow rule is `[ "*" ]` which would still
|
|
36
|
+
permit the use of the `deny` list without losing the room.
|
|
37
|
+
|
|
38
|
+
**Warning:**
|
|
39
|
+
All compliant servers must implement server ACLs. However, legacy or noncompliant
|
|
40
|
+
servers exist which do not uphold ACLs, and these MUST be manually appended to
|
|
41
|
+
the denied hosts list when setting an ACL to prevent them from leaking events from
|
|
42
|
+
banned servers into a room. Currently, the only way to determine noncompliant hosts is
|
|
43
|
+
to check the `prev_events` of leaked events, therefore detecting servers which
|
|
44
|
+
are not upholding the ACLs. Server versions can also be used to try to detect hosts that
|
|
45
|
+
will not uphold the ACLs, although this is not comprehensive. Server ACLs were added
|
|
46
|
+
in Synapse v0.32.0, although other server implementations and versions exist in the world.
|
|
47
|
+
allOf:
|
|
48
|
+
- $ref: core-event-schema/state_event.yaml
|
|
49
|
+
type: object
|
|
50
|
+
properties:
|
|
51
|
+
content:
|
|
52
|
+
properties:
|
|
53
|
+
allow_ip_literals:
|
|
54
|
+
type: boolean
|
|
55
|
+
description: |-
|
|
56
|
+
True to allow server names that are IP address literals. False to
|
|
57
|
+
deny. Defaults to `true` if missing or otherwise not a boolean.
|
|
58
|
+
|
|
59
|
+
This is strongly recommended to be set to `false` as servers running
|
|
60
|
+
with IP literal names are strongly discouraged in order to require
|
|
61
|
+
legitimate homeservers to be backed by a valid registered domain name.
|
|
62
|
+
allow:
|
|
63
|
+
type: array
|
|
64
|
+
description: |-
|
|
65
|
+
The server names to allow in the room, excluding any port information.
|
|
66
|
+
Each entry is interpreted as a [glob-style pattern](/appendices#glob-style-matching).
|
|
67
|
+
|
|
68
|
+
**This defaults to an empty list when not provided, effectively disallowing
|
|
69
|
+
every server.**
|
|
70
|
+
items:
|
|
71
|
+
type: string
|
|
72
|
+
deny:
|
|
73
|
+
type: array
|
|
74
|
+
description: |-
|
|
75
|
+
The server names to disallow in the room, excluding any port information.
|
|
76
|
+
Each entry is interpreted as a [glob-style pattern](/appendices#glob-style-matching).
|
|
77
|
+
|
|
78
|
+
This defaults to an empty list when not provided.
|
|
79
|
+
items:
|
|
80
|
+
type: string
|
|
81
|
+
type: object
|
|
82
|
+
state_key:
|
|
83
|
+
description: A zero-length string.
|
|
84
|
+
pattern: '^$'
|
|
85
|
+
type: string
|
|
86
|
+
type:
|
|
87
|
+
enum: ['m.room.server_acl']
|
|
88
|
+
type: string
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/state_event.yaml
|
|
6
|
+
description: |-
|
|
7
|
+
Acts as an `m.room.member` invite event, where there isn't a target user_id to
|
|
8
|
+
invite. This event contains a token and a public key whose private key must be
|
|
9
|
+
used to sign the token. Any user who can present that signature may use this
|
|
10
|
+
invitation to join the target room.
|
|
11
|
+
properties:
|
|
12
|
+
content:
|
|
13
|
+
properties:
|
|
14
|
+
display_name:
|
|
15
|
+
description: |-
|
|
16
|
+
A user-readable string which represents the user who has been invited.
|
|
17
|
+
This should not contain the user's third-party ID, as otherwise when
|
|
18
|
+
the invite is accepted it would leak the association between the
|
|
19
|
+
matrix ID and the third-party ID.
|
|
20
|
+
type: string
|
|
21
|
+
key_validity_url:
|
|
22
|
+
description: |-
|
|
23
|
+
A URL which can be fetched, with querystring public_key=public_key, to
|
|
24
|
+
validate whether the key has been revoked. The URL must return a JSON
|
|
25
|
+
object containing a boolean property named 'valid'.
|
|
26
|
+
type: string
|
|
27
|
+
format: uri
|
|
28
|
+
public_key:
|
|
29
|
+
description: |-
|
|
30
|
+
An Ed25519 key with which the token must be signed (though a signature
|
|
31
|
+
from any entry in `public_keys` is also sufficient).
|
|
32
|
+
|
|
33
|
+
The key is encoded using [Unpadded Base64](/appendices/#unpadded-base64),
|
|
34
|
+
using the standard or URL-safe alphabets.
|
|
35
|
+
|
|
36
|
+
This exists for backwards compatibility.
|
|
37
|
+
type: string
|
|
38
|
+
public_keys:
|
|
39
|
+
description: Keys with which the token may be signed.
|
|
40
|
+
items:
|
|
41
|
+
properties:
|
|
42
|
+
key_validity_url:
|
|
43
|
+
description: |-
|
|
44
|
+
An optional URL which can be fetched, with querystring
|
|
45
|
+
`public_key=<public_key>`, to validate whether the key has been
|
|
46
|
+
revoked. The URL must return a JSON object containing a boolean
|
|
47
|
+
property named `valid`. If this URL is absent, the key must be
|
|
48
|
+
considered valid indefinitely.
|
|
49
|
+
type: string
|
|
50
|
+
public_key:
|
|
51
|
+
description: |-
|
|
52
|
+
An Ed25519 key with which the token may be signed.
|
|
53
|
+
|
|
54
|
+
The key is encoded using [Unpadded Base64](/appendices/#unpadded-base64),
|
|
55
|
+
using the standard or URL-safe alphabets.
|
|
56
|
+
type: string
|
|
57
|
+
required:
|
|
58
|
+
- public_key
|
|
59
|
+
title: PublicKeys
|
|
60
|
+
type: object
|
|
61
|
+
type: array
|
|
62
|
+
required:
|
|
63
|
+
- display_name
|
|
64
|
+
- key_validity_url
|
|
65
|
+
- public_key
|
|
66
|
+
type: object
|
|
67
|
+
state_key:
|
|
68
|
+
description: |-
|
|
69
|
+
The token, of which a signature must be produced in order to join the
|
|
70
|
+
room.
|
|
71
|
+
type: string
|
|
72
|
+
type:
|
|
73
|
+
enum:
|
|
74
|
+
- m.room.third_party_invite
|
|
75
|
+
type: string
|
|
76
|
+
title: |-
|
|
77
|
+
An invitation to a room issued to a third-party identifier, rather than a
|
|
78
|
+
matrix user ID.
|
|
79
|
+
type: object
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/state_event.yaml
|
|
6
|
+
description: 'A state event signifying that a room has been upgraded to a different room version, and that clients should go there.'
|
|
7
|
+
properties:
|
|
8
|
+
content:
|
|
9
|
+
properties:
|
|
10
|
+
body:
|
|
11
|
+
type: string
|
|
12
|
+
description: A server-defined message.
|
|
13
|
+
replacement_room:
|
|
14
|
+
type: string
|
|
15
|
+
description: The room ID of the new room the client should be visiting.
|
|
16
|
+
required:
|
|
17
|
+
- replacement_room
|
|
18
|
+
- body
|
|
19
|
+
type: object
|
|
20
|
+
state_key:
|
|
21
|
+
description: A zero-length string.
|
|
22
|
+
pattern: '^$'
|
|
23
|
+
type: string
|
|
24
|
+
type:
|
|
25
|
+
enum:
|
|
26
|
+
- m.room.tombstone
|
|
27
|
+
type: string
|
|
28
|
+
title: Indication that the room has been upgraded.
|
|
29
|
+
type: object
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
3
|
+
|
|
4
|
+
allOf:
|
|
5
|
+
- $ref: core-event-schema/state_event.yaml
|
|
6
|
+
description: |-
|
|
7
|
+
A topic is a short message detailing what is currently being discussed
|
|
8
|
+
in the room. It can also be used as a way to display extra information
|
|
9
|
+
about the room, which may not be suitable for the room name. The room
|
|
10
|
+
topic can also be set when creating a room using
|
|
11
|
+
[`/createRoom`](client-server-api/#post_matrixclientv3createroom), either
|
|
12
|
+
with the `topic` key or by specifying a full event in `initial_state`.
|
|
13
|
+
|
|
14
|
+
If the `topic` property is absent, null, or empty then the topic is unset. In other words,
|
|
15
|
+
an empty `topic` property effectively resets the room to having no topic.
|
|
16
|
+
|
|
17
|
+
In order to prevent formatting abuse in room topics, clients SHOULD
|
|
18
|
+
limit the length of topics during both entry and display, for instance,
|
|
19
|
+
by capping the number of displayed lines. Additionally, clients SHOULD
|
|
20
|
+
ignore things like headings and enumerations (or format them as regular
|
|
21
|
+
text).
|
|
22
|
+
properties:
|
|
23
|
+
content:
|
|
24
|
+
properties:
|
|
25
|
+
topic:
|
|
26
|
+
description: |-
|
|
27
|
+
The topic in plain text.
|
|
28
|
+
|
|
29
|
+
This SHOULD duplicate the content of the `text/plain`
|
|
30
|
+
representation in `m.topic` if any exists.
|
|
31
|
+
type: string
|
|
32
|
+
m.topic:
|
|
33
|
+
type: object
|
|
34
|
+
title: TopicContentBlock
|
|
35
|
+
x-addedInMatrixVersion: "1.15"
|
|
36
|
+
description: |-
|
|
37
|
+
Textual representation of the room topic in different mimetypes.
|
|
38
|
+
properties:
|
|
39
|
+
m.text:
|
|
40
|
+
$ref: components/m_text_content_block.yaml
|
|
41
|
+
required:
|
|
42
|
+
- topic
|
|
43
|
+
type: object
|
|
44
|
+
state_key:
|
|
45
|
+
description: A zero-length string.
|
|
46
|
+
pattern: '^$'
|
|
47
|
+
type: string
|
|
48
|
+
type:
|
|
49
|
+
enum:
|
|
50
|
+
- m.room.topic
|
|
51
|
+
type: string
|
|
52
|
+
title: Topic
|
|
53
|
+
type: object
|