Compare commits
2183 Commits
server_ser
...
main
Author | SHA1 | Date |
---|---|---|
Travis Ralston | 4c0ec1ea73 | 6 hours ago |
Catalan Lover | e5f33b9839 | 4 days ago |
Kegan Dougal | 27bc9a50e9 | 5 days ago |
Travis Ralston | f633d3006e | 4 weeks ago |
David Baker | 41495d2355 | 4 weeks ago |
Travis Ralston | abaaaee1c5 | 4 weeks ago |
DeepBlueV7.X | 3b7108535b | 1 month ago |
Johannes Marbach | 4251928aed | 1 month ago |
Matthias Ahouansou | cf4cdf2663 | 2 months ago |
Josh Simmons | f07c4508a8 | 2 months ago |
Johannes Marbach | bbe54bc1c2 | 3 months ago |
Tulir Asokan | f2c6766e09 | 3 months ago |
Marcus | d04470eca4 | 3 months ago |
Travis Ralston | 9acf41a92b | 3 months ago |
Richard van der Hoff | 36c5ec47a2 | 4 months ago |
Richard van der Hoff | 712dd41e4f | 4 months ago |
Hugh Nimmo-Smith | b9cdd782b9 | 4 months ago |
Doug | 2534644dec | 5 months ago |
Brendan Abolivier | 8eb75fe64a | 5 months ago |
Kévin Commaille | d6edcbd946 | 5 months ago |
Travis Ralston | 72e694ba0b | 5 months ago |
Travis Ralston | 2daf5b3c35 | 6 months ago |
Travis Ralston | 781ab5dc18 | 6 months ago |
Hubert Chathi | ba00632b3a | 6 months ago |
Travis Ralston | 03cc2087a5 | 6 months ago |
Hugh Nimmo-Smith | 1a82fca4eb | 6 months ago |
Richard van der Hoff | 8c818a271c | 7 months ago |
Patrick Cloke | 15e87d5b9c | 7 months ago |
Travis Ralston | 1da8babace | 7 months ago |
Travis Ralston | 676939659c | 7 months ago |
kegsay | 94de0bde0f | 7 months ago |
Tulir Asokan | ef5baec8a4 | 7 months ago |
Travis Ralston | 9eaf81f715 | 7 months ago |
Thomas Halwax | 555b5d76d9 | 7 months ago |
Travis Ralston | 1c38196798 | 8 months ago |
Janne Mareike Koschinski | 4b00da27a1 | 8 months ago |
Travis Ralston | c015c5bb56 | 8 months ago |
Travis Ralston | 209a99a658 | 8 months ago |
Denis Kasak | fe587a7d33 | 8 months ago |
Lilith Orion Hafner | abe7045be7 | 9 months ago |
Travis Ralston | 902caeaf2b | 10 months ago |
Travis Ralston | e5eb721d37 | 10 months ago |
Will Hunt | d4df1d9d43 | 10 months ago |
Andrew Morgan | cf3f0d58be | 11 months ago |
Aminda Suomalainen | 4623228eef | 1 year ago |
Shay | 294b051579 | 1 year ago |
Travis Ralston | 2a73041f06 | 1 year ago |
Travis Ralston | 02682041b3 | 1 year ago |
Hubert Chathi | 6a3ab1d64c | 1 year ago |
Patrick Cloke | 43c374e361 | 1 year ago |
Šimon Brandner | 7ad992abe5 | 1 year ago |
Andrew Morgan | f7b3903e3b | 1 year ago |
Travis Ralston | 0c09204d10 | 1 year ago |
Travis Ralston | ac57d94151 | 1 year ago |
Šimon Brandner | 641faf2e5d | 1 year ago |
Travis Ralston | 08b3b62e03 | 1 year ago |
Travis Ralston | bab39e28ce | 1 year ago |
Patrick Cloke | 9466833900 | 1 year ago |
Nick Mills-Barrett | a3778b3f82 | 1 year ago |
Tulir Asokan | 3fb2a604e4 | 1 year ago |
Will Hunt | 126ca8589b | 1 year ago |
Hugh Nimmo-Smith | ff99748dc2 | 1 year ago |
Andrew Morgan | 2c4de1a169 | 1 year ago |
David Baker | adb11d6e1d | 1 year ago |
Andrew Morgan | aa06d461fb | 1 year ago |
David Baker | ea715b7a3f | 1 year ago |
Patrick Cloke | 564638f4cf | 1 year ago |
Patrick Cloke | 8b6e2afcea | 1 year ago |
Richard van der Hoff | 0907871400 | 1 year ago |
Tulir Asokan | 8962f0a383 | 1 year ago |
Hugh Nimmo-Smith | 7975ae8634 | 1 year ago |
Patrick Cloke | bf8a50c93e | 2 years ago |
Travis Ralston | 71cd257460 | 2 years ago |
Hubert Chathi | e51a61a2eb | 2 years ago |
Travis Ralston | 5a310fbf1a | 2 years ago |
Travis Ralston | 4881ab5410 | 2 years ago |
Travis Ralston | c8688eccd9 | 2 years ago |
Patrick Cloke | d0b48b9ec9 | 2 years ago |
Johannes Marbach | 618d34b793 | 2 years ago |
Nick Mills-Barrett | cde17d4548 | 2 years ago |
Travis Ralston | 6b2e763f5b | 2 years ago |
Matthew Hodgson | 01654eb2de | 2 years ago |
benkuly | 13935ec33b | 2 years ago |
David Robertson | 26f5effe45 | 2 years ago |
Hubert Chathi | 9b3f01b019 | 2 years ago |
Catalan Lover | b5bf09ea1c | 2 years ago |
Richard van der Hoff | 006ca6a95a | 2 years ago |
Richard van der Hoff | 9a80bcffb6 | 2 years ago |
Travis Ralston | 4093b15124 | 2 years ago |
Eric Eastwood | 8e46b7c5c8 | 2 years ago |
Andrew Morgan | 7e91b8eb71 | 2 years ago |
Patrick Cloke | 0ff35b275a | 2 years ago |
Eric Eastwood | f8da206fc7 | 2 years ago |
Andrew Morgan | 1676be343d | 2 years ago |
Travis Ralston | 85e0444735 | 2 years ago |
Patrick Cloke | aa51353fde | 2 years ago |
Patrick Cloke | 3b43d871c5 | 2 years ago |
Patrick Cloke | 39f804004b | 2 years ago |
Patrick Cloke | 9d80dcb6bd | 2 years ago |
Travis Ralston | 4e1b56247b | 2 years ago |
Richard van der Hoff | c3eb6ac6da | 2 years ago |
Travis Ralston | f139eee50d | 2 years ago |
Travis Ralston | dbc7937cd0 | 2 years ago |
Travis Ralston | 0d1605283c | 2 years ago |
Aminda Suomalainen | 43a3620edf | 2 years ago |
Šimon Brandner | 0f067f1548 | 2 years ago |
Travis Ralston | 1ec0d5824f | 2 years ago |
Robert Long | d15a6a34d6 | 2 years ago |
Šimon Brandner | 129e5e982e | 2 years ago |
Hubert Chathi | 1bfa09cc2a | 2 years ago |
Travis Ralston | 17e3cc17bf | 2 years ago |
Tulir Asokan | 5788b7d4e8 | 2 years ago |
Bruno Windels | 3a05bd637a | 2 years ago |
Šimon Brandner | 6abe71386b | 2 years ago |
Aaron Raimist | 3ab1638b56 | 2 years ago |
Travis Ralston | 540fb185d5 | 2 years ago |
Richard van der Hoff | 6f411413af | 2 years ago |
Patrick Cloke | f6f3299b0d | 2 years ago |
Travis Ralston | 46ae23744e | 2 years ago |
Travis Ralston | d27e9e4acf | 2 years ago |
Travis Ralston | 0e9020aeb2 | 2 years ago |
Travis Ralston | 09fc322915 | 2 years ago |
Travis Ralston | 71a6e9adb4 | 2 years ago |
Travis Ralston | ffc689db27 | 2 years ago |
Travis Ralston | ebd57df4e5 | 2 years ago |
Patrick Cloke | 7521fea369 | 2 years ago |
Richard van der Hoff | 2a9e23308d | 2 years ago |
Richard van der Hoff | 533e6c5e0c | 2 years ago |
Richard van der Hoff | ac93bec56a | 2 years ago |
Jan Christian Grünhage | 8aaf3c5129 | 2 years ago |
Patrick Cloke | 919ca2f65a | 3 years ago |
Erik Johnston | d375720b1f | 3 years ago |
Travis Ralston | e1aa00a75d | 3 years ago |
Neil Alexander | 03f8ce9c44 | 3 years ago |
Aaron Raimist | 32ce58932f | 3 years ago |
Germain | 489f8d8544 | 3 years ago |
Tulir Asokan | daf940a128 | 3 years ago |
Richard van der Hoff | 161be7e7c0 | 3 years ago |
Richard van der Hoff | b655688d30 | 3 years ago |
Andrew Morgan | b26aa7fcf5 | 3 years ago |
Aaron Raimist | 419d8cbd94 | 3 years ago |
Aaron Raimist | 2e63733beb | 3 years ago |
Jonas Platte | d7d52e8074 | 3 years ago |
Alexandre Franke | 1afbffb98e | 3 years ago |
Tulir Asokan | be3b8e3a3c | 3 years ago |
Travis Ralston | 7afac76e18 | 3 years ago |
Travis Ralston | 23b0e11409 | 3 years ago |
Hubert Chathi | e9fed105c6 | 3 years ago |
Travis Ralston | 8851974d03 | 3 years ago |
Travis Ralston | 8a0a799a4b | 3 years ago |
Richard van der Hoff | 9e4b170643 | 3 years ago |
Travis Ralston | 7aeea64797 | 3 years ago |
Richard van der Hoff | ca466b5a57 | 3 years ago |
Will Hunt | c420fc49a0 | 3 years ago |
Richard van der Hoff | f989d323c0 | 3 years ago |
Andrew Morgan | 868949908c | 3 years ago |
Andrew Morgan | 0d634b1935 | 3 years ago |
Hubert Chathi | d06f05571f | 3 years ago |
Richard van der Hoff | 1913812a90 | 3 years ago |
Andrew Morgan | e7adfd5ed1 | 3 years ago |
Richard van der Hoff | c400dc99c0 | 3 years ago |
Travis Ralston | 956a22da11 | 3 years ago |
Travis Ralston | e488a7fb6d | 3 years ago |
Travis Ralston | 4b78d22e8c | 3 years ago |
Travis Ralston | fb2aa688db | 3 years ago |
Alexandre Franke | de9cf76a57 | 3 years ago |
Travis Ralston | 0f9eadd1a1 | 3 years ago |
Matthew Hodgson | 2cd2a7122c | 3 years ago |
devonh | dd32431b85 | 3 years ago |
devonh | fc5ba959ca | 3 years ago |
Richard van der Hoff | 36b02edfc2 | 3 years ago |
Travis Ralston | d4c74d37a9 | 3 years ago |
Aaron Raimist | 990dfec94b | 3 years ago |
Alexandre Franke | d3e39567f4 | 3 years ago |
Travis Ralston | 2e5cc42666 | 3 years ago |
Travis Ralston | df1d150142 | 3 years ago |
Travis Ralston | 59f4d7ffed | 3 years ago |
Matthew Hodgson | 20aa44bd13 | 3 years ago |
Richard van der Hoff | 4a9c236572 | 3 years ago |
Richard van der Hoff | c3b53d5ae6 | 3 years ago |
Richard van der Hoff | 783624d2cd | 3 years ago |
Richard van der Hoff | 39a41a18ba | 3 years ago |
Matthew Hodgson | c151353956 | 3 years ago |
Travis Ralston | 4a597ace51 | 3 years ago |
Patrick Cloke | fff5f87c3d | 3 years ago |
Alexandre Franke | b6b98410c1 | 3 years ago |
Travis Ralston | 6c4aabd053 | 3 years ago |
Travis Ralston | 3475ef62ab | 3 years ago |
Travis Ralston | fc3f7d60eb | 3 years ago |
Travis Ralston | 97a8b0bb13 | 3 years ago |
Travis Ralston | 9af83dfd41 | 3 years ago |
Patrick Cloke | 21882b6006 | 3 years ago |
Hubert Chathi | 16ec511e9c | 3 years ago |
Hubert Chathi | 6fb684397a | 3 years ago |
Richard van der Hoff | 2a5e33a760 | 3 years ago |
Jonathan de Jong | cf73fb97bc | 3 years ago |
Andrew Morgan | a8f7723fe5 | 3 years ago |
Alexandre Franke | 7e92964dc5 | 3 years ago |
Travis Ralston | 56532dd688 | 3 years ago |
Travis Ralston | 224773dc6a | 3 years ago |
Travis Ralston | 26e0765159 | 3 years ago |
Travis Ralston | 00169abcdb | 3 years ago |
Travis Ralston | 0ee58100c4 | 3 years ago |
Travis Ralston | e4057072bd | 3 years ago |
Travis Ralston | 20bd445602 | 3 years ago |
Lukas Lihotzki | 4415e36a74 | 3 years ago |
Richard van der Hoff | 3be746c9d3 | 3 years ago |
Richard van der Hoff | 355e06eaa6 | 3 years ago |
Travis Ralston | 592cbd537c | 3 years ago |
Travis Ralston | 1e9dd4d22e | 3 years ago |
Travis Ralston | 4734f40098 | 3 years ago |
Travis Ralston | afc5298f11 | 3 years ago |
Dan Callahan | 48d8f7202d | 3 years ago |
Travis Ralston | dfec7d687e | 3 years ago |
Alexandre Franke | 6972342611 | 3 years ago |
Travis Ralston | afb6867232 | 3 years ago |
Travis Ralston | 76aaf39811 | 3 years ago |
Will Hunt | a05706780d | 3 years ago |
Travis Ralston | 3ebe4e801b | 3 years ago |
Alexandre Franke | b55cc15772 | 3 years ago |
Travis Ralston | 00ee4d7010 | 3 years ago |
Aaron Raimist | 01cd41de68 | 3 years ago |
Travis Ralston | d2fd90579b | 3 years ago |
homersimpsons | 9efe1887a4 | 3 years ago |
Shay | 3ce9c1d288 | 3 years ago |
Shay | 87fcb7c8b0 | 3 years ago |
Alexandre Franke | 71ff06fd7a | 3 years ago |
Travis Ralston | 336194aee4 | 3 years ago |
Hubert Chathi | 71988263f3 | 3 years ago |
Travis Ralston | 0fbc6bdab6 | 3 years ago |
Richard van der Hoff | 4b866adac1 | 3 years ago |
Alexandre Franke | d25fa13e6d | 3 years ago |
Alexandre Franke | 806ae22da7 | 3 years ago |
Matthew Hodgson | 87822fa105 | 3 years ago |
Richard van der Hoff | 86fb65a4bd | 3 years ago |
Richard van der Hoff | 83b24dd54d | 3 years ago |
Richard van der Hoff | 7f200c53e8 | 3 years ago |
David Robertson | 1e12b45f97 | 3 years ago |
Alexandre Franke | a26f2f8ca9 | 3 years ago |
Richard van der Hoff | dce06f6dc2 | 3 years ago |
Hubert Chathi | 9654bf19b3 | 3 years ago |
Ankur | ac98c8c08c | 3 years ago |
Matthew Hodgson | 8d9a67d9f6 | 3 years ago |
Richard van der Hoff | f4a0c1aac5 | 3 years ago |
Richard van der Hoff | 92b29cf8e6 | 3 years ago |
Richard van der Hoff | d74a43f7cf | 3 years ago |
Richard van der Hoff | 0d8f466f39 | 3 years ago |
Jonas Kress | 0982d5c55f | 3 years ago |
Andrew Morgan | 82254deaa1 | 3 years ago |
Ankur | a8cf4d4a56 | 3 years ago |
Will Hunt | 51d8560da9 | 3 years ago |
Ankur | a034d45e45 | 3 years ago |
Patrick Cloke | 9a6c86ac8d | 3 years ago |
Hubert Chathi | 1ad5ff4179 | 3 years ago |
Hubert Chathi | 033038917d | 3 years ago |
Travis Ralston | 67d73438ea | 3 years ago |
Travis Ralston | 2227a812a2 | 3 years ago |
Travis Ralston | 195b8a54c5 | 3 years ago |
Travis Ralston | 8fb782c324 | 3 years ago |
Travis Ralston | a5a27f69af | 3 years ago |
Travis Ralston | 8f2e8f03d0 | 3 years ago |
DeepBlueV7.X | 938354b8b4 | 3 years ago |
Travis Ralston | 241e01c332 | 3 years ago |
kegsay | b873ba984c | 3 years ago |
Travis Ralston | ae2d00b164 | 3 years ago |
Element Translate Bot | 6f87c203b1 | 3 years ago |
Andrew Morgan | 00bf1b3f2f | 3 years ago |
Travis Ralston | aa31247165 | 3 years ago |
Travis Ralston | 5ea6d5610f | 3 years ago |
Richard van der Hoff | 4a581a8048 | 3 years ago |
Richard van der Hoff | d6f73d2df3 | 3 years ago |
Travis Ralston | 88e181ac1d | 3 years ago |
Richard van der Hoff | d42fce333e | 3 years ago |
Valere | 70d6a0fbeb | 3 years ago |
Richard van der Hoff | 2803a374cb | 3 years ago |
Richard van der Hoff | ae78375c6a | 3 years ago |
Richard van der Hoff | d094a70d3a | 3 years ago |
Richard van der Hoff | f5fcde09f8 | 3 years ago |
Richard van der Hoff | 5be335e01b | 3 years ago |
Richard van der Hoff | 5bd103be49 | 3 years ago |
Richard van der Hoff | 17198c7e05 | 3 years ago |
Travis Ralston | e8674688e6 | 3 years ago |
Richard van der Hoff | 61ac438871 | 3 years ago |
Richard van der Hoff | 265ebef584 | 3 years ago |
dependabot[bot] | 6062e5052d | 3 years ago |
Travis Ralston | 5be0df02c5 | 3 years ago |
Travis Ralston | 649fc2bdd2 | 3 years ago |
Travis Ralston | f295e828dc | 3 years ago |
Travis Ralston | 95d850c418 | 3 years ago |
Travis Ralston | 2d98cd3084 | 3 years ago |
Andy Balaam | 2fc3982568 | 3 years ago |
Andrew Fargo | 43a71c0092 | 3 years ago |
Andrew Fargo | f1a4a58755 | 3 years ago |
Alexandre Franke | 26c0c88882 | 3 years ago |
Travis Ralston | 6226a47543 | 3 years ago |
Quentin Gliech | 84ccbeacca | 3 years ago |
Alexandre Franke | 0ee4c5eeef | 3 years ago |
Alexandre Franke | 26d972a997 | 3 years ago |
Alexandre Franke | 423d22ed23 | 3 years ago |
Callum Brown | 0c3b488805 | 3 years ago |
Travis Ralston | b7e6104713 | 3 years ago |
Travis Ralston | 7e67aa2e23 | 3 years ago |
Jonas Platte | 6e78cde3eb | 3 years ago |
Alexandre Franke | 08b67761f9 | 3 years ago |
Alexandre Franke | 845e4c87db | 3 years ago |
Patrick Cloke | fa479afa97 | 3 years ago |
Patrick Cloke | d2cb13cc8c | 3 years ago |
Alexandre Franke | 89b0ad8051 | 3 years ago |
Alexandre Franke | cbe3081685 | 3 years ago |
Denis Kasak | ed08c1cb9e | 3 years ago |
Sorunome | d9dd37de0c | 3 years ago |
Alexandre Franke | 72888c9a89 | 3 years ago |
Alexandre Franke | c7c3a76c42 | 3 years ago |
Alexandre Franke | 3eb383c120 | 3 years ago |
Richard van der Hoff | 35277ff041 | 3 years ago |
Richard van der Hoff | f8b83b7fb1 | 3 years ago |
Travis Ralston | 3662a1cf14 | 3 years ago |
Neil Alexander | 3d278b891d | 3 years ago |
Aaron Raimist | 525728971b | 3 years ago |
Travis Ralston | 2c249fc6a1 | 3 years ago |
Richard van der Hoff | 6bd7b6cbb5 | 3 years ago |
ColonisationCaptain | 7c58999c6a | 3 years ago |
Richard van der Hoff | 4b2bbbabcc | 3 years ago |
Richard van der Hoff | cafb9ff5a8 | 3 years ago |
Richard van der Hoff | a187996383 | 3 years ago |
Richard van der Hoff | 6afe10409e | 3 years ago |
Alexey Rusakov | 6d2c388144 | 3 years ago |
Denis Kasak | 14ed131761 | 3 years ago |
Lukas Lihotzki | 8a8db03a13 | 3 years ago |
Denis Kasak | 3fb4fcaad9 | 3 years ago |
Hubert Chathi | b231220bbd | 3 years ago |
Denis Kasak | ddbbd76b32 | 3 years ago |
Alexey Rusakov | fbf4259a83 | 3 years ago |
Hubert Chathi | 8536cd3e16 | 3 years ago |
Alexey Rusakov | 5749325fc3 | 3 years ago |
Lukas Lihotzki | 13f7df1379 | 3 years ago |
Hubert Chathi | f814f86031 | 3 years ago |
Hubert Chathi | 89089e8913 | 3 years ago |
Lukas Lihotzki | 39e70a2902 | 3 years ago |
Alexey Rusakov | 3bf7e48e13 | 3 years ago |
Hubert Chathi | ee92c94cfe | 3 years ago |
Hubert Chathi | 88479ca851 | 3 years ago |
Lukas Lihotzki | 1a81a46865 | 3 years ago |
Lukas Lihotzki | 97ebe5aec2 | 3 years ago |
Andrew Morgan | ff2c93af1c | 3 years ago |
Lukas Lihotzki | e3070bcdda | 3 years ago |
Alexey Rusakov | 19a96c2484 | 3 years ago |
Lukas Lihotzki | c58d423aba | 3 years ago |
Niels Basjes | cf5b519963 | 3 years ago |
Travis Ralston | 8b1e4d6a79 | 3 years ago |
Lukas Lihotzki | 91b232df48 | 3 years ago |
Travis Ralston | cdcc24af11 | 3 years ago |
Patrick Cloke | 268cc65198 | 3 years ago |
Neil Alexander | af0ebc7414 | 3 years ago |
Lukas Lihotzki | ad0ff78316 | 3 years ago |
Patrick Cloke | 0b60680d33 | 3 years ago |
Travis Ralston | f31adf19ce | 3 years ago |
Matthew Hodgson | 377aac16fa | 3 years ago |
Travis Ralston | b84d11911f | 3 years ago |
Patrick Cloke | e229706ae4 | 3 years ago |
Patrick Cloke | c4d2f94ef8 | 3 years ago |
Alexey Rusakov | c5631b30b8 | 3 years ago |
Patrick Cloke | 7ff569f252 | 3 years ago |
Travis Ralston | c516ffd5ab | 3 years ago |
Patrick Cloke | dcd6de59cd | 3 years ago |
Patrick Cloke | fd0c909644 | 3 years ago |
Patrick Cloke | 7cecb84afe | 3 years ago |
Patrick Cloke | c79d1ac350 | 3 years ago |
Patrick Cloke | d399653cab | 3 years ago |
Patrick Cloke | 72961e6f29 | 3 years ago |
Patrick Cloke | 977146baf5 | 3 years ago |
Patrick Cloke | 58ccb86a34 | 3 years ago |
Patrick Cloke | c6f0119b13 | 3 years ago |
Patrick Cloke | 67e558da52 | 3 years ago |
Patrick Cloke | 27bee1bad8 | 3 years ago |
Patrick Cloke | d329c216c4 | 3 years ago |
Patrick Cloke | 6b6aa2449a | 3 years ago |
Patrick Cloke | cff5a8728e | 3 years ago |
Patrick Cloke | 2bc4e86cb4 | 3 years ago |
Patrick Cloke | 248cb8b310 | 3 years ago |
Patrick Cloke | 72f564c236 | 3 years ago |
Patrick Cloke | c42e89a4d4 | 3 years ago |
Patrick Cloke | 04c88f584c | 3 years ago |
Patrick Cloke | 12a39f66df | 3 years ago |
Patrick Cloke | aed1e23131 | 3 years ago |
Patrick Cloke | e93accf198 | 3 years ago |
Patrick Cloke | 7aeca9ccb6 | 3 years ago |
Patrick Cloke | 1f7481bfbd | 3 years ago |
Patrick Cloke | 48674a3353 | 3 years ago |
Patrick Cloke | 84178b1d39 | 3 years ago |
Patrick Cloke | 75fc073bfc | 3 years ago |
Patrick Cloke | 750be83313 | 3 years ago |
Patrick Cloke | 2749a95251 | 3 years ago |
Patrick Cloke | 289c64035f | 3 years ago |
Patrick Cloke | ba63bedec0 | 3 years ago |
Patrick Cloke | 2171d175e8 | 3 years ago |
Patrick Cloke | 3377d55c28 | 3 years ago |
Patrick Cloke | f4e2d925e3 | 3 years ago |
Patrick Cloke | 53bae34457 | 3 years ago |
Patrick Cloke | d445b07855 | 3 years ago |
Travis Ralston | e30a68a49e | 3 years ago |
Patrick Cloke | cd78eed3f1 | 3 years ago |
Travis Ralston | 24fedc2299 | 3 years ago |
Patrick Cloke | e3692edd09 | 3 years ago |
Patrick Cloke | 066f25fd82 | 3 years ago |
Patrick Cloke | d63e39c4af | 3 years ago |
Patrick Cloke | 4afe946def | 3 years ago |
Patrick Cloke | 51650b63f2 | 3 years ago |
Patrick Cloke | 06f0d622a9 | 3 years ago |
Patrick Cloke | 5d1bebedf0 | 3 years ago |
Patrick Cloke | 486026a711 | 3 years ago |
Patrick Cloke | 955160c750 | 3 years ago |
Patrick Cloke | 5c6e76a63b | 3 years ago |
Patrick Cloke | 963aa40665 | 3 years ago |
Patrick Cloke | 31cdf835b8 | 3 years ago |
Patrick Cloke | 084e6225c5 | 3 years ago |
Patrick Cloke | 6919bbf80c | 3 years ago |
Patrick Cloke | 959c6aa816 | 3 years ago |
Patrick Cloke | 7994a1e85a | 3 years ago |
Patrick Cloke | ef02f82afb | 3 years ago |
Patrick Cloke | 6686696e66 | 3 years ago |
Patrick Cloke | 4051810241 | 3 years ago |
Patrick Cloke | 35ce0b8f91 | 3 years ago |
Patrick Cloke | 933c50480c | 3 years ago |
Patrick Cloke | 0992a4d60f | 3 years ago |
Patrick Cloke | 85003eb784 | 3 years ago |
Patrick Cloke | b2b21e986d | 3 years ago |
Patrick Cloke | ebae487451 | 3 years ago |
Patrick Cloke | 4143f9ddcb | 3 years ago |
Patrick Cloke | f71e48c0ac | 3 years ago |
Patrick Cloke | 82c2ed6a47 | 3 years ago |
Travis Ralston | 5d4713f168 | 3 years ago |
Travis Ralston | f433e07763 | 3 years ago |
Travis Ralston | efbccb6edd | 3 years ago |
Michael[tm] Smith | d7cf63d981 | 3 years ago |
Travis Ralston | e5b907021c | 3 years ago |
ilovecommits | 175e3c157d | 3 years ago |
Christian Paul | 86b53be3d1 | 3 years ago |
Travis Ralston | 87d22392ac | 3 years ago |
Travis Ralston | 2ebae1cddd | 3 years ago |
Patrick Cloke | c027957f01 | 3 years ago |
Travis Ralston | 6ba9ff5303 | 3 years ago |
dependabot[bot] | a58966ad6e | 3 years ago |
Patrick Cloke | b9daaa3a3f | 3 years ago |
Travis Ralston | 3e186da139 | 3 years ago |
J. Ryan Stinnett | ae227b7070 | 3 years ago |
Patrick Cloke | 4933ecd176 | 3 years ago |
Patrick Cloke | 8082b2f813 | 3 years ago |
Patrick Cloke | c37512343e | 3 years ago |
Patrick Cloke | 7daf3376b2 | 3 years ago |
Patrick Cloke | 2522ed5eae | 3 years ago |
Patrick Cloke | 1672ce2b0c | 3 years ago |
Patrick Cloke | 1c34a466ed | 3 years ago |
Patrick Cloke | 086095f72e | 3 years ago |
Patrick Cloke | 12abecf5b5 | 3 years ago |
Patrick Cloke | 56b1b04544 | 3 years ago |
Patrick Cloke | 517174b19d | 3 years ago |
Patrick Cloke | bf41af7c15 | 3 years ago |
Patrick Cloke | 34f006ce8b | 3 years ago |
Patrick Cloke | c2a3b5d079 | 3 years ago |
Patrick Cloke | 36a0251c9a | 3 years ago |
Patrick Cloke | 34cd85829b | 3 years ago |
Patrick Cloke | b16b1a24d9 | 3 years ago |
Travis Ralston | b0223b8bb8 | 3 years ago |
Travis Ralston | 153df04953 | 3 years ago |
Travis Ralston | 4f03180b90 | 3 years ago |
Will Hunt | 7fac138d9a | 3 years ago |
Travis Ralston | 30654f70ee | 3 years ago |
dependabot[bot] | 933624e28a | 3 years ago |
dependabot[bot] | a8541d02de | 3 years ago |
Will Hunt | 2794fc8e29 | 3 years ago |
Hubert Chathi | 221375b105 | 3 years ago |
Travis Ralston | 81da7ba480 | 3 years ago |
Hubert Chathi | c4e9e904e2 | 3 years ago |
Hubert Chathi | 53fedb2c61 | 3 years ago |
Travis Ralston | 8b40972872 | 3 years ago |
Travis Ralston | 96b86b0282 | 3 years ago |
Hubert Chathi | b3b6fb3e10 | 3 years ago |
Hubert Chathi | 586c4d865a | 3 years ago |
Travis Ralston | 21a132d3a5 | 3 years ago |
Andrew Morgan | fca6992cd9 | 3 years ago |
Travis Ralston | eecdcf43ab | 3 years ago |
Hubert Chathi | f9c9fce1ad | 3 years ago |
Arnaud Venturi | 0d275cc739 | 3 years ago |
Travis Ralston | 7a013a53e5 | 3 years ago |
Travis Ralston | d7f01de1e6 | 3 years ago |
Travis Ralston | 4cb667ca27 | 3 years ago |
Travis Ralston | e3f2836756 | 3 years ago |
Travis Ralston | e97bfac552 | 3 years ago |
Weblate | 0794722d82 | 3 years ago |
Travis Ralston | c254aac25d | 3 years ago |
dependabot[bot] | 685819049a | 3 years ago |
Szimszon | 1282e8a91c | 3 years ago |
Travis Ralston | 71a0f9f9a2 | 3 years ago |
Lukas Lihotzki | 6c46933fbc | 3 years ago |
Szimszon | 0ea5f72c83 | 3 years ago |
Travis Ralston | 2fbd3e6210 | 3 years ago |
Travis Ralston | 6012ddcdec | 3 years ago |
Travis Ralston | 86661bbfbb | 3 years ago |
Lukas Lihotzki | 2fa7b59e1a | 3 years ago |
Andrew Morgan | 5d0d5a3981 | 3 years ago |
Travis Ralston | a5fea91d86 | 3 years ago |
Travis Ralston | fb3dde1c2c | 3 years ago |
Travis Ralston | 3d217e0de0 | 3 years ago |
Hubert Chathi | adbe95259f | 3 years ago |
Travis Ralston | 6917c708c9 | 3 years ago |
Travis Ralston | 3c01fa4681 | 3 years ago |
Travis Ralston | d41658e714 | 3 years ago |
Travis Ralston | c11efb35fe | 3 years ago |
Hubert Chathi | 620278786d | 3 years ago |
Andrew Morgan | ad93aa6546 | 3 years ago |
Travis Ralston | fbec7a1bcb | 3 years ago |
Hubert Chathi | fbbdd0f6cc | 3 years ago |
Travis Ralston | 466911b253 | 3 years ago |
Hubert Chathi | e0ec01a999 | 3 years ago |
Hubert Chathi | ca3c42d865 | 3 years ago |
Travis Ralston | 53833d49a5 | 3 years ago |
Travis Ralston | c1d1f88a55 | 3 years ago |
Travis Ralston | c5eaa59c79 | 3 years ago |
Travis Ralston | 2c3d7b1682 | 3 years ago |
Travis Ralston | 457f3995af | 3 years ago |
Travis Ralston | 21a0a97134 | 3 years ago |
Travis Ralston | 67d5d9eb49 | 3 years ago |
Travis Ralston | 94ca646fb7 | 3 years ago |
Travis Ralston | 57f609cf1b | 3 years ago |
Travis Ralston | 3b2c0ff233 | 3 years ago |
Travis Ralston | 3683d334f7 | 3 years ago |
Hubert Chathi | ec9ea2b6e3 | 3 years ago |
Travis Ralston | 01a7f06ce4 | 3 years ago |
Travis Ralston | 49a5ca3553 | 3 years ago |
Travis Ralston | 37c3a3f855 | 3 years ago |
Travis Ralston | 7cef7d0fcf | 3 years ago |
Travis Ralston | fc6aa30000 | 3 years ago |
Travis Ralston | 3aa517a868 | 3 years ago |
Hubert Chathi | e9e0d8ee47 | 3 years ago |
Travis Ralston | 57f4347b5d | 3 years ago |
Travis Ralston | de19b86eed | 3 years ago |
Travis Ralston | cbd761df17 | 3 years ago |
Hubert Chathi | 3084f3d32f | 3 years ago |
Travis Ralston | 8bbcee39a5 | 3 years ago |
Travis Ralston | be86e638c5 | 3 years ago |
Travis Ralston | c124462747 | 3 years ago |
Hubert Chathi | 194fef8022 | 3 years ago |
Travis Ralston | ee3ca86b6c | 3 years ago |
Travis Ralston | d9bb8f46d1 | 3 years ago |
Travis Ralston | 2d39ed69c3 | 3 years ago |
Travis Ralston | 3b426846fe | 3 years ago |
Travis Ralston | fa6cc8a1ff | 3 years ago |
Weblate | 1c94fb1aab | 3 years ago |
Hubert Chathi | 1a1f01234d | 3 years ago |
Hubert Chathi | b2cb2a3c20 | 3 years ago |
Hubert Chathi | 7a960375cc | 3 years ago |
Travis Ralston | 4b40ecc53d | 3 years ago |
Hubert Chathi | 21fa486b3b | 3 years ago |
Travis Ralston | 6ffbc5d269 | 3 years ago |
Hakim Oubouali | 0b823e0b03 | 3 years ago |
Hubert Chathi | c85f98bdab | 3 years ago |
Hubert Chathi | ca37ada9e2 | 3 years ago |
Hubert Chathi | c3a234843b | 3 years ago |
Travis Ralston | cd89f77e2b | 3 years ago |
Hubert Chathi | bb06dbdb2a | 3 years ago |
Hubert Chathi | 8019699dc5 | 3 years ago |
Hakim Oubouali | 4183893ec2 | 3 years ago |
Hubert Chathi | f9dce3dfed | 3 years ago |
Hubert Chathi | fd5da297d8 | 3 years ago |
Hubert Chathi | 1638d2f32e | 3 years ago |
Thibault Martin | 8a7a023d3c | 3 years ago |
Hubert Chathi | de1a468630 | 3 years ago |
Hubert Chathi | b5bdfffa53 | 3 years ago |
Travis Ralston | 5e80d36511 | 3 years ago |
Travis Ralston | becd2257c0 | 3 years ago |
Travis Ralston | 9c8a0e9ca3 | 3 years ago |
Andrew Morgan | 665c31e224 | 3 years ago |
Travis Ralston | 8f5c039273 | 3 years ago |
Travis Ralston | 8d73a17f5b | 3 years ago |
Travis Ralston | eb7337044d | 3 years ago |
Travis Ralston | d0d6b77053 | 3 years ago |
Richard van der Hoff | 726be04841 | 3 years ago |
Travis Ralston | a855ed338b | 3 years ago |
Travis Ralston | 5e211480bf | 3 years ago |
Travis Ralston | 208a0806dd | 3 years ago |
Travis Ralston | 5d2cb50c58 | 3 years ago |
Travis Ralston | 52cd88f070 | 3 years ago |
Travis Ralston | 8792da2ee0 | 3 years ago |
Devin Ragotzy | cfc55b243d | 3 years ago |
Travis Ralston | 45973a830f | 3 years ago |
Travis Ralston | 4fd262a237 | 3 years ago |
Travis Ralston | 06d23f04aa | 3 years ago |
Travis Ralston | 456353c8b4 | 3 years ago |
Travis Ralston | 18c336080f | 3 years ago |
Travis Ralston | 334fc56681 | 3 years ago |
Travis Ralston | a0345ea0bb | 3 years ago |
Travis Ralston | 30f37f1e66 | 3 years ago |
Patrick Cloke | cee03d7625 | 3 years ago |
Travis Ralston | 2603ea6339 | 3 years ago |
Travis Ralston | 228fcb8175 | 3 years ago |
Travis Ralston | 7e6ab07f96 | 3 years ago |
Travis Ralston | a2280c7815 | 3 years ago |
Travis Ralston | b518e4ade0 | 3 years ago |
Travis Ralston | b455fc73f1 | 3 years ago |
Travis Ralston | 62896cdea9 | 3 years ago |
Weblate | b0621f568b | 3 years ago |
Travis Ralston | aab72c3d14 | 3 years ago |
Travis Ralston | f0e0477a3e | 3 years ago |
Travis Ralston | 283e3acdde | 3 years ago |
Samu Voutilainen | 4b001c524c | 3 years ago |
Travis Ralston | 64ad52ddd0 | 3 years ago |
Travis Ralston | dfdb5bc1a9 | 3 years ago |
Aaron Raimist | d540273625 | 3 years ago |
Travis Ralston | 28acb483f2 | 3 years ago |
Aaron Raimist | d8d84b64d5 | 3 years ago |
Travis Ralston | 005d6b7802 | 3 years ago |
Weblate | 24d36bdacc | 3 years ago |
Travis Ralston | 8fc8a6daad | 3 years ago |
xiao chi | 464651e39a | 3 years ago |
Travis Ralston | af5580cda0 | 3 years ago |
dependabot[bot] | 41aa1d65ac | 3 years ago |
Travis Ralston | 4318c18682 | 3 years ago |
Travis Ralston | c9440665e8 | 3 years ago |
Travis Ralston | 95dbd51f6a | 3 years ago |
Travis Ralston | a064779ceb | 3 years ago |
Travis Ralston | 39e82409ab | 3 years ago |
Travis Ralston | fa71522c09 | 3 years ago |
Andrew Morgan | 97f8e1248b | 3 years ago |
Travis Ralston | 1399cdfd5c | 3 years ago |
Travis Ralston | f37e5787b9 | 3 years ago |
Weblate | f393c6ec4c | 3 years ago |
Andrew Morgan | 888658dbff | 3 years ago |
Andrew Morgan | e77c2e3e10 | 3 years ago |
Andrew Morgan | ecfd57c504 | 3 years ago |
Travis Ralston | b139312532 | 3 years ago |
Andrew Morgan | ee1f85ca8b | 3 years ago |
Andrew Morgan | a17023962c | 3 years ago |
Andrew Morgan | 6ffa13d480 | 3 years ago |
Andrew Morgan | 25605b65a3 | 3 years ago |
Travis Ralston | 5d275ab79e | 3 years ago |
Travis Ralston | 3cb3b52753 | 3 years ago |
Travis Ralston | 7da1ed51a3 | 3 years ago |
Travis Ralston | 551c22247d | 3 years ago |
wbamberg | 54a4f689a0 | 3 years ago |
Will | 88e81b9c82 | 3 years ago |
wbamberg | 1bfc3de6d6 | 3 years ago |
wbamberg | 94f6cd21e3 | 3 years ago |
wbamberg | f1711ff3e4 | 3 years ago |
Will | a974bdaf45 | 3 years ago |
wbamberg | d5f975edaf | 3 years ago |
Will | 25924a498c | 3 years ago |
wbamberg | e88a18ca5d | 3 years ago |
Will | 2371a7a804 | 3 years ago |
Will | 643cdd19c8 | 3 years ago |
wbamberg | 07c66616ac | 3 years ago |
wbamberg | 6fc1f52f2f | 3 years ago |
wbamberg | 942f865f64 | 3 years ago |
Will | a0316f6794 | 3 years ago |
Will | 3e03e7b17a | 3 years ago |
Will | 9a179038cc | 3 years ago |
Will | 72ff5b92cb | 3 years ago |
Will | 52f5e73a39 | 3 years ago |
Will | 1d629bae40 | 3 years ago |
Will | 5f45a897ef | 3 years ago |
Will | 06983e1eb1 | 3 years ago |
Will | 215b625d81 | 3 years ago |
Will | 873e8b30eb | 3 years ago |
Will | 27f8867aa0 | 3 years ago |
Will | c7cf90abfa | 3 years ago |
Will | 00c6a866e2 | 3 years ago |
wbamberg | a26c352d78 | 3 years ago |
Andrew Morgan | 3c66e149f3 | 3 years ago |
Andrew Morgan | 64231f079d | 3 years ago |
Andrew Morgan | b8dafe86f4 | 3 years ago |
Travis Ralston | fb091fed03 | 3 years ago |
Will Hunt | f9a5b34099 | 3 years ago |
Will Hunt | 16290a0fe5 | 3 years ago |
Will Hunt | 93dd264c30 | 3 years ago |
Will Hunt | c8e0ed6062 | 3 years ago |
Will Hunt | b8ab3d0c87 | 3 years ago |
Will Hunt | 538ac0940e | 3 years ago |
Will Hunt | 0c26298b93 | 3 years ago |
Christian Paul | 4ca319db09 | 3 years ago |
Patrick Cloke | 97737596e7 | 3 years ago |
Matthew Hodgson | c2d0d1efa0 | 3 years ago |
Will Hunt | e781b75847 | 3 years ago |
Will Hunt | bf9cc0a562 | 3 years ago |
Will Hunt | 03491c5cfd | 3 years ago |
Matthew Hodgson | 757218c082 | 3 years ago |
Matthew Hodgson | 413e346363 | 3 years ago |
Matthew Hodgson | acdf9851e9 | 3 years ago |
Matthew Hodgson | 2981baad3d | 3 years ago |
Matthew Hodgson | 7432d254c6 | 3 years ago |
Matthew Hodgson | 0d71150424 | 3 years ago |
Matthew Hodgson | 1e2ed52b7e | 3 years ago |
Matthew Hodgson | 37e04f72ae | 3 years ago |
Matthew Hodgson | f07e82e34b | 3 years ago |
Matthew Hodgson | 00912f9c1e | 3 years ago |
Will Hunt | cb7bbf3787 | 3 years ago |
Will Hunt | 2c817cb1c5 | 3 years ago |
Will Hunt | c9b7e9f22d | 3 years ago |
Will Hunt | 7a3b7b38a5 | 3 years ago |
Patrick Cloke | 12d08ca83d | 4 years ago |
Patrick Cloke | 6d007e83ca | 4 years ago |
Hubert Chathi | 609641636d | 4 years ago |
Alexey Rusakov | 8935503470 | 4 years ago |
Alexey Rusakov | d27ea07bcb | 4 years ago |
Alexey Rusakov | 67635b0dd7 | 4 years ago |
Alexey Rusakov | 037ebbf1ca | 4 years ago |
Alexey Rusakov | 9dd0854aee | 4 years ago |
Richard van der Hoff | e7041525bf | 4 years ago |
Andrew Morgan | a8f4ada8a8 | 4 years ago |
Andrew Morgan | 9ebfd98a7a | 4 years ago |
Andrew Morgan | 10267df76e | 4 years ago |
Andrew Morgan | 11996fb436 | 4 years ago |
Hubert Chathi | 0841f31ce4 | 4 years ago |
Andrew Morgan | a1a40c6346 | 4 years ago |
Andrew Morgan | 7f0b2d66a0 | 4 years ago |
Richard van der Hoff | 52dfaaabd4 | 4 years ago |
Richard van der Hoff | 065b0990e6 | 4 years ago |
Richard van der Hoff | 5e7ed2b9c4 | 4 years ago |
Richard van der Hoff | 9ca94235c6 | 4 years ago |
Richard van der Hoff | c0c51383e9 | 4 years ago |
Richard van der Hoff | 8a61ce9032 | 4 years ago |
Richard van der Hoff | 6c9d469d56 | 4 years ago |
Richard van der Hoff | 0bdbec238b | 4 years ago |
Richard van der Hoff | 2e6d7d1c54 | 4 years ago |
Richard van der Hoff | acdb6f1c3d | 4 years ago |
Richard van der Hoff | 7d757ce8fa | 4 years ago |
Richard van der Hoff | dcb18f03dc | 4 years ago |
Richard van der Hoff | 469b64c5cd | 4 years ago |
Richard van der Hoff | 62b9154fa7 | 4 years ago |
Richard van der Hoff | bc1466206d | 4 years ago |
Richard van der Hoff | 1cfe6bc0ae | 4 years ago |
Richard van der Hoff | a8a7acce1e | 4 years ago |
Richard van der Hoff | 49f7624d55 | 4 years ago |
Richard van der Hoff | d5166ebc1a | 4 years ago |
Andrew Morgan | 68d2d7cfdb | 4 years ago |
Richard van der Hoff | 7871da7565 | 4 years ago |
Richard van der Hoff | 1ba0c39b14 | 4 years ago |
Richard van der Hoff | 178cbe1c3a | 4 years ago |
Andrew Morgan | 8bfef19a39 | 4 years ago |
Andrew Morgan | ef840c1b53 | 4 years ago |
Andrew Morgan | 6556b95233 | 4 years ago |
Andrew Morgan | c915b6442b | 4 years ago |
Andrew Morgan | 09018be96c | 4 years ago |
Andrew Morgan | 53ad7e3f66 | 4 years ago |
Andrew Morgan | c575f88d13 | 4 years ago |
Andrew Morgan | c9f34e818e | 4 years ago |
HelaBasa | 885e203886 | 4 years ago |
Richard van der Hoff | a596efdf8b | 4 years ago |
Richard van der Hoff | 62cc76f28b | 4 years ago |
Richard van der Hoff | 9a4e821ddc | 4 years ago |
Richard van der Hoff | 2d4da148d8 | 4 years ago |
Richard van der Hoff | 434d686b2d | 4 years ago |
Richard van der Hoff | dce9c9f09a | 4 years ago |
HelaBasa | 9d01d166cb | 4 years ago |
Michael Telatynski | ba3e204a48 | 4 years ago |
Richard van der Hoff | 6badb3b6d8 | 4 years ago |
Ricardo | e32d9a9af3 | 4 years ago |
Andrew Morgan | 49a72862a9 | 4 years ago |
Andrew Morgan | 2acc0a697b | 4 years ago |
b068931cc450442b63f5b3d276ea4297 | 79d02c49ca | 4 years ago |
Andrew Morgan | e790ad2120 | 4 years ago |
Travis Ralston | fadee276d2 | 4 years ago |
zer0-x | ec98621bb1 | 4 years ago |
Kateřina Churanová | 86415178c7 | 4 years ago |
zer0-x | 146c7ba304 | 4 years ago |
Kateřina Churanová | f1e952ec93 | 4 years ago |
Andrew Morgan | 24f61c283c | 4 years ago |
Andrew Morgan | eda65847a3 | 4 years ago |
Andrew Morgan | 248a3da5ca | 4 years ago |
Andrew Morgan | 97109d4268 | 4 years ago |
Alexey Rusakov | b4269a54e8 | 4 years ago |
Andrew Morgan | 74f3b12a17 | 4 years ago |
Andrew Morgan | 04cd6b3d3e | 4 years ago |
Andrew Morgan | 337c87b949 | 4 years ago |
Andrew Morgan | 8400877574 | 4 years ago |
Andrew Morgan | d5a2a284c5 | 4 years ago |
Hubert Chathi | ddbcba454c | 4 years ago |
Hubert Chathi | 356d1fe3e3 | 4 years ago |
Andrew Morgan | 5c620de273 | 4 years ago |
Andrew Morgan | 6a0d07c799 | 4 years ago |
Will | ee87cf2b63 | 4 years ago |
Andrew Morgan | 51a7778217 | 4 years ago |
Andrew Morgan | e99649cb84 | 4 years ago |
Andrew Morgan | 336e5a2c7a | 4 years ago |
Andrew Morgan | 1f07f0dc9a | 4 years ago |
Andrew Morgan | 3735def108 | 4 years ago |
Will | 108b323e10 | 4 years ago |
Will | b79d489f91 | 4 years ago |
Will | 9f3df1950f | 4 years ago |
Will | 415199bd3d | 4 years ago |
Andrew Morgan | 42e01b8e91 | 4 years ago |
Travis Ralston | 315cf67f6b | 4 years ago |
wbamberg | 7fed40ad04 | 4 years ago |
Will | 68370677ef | 4 years ago |
Richard van der Hoff | ba08c9fe36 | 4 years ago |
Richard van der Hoff | 84346055e9 | 4 years ago |
Richard van der Hoff | 09d41c59b9 | 4 years ago |
Richard van der Hoff | 0c18f83636 | 4 years ago |
Richard van der Hoff | 277ff682d6 | 4 years ago |
Zachinquarantine | 42eda716fe | 4 years ago |
Hubert Chathi | de65f4e1fe | 4 years ago |
Zachinquarantine | 9c531867f9 | 4 years ago |
Will | ea9fced092 | 4 years ago |
Will | fd658f674f | 4 years ago |
Will | 183ecfda03 | 4 years ago |
Will | 86152613b1 | 4 years ago |
Will | 47f37d5ab5 | 4 years ago |
Alexey Rusakov | 246a97e2be | 4 years ago |
Alexey Rusakov | eca999382d | 4 years ago |
Will | 79036a34cc | 4 years ago |
Will | 965f573c9e | 4 years ago |
Will | 3864c11c33 | 4 years ago |
Will | 52745160f3 | 4 years ago |
Will | afa62628e8 | 4 years ago |
Will | f0a4f59bb0 | 4 years ago |
Will | 02a41edc76 | 4 years ago |
Will | 4e39200cfa | 4 years ago |
Will | 338434bfcd | 4 years ago |
Will | ab64bda76d | 4 years ago |
Will | 6c6bd57ebf | 4 years ago |
Will | 55aed1d296 | 4 years ago |
Will | 228c737f56 | 4 years ago |
Will | 74adbfc1ec | 4 years ago |
Will | 9d4803c8af | 4 years ago |
Will | 19836aa949 | 4 years ago |
Will | c924b3246f | 4 years ago |
Will | ebc6db233b | 4 years ago |
Kitsune Ral | 3988979f82 | 4 years ago |
Kitsune Ral | 43e6470aca | 4 years ago |
Kitsune Ral | a32d7f5027 | 4 years ago |
Hubert Chathi | d9edb3fdf3 | 4 years ago |
wbamberg | 636974948d | 4 years ago |
Michael Telatynski | 1d90cacf6e | 4 years ago |
Michael Telatynski | 85ccf93c6a | 4 years ago |
Michael Telatynski | 8be6540eaf | 4 years ago |
Will | 9fd35dad78 | 4 years ago |
Will | 985d681645 | 4 years ago |
Will | 9b2d9cf6b7 | 4 years ago |
wbamberg | 1dadff5701 | 4 years ago |
Michael Telatynski | c7063a4eec | 4 years ago |
Travis Ralston | 5800dcb654 | 4 years ago |
Slobodan Simić | 3bed1ada3d | 4 years ago |
Slobodan Simić | f5fd69ecfb | 4 years ago |
Matthew Hodgson | ff85e61be9 | 4 years ago |
Matthew Hodgson | a709671d03 | 4 years ago |
Matthew Hodgson | a0f89bd522 | 4 years ago |
Matthew Hodgson | b10856d49d | 4 years ago |
Matthew Hodgson | 91fe7a79b6 | 4 years ago |
Matthew Hodgson | 97103c44cd | 4 years ago |
Matthew Hodgson | 343e1f676b | 4 years ago |
Matthew Hodgson | f8fb32518d | 4 years ago |
Matthew Hodgson | b8e3a0b45d | 4 years ago |
Matthew Hodgson | a0d06c7bd7 | 4 years ago |
Matthew Hodgson | 302d5d87b4 | 4 years ago |
Matthew Hodgson | 2de3dc4f70 | 4 years ago |
Matthew Hodgson | 42c332bd88 | 4 years ago |
Matthew Hodgson | 803e70a8b3 | 4 years ago |
Matthew Hodgson | 037894a641 | 4 years ago |
Will | 9547ba1314 | 4 years ago |
Will | 0abbb1857f | 4 years ago |
Will | 55eae7b70b | 4 years ago |
Travis Ralston | 46d843e8fa | 4 years ago |
Travis Ralston | 124c8d43d3 | 4 years ago |
Travis Ralston | 22acbea0ed | 4 years ago |
Travis Ralston | 7b4e702a69 | 4 years ago |
Hubert Chathi | 2b32508964 | 4 years ago |
Hubert Chathi | 7678884376 | 4 years ago |
gkkulik | db563171b6 | 4 years ago |
Richard van der Hoff | 69897584e1 | 4 years ago |
Travis Ralston | 7aded5be4d | 4 years ago |
Andrew Morgan | ba7c0d7f8d | 4 years ago |
Andrew Morgan | 0a53c86397 | 4 years ago |
Hubert Chathi | f352de90c3 | 4 years ago |
Hubert Chathi | c56c6a2e2b | 4 years ago |
Travis Ralston | b07618cc3f | 4 years ago |
Travis Ralston | 8d6642aaa7 | 4 years ago |
Hubert Chathi | affa240543 | 4 years ago |
Travis Ralston | ba6a72f65f | 4 years ago |
Travis Ralston | 6ccc548912 | 4 years ago |
Travis Ralston | e659572183 | 4 years ago |
Travis Ralston | 0961c7b0f7 | 4 years ago |
Hubert Chathi | 4a779784ef | 4 years ago |
Travis Ralston | 734be5165b | 4 years ago |
Travis Ralston | 942e8b36e4 | 4 years ago |
Philipp Emanuel Weidmann | aab2d587f3 | 4 years ago |
Travis Ralston | 8d4d6a12e8 | 4 years ago |
Travis Ralston | b0a33e97b1 | 4 years ago |
Will Hunt | 5c00004317 | 4 years ago |
Will Hunt | 7d9304fdde | 4 years ago |
Emelie | b1d403083c | 4 years ago |
Andrew Morgan | 7dcff8f2e1 | 4 years ago |
Richard van der Hoff | 51aa5e2c40 | 4 years ago |
Michael Telatynski | 153c55788d | 4 years ago |
Travis Ralston | f3c625ee3a | 4 years ago |
Nicolas Werner | a0f4ae6b38 | 4 years ago |
Nicolas Werner | 0fd1654879 | 4 years ago |
Travis Ralston | bce1bf3210 | 4 years ago |
Hubert Chathi | 11d6e42ee1 | 4 years ago |
Hubert Chathi | f7a397dc90 | 4 years ago |
Travis Ralston | 11daaf6ea9 | 4 years ago |
Travis Ralston | 8cc3d44c2a | 4 years ago |
Travis Ralston | 09c569f1a7 | 4 years ago |
Hubert Chathi | 9db8cc98d9 | 4 years ago |
Andrew Morgan | 6c75b83b99 | 4 years ago |
Richard van der Hoff | 6cc3995ce8 | 4 years ago |
Richard van der Hoff | 45f260836d | 4 years ago |
Travis Ralston | 74746634af | 4 years ago |
Michael Telatynski | 8ac23599b2 | 4 years ago |
Hubert Chathi | 0b97ac59bf | 4 years ago |
Peter Gervai | 39af7f3249 | 4 years ago |
Richard van der Hoff | d4abe40677 | 4 years ago |
Richard van der Hoff | 1f1e3c9a0f | 4 years ago |
Michael Telatynski | f444273a42 | 4 years ago |
Michael Telatynski | 874e32d69d | 4 years ago |
Michael Telatynski | a391a4a05d | 4 years ago |
Travis Ralston | d079d7d2d3 | 4 years ago |
Travis Ralston | 1310c7c8bf | 4 years ago |
Michael Telatynski | 20645365f4 | 4 years ago |
Travis Ralston | 940bb49027 | 4 years ago |
Richard van der Hoff | fbad757ceb | 4 years ago |
Richard van der Hoff | e6a6941845 | 4 years ago |
Richard van der Hoff | 3b2825f21d | 4 years ago |
Richard van der Hoff | 4e3b0ed05f | 4 years ago |
Richard van der Hoff | b40f7da8d2 | 4 years ago |
Richard van der Hoff | ae71a6219a | 4 years ago |
Travis Ralston | 4dee8dbeab | 4 years ago |
Travis Ralston | 973ee1438c | 4 years ago |
Richard van der Hoff | 29b07c11ad | 4 years ago |
Richard van der Hoff | 06b5c8342f | 4 years ago |
Richard van der Hoff | 109c31c2c8 | 4 years ago |
Travis Ralston | c6441176b8 | 4 years ago |
Travis Ralston | 83fd17f30c | 4 years ago |
Weblate | 8300ec5659 | 4 years ago |
Richard van der Hoff | 839ea0e946 | 4 years ago |
Richard van der Hoff | a73dd9c371 | 4 years ago |
Richard van der Hoff | e323ade5f7 | 4 years ago |
Richard van der Hoff | 1aede33b35 | 4 years ago |
Michael Telatynski | a7eba773be | 4 years ago |
Michael Telatynski | 204732099b | 4 years ago |
Richard van der Hoff | d42da585e5 | 4 years ago |
Travis Ralston | 7ff9be4fee | 4 years ago |
Will | 42bb5127be | 4 years ago |
Travis Ralston | c4d01b90e9 | 4 years ago |
Auri B. P | 4a1d49ae4a | 4 years ago |
Auri Botines Puertas | 30448b988c | 4 years ago |
Hubert Chathi | 8284e78d92 | 4 years ago |
Hubert Chathi | 267eead50f | 4 years ago |
Nikolai Zahariev | a5e3652d26 | 4 years ago |
Travis Ralston | 5f8b7167a5 | 4 years ago |
Richard van der Hoff | 11bb604c5e | 4 years ago |
Richard van der Hoff | 2f557daac1 | 4 years ago |
Richard van der Hoff | e746aa3aad | 4 years ago |
Nikolai Zahariev | 3fed0dd17f | 4 years ago |
Richard van der Hoff | 15f34e5be9 | 4 years ago |
Richard van der Hoff | 5db56391f3 | 4 years ago |
Richard van der Hoff | c145d398f7 | 4 years ago |
Richard van der Hoff | 52853b57e1 | 4 years ago |
Richard van der Hoff | 4040254001 | 4 years ago |
Travis Ralston | 4ee990e26f | 4 years ago |
Travis Ralston | ee55d9d35b | 4 years ago |
Richard van der Hoff | 49ce93f3e2 | 4 years ago |
Richard van der Hoff | 0baf49abe8 | 4 years ago |
Richard van der Hoff | 6464e90fd6 | 4 years ago |
Richard van der Hoff | 96cd76c868 | 4 years ago |
Richard van der Hoff | 417501d8cc | 4 years ago |
Hubert Chathi | 7b4ea94f22 | 4 years ago |
Hubert Chathi | 38350002a6 | 4 years ago |
Hubert Chathi | 7b3c98cd98 | 4 years ago |
Hubert Chathi | a5ebedc131 | 4 years ago |
Travis Ralston | deaa82c653 | 4 years ago |
Travis Ralston | 651e73dfda | 4 years ago |
Weblate | e0a6024cd6 | 4 years ago |
Travis Ralston | a402da4edc | 4 years ago |
random | 39fbda7251 | 4 years ago |
random | 404158fe39 | 4 years ago |
Aaron Raimist | a82b657a0a | 4 years ago |
Travis Ralston | 48d4e95dd3 | 4 years ago |
Travis Ralston | 5ce774629b | 4 years ago |
Aaron Raimist | bc085fd75d | 4 years ago |
Aaron Raimist | 15805761be | 4 years ago |
Aaron Raimist | 8005467628 | 4 years ago |
Aaron Raimist | 4414d44f34 | 4 years ago |
Aaron Raimist | 954099efc6 | 4 years ago |
Aaron Raimist | 206b4dfb29 | 4 years ago |
Aaron Raimist | 445b0a3a01 | 4 years ago |
Matthew Hodgson | 62cfc8c472 | 4 years ago |
Travis Ralston | 411202f2bf | 4 years ago |
Andrew Morgan | 815dae6eae | 4 years ago |
Travis Ralston | d323738db5 | 4 years ago |
Travis Ralston | 9a1badee45 | 4 years ago |
Travis Ralston | 2887c715bb | 4 years ago |
Travis Ralston | 9ea7b2f5df | 4 years ago |
Hubert Chathi | cb44b6ea7b | 4 years ago |
Jan Christian Grünhage | 9e29f59bdb | 4 years ago |
Will | dbf74ea85c | 4 years ago |
Will | 1fe9cab30b | 4 years ago |
Travis Ralston | e865f59c65 | 4 years ago |
Will | 89d53fd688 | 4 years ago |
Will | 6c9b25a397 | 4 years ago |
Travis Ralston | 9e66d32225 | 4 years ago |
Travis Ralston | ea5c8ba649 | 4 years ago |
Will | deef4f5e7c | 4 years ago |
Travis Ralston | e20121cbab | 4 years ago |
Travis Ralston | 56e0ee700a | 4 years ago |
Andrew Morgan | a924f5b3d5 | 4 years ago |
Andrew Morgan | 525d1d33e0 | 4 years ago |
Travis Ralston | 82a4a028bd | 4 years ago |
Hubert Chathi | 48b0196ac6 | 4 years ago |
iinuwa | 02512f0f69 | 4 years ago |
Travis Ralston | 51b278e015 | 4 years ago |
Richard van der Hoff | 12da19f927 | 4 years ago |
Richard van der Hoff | 46440b0e75 | 4 years ago |
Andrew Morgan | 6f7bcb6052 | 4 years ago |
Andrew Morgan | 5097fad4e7 | 4 years ago |
Kitsune Ral | 11d2529a5e | 4 years ago |
Andrew Morgan | 6b99228386 | 4 years ago |
Andrew Morgan | fd8176b93d | 4 years ago |
Andrew Morgan | 9e5ac042ac | 4 years ago |
Andrew Morgan | e58e207bbf | 4 years ago |
Kitsune Ral | a2fa637396 | 4 years ago |
Kitsune Ral | 758c57b021 | 4 years ago |
Travis Ralston | 5e60ff8bfd | 4 years ago |
Travis Ralston | 5a7bda4bf8 | 4 years ago |
Travis Ralston | 2d047e312f | 4 years ago |
Kitsune Ral | 6f082bbe12 | 4 years ago |
Kitsune Ral | bbc8bfc1c0 | 4 years ago |
Kitsune Ral | 907bd2e2a2 | 4 years ago |
Kitsune Ral | 438e5a368f | 4 years ago |
Hubert Chathi | f831162563 | 4 years ago |
iinuwa | 07dbdab898 | 4 years ago |
iinuwa | 9be28c5ade | 4 years ago |
Travis Ralston | 2ccdcead9c | 4 years ago |
Travis Ralston | 9f06c0a2e2 | 4 years ago |
Travis Ralston | 561043663f | 4 years ago |
Travis Ralston | 81c7893a6e | 4 years ago |
Will Hunt | 4751785a8c | 4 years ago |
Will Hunt | 3a649839c2 | 4 years ago |
Will Hunt | 61a8866683 | 4 years ago |
Andrew Morgan | 340f888de3 | 4 years ago |
Andrew Morgan | 6e47e86f01 | 4 years ago |
Travis Ralston | b3116e4a3c | 4 years ago |
Travis Ralston | 89a3663372 | 4 years ago |
Travis Ralston | c25121974e | 4 years ago |
Travis Ralston | c9e8326783 | 4 years ago |
Travis Ralston | a085fabd42 | 4 years ago |
Andrew Morgan | fd9d57b8c4 | 4 years ago |
Andrew Morgan | 630f7c458c | 4 years ago |
Travis Ralston | 614e95289a | 4 years ago |
Weblate | 6ad347e3d6 | 4 years ago |
Andrew Morgan | 61fea58ce0 | 4 years ago |
Andrew Morgan | 703fa07028 | 4 years ago |
Travis Ralston | 70e69a110a | 4 years ago |
Travis Ralston | d8bc158a3b | 4 years ago |
Travis Ralston | 1f734cd4a9 | 4 years ago |
Andrew Morgan | 58cb299dde | 4 years ago |
Andrew Morgan | c9a7b442ff | 4 years ago |
Travis Ralston | 2877459553 | 4 years ago |
Richard van der Hoff | 998dec2980 | 4 years ago |
Andrew Morgan | e93a19f62d | 4 years ago |
Richard van der Hoff | 49e4e61e80 | 4 years ago |
Richard van der Hoff | b3f40fb553 | 4 years ago |
Richard van der Hoff | 1688f12d08 | 4 years ago |
Travis Ralston | c89e5bfe27 | 4 years ago |
Travis Ralston | 1bac9fb6e3 | 4 years ago |
Travis Ralston | 1c7a6a9c7f | 4 years ago |
Andrew Morgan | 5bfd65c59f | 4 years ago |
LinAGKar | d6b59621a3 | 4 years ago |
Andrew Morgan | ae8ec6603c | 4 years ago |
Travis Ralston | e304109289 | 4 years ago |
Travis Ralston | 4cb7e96b11 | 4 years ago |
Andrew Morgan | 965c47ba08 | 4 years ago |
Andrew Morgan | 651e73b2db | 4 years ago |
Andrew Morgan | f3fc5399fc | 4 years ago |
Andrew Morgan | aad6ff4a05 | 4 years ago |
Andrew Morgan | bc90f1ce47 | 4 years ago |
linsui | 1e0d497f45 | 4 years ago |
LinAGKar | 0e64c4de72 | 4 years ago |
Travis Ralston | 3943e63ae2 | 4 years ago |
Marcelo Filho | 2e8733c368 | 4 years ago |
Andrew Morgan | 105108428f | 4 years ago |
Andrew Morgan | d6d5858b67 | 4 years ago |
Andrew Morgan | 716db4e656 | 4 years ago |
Andrew Morgan | 74a341ab8d | 4 years ago |
Travis Ralston | 80214998f6 | 4 years ago |
Andrew Morgan | 39c21689ce | 4 years ago |
Marcelo Filho | a8328404ce | 4 years ago |
Travis Ralston | df74c7dbe3 | 4 years ago |
Travis Ralston | 6490fda6ee | 4 years ago |
Travis Ralston | 6b64281af7 | 4 years ago |
Travis Ralston | cd5e3d9f52 | 4 years ago |
Peter Vágner | 14da11eaa5 | 4 years ago |
Peter Vágner | aafec58871 | 4 years ago |
Travis Ralston | 3e3c2c704b | 4 years ago |
Bruno Windels | 93a614c272 | 4 years ago |
Dagfinn Ilmari Mannsåker | 700c63f9ea | 4 years ago |
reivilibre | 70e047e484 | 4 years ago |
q-b | c52c5e5f4a | 4 years ago |
Tuomas Hietala | dfae4c4325 | 4 years ago |
Tirifto | 8eb0f9414f | 4 years ago |
Bruno Windels | 0966341c27 | 4 years ago |
tusooa | f1c8fc2196 | 4 years ago |
Peter Vágner | a72a5ccda1 | 4 years ago |
LinAGKar | 0565766d1c | 4 years ago |
Tuomas Hietala | a23b8c1fc4 | 4 years ago |
Bruno Windels | 573ea497d9 | 4 years ago |
tusooa | 46549f3f9f | 4 years ago |
Dagfinn Ilmari Mannsåker | cd8f0c8991 | 4 years ago |
Tirifto | 8197761b29 | 4 years ago |
Priit Jõerüüt | 2c375ae080 | 4 years ago |
LinAGKar | 7920960d33 | 4 years ago |
Priit Jõerüüt | fdbaca662f | 4 years ago |
Richard van der Hoff | c00710d91a | 4 years ago |
Travis Ralston | 9080c5f87f | 4 years ago |
Travis Ralston | a4b5ec8fec | 4 years ago |
Travis Ralston | ddc0d78e0c | 4 years ago |
Travis Ralston | 0228cf8361 | 4 years ago |
Andrew Morgan | de038f5601 | 4 years ago |
Andrew Morgan | 38d67083eb | 4 years ago |
Andrew Morgan | c92752d1b8 | 4 years ago |
Andrew Morgan | d47cb1fec3 | 4 years ago |
Hubert Chathi | 94465e06c2 | 4 years ago |
Hubert Chathi | 7595a63fb2 | 4 years ago |
Travis Ralston | f0ba7f014b | 4 years ago |
Travis Ralston | 38431dca1c | 4 years ago |
Alexey Murz Korepov | 76280f215c | 4 years ago |
aWeinzierl | 7da3b37524 | 4 years ago |
Brendan Abolivier | c04bf46800 | 4 years ago |
Richard van der Hoff | 05f5373a4a | 4 years ago |
aWeinzierl | c5335a8922 | 4 years ago |
Alexey Murz Korepov | 589b9a3f77 | 4 years ago |
strix aluco | 5b9cbfb7bf | 4 years ago |
Will Hunt | c78ce90dfa | 4 years ago |
reivilibre | 5daf0fbb7b | 4 years ago |
reivilibre | 1e401c8ae3 | 4 years ago |
Will Hunt | 299492b173 | 4 years ago |
reivilibre | ae44ecdafc | 4 years ago |
reivilibre | 7e6bba3256 | 4 years ago |
Travis Ralston | fb48d1ab30 | 4 years ago |
strix aluco | 41fa1886db | 4 years ago |
Travis Ralston | d37f7a25b4 | 4 years ago |
Travis Ralston | 8eb1c53144 | 4 years ago |
Travis Ralston | d41ad7638e | 4 years ago |
Travis Ralston | 65c6d545b8 | 4 years ago |
Travis Ralston | 1be21b85b6 | 4 years ago |
Travis Ralston | 5c0f999503 | 4 years ago |
Travis Ralston | 0973e88c7c | 4 years ago |
Patrick Cloke | 4daecd0d94 | 4 years ago |
Patrick Cloke | 4353f346b6 | 4 years ago |
Patrick Cloke | e261faf70b | 4 years ago |
Patrick Cloke | 9a40d7bf47 | 4 years ago |
Travis Ralston | 012f0b1882 | 4 years ago |
Travis Ralston | 24d124df50 | 4 years ago |
Travis Ralston | a96a014512 | 4 years ago |
Travis Ralston | 5990d98525 | 4 years ago |
Kitsune Ral | b4b917c6c8 | 4 years ago |
Kitsune Ral | c3329fe644 | 4 years ago |
Kitsune Ral | eeb5ce222c | 4 years ago |
Kitsune Ral | c60368338c | 4 years ago |
Kitsune Ral | 7b574448db | 4 years ago |
Kitsune Ral | 294f30f3ab | 4 years ago |
Michael Albert | 78f3c3dac8 | 4 years ago |
Hubert Chathi | 53e2b999b9 | 4 years ago |
Kitsune Ral | bcf5585e55 | 4 years ago |
Kitsune Ral | 5a699f2650 | 4 years ago |
Kitsune Ral | 812df4c9c1 | 4 years ago |
Hubert Chathi | 33ed9fc2dd | 4 years ago |
Olivier Wilkinson (reivilibre) | 3dd5bc42a7 | 4 years ago |
Richard van der Hoff | 125614f3a4 | 4 years ago |
Richard van der Hoff | 1b74e96b7e | 4 years ago |
Richard van der Hoff | 6da06383e8 | 4 years ago |
Michael Albert | 250f0e47c1 | 4 years ago |
Michael Albert | adc867dc99 | 4 years ago |
Hubert Chathi | 793dae1ece | 4 years ago |
Hubert Chathi | 0f13ebe3ed | 4 years ago |
Travis Ralston | e207dfc0ea | 4 years ago |
Travis Ralston | adf9443df4 | 4 years ago |
Richard van der Hoff | 868ca45729 | 4 years ago |
Olivier Wilkinson (reivilibre) | 2e72da2343 | 4 years ago |
Olivier Wilkinson (reivilibre) | 90a37cdb30 | 4 years ago |
Aaron Raimist | f8ff2ad6a9 | 4 years ago |
Olivier Wilkinson (reivilibre) | fee59be2b3 | 4 years ago |
Hubert Chathi | a91c6446bc | 4 years ago |
Patrick Cloke | 782aed7383 | 4 years ago |
Hubert Chathi | b770cfee8b | 4 years ago |
Hubert Chathi | 3e3eafc6ce | 4 years ago |
Hubert Chathi | 72ad26ec92 | 4 years ago |
Hubert Chathi | 8e2ba5ad2a | 4 years ago |
Isaiah Inuwa | bbad4c453f | 4 years ago |
Hubert Chathi | c8e816d854 | 4 years ago |
Hubert Chathi | 83e4d8c413 | 4 years ago |
Hubert Chathi | 902444ceb5 | 4 years ago |
Travis Ralston | 465ed38416 | 4 years ago |
Jonas Platte | 763e5654cc | 4 years ago |
Travis Ralston | 11a808aefd | 4 years ago |
Jonas Platte | 049275c33b | 4 years ago |
Kitsune Ral | c76d53c11a | 4 years ago |
Hubert Chathi | b44ebaa32e | 4 years ago |
Hubert Chathi | 24427242f7 | 4 years ago |
Hubert Chathi | af6e1157d9 | 4 years ago |
Richard van der Hoff | 5cb4b086c7 | 4 years ago |
Hubert Chathi | efebba62de | 4 years ago |
Brendan Abolivier | f1e3118317 | 4 years ago |
Brendan Abolivier | 9b7a883b50 | 4 years ago |
Hubert Chathi | be01eebf8f | 4 years ago |
Travis Ralston | ffd739137e | 4 years ago |
Travis Ralston | 97191b9348 | 4 years ago |
Hubert Chathi | 6ca3996bef | 4 years ago |
Hubert Chathi | 1961a215e8 | 4 years ago |
Hubert Chathi | d9dc3dc180 | 4 years ago |
Hubert Chathi | 0fbb1b9bf9 | 4 years ago |
Hubert Chathi | 269e83c233 | 4 years ago |
Nicolas Werner | e3d12d6769 | 4 years ago |
Richard van der Hoff | ac982410b9 | 4 years ago |
Kitsune Ral | e310736adb | 4 years ago |
Kitsune Ral | 57f0c8346f | 4 years ago |
Hubert Chathi | d261084f5b | 4 years ago |
Kitsune Ral | d3b41941aa | 4 years ago |
Kitsune Ral | 8e7c0dfb93 | 4 years ago |
Richard van der Hoff | 4aa778cdee | 4 years ago |
Hubert Chathi | c741049760 | 4 years ago |
Travis Ralston | 34f2d482be | 4 years ago |
Kitsune Ral | 49ccfa09a8 | 4 years ago |
Richard van der Hoff | da740bfbca | 4 years ago |
Kitsune Ral | 97809c5eae | 4 years ago |
Richard van der Hoff | 1e049481fe | 4 years ago |
Richard van der Hoff | 7549b86192 | 4 years ago |
Richard van der Hoff | d9f9706fdb | 4 years ago |
Richard van der Hoff | 7c6636a520 | 4 years ago |
Richard van der Hoff | f632f4a20f | 4 years ago |
Kitsune Ral | ea02029f89 | 4 years ago |
Travis Ralston | 29f23a5eda | 4 years ago |
Hubert Chathi | f8e4bdfbaf | 4 years ago |
Travis Ralston | 9281d0ca13 | 4 years ago |
Travis Ralston | 7fc811d4bd | 4 years ago |
Hubert Chathi | cf37688b7c | 4 years ago |
Hubert Chathi | a36284810d | 4 years ago |
Travis Ralston | bcce6b9a7c | 4 years ago |
Travis Ralston | d9a1de1d30 | 4 years ago |
Travis Ralston | 8532cfd706 | 4 years ago |
Hubert Chathi | 40c50c80ea | 4 years ago |
Hubert Chathi | df695167e8 | 4 years ago |
Hubert Chathi | 07856ec7a2 | 4 years ago |
Travis Ralston | 185e3e4001 | 4 years ago |
Dominic Fischer | 9535540161 | 4 years ago |
Dominic Fischer | c02ca21a94 | 4 years ago |
Kitsune Ral | bda05a0d44 | 4 years ago |
Travis Ralston | 33309fb68e | 4 years ago |
Travis Ralston | 0f9ffdf01a | 4 years ago |
Travis Ralston | 33d738e665 | 4 years ago |
Travis Ralston | 1c1e351778 | 4 years ago |
Travis Ralston | ffea5d5e61 | 4 years ago |
Hubert Chathi | ec0b9badc7 | 4 years ago |
Hubert Chathi | 67edc3e229 | 4 years ago |
Travis Ralston | 3fc5540755 | 4 years ago |
Kitsune Ral | 3b5340539d | 4 years ago |
Kitsune Ral | 48af2e5b47 | 4 years ago |
Kitsune Ral | 040a91f42d | 4 years ago |
Kitsune Ral | f299f60e17 | 4 years ago |
Kitsune Ral | b789f3e10b | 4 years ago |
Kitsune Ral | 67a8176903 | 4 years ago |
Kitsune Ral | 6cfb94562e | 4 years ago |
Travis Ralston | 07d4606352 | 4 years ago |
Travis Ralston | 32133e6ec3 | 4 years ago |
Travis Ralston | 09986af8fc | 4 years ago |
Travis Ralston | 19a97c62e2 | 4 years ago |
Travis Ralston | e14cf35c80 | 4 years ago |
Travis Ralston | db72e7caea | 4 years ago |
Travis Ralston | c3289614da | 4 years ago |
Travis Ralston | 4b64d80437 | 4 years ago |
Travis Ralston | 65c6435093 | 4 years ago |
Travis Ralston | 47c531adff | 4 years ago |
Travis Ralston | 04a26dafd0 | 4 years ago |
Travis Ralston | a5cb9c655c | 4 years ago |
Travis Ralston | bea6b321a5 | 4 years ago |
Travis Ralston | d4c19a0e80 | 4 years ago |
Travis Ralston | 9bdafab2a4 | 4 years ago |
Travis Ralston | 25f4a30b18 | 4 years ago |
Travis Ralston | 9792921357 | 4 years ago |
Travis Ralston | 56ba0c7862 | 4 years ago |
Travis Ralston | 2cf68945d3 | 4 years ago |
Travis Ralston | 669377888e | 4 years ago |
Travis Ralston | e9998c5335 | 4 years ago |
Travis Ralston | 67d46fa881 | 4 years ago |
Kitsune Ral | c72d30513e | 4 years ago |
Hubert Chathi | a1177cbd61 | 4 years ago |
Travis Ralston | 06b0c1762a | 4 years ago |
Travis Ralston | e8548f3c3b | 4 years ago |
Travis Ralston | ac187904bb | 4 years ago |
Travis Ralston | 200212ffd7 | 4 years ago |
Travis Ralston | b876ac5893 | 4 years ago |
Travis Ralston | 730d164df7 | 4 years ago |
Travis Ralston | 36ed6e94a2 | 4 years ago |
Travis Ralston | 93f68866c5 | 4 years ago |
Travis Ralston | e9e9366804 | 4 years ago |
Travis Ralston | 5b0e94c6e0 | 4 years ago |
Travis Ralston | e422bad0ab | 4 years ago |
Travis Ralston | bdd8f03fef | 4 years ago |
Travis Ralston | b5ba9a008f | 4 years ago |
Tulir Asokan | 5270ed0c0a | 4 years ago |
Hubert Chathi | 6a8ba9b1d6 | 4 years ago |
Hubert Chathi | 5b38c04e19 | 4 years ago |
Hubert Chathi | 40ec1ae1a9 | 4 years ago |
Hubert Chathi | 64b1ea3323 | 4 years ago |
Hubert Chathi | 915e698c23 | 4 years ago |
Travis Ralston | e264124faa | 4 years ago |
Travis Ralston | 12ecf9f383 | 4 years ago |
Travis Ralston | ab62b6293c | 4 years ago |
Travis Ralston | 899db411a3 | 4 years ago |
Travis Ralston | 98416bf948 | 4 years ago |
Travis Ralston | 66ab480967 | 4 years ago |
Travis Ralston | 74c51b05a4 | 4 years ago |
Travis Ralston | a1324aa9dc | 4 years ago |
Travis Ralston | be35311559 | 4 years ago |
Travis Ralston | 0300a3cab4 | 4 years ago |
Travis Ralston | 2b6086d87c | 4 years ago |
Travis Ralston | b11cf560b5 | 4 years ago |
Travis Ralston | 1388742a52 | 4 years ago |
Travis Ralston | 8220de58bd | 4 years ago |
Travis Ralston | 04e8244dbc | 4 years ago |
Travis Ralston | 74b627ac0b | 4 years ago |
Travis Ralston | 3875d50de8 | 4 years ago |
Patrick Cloke | 07716711f1 | 4 years ago |
Kegsay | 86d4a6f786 | 4 years ago |
Kegsay | fc91946e5a | 4 years ago |
Kegan Dougal | 9765116c47 | 4 years ago |
Patrick Cloke | f5ebe33a9c | 4 years ago |
Travis Ralston | 10e4ad72ca | 4 years ago |
Travis Ralston | 05e83f2e7d | 4 years ago |
Travis Ralston | df41947369 | 4 years ago |
Travis Ralston | 0e771c7b07 | 4 years ago |
Travis Ralston | 7c0046ffc7 | 4 years ago |
Travis Ralston | d419e3b38a | 4 years ago |
Travis Ralston | 77d83b9ce5 | 4 years ago |
Travis Ralston | 249421fa62 | 4 years ago |
Travis Ralston | 6eecee7d3c | 4 years ago |
Hubert Chathi | 2e0ef11640 | 4 years ago |
Travis Ralston | c2d5516517 | 4 years ago |
Travis Ralston | 749be9ddf2 | 4 years ago |
Travis Ralston | f9af712e1b | 4 years ago |
Travis Ralston | ddeb695b97 | 4 years ago |
Nicolas Werner | a7e7496cd6 | 4 years ago |
Matthew Hodgson | b8f13ac35e | 4 years ago |
Dominic Fischer | c3582e5fc6 | 4 years ago |
Dominic Fischer | 28d460fb62 | 4 years ago |
Travis Ralston | 19cac03305 | 4 years ago |
Travis Ralston | a2a1694c35 | 4 years ago |
Travis Ralston | 54102b8d36 | 4 years ago |
Travis Ralston | a15fe3723d | 4 years ago |
Travis Ralston | b4beb05dde | 4 years ago |
Travis Ralston | bd26a41114 | 4 years ago |
Travis Ralston | d24f15a3a9 | 4 years ago |
Hubert Chathi | fae1165e1c | 4 years ago |
Hubert Chathi | bac9afa124 | 4 years ago |
Patrick Cloke | e5fa76c8ed | 4 years ago |
Patrick Cloke | 007c8b5799 | 4 years ago |
Patrick Cloke | 0b6301ac80 | 4 years ago |
Hubert Chathi | c196cbcf42 | 4 years ago |
Travis Ralston | 560eb6df71 | 4 years ago |
Patrick Cloke | 6757c60d35 | 4 years ago |
Hubert Chathi | bd95568c8c | 4 years ago |
Hubert Chathi | 1bae8ea633 | 4 years ago |
Travis Ralston | 7eafe5a1d9 | 4 years ago |
Hubert Chathi | 9ccfe61674 | 4 years ago |
Patrick Cloke | 03588cbf0d | 4 years ago |
Patrick Cloke | bbbd9c4c33 | 4 years ago |
Hubert Chathi | a6ae757e7a | 4 years ago |
Travis Ralston | d8e6e17bd3 | 4 years ago |
Patrick Cloke | 11587a5384 | 4 years ago |
Patrick Cloke | 7797c18727 | 4 years ago |
Travis Ralston | 05228bf40b | 4 years ago |
Travis Ralston | 9599c3bc99 | 4 years ago |
Travis Ralston | 42ae5c966a | 4 years ago |
Hubert Chathi | f97b394591 | 4 years ago |
Travis Ralston | f156938821 | 4 years ago |
Travis Ralston | 29d0d97b25 | 4 years ago |
Hubert Chathi | a8910fe323 | 4 years ago |
Travis Ralston | 3556b8457f | 4 years ago |
Travis Ralston | d69e5af7ab | 4 years ago |
Travis Ralston | 10293d6951 | 4 years ago |
Patrick Cloke | e85f6c31a3 | 4 years ago |
Hubert Chathi | 86d0d04ed1 | 4 years ago |
Patrick Cloke | 78f8d1322f | 4 years ago |
Kitsune Ral | ff59fc1905 | 4 years ago |
Kitsune Ral | 77783b8fc3 | 4 years ago |
Ben Parsons | c704da1449 | 4 years ago |
Ben Parsons | 9065d1aa14 | 4 years ago |
Richard van der Hoff | 6613cd89a6 | 4 years ago |
Hubert Chathi | a896729ac2 | 4 years ago |
Gnuxie | 6b8b31ce63 | 4 years ago |
Hubert Chathi | 0145191d43 | 4 years ago |
Hubert Chathi | 0b39308a13 | 4 years ago |
Hubert Chathi | fffed943bc | 4 years ago |
Hubert Chathi | 3d1c33ed1b | 4 years ago |
Hubert Chathi | 5f3ee44cfb | 4 years ago |
Hubert Chathi | 8ff1c26ef2 | 4 years ago |
Hubert Chathi | e0b4a3c912 | 4 years ago |
Hubert Chathi | 0d2924841b | 4 years ago |
Hubert Chathi | 6ede023b35 | 4 years ago |
Hubert Chathi | 9980b83dd4 | 4 years ago |
Travis Ralston | 4cd4e19bf8 | 4 years ago |
Travis Ralston | bc0c81f062 | 4 years ago |
Travis Ralston | b0e8fd648d | 4 years ago |
Damir Jelić | 3054ac572f | 4 years ago |
Damir Jelić | 6e33954256 | 4 years ago |
Hubert Chathi | 9dc6e00335 | 4 years ago |
Hubert Chathi | e89521d195 | 4 years ago |
Travis Ralston | 8b4cfc643f | 4 years ago |
Patrick Cloke | 1e330c9423 | 4 years ago |
Patrick Cloke | 0c582ea8c7 | 4 years ago |
Patrick Cloke | 958e1b4a2e | 4 years ago |
Travis Ralston | 8ba6d0157b | 4 years ago |
Travis Ralston | 411b3f432b | 4 years ago |
Travis Ralston | 0207242e23 | 4 years ago |
David Vo | b8efb5ac47 | 4 years ago |
David Vo | 0ae597626a | 4 years ago |
Kitsune Ral | 202bf8abb1 | 4 years ago |
Kitsune Ral | c441e74b27 | 4 years ago |
Travis Ralston | a3385126a7 | 4 years ago |
Travis Ralston | 16905a2f5b | 5 years ago |
Travis Ralston | 97b23da9f6 | 5 years ago |
Travis Ralston | b8f68cb874 | 5 years ago |
Rudi Floren | 2bc798dcfa | 5 years ago |
Rudi Floren | b5868a59d6 | 5 years ago |
Travis Ralston | 3c34d83082 | 5 years ago |
Hubert Chathi | 32aecc506f | 5 years ago |
Hubert Chathi | 9103a0a398 | 5 years ago |
Hubert Chathi | 91f51bb23e | 5 years ago |
Hubert Chathi | 4672a7083e | 5 years ago |
Patrick Cloke | f6879c897b | 5 years ago |
Travis Ralston | be1669dd5b | 5 years ago |
Travis Ralston | b908b8e777 | 5 years ago |
Lukas Lihotzki | af7cf84083 | 5 years ago |
Ben Parsons | 57f3c8494f | 5 years ago |
Ben Parsons | 7c037d2490 | 5 years ago |
Ben Parsons | 5ae8a8bcfd | 5 years ago |
Patrick Cloke | 4cfcda57fb | 5 years ago |
Hubert Chathi | 4a3f9ec63a | 5 years ago |
Hubert Chathi | 943d9386bb | 5 years ago |
Travis Ralston | 78a0843758 | 5 years ago |
aaronaxvig | 2f5d8a4a27 | 5 years ago |
aaronaxvig | 5da5d5eeb9 | 5 years ago |
Aaron Axvig | edd75703e2 | 5 years ago |
Patrick Cloke | 745f8c09df | 5 years ago |
Patrick Cloke | eb48863c40 | 5 years ago |
Travis Ralston | 2313f1e281 | 5 years ago |
Hubert Chathi | 4b21e44e5f | 5 years ago |
Hubert Chathi | 76dd16b854 | 5 years ago |
Hubert Chathi | f7ebda040e | 5 years ago |
Hubert Chathi | eb17e5d826 | 5 years ago |
Travis Ralston | b8b0e0d792 | 5 years ago |
Travis Ralston | e05aa78604 | 5 years ago |
Travis Ralston | f7ce75d36c | 5 years ago |
Travis Ralston | b6d97c5983 | 5 years ago |
Travis Ralston | 4f0ac741a2 | 5 years ago |
Patrick Cloke | 9944decacf | 5 years ago |
Patrick Cloke | fc03f7faa6 | 5 years ago |
Travis Ralston | ef1032ee32 | 5 years ago |
Hubert Chathi | 9e7bcaac9c | 5 years ago |
Travis Ralston | 522210bb5f | 5 years ago |
Aaron Axvig | 4d808762da | 5 years ago |
Hubert Chathi | 30586ed98c | 5 years ago |
Hubert Chathi | e67ba0cd05 | 5 years ago |
DeepBlueV7.X | 28dc6a0515 | 5 years ago |
Hubert Chathi | a0fcb7d9e1 | 5 years ago |
Hubert Chathi | 2b71234f3c | 5 years ago |
Richard van der Hoff | 7917d087f3 | 5 years ago |
Patrick Cloke | 2d2731efff | 5 years ago |
Patrick Cloke | 61b306f8a8 | 5 years ago |
Patrick Cloke | 1facf7ff12 | 5 years ago |
Patrick Cloke | 78e08c1987 | 5 years ago |
Patrick Cloke | 570398e045 | 5 years ago |
Patrick Cloke | 4d177753e1 | 5 years ago |
Patrick Cloke | f48bbd3278 | 5 years ago |
Patrick Cloke | c69a747bae | 5 years ago |
Travis Ralston | 79b2e5263d | 5 years ago |
DeepBlueV7.X | 2d85422a2f | 5 years ago |
Nicolas Werner | b760ec2d74 | 5 years ago |
Travis Ralston | 7666b9fea7 | 5 years ago |
Travis Ralston | 8e83256493 | 5 years ago |
Runster | e6c7eac023 | 5 years ago |
Travis Ralston | da795e5824 | 5 years ago |
DeepBlueV7.X | 6b2752c4c2 | 5 years ago |
DeepBlueV7.X | 438ff8fc1d | 5 years ago |
Patrick Cloke | 61715f6452 | 5 years ago |
Patrick Cloke | 68357a7d23 | 5 years ago |
Patrick Cloke | 6754d5ba5f | 5 years ago |
Patrick Cloke | c3420770ad | 5 years ago |
Patrick Cloke | 420180a69d | 5 years ago |
Richard van der Hoff | 4e123ca121 | 5 years ago |
Hubert Chathi | a7279d99f0 | 5 years ago |
Matthew Hodgson | 0ce8e5ae1d | 5 years ago |
Örjan Fors | e151ba96ac | 5 years ago |
Richard van der Hoff | 8b9ea10e11 | 5 years ago |
Richard van der Hoff | 98a6cd0f45 | 5 years ago |
Richard van der Hoff | 30d762cc72 | 5 years ago |
Richard van der Hoff | 645dbcc091 | 5 years ago |
Hubert Chathi | ea0abe9de9 | 5 years ago |
Hubert Chathi | c77d04c709 | 5 years ago |
Hubert Chathi | 405ac1e2b5 | 5 years ago |
Travis Ralston | f823118a69 | 5 years ago |
Richard van der Hoff | 786772f764 | 5 years ago |
Travis Ralston | 6d475ebd57 | 5 years ago |
Travis Ralston | 7a878bb6c3 | 5 years ago |
Travis Ralston | da047523e3 | 5 years ago |
Travis Ralston | c7942d1cec | 5 years ago |
Travis Ralston | 3ee9a7d654 | 5 years ago |
Richard van der Hoff | 95ff26679b | 5 years ago |
Richard van der Hoff | 6bd4b3c08a | 5 years ago |
Hubert Chathi | 41072fcaa9 | 5 years ago |
Sorunome | 5ae462d558 | 5 years ago |
Hubert Chathi | c79ed36fcb | 5 years ago |
Hubert Chathi | 78b8133142 | 5 years ago |
Nicolas Werner | 6911171e83 | 5 years ago |
Brendan Abolivier | 3c49ba9eb5 | 5 years ago |
Brendan Abolivier | 0d4e2e75c7 | 5 years ago |
Brendan Abolivier | 2e2f1c1174 | 5 years ago |
Hubert Chathi | 7f93084242 | 5 years ago |
Hubert Chathi | 21ddf8507a | 5 years ago |
Hubert Chathi | fcfd5d99a1 | 5 years ago |
Hubert Chathi | 0b4411eadb | 5 years ago |
Hubert Chathi | be9c37e959 | 5 years ago |
Hubert Chathi | a8c7fda187 | 5 years ago |
Nicolas Werner | b47de28da5 | 5 years ago |
Hubert Chathi | 379bb79b00 | 5 years ago |
Hubert Chathi | 4f83bd3e36 | 5 years ago |
Sorunome | 53435d400d | 5 years ago |
Matthew Hodgson | 6e3946f7bc | 5 years ago |
Isaiah Inuwa | 715d2d674b | 5 years ago |
Isaiah Inuwa | 8e888b916c | 5 years ago |
Isaiah Inuwa | 2563711ceb | 5 years ago |
Isaiah Inuwa | 72bc0e0f6c | 5 years ago |
Isaiah Inuwa | 692d039a2b | 5 years ago |
Sorunome | 776436a5f0 | 5 years ago |
Sorunome | f0411a3cc5 | 5 years ago |
Sorunome | 13964988f4 | 5 years ago |
Sorunome | 1ef7c17b93 | 5 years ago |
Sorunome | bee4e9e269 | 5 years ago |
Sorunome | 501d7ecfd5 | 5 years ago |
Hubert Chathi | 654a9574be | 5 years ago |
Hubert Chathi | c87802587a | 5 years ago |
Matthew Hodgson | 4808b60cdd | 5 years ago |
Aaron Raimist | 82a626a98a | 5 years ago |
Travis Ralston | 6c48e77878 | 5 years ago |
Travis Ralston | f59aa563dd | 5 years ago |
Travis Ralston | 224a103355 | 5 years ago |
Travis Ralston | 912b3cbc95 | 5 years ago |
iinuwa | 6005c16b60 | 5 years ago |
Hubert Chathi | a62c817745 | 5 years ago |
Hubert Chathi | 90bf2b3b46 | 5 years ago |
Hubert Chathi | 4cde800ea1 | 5 years ago |
Hubert Chathi | 59e337187b | 5 years ago |
Hubert Chathi | e658b17070 | 5 years ago |
Hubert Chathi | e2e83b130d | 5 years ago |
Travis Ralston | f11f77f33b | 5 years ago |
Carolin Beer | 3aba6e3eeb | 5 years ago |
Travis Ralston | c823bdbf70 | 5 years ago |
Travis Ralston | 47b94b62c4 | 5 years ago |
Travis Ralston | 21b50d749a | 5 years ago |
Travis Ralston | ccc7bcabbc | 5 years ago |
Travis Ralston | 7cfc4b09a6 | 5 years ago |
Travis Ralston | b556ef3605 | 5 years ago |
Travis Ralston | 4d0bd5b9e2 | 5 years ago |
Stuart Mumford | c2ffef051f | 5 years ago |
Hubert Chathi | 22f7eaae0c | 5 years ago |
Hubert Chathi | d7263861d8 | 5 years ago |
Travis Ralston | 1cf322bc2a | 5 years ago |
Hubert Chathi | 75a6a28c6c | 5 years ago |
Travis Ralston | e4deb4ca27 | 5 years ago |
J. Ryan Stinnett | 71faffc9ed | 5 years ago |
J. Ryan Stinnett | c549bf201b | 5 years ago |
Hubert Chathi | 17abe054f2 | 5 years ago |
Hubert Chathi | b7234c7fd3 | 5 years ago |
Isaiah Inuwa | ad383351c2 | 5 years ago |
Hubert Chathi | 5742c30a96 | 5 years ago |
Hubert Chathi | 5f5f99fcc1 | 5 years ago |
Travis Ralston | f37aa30c43 | 5 years ago |
Erik Johnston | f054ffe760 | 5 years ago |
Erik Johnston | 29745d04fb | 5 years ago |
Hubert Chathi | abbba4788c | 5 years ago |
Hubert Chathi | 33df2d1414 | 5 years ago |
Travis Ralston | 2a82a5c27c | 5 years ago |
Hubert Chathi | 82260689c9 | 5 years ago |
Hubert Chathi | 3b2f897c7e | 5 years ago |
Travis Ralston | c7b3d99853 | 5 years ago |
Hubert Chathi | 1590ae224c | 5 years ago |
Travis Ralston | f1ff31d2cb | 5 years ago |
Travis Ralston | f610235cd6 | 5 years ago |
Travis Ralston | e89d81c587 | 5 years ago |
Travis Ralston | d93d8fe9b5 | 5 years ago |
Travis Ralston | 605f3390c7 | 5 years ago |
Travis Ralston | 037894d6f7 | 5 years ago |
Hubert Chathi | fc793557f8 | 5 years ago |
Alexey Murz Korepov | daa610659b | 5 years ago |
Travis Ralston | dcbdb94693 | 5 years ago |
Hubert Chathi | e8ce135a41 | 5 years ago |
Hubert Chathi | 5cc5908dd5 | 5 years ago |
Travis Ralston | 11a7d799a3 | 5 years ago |
Travis Ralston | 96bc8354d5 | 5 years ago |
Travis Ralston | 5b6d6fe498 | 5 years ago |
Brendan Abolivier | 52cd69eb75 | 5 years ago |
Travis Ralston | 7351c0cd1e | 5 years ago |
Travis Ralston | 50647e646e | 5 years ago |
Travis Ralston | f361c756d2 | 5 years ago |
Travis Ralston | df202dd493 | 5 years ago |
Travis Ralston | 14d609e766 | 5 years ago |
Travis Ralston | 9f01850f7a | 5 years ago |
Travis Ralston | a1e5a96cf8 | 5 years ago |
Travis Ralston | 8e6e47ae7d | 5 years ago |
Travis Ralston | cca92ea4f5 | 5 years ago |
Travis Ralston | 3e035c9172 | 5 years ago |
Travis Ralston | fed0b955c8 | 5 years ago |
Travis Ralston | e59bb20dc3 | 5 years ago |
Travis Ralston | ef957b990d | 5 years ago |
Travis Ralston | f012da17a1 | 5 years ago |
Hubert Chathi | a514485bcb | 5 years ago |
Hubert Chathi | f4bad37c10 | 5 years ago |
Travis Ralston | a50e828509 | 5 years ago |
Travis Ralston | a85d72a1ee | 5 years ago |
Travis Ralston | 3d954f93b5 | 5 years ago |
Travis Ralston | 021c056efc | 5 years ago |
Travis Ralston | b662a33081 | 5 years ago |
Travis Ralston | 284b15495b | 5 years ago |
Travis Ralston | 1dfe2ade08 | 5 years ago |
Travis Ralston | e95eafb2ba | 5 years ago |
Tulir Asokan | 30106aaaac | 5 years ago |
Hubert Chathi | a51805cfe7 | 5 years ago |
Hubert Chathi | 3e42cf528b | 5 years ago |
Hubert Chathi | 7466955744 | 5 years ago |
Richard van der Hoff | ae163ab818 | 5 years ago |
Aaron Raimist | 14c32cc4bf | 5 years ago |
Aaron Raimist | 6270983b7f | 5 years ago |
Travis Ralston | f281ac69cd | 5 years ago |
Travis Ralston | ce286dac02 | 5 years ago |
Travis Ralston | 2bca44a2e5 | 5 years ago |
Hubert Chathi | a6977f19c5 | 5 years ago |
Hubert Chathi | 4fadace9c8 | 5 years ago |
Hubert Chathi | 86eccc3bc8 | 5 years ago |
Travis Ralston | f5f12a29e0 | 5 years ago |
Hubert Chathi | b27f6985b2 | 5 years ago |
Hubert Chathi | 9dfca61ae7 | 5 years ago |
Hubert Chathi | 788e98711e | 5 years ago |
Hubert Chathi | 1d165eec29 | 5 years ago |
Hubert Chathi | 06ee66d6b0 | 5 years ago |
Brendan Abolivier | 4517506d57 | 5 years ago |
Brendan Abolivier | 6bd2876688 | 5 years ago |
Brendan Abolivier | ba8880546d | 5 years ago |
Kitsune Ral | 644bb3e4d4 | 5 years ago |
Travis Ralston | 7236f1c741 | 5 years ago |
Hubert Chathi | 5799c433fe | 5 years ago |
Hubert Chathi | 576177b579 | 5 years ago |
Hubert Chathi | 1f1d22f667 | 5 years ago |
Hubert Chathi | ab3ed738e4 | 5 years ago |
Hubert Chathi | 7469198d8b | 5 years ago |
Travis Ralston | 156fbfb4c7 | 5 years ago |
Andrew Morgan | 6274a66ae5 | 5 years ago |
Travis Ralston | f608c48f8a | 5 years ago |
Kitsune Ral | 008185dfcb | 5 years ago |
Matthew Hodgson | eddce00390 | 5 years ago |
Travis Ralston | 3d60e04c6a | 5 years ago |
Hubert Chathi | 54e73e4729 | 5 years ago |
Kitsune Ral | f2850c7f6a | 5 years ago |
Travis Ralston | 500db6fa2c | 5 years ago |
Travis Ralston | b59998fd2b | 5 years ago |
Travis Ralston | 2e84465c13 | 5 years ago |
Travis Ralston | 48b8a95df6 | 5 years ago |
Kitsune Ral | 6b37bb1dd9 | 5 years ago |
Kitsune Ral | 79f16d40a9 | 5 years ago |
Andrew Morgan | 46e7137252 | 5 years ago |
Andrew Morgan | ec7e795112 | 5 years ago |
Andrew Morgan | 0332d531e9 | 5 years ago |
Andrew Morgan | 1a51a24768 | 5 years ago |
Andrew Morgan | 219ebff6d3 | 5 years ago |
Hubert Chathi | e19fca7d54 | 5 years ago |
Travis Ralston | 1a8fbfedc9 | 5 years ago |
Travis Ralston | 6d60b0458a | 5 years ago |
Andrew Morgan | 9311e89941 | 5 years ago |
Travis Ralston | 5cb7599196 | 5 years ago |
Travis Ralston | 8d865ca53a | 5 years ago |
Travis Ralston | eebcaaef02 | 5 years ago |
Hubert Chathi | 332b5605c1 | 5 years ago |
Brendan Abolivier | 6b0a8505ec | 5 years ago |
Andrew Morgan | 40420d9633 | 5 years ago |
Hubert Chathi | 10b6fd6c8e | 5 years ago |
Andrew Morgan | bd64ffc442 | 5 years ago |
Richard van der Hoff | 5d6113db1e | 5 years ago |
Andrew Morgan | 87d641c7c1 | 5 years ago |
Andrew Morgan | e50bb3df25 | 5 years ago |
Andrew Morgan | 53519f98d0 | 5 years ago |
Andrew Morgan | 169174e00b | 5 years ago |
Andrew Morgan | 1e69a7f3f2 | 5 years ago |
Andrew Morgan | 3eda9f7b28 | 5 years ago |
Andrew Morgan | 0b67f34578 | 5 years ago |
Andrew Morgan | c57250b393 | 5 years ago |
Andrew Morgan | 2a55310754 | 5 years ago |
Andrew Morgan | af2467606e | 5 years ago |
Andrew Morgan | 4bc005ac84 | 5 years ago |
Andrew Morgan | f06ba491fe | 5 years ago |
Travis Ralston | 2c88f02daa | 5 years ago |
Andrew Morgan | f36ed9a271 | 5 years ago |
Andrew Morgan | 7b656e9013 | 5 years ago |
Andrew Morgan | 196f27efb2 | 5 years ago |
Andrew Morgan | 1fc1e3c6ce | 5 years ago |
Andrew Morgan | 5b259bfb52 | 5 years ago |
Andrew Morgan | cb7c072edb | 5 years ago |
Andrew Morgan | 5193c319e7 | 5 years ago |
Andrew Morgan | f5b10c689f | 5 years ago |
Andrew Morgan | 7096092da9 | 5 years ago |
Andrew Morgan | fdea3e34a8 | 5 years ago |
Travis Ralston | c00fe02fd1 | 5 years ago |
Travis Ralston | 7a391bf938 | 5 years ago |
Travis Ralston | d813b8e12c | 5 years ago |
Hubert Chathi | 8123c4ef0f | 5 years ago |
Travis Ralston | b3e2326d8b | 5 years ago |
Travis Ralston | 6cfd761204 | 5 years ago |
Hubert Chathi | cf953c47fd | 5 years ago |
Hubert Chathi | 60f0ad5b24 | 5 years ago |
Hubert Chathi | 7644085274 | 5 years ago |
Travis Ralston | 642be6c677 | 5 years ago |
Travis Ralston | 30a9de7e02 | 5 years ago |
Travis Ralston | a24bcc2c0a | 5 years ago |
Travis Ralston | f7e00b19e9 | 5 years ago |
Travis Ralston | 54fb5eb5cf | 5 years ago |
Travis Ralston | 6baeb6c218 | 5 years ago |
Travis Ralston | 738fa6833e | 5 years ago |
Travis Ralston | 1881a255c2 | 5 years ago |
Hubert Chathi | 0007498b4c | 5 years ago |
Travis Ralston | 6488c79cc3 | 5 years ago |
Brendan Abolivier | 48e8c55138 | 5 years ago |
Brendan Abolivier | 620e5dd74d | 5 years ago |
Brendan Abolivier | cb2b71c0be | 5 years ago |
Brendan Abolivier | fc26230007 | 5 years ago |
Charlie Varley | 4d835c1753 | 5 years ago |
Travis Ralston | 185c564a13 | 5 years ago |
Travis Ralston | 358c49ff6e | 5 years ago |
Travis Ralston | 2d784d93ef | 5 years ago |
Travis Ralston | 6ec7d4cd89 | 5 years ago |
Travis Ralston | 958cffd330 | 5 years ago |
Travis Ralston | 675cabc33d | 5 years ago |
Travis Ralston | a7c3c295b8 | 5 years ago |
Travis Ralston | b8971f46ab | 5 years ago |
Stuart Mumford | 9574f3c8d0 | 5 years ago |
Travis Ralston | 5a434ea7ac | 5 years ago |
Travis Ralston | 001c51a740 | 5 years ago |
Travis Ralston | caf46db6e7 | 5 years ago |
Travis Ralston | 52e6868f50 | 5 years ago |
Travis Ralston | afd5018494 | 5 years ago |
Travis Ralston | b7e84cf4ce | 5 years ago |
Travis Ralston | 8f48b4e717 | 5 years ago |
Travis Ralston | 2b8c8ad512 | 5 years ago |
Ben Parsons | d346099cf7 | 5 years ago |
Brendan Abolivier | 520c76a1cb | 5 years ago |
Brendan Abolivier | 997360995c | 5 years ago |
Brendan Abolivier | bddadfeb18 | 5 years ago |
Brendan Abolivier | 552f71a9f9 | 5 years ago |
Brendan Abolivier | 524ec52f73 | 5 years ago |
Brendan Abolivier | aad6f7138c | 5 years ago |
Tulir Asokan | b2ce6f87bc | 5 years ago |
Tulir Asokan | 7ba4564ac3 | 5 years ago |
Matthew Hodgson | 1f2acbcf29 | 5 years ago |
Matthew Hodgson | a805d2b779 | 5 years ago |
Matthew Hodgson | 6d71a41e22 | 5 years ago |
Tulir Asokan | e6f85cacff | 5 years ago |
Travis Ralston | c9fcf9021c | 5 years ago |
Travis Ralston | 5acac5a44e | 5 years ago |
Travis Ralston | b36fe24f1b | 5 years ago |
Brendan Abolivier | 60354f8cf9 | 5 years ago |
Brendan Abolivier | d1efd488b7 | 5 years ago |
Richard van der Hoff | 62cc11eee6 | 5 years ago |
Travis Ralston | 9f41ae50b1 | 5 years ago |
Travis Ralston | f8780e2395 | 5 years ago |
Travis Ralston | 1a6eb9a413 | 5 years ago |
Travis Ralston | 6d5e90b1d6 | 5 years ago |
Travis Ralston | 16bb3bd8b5 | 5 years ago |
Travis Ralston | 4e43024039 | 5 years ago |
Travis Ralston | 1d6501b6ec | 5 years ago |
Tulir Asokan | c909a7c423 | 5 years ago |
Travis Ralston | 91f862d9e8 | 5 years ago |
Travis Ralston | fad9974383 | 5 years ago |
Travis Ralston | aa98137514 | 5 years ago |
Travis Ralston | 0408373cf9 | 5 years ago |
Travis Ralston | 4d0ea64121 | 5 years ago |
Travis Ralston | e40d9e296d | 5 years ago |
Travis Ralston | ef5d3b9f30 | 5 years ago |
Travis Ralston | 03641d9e48 | 5 years ago |
Travis Ralston | ca4d9d8636 | 5 years ago |
Travis Ralston | b0acaeddfa | 5 years ago |
Travis Ralston | a47c5aeb42 | 5 years ago |
Tulir Asokan | 79a5663ec3 | 5 years ago |
Tulir Asokan | 238b78bbaf | 5 years ago |
Tulir Asokan | cd75d0f220 | 5 years ago |
Travis Ralston | 5b53b3d0b8 | 5 years ago |
Tulir Asokan | 984e0af7b2 | 5 years ago |
Travis Ralston | b8a3f970ee | 5 years ago |
Travis Ralston | b5529ff6a3 | 5 years ago |
Travis Ralston | de3802cd5c | 5 years ago |
Hubert Chathi | 03ae5614b0 | 5 years ago |
Hubert Chathi | e1b0042e7b | 5 years ago |
Hubert Chathi | 9aade7291a | 5 years ago |
Hubert Chathi | cafe49d36d | 5 years ago |
Travis Ralston | 356350de91 | 5 years ago |
Travis Ralston | 808eda404a | 5 years ago |
Damir Jelić | 35eb1993d9 | 5 years ago |
Travis Ralston | 7a36016cbb | 5 years ago |
Damir Jelić | a96a2f3fce | 5 years ago |
Travis Ralston | 0265817c56 | 5 years ago |
Hubert Chathi | 4e2fe124d2 | 5 years ago |
Kitsune Ral | 31c132ec82 | 5 years ago |
Hubert Chathi | 0e6286f5d0 | 5 years ago |
Kitsune Ral | 65cd10249c | 5 years ago |
Travis Ralston | 4ad9bf7059 | 5 years ago |
Tulir Asokan | ec38013daa | 5 years ago |
Hubert Chathi | fb724bc625 | 5 years ago |
Hubert Chathi | 4f655247b0 | 5 years ago |
Travis Ralston | b0f873785d | 5 years ago |
Travis Ralston | b6f0e8e8ed | 5 years ago |
Travis Ralston | 8b85fda52c | 5 years ago |
David Baker | 4ea8f645d6 | 5 years ago |
Travis Ralston | 8ca50eaf9f | 5 years ago |
David Baker | 8bd9d7caeb | 5 years ago |
David Baker | 69315417b5 | 5 years ago |
David Baker | 4073d940da | 5 years ago |
David Baker | 1f8cfd5729 | 5 years ago |
Travis Ralston | 53a2ffb12a | 5 years ago |
Travis Ralston | 788796e1c6 | 5 years ago |
David Baker | 9b2ca3cdfe | 5 years ago |
Travis Ralston | 9e073e9647 | 5 years ago |
Andrew Morgan | 997c5466a8 | 5 years ago |
David Baker | 6d0067320c | 5 years ago |
David Baker | 12377fbf50 | 5 years ago |
David Baker | e4bdc283fd | 5 years ago |
Olivier Wilkinson (reivilibre) | 76f9196ff3 | 5 years ago |
Travis Ralston | 865d3da0f8 | 5 years ago |
Travis Ralston | 22c9692684 | 5 years ago |
Travis Ralston | 475c64de8c | 5 years ago |
Andrew Morgan | 92c6f4c38e | 5 years ago |
Andrew Morgan | 4059661c29 | 5 years ago |
Olivier Wilkinson (reivilibre) | 4219e272ec | 5 years ago |
Olivier Wilkinson (reivilibre) | 7e85b9d56a | 5 years ago |
Olivier Wilkinson (reivilibre) | 97f856d706 | 5 years ago |
David Baker | b9b984ae60 | 5 years ago |
David Baker | 229cb67b01 | 5 years ago |
Andrew Morgan | 7758e0701c | 5 years ago |
David Baker | 2c8d112089 | 5 years ago |
Andrew Morgan | 2e2a74a235 | 5 years ago |
Andrew Morgan | 2547cc443c | 5 years ago |
Andrew Morgan | 01fc54faae | 5 years ago |
Andrew Morgan | 5b1ea4ffcb | 5 years ago |
Andrew Morgan | cb1e3b8373 | 5 years ago |
Andrew Morgan | f313b49c26 | 5 years ago |
Andrew Morgan | be77b5823c | 5 years ago |
Andrew Morgan | 6ed0ae36ba | 5 years ago |
Andrew Morgan | ed4d805d2f | 5 years ago |
David Baker | 6330fff5a4 | 5 years ago |
Travis Ralston | 87590cd778 | 5 years ago |
Andrew Morgan | 783fd78a6f | 5 years ago |
Richard van der Hoff | 353b6cd198 | 5 years ago |
Hubert Chathi | 7ed5367516 | 5 years ago |
Olivier Wilkinson (reivilibre) | 60cbc4567b | 5 years ago |
Travis Ralston | a171d5f6fd | 5 years ago |
Travis Ralston | 3087c76452 | 5 years ago |
Olivier Wilkinson (reivilibre) | 493bb062af | 5 years ago |
Matthew Hodgson | 1df4ece112 | 5 years ago |
Dominic Fischer | a63fab20ee | 5 years ago |
Travis Ralston | a71757f1ee | 5 years ago |
Luca Becker | 25e3602bbe | 5 years ago |
Andrew Morgan | 3edf5e3c16 | 5 years ago |
Luca Becker | 42dbeee7d3 | 5 years ago |
Luca Becker | ec37fe4427 | 5 years ago |
Andrew Morgan | 96e06b6f5f | 5 years ago |
Andrew Morgan | 3877724774 | 5 years ago |
Andrew Morgan | c401a4d47b | 5 years ago |
Andrew Morgan | acf8d34474 | 5 years ago |
Andrew Morgan | 3789d828fd | 5 years ago |
Olivier Wilkinson (reivilibre) | 36e43ee326 | 5 years ago |
Hubert Chathi | 80adbaff4c | 5 years ago |
Hubert Chathi | 825757ffd8 | 5 years ago |
Hubert Chathi | bd9efcdf53 | 5 years ago |
Hubert Chathi | d47e13c6d9 | 5 years ago |
Hubert Chathi | 395d40314b | 5 years ago |
Andrew Morgan | 136eea8578 | 5 years ago |
Andrew Morgan | 28596a6c74 | 5 years ago |
Andrew Morgan | af60889eee | 5 years ago |
Andrew Morgan | f989263872 | 5 years ago |
Richard van der Hoff | 0c7c48bd12 | 5 years ago |
Andrew Morgan | 33d22c3320 | 5 years ago |
Andrew Morgan | 9913f5bc29 | 5 years ago |
Andrew Morgan | 57de107ea9 | 5 years ago |
Travis Ralston | d4ce3a0181 | 5 years ago |
Travis Ralston | cfc502a2f1 | 5 years ago |
Travis Ralston | acde333acc | 5 years ago |
Travis Ralston | 26c2ce8a92 | 5 years ago |
Travis Ralston | 0b49112399 | 5 years ago |
Travis Ralston | 40e6f82cbd | 5 years ago |
Travis Ralston | 0631595484 | 5 years ago |
Richard van der Hoff | f1f293678b | 5 years ago |
Travis Ralston | 62f7a4f82c | 5 years ago |
Olivier Wilkinson (reivilibre) | 4c22eb86b5 | 5 years ago |
Andrew Morgan | c8527b7af8 | 5 years ago |
Andrew Morgan | 4d1f2ea4f4 | 5 years ago |
Andrew Morgan | 6660768d85 | 5 years ago |
Andrew Morgan | 027c2d7260 | 5 years ago |
Andrew Morgan | a17c74f592 | 5 years ago |
Andrew Morgan | 5580a2a1a9 | 5 years ago |
Andrew Morgan | ffbfde8a09 | 5 years ago |
Andrew Morgan | 87a54e8d8d | 5 years ago |
Andrew Morgan | 6119b9a50d | 5 years ago |
Andrew Morgan | 20c72a3649 | 5 years ago |
Andrew Morgan | 0ac70b268a | 5 years ago |
Andrew Morgan | da876bb340 | 5 years ago |
Andrew Morgan | c6dd5951a1 | 5 years ago |
Travis Ralston | 2a2dddab94 | 5 years ago |
Andrew Morgan | 8f3e588708 | 5 years ago |
Travis Ralston | bf9f2cd1b6 | 5 years ago |
Luca Becker | f4d6b6c261 | 5 years ago |
Luca Becker | c7a23557d4 | 5 years ago |
Andrew Morgan | 3b8c57e06c | 5 years ago |
Andrew Morgan | 3031df79cc | 5 years ago |
Andrew Morgan | 9fd6bd3184 | 5 years ago |
Andrew Morgan | b26a9ed1fd | 5 years ago |
Andrew Morgan | 577021f12b | 5 years ago |
Luca Becker | d43111cdd2 | 5 years ago |
Richard van der Hoff | 9e264fedc9 | 5 years ago |
Andrew Morgan | 887cd5e7d0 | 5 years ago |
Andrew Morgan | 0444c8016b | 5 years ago |
Richard van der Hoff | 4503327450 | 5 years ago |
Luca Becker | 094005dca1 | 5 years ago |
Luca Becker | 8aece4f644 | 5 years ago |
Alexander "Ace" Olofsson | 99bd46c9e7 | 5 years ago |
Richard van der Hoff | d324cac847 | 5 years ago |
Richard van der Hoff | b49a950245 | 5 years ago |
Luca Becker | 15994c61a5 | 5 years ago |
Sorunome | 9ebcff5758 | 5 years ago |
Andrew Morgan | 36cb8ed894 | 5 years ago |
Sorunome | 1f786ae6dc | 5 years ago |
David Baker | d9269b084f | 5 years ago |
David Baker | a1de6ff634 | 5 years ago |
Richard van der Hoff | cd5549d483 | 5 years ago |
Richard van der Hoff | b09d48a9f7 | 5 years ago |
Richard van der Hoff | 78d46b2890 | 5 years ago |
David Baker | 25a47afa32 | 5 years ago |
David Baker | 6e061b1baf | 5 years ago |
David Baker | f474b31f5f | 5 years ago |
Andrew Morgan | 3514437d24 | 5 years ago |
David Baker | 9bb6ad80d1 | 5 years ago |
Travis Ralston | 7b0f5ea77b | 5 years ago |
Jimmy Cuadra | a3d2d14dae | 5 years ago |
Andrew Morgan | 52643a92c6 | 5 years ago |
Jimmy Cuadra | 5df86dabe0 | 5 years ago |
Hubert Chathi | ee04b778cf | 5 years ago |
Alexey Andreyev | 9ed19a37ad | 5 years ago |
Andrew Morgan | ed67e26037 | 5 years ago |
Andrew Morgan | 1963a24832 | 5 years ago |
Andrew Morgan | dd8a6549c9 | 5 years ago |
David Baker | 701d340da1 | 5 years ago |
David Baker | bf8a1e5d5f | 5 years ago |
Andrew Morgan | 3702669424 | 5 years ago |
David Baker | 30dcc28f9b | 5 years ago |
Andrew Morgan | f4a1e02884 | 5 years ago |
Hubert Chathi | 4d31ddc8c9 | 5 years ago |
Travis Ralston | db5ce0c69e | 5 years ago |
J. Ryan Stinnett | 9208c5cd13 | 5 years ago |
J. Ryan Stinnett | 4c65660b96 | 5 years ago |
reivilibre | 8033ab1c86 | 5 years ago |
Andrew Morgan | 53bd384f2e | 5 years ago |
Hubert Chathi | 3aaf181db2 | 5 years ago |
David Baker | 1a669348d8 | 5 years ago |
David Baker | d15c9df115 | 5 years ago |
David Baker | e28f7aad72 | 5 years ago |
David Baker | 4c72c37b80 | 5 years ago |
David Baker | 10858bf83b | 5 years ago |
David Baker | 79dbad2914 | 5 years ago |
David Baker | ac6b9bdb7c | 5 years ago |
David Baker | 7f65364804 | 5 years ago |
David Baker | 03e6ab0103 | 5 years ago |
David Baker | d00dfb7822 | 5 years ago |
David Baker | f02e4c2e9c | 5 years ago |
David Baker | 5374030cc0 | 5 years ago |
David Baker | 2d11217d4e | 5 years ago |
David Baker | 8af35be13f | 5 years ago |
Andrew Morgan | 922a20ba26 | 5 years ago |
Andrew Morgan | 6f81d3774b | 5 years ago |
David Baker | fe14d3c9f0 | 5 years ago |
David Baker | 786d5bc281 | 5 years ago |
David Baker | 45d630951c | 5 years ago |
David Baker | 83bb3861ba | 5 years ago |
Travis Ralston | 8897ea4bb1 | 5 years ago |
Travis Ralston | a2a7b7ff13 | 5 years ago |
Travis Ralston | bfd8e52c23 | 5 years ago |
Travis Ralston | d8283b9cdf | 5 years ago |
Travis Ralston | e80753e56c | 5 years ago |
David Baker | 4be283ccb3 | 5 years ago |
David Baker | f95197b422 | 5 years ago |
David Baker | 10a6a59a12 | 5 years ago |
David Baker | b5326de1c4 | 5 years ago |
Sorunome | 540aab82a1 | 5 years ago |
Sorunome | 6260871a21 | 5 years ago |
David Baker | 21b9eaf8de | 5 years ago |
David Baker | 2694bb1090 | 5 years ago |
David Baker | 58cf083a6a | 5 years ago |
David Baker | 6273868323 | 5 years ago |
David Baker | 4edf826c93 | 5 years ago |
David Baker | ba7047ce77 | 5 years ago |
David Baker | 1d75828c71 | 5 years ago |
David Baker | af691b5a8a | 5 years ago |
David Baker | 57094276ce | 5 years ago |
Andrew Morgan | 7549c5dd76 | 5 years ago |
Andrew Morgan | 0fd4fe2542 | 5 years ago |
Andrew Morgan | dfb37fcce1 | 5 years ago |
Andrew Morgan | df88b13ce1 | 5 years ago |
David Baker | 9e0d8b9cb2 | 5 years ago |
Travis Ralston | ad5d46d331 | 5 years ago |
Andrew Morgan | e88a074c9f | 5 years ago |
Andrew Morgan | 4997abc4b7 | 5 years ago |
David Baker | 0dae2d5812 | 5 years ago |
Sorunome | 4f83cc1c24 | 5 years ago |
David Baker | 6f374dc981 | 5 years ago |
David Baker | 2c09580e27 | 5 years ago |
Andrew Morgan | 96e43aaf45 | 5 years ago |
Andrew Morgan | f951f312e1 | 5 years ago |
Andrew Morgan | fae6883cc0 | 5 years ago |
Andrew Morgan | 0a4c83ddb9 | 5 years ago |
Andrew Morgan | 36a35a33cc | 5 years ago |
Andrew Morgan | ee10576d60 | 5 years ago |
David Baker | abb407145a | 5 years ago |
David Baker | 8ae47557c9 | 5 years ago |
David Baker | 2555801458 | 5 years ago |
David Baker | 4ba9b2a599 | 5 years ago |
David Baker | a63e4420eb | 5 years ago |
Andrew Morgan | 02ac0f3b33 | 5 years ago |
Andrew Morgan | acdb2b1b42 | 5 years ago |
Andrew Morgan | e3ff80291f | 5 years ago |
Travis Ralston | 21e93a123e | 5 years ago |
Andrew Morgan | 53f025edfc | 5 years ago |
Andrew Morgan | 2383a55720 | 5 years ago |
Andrew Morgan | c63edc7b97 | 5 years ago |
Andrew Morgan | e3b2ad38b5 | 5 years ago |
Andrew Morgan | 1fea604ba9 | 5 years ago |
David Baker | 9ca3ccc81c | 5 years ago |
David Baker | d4ca0c237a | 5 years ago |
David Baker | 276e2b6843 | 5 years ago |
David Baker | cf48030d1f | 5 years ago |
David Baker | 32c7fc638d | 5 years ago |
David Baker | 23af87e9fc | 5 years ago |
Andrew Morgan | 1343e19a6d | 5 years ago |
Andrew Morgan | f28476f0f3 | 5 years ago |
Andrew Morgan | 3ee27d3818 | 5 years ago |
Travis Ralston | ace94f02b7 | 5 years ago |
Jimmy Cuadra | 8246383330 | 5 years ago |
Andrew Morgan | f41ed02c9e | 5 years ago |
Andrew Morgan | 6bb4a9e911 | 5 years ago |
Andrew Morgan | 5049e552e7 | 5 years ago |
Andrew Morgan | bc9b6c3659 | 5 years ago |
Travis Ralston | 204601d9a4 | 5 years ago |
Andrew Morgan | 063b9f60e0 | 5 years ago |
Andrew Morgan | d2b47a585d | 5 years ago |
Travis Ralston | ffdd8dfe01 | 5 years ago |
Travis Ralston | d09af5b191 | 5 years ago |
Will Hunt | f8dbf2b360 | 5 years ago |
Travis Ralston | 954a5607c3 | 5 years ago |
Travis Ralston | c63b5aff69 | 5 years ago |
Anatoly Sablin | 802b90d113 | 5 years ago |
Jimmy Cuadra | 8affb23e5e | 5 years ago |
Will Hunt | 12431f1a4e | 5 years ago |
Will Hunt | 8b92df74ab | 5 years ago |
Will Hunt | a8c26d208b | 5 years ago |
Will Hunt | 3eff76b00a | 5 years ago |
Travis Ralston | 6f460ad70a | 5 years ago |
Travis Ralston | 33ca891e71 | 5 years ago |
Jimmy Cuadra | 5384b61d95 | 5 years ago |
Jimmy Cuadra | bc71dacaf4 | 5 years ago |
Travis Ralston | b807e1cbe5 | 5 years ago |
Matthew Hodgson | aadf1cc733 | 5 years ago |
Jimmy Cuadra | b885714d94 | 5 years ago |
Jimmy Cuadra | 2dd0da7d50 | 5 years ago |
Travis Ralston | 50dee76fa7 | 5 years ago |
Travis Ralston | cac72ff873 | 5 years ago |
Travis Ralston | 8bfc42b284 | 5 years ago |
Travis Ralston | decb75555c | 5 years ago |
Travis Ralston | a9297f9e6c | 5 years ago |
Jimmy Cuadra | e670fb1f5a | 5 years ago |
Travis Ralston | 2cafa7e1e8 | 5 years ago |
Travis Ralston | 67ea3b9ce8 | 5 years ago |
Travis Ralston | b8f1f37927 | 5 years ago |
Travis Ralston | d26cf7da92 | 5 years ago |
Travis Ralston | 18eca90022 | 5 years ago |
Travis Ralston | e60d2defbd | 5 years ago |
Sorunome | 26349417ba | 5 years ago |
Travis Ralston | 19a3d574b7 | 5 years ago |
Travis Ralston | ba5479e46f | 5 years ago |
Travis Ralston | 8f1f8b4fe5 | 5 years ago |
Travis Ralston | 98c9d93b20 | 5 years ago |
Travis Ralston | 497c6875ac | 5 years ago |
Travis Ralston | 67d12165e8 | 5 years ago |
Travis Ralston | 1e9308cbc9 | 5 years ago |
Travis Ralston | 1ca60bf5d7 | 5 years ago |
Travis Ralston | 34ad81e81b | 5 years ago |
Travis Ralston | 4f915f2760 | 5 years ago |
Hubert Chathi | fee2ebf682 | 5 years ago |
Hubert Chathi | da5ce919f2 | 5 years ago |
Travis Ralston | f4ff8e5467 | 5 years ago |
Travis Ralston | df51acd7ae | 5 years ago |
Sorunome | 273af2a2e0 | 5 years ago |
Sorunome | 6f3bcb56d3 | 5 years ago |
Sorunome | ebb1351a9f | 5 years ago |
Sorunome | d750115fdc | 5 years ago |
Sorunome | 70d3fd809e | 5 years ago |
Hubert Chathi | 7bad359b0d | 5 years ago |
Brendan Abolivier | e71b3ac754 | 5 years ago |
Travis Ralston | 62748a026d | 5 years ago |
Travis Ralston | 97786da4ad | 5 years ago |
Brendan Abolivier | c1721cb6f7 | 6 years ago |
Brendan Abolivier | 661d69858e | 6 years ago |
Richard van der Hoff | 2ae122903f | 6 years ago |
Travis Ralston | 0bab70c14e | 6 years ago |
Travis Ralston | d6d0f9780d | 6 years ago |
Travis Ralston | bd0211be12 | 6 years ago |
Travis Ralston | e8de1423b1 | 6 years ago |
J. Ryan Stinnett | 13d63685d3 | 6 years ago |
Travis Ralston | 2dcda7d564 | 6 years ago |
Travis Ralston | dffe19bb76 | 6 years ago |
Travis Ralston | cc10444d4b | 6 years ago |
Travis Ralston | 29a9982447 | 6 years ago |
Hubert Chathi | 979827bad3 | 6 years ago |
Hubert Chathi | 63c6d030fd | 6 years ago |
Hubert Chathi | 4e95f8062a | 6 years ago |
Richard van der Hoff | 1c4262e556 | 6 years ago |
Richard van der Hoff | 87824c1c96 | 6 years ago |
Hubert Chathi | ca7aa8b0ba | 6 years ago |
manuroe | 0051c6a377 | 6 years ago |
manuroe | 7cde3193e5 | 6 years ago |
manuroe | 82ff866b58 | 6 years ago |
manuroe | ed945d6744 | 6 years ago |
Hubert Chathi | e7f7926023 | 6 years ago |
manuroe | d43b595b5e | 6 years ago |
manuroe | 2099308d4c | 6 years ago |
manuroe | e02b345c62 | 6 years ago |
manuroe | c9b38cbe53 | 6 years ago |
Hubert Chathi | ca0baa54df | 6 years ago |
Hubert Chathi | f4fe318a85 | 6 years ago |
Brendan Abolivier | 749b1777fa | 6 years ago |
Brendan Abolivier | d318ff95f3 | 6 years ago |
Hubert Chathi | 38689a8215 | 6 years ago |
Hubert Chathi | 3b0073a9d1 | 6 years ago |
Hubert Chathi | ba39779375 | 6 years ago |
Hubert Chathi | 517754bada | 6 years ago |
Matthew Hodgson | 1bbe638927 | 6 years ago |
Matthew Hodgson | 54bf339ae8 | 6 years ago |
Matthew Hodgson | 88ff3de28a | 6 years ago |
Matthew Hodgson | 010246ea6d | 6 years ago |
Matthew Hodgson | 19e94203fa | 6 years ago |
Matthew Hodgson | cd5a8420a8 | 6 years ago |
Matthew Hodgson | e00eff567a | 6 years ago |
Matthew Hodgson | 43ae6ad7c1 | 6 years ago |
Matthew Hodgson | a884fd8772 | 6 years ago |
Matthew Hodgson | 1e81fbd2d8 | 6 years ago |
Matthew Hodgson | 346f7ac113 | 6 years ago |
Matthew Hodgson | 6c499db3ba | 6 years ago |
Hubert Chathi | c0b0db9a55 | 6 years ago |
Hubert Chathi | d9eddcf7df | 6 years ago |
Hubert Chathi | e9aa4081bc | 6 years ago |
Hubert Chathi | 2d3b5f4481 | 6 years ago |
Hubert Chathi | f3997cd09e | 6 years ago |
Hubert Chathi | de11738210 | 6 years ago |
Hubert Chathi | d90aeda658 | 6 years ago |
Hubert Chathi | b45cf4483f | 6 years ago |
Hubert Chathi | 2dce23564f | 6 years ago |
Hubert Chathi | 3918ed3c38 | 6 years ago |
Hubert Chathi | 7713a0f402 | 6 years ago |
Hubert Chathi | 982abc168a | 6 years ago |
Hubert Chathi | 7b4b4a2688 | 6 years ago |
Hubert Chathi | dc0dd18eeb | 6 years ago |
Hubert Chathi | c8eac3ee2d | 6 years ago |
Hubert Chathi | 9d51d1e8b7 | 6 years ago |
Hubert Chathi | b45416e8b0 | 6 years ago |
Hubert Chathi | de5120335f | 6 years ago |
Hubert Chathi | 72df5fe436 | 6 years ago |
Hubert Chathi | 846e9e8fdc | 6 years ago |
Hubert Chathi | 8777232987 | 6 years ago |
Hubert Chathi | 95280d8b09 | 6 years ago |
Hubert Chathi | 6e8ba1f7f8 | 6 years ago |
Hubert Chathi | acd9a5d32f | 6 years ago |
Hubert Chathi | 3734471028 | 6 years ago |
Hubert Chathi | 3aba9b153b | 6 years ago |
Hubert Chathi | 1b81970a1e | 6 years ago |
@ -1,16 +0,0 @@
|
|||||||
steps:
|
|
||||||
- label: ":books: Build spec"
|
|
||||||
command:
|
|
||||||
- python3 -m venv env
|
|
||||||
- env/bin/pip install -r scripts/requirements.txt
|
|
||||||
- ". env/bin/activate; scripts/generate-matrix-org-assets"
|
|
||||||
artifact_paths:
|
|
||||||
- assets.tar.gz
|
|
||||||
plugins:
|
|
||||||
- docker#v3.0.1:
|
|
||||||
image: "python:3.6"
|
|
||||||
|
|
||||||
- label: "rebuild matrix.org"
|
|
||||||
trigger: "matrix-dot-org"
|
|
||||||
async: true
|
|
||||||
branches: "master"
|
|
@ -1,124 +0,0 @@
|
|||||||
gendoc: &gendoc
|
|
||||||
name: Generate the docs
|
|
||||||
command: |
|
|
||||||
source /env/bin/activate
|
|
||||||
scripts/gendoc.py
|
|
||||||
|
|
||||||
genswagger: &genswagger
|
|
||||||
name: Generate the swagger
|
|
||||||
command: |
|
|
||||||
source /env/bin/activate
|
|
||||||
scripts/dump-swagger.py
|
|
||||||
|
|
||||||
buildswaggerui: &buildswaggerui
|
|
||||||
name: Build Swagger UI
|
|
||||||
command: |
|
|
||||||
ls scripts/
|
|
||||||
mkdir -p api/client-server
|
|
||||||
git clone https://github.com/matrix-org/swagger-ui swagger-ui
|
|
||||||
cp -r swagger-ui/dist/* api/client-server/
|
|
||||||
mkdir -p api/client-server/json
|
|
||||||
cp scripts/swagger/api-docs.json api/client-server/json/
|
|
||||||
wget https://raw.githubusercontent.com/matrix-org/matrix.org/master/content/swagger.css -O api/client-server/swagger.css
|
|
||||||
wget https://raw.githubusercontent.com/matrix-org/matrix.org/master/scripts/swagger-ui.patch
|
|
||||||
patch api/client-server/index.html swagger-ui.patch
|
|
||||||
|
|
||||||
checkexamples: &checkexamples
|
|
||||||
name: Check Event Examples
|
|
||||||
command: |
|
|
||||||
source /env/bin/activate
|
|
||||||
cd event-schemas
|
|
||||||
./check_examples.py
|
|
||||||
cd ../api
|
|
||||||
./check_examples.py
|
|
||||||
|
|
||||||
genmatrixassets: &genmatrixassets
|
|
||||||
name: Generate/Verify matrix.org assets
|
|
||||||
command: |
|
|
||||||
source /env/bin/activate
|
|
||||||
./scripts/generate-matrix-org-assets
|
|
||||||
|
|
||||||
validateapi: &validateapi
|
|
||||||
name: Validate OpenAPI specifications
|
|
||||||
command: |
|
|
||||||
cd api
|
|
||||||
npm install
|
|
||||||
node validator.js -s "client-server"
|
|
||||||
|
|
||||||
buildspeculator: &buildspeculator
|
|
||||||
name: Build Speculator
|
|
||||||
command: |
|
|
||||||
cd scripts/speculator
|
|
||||||
go build -v
|
|
||||||
|
|
||||||
buildcontinuserv: &buildcontinuserv
|
|
||||||
name: Build Continuserv
|
|
||||||
command: |
|
|
||||||
cd scripts/continuserv
|
|
||||||
go build -v
|
|
||||||
|
|
||||||
version: 2
|
|
||||||
jobs:
|
|
||||||
validate-docs:
|
|
||||||
docker:
|
|
||||||
- image: node:alpine
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run: *validateapi
|
|
||||||
check-docs:
|
|
||||||
docker:
|
|
||||||
- image: uhoreg/matrix-doc-build
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run: *checkexamples
|
|
||||||
- run: *genmatrixassets # We don't actually use the assets, but we do want to make sure they build
|
|
||||||
build-docs:
|
|
||||||
docker:
|
|
||||||
- image: uhoreg/matrix-doc-build
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run: *gendoc
|
|
||||||
- store_artifacts:
|
|
||||||
path: scripts/gen
|
|
||||||
- run:
|
|
||||||
name: "Doc build is available at:"
|
|
||||||
command: DOCS_URL="${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/scripts/gen/index.html"; echo $DOCS_URL
|
|
||||||
build-swagger:
|
|
||||||
docker:
|
|
||||||
- image: uhoreg/matrix-doc-build
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run: *genswagger
|
|
||||||
- run: *buildswaggerui
|
|
||||||
- store_artifacts:
|
|
||||||
path: api/client-server/
|
|
||||||
- run:
|
|
||||||
name: "Swagger UI is available at:"
|
|
||||||
command: DOCS_URL="${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/api/client-server/index.html"; echo $DOCS_URL
|
|
||||||
build-dev-scripts:
|
|
||||||
docker:
|
|
||||||
- image: golang:1.8
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
name: Install Dependencies
|
|
||||||
command: |
|
|
||||||
go get -v github.com/hashicorp/golang-lru
|
|
||||||
go get -v gopkg.in/fsnotify/fsnotify.v1
|
|
||||||
- run: *buildcontinuserv
|
|
||||||
- run: *buildspeculator
|
|
||||||
|
|
||||||
workflows:
|
|
||||||
version: 2
|
|
||||||
|
|
||||||
build-spec:
|
|
||||||
jobs:
|
|
||||||
- build-docs
|
|
||||||
- build-swagger
|
|
||||||
- check-docs
|
|
||||||
- validate-docs
|
|
||||||
- build-dev-scripts
|
|
||||||
|
|
||||||
notify:
|
|
||||||
webhooks:
|
|
||||||
- url: https://giles.cadair.com/circleci
|
|
@ -0,0 +1,7 @@
|
|||||||
|
# EditorConfig is awesome: https://EditorConfig.org
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
insert_final_newline = true
|
||||||
|
charset = utf-8
|
||||||
|
max_line_length = 120
|
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
name: Proposal ready for review
|
||||||
|
about: A proposal that is ready for review by the core team and community.
|
||||||
|
title: ''
|
||||||
|
labels: proposal, proposal-in-review
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Put your "rendered" link here -->
|
||||||
|
|
||||||
|
### Pull Request Checklist
|
||||||
|
|
||||||
|
<!-- Please read CONTRIBUTING.md before submitting your pull request -->
|
||||||
|
|
||||||
|
* [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-spec-proposals/blob/master/CONTRIBUTING.md#sign-off)
|
||||||
|
* [ ] Update the title and file name of your proposal to match this PR's number (after opening).
|
||||||
|
* [ ] Pull request includes a ['Rendered' link](https://matrix.org/docs/spec/proposals#process) above.
|
||||||
|
* [ ] Your MSC adheres to each point in the [MSC Checklist](MSC_CHECKLIST.md).
|
||||||
|
* [ ] Ask in
|
||||||
|
[#matrix-spec:matrix.org](https://matrix.to/#/#matrix-spec:matrix.org) to
|
||||||
|
get feedback on this PR.
|
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
name: WIP Proposal
|
||||||
|
about: A proposal that isn't quite ready for formal review yet.
|
||||||
|
title: '[WIP] Your Proposal Title'
|
||||||
|
labels: proposal
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Put your "rendered" link here -->
|
||||||
|
|
||||||
|
### Pull Request Checklist
|
||||||
|
|
||||||
|
<!-- Please read CONTRIBUTING.md before submitting your pull request -->
|
||||||
|
|
||||||
|
* [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-spec-proposals/blob/master/CONTRIBUTING.md#sign-off)
|
||||||
|
* [ ] Update the title and file name of your proposal to match this PR's number (after opening).
|
||||||
|
* [ ] Pull request includes a ['Rendered' link](https://matrix.org/docs/spec/proposals#process) above.
|
||||||
|
* [ ] Have a look at the [MSC Checklist](MSC_CHECKLIST.md) for guidelines on various aspects of your MSC.
|
||||||
|
|
||||||
|
<!-- Once the proposal is ready for review, ask in [#matrix-spec:matrix.org](https://matrix.to/#/#matrix-spec:matrix.org) to get it marked as such. -->
|
@ -0,0 +1,11 @@
|
|||||||
|
[default]
|
||||||
|
check-filename = true
|
||||||
|
|
||||||
|
[default.extend-identifiers]
|
||||||
|
OTK = "OTK"
|
||||||
|
OTKs = "OTKs"
|
||||||
|
|
||||||
|
[default.extend-words]
|
||||||
|
OTK = "OTK"
|
||||||
|
OTKs = "OTKs"
|
||||||
|
Iy = "Iy"
|
@ -0,0 +1,19 @@
|
|||||||
|
name: Spell Check
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
run:
|
||||||
|
name: Spell Check with Typos
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Check spelling of proposals
|
||||||
|
uses: crate-ci/typos@f2c1f08a7b3c1b96050cb786baaa2a94797bdb7d # v1.20.10
|
||||||
|
with:
|
||||||
|
config: ${{github.workspace}}/.github/_typos.toml
|
@ -1,14 +0,0 @@
|
|||||||
/api/node_modules
|
|
||||||
/assets
|
|
||||||
/assets.tar.gz
|
|
||||||
/env*
|
|
||||||
/scripts/gen
|
|
||||||
/scripts/continuserv/continuserv
|
|
||||||
/scripts/speculator/speculator
|
|
||||||
/scripts/swagger
|
|
||||||
/scripts/tmp
|
|
||||||
/templating/out
|
|
||||||
*.pyc
|
|
||||||
*.swp
|
|
||||||
_rendered.rst
|
|
||||||
/.vscode/
|
|
@ -0,0 +1,76 @@
|
|||||||
|
# Contributing to `matrix-spec-proposals`
|
||||||
|
|
||||||
|
Thank you for taking the time to contribute to Matrix!
|
||||||
|
|
||||||
|
This repository is for proposals for changes to the Matrix protocol. The process
|
||||||
|
for submitting a proposal is described in
|
||||||
|
[this repository's README](README.md#the-matrix-spec-process) or in further detail at
|
||||||
|
https://spec.matrix.org/proposals/#process.
|
||||||
|
|
||||||
|
## Sign off
|
||||||
|
|
||||||
|
We ask that everybody who contributes to this project signs off their
|
||||||
|
contributions, as explained below.
|
||||||
|
|
||||||
|
We follow a simple 'inbound=outbound' model for contributions: the act of
|
||||||
|
submitting an 'inbound' contribution means that the contributor agrees to
|
||||||
|
license their contribution under the same terms as the project's overall
|
||||||
|
'outbound' license - in our case, this is Apache Software License v2 (see
|
||||||
|
[LICENSE](./LICENSE)).
|
||||||
|
|
||||||
|
In order to have a concrete record that your contribution is intentional and
|
||||||
|
you agree to license it under the same terms as the project's license, we've
|
||||||
|
adopted the same lightweight approach used by the [Linux
|
||||||
|
Kernel](https://www.kernel.org/doc/html/latest/process/submitting-patches.html),
|
||||||
|
[Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md), and
|
||||||
|
many other projects: the [Developer Certificate of
|
||||||
|
Origin](http://developercertificate.org/) (DCO). This is a simple declaration
|
||||||
|
that you wrote the contribution or otherwise have the right to contribute it to
|
||||||
|
Matrix:
|
||||||
|
|
||||||
|
Developer Certificate of Origin
|
||||||
|
Version 1.1
|
||||||
|
|
||||||
|
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
||||||
|
660 York Street, Suite 102,
|
||||||
|
San Francisco, CA 94110 USA
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
|
license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Developer's Certificate of Origin 1.1
|
||||||
|
|
||||||
|
By making a contribution to this project, I certify that:
|
||||||
|
|
||||||
|
(a) The contribution was created in whole or in part by me and I
|
||||||
|
have the right to submit it under the open source license
|
||||||
|
indicated in the file; or
|
||||||
|
|
||||||
|
(b) The contribution is based upon previous work that, to the best
|
||||||
|
of my knowledge, is covered under an appropriate open source
|
||||||
|
license and I have the right under that license to submit that
|
||||||
|
work with modifications, whether created in whole or in part
|
||||||
|
by me, under the same open source license (unless I am
|
||||||
|
permitted to submit under a different license), as indicated
|
||||||
|
in the file; or
|
||||||
|
|
||||||
|
(c) The contribution was provided directly to me by some other
|
||||||
|
person who certified (a), (b) or (c) and I have not modified
|
||||||
|
it.
|
||||||
|
|
||||||
|
(d) I understand and agree that this project and the contribution
|
||||||
|
are public and that a record of the contribution (including all
|
||||||
|
personal information I submit with it, including my sign-off) is
|
||||||
|
maintained indefinitely and may be redistributed consistent with
|
||||||
|
this project or the open source license(s) involved.
|
||||||
|
|
||||||
|
If you agree to this for your contribution, then all that's needed is to
|
||||||
|
include the line in your commit or pull request comment:
|
||||||
|
|
||||||
|
Signed-off-by: Your Name <your@email.example.org>
|
||||||
|
|
||||||
|
Git allows you to add this signoff automatically when using the `-s`
|
||||||
|
flag to `git commit`, which uses the name and email set in your
|
||||||
|
`user.name` and `user.email` git configs.
|
||||||
|
|
||||||
|
[1]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
|
@ -1,175 +0,0 @@
|
|||||||
Contributing to matrix-doc
|
|
||||||
==========================
|
|
||||||
|
|
||||||
Everyone is welcome to contribute to the Matrix specification!
|
|
||||||
|
|
||||||
Please ensure that you sign off your contributions. See `Sign off`_ below.
|
|
||||||
|
|
||||||
Code style
|
|
||||||
----------
|
|
||||||
|
|
||||||
The documentation style is described at
|
|
||||||
https://github.com/matrix-org/matrix-doc/blob/master/meta/documentation_style.rst.
|
|
||||||
|
|
||||||
Python code within the ``matrix-doc`` project should follow the same style as
|
|
||||||
synapse, which is documented at
|
|
||||||
https://github.com/matrix-org/synapse/tree/master/docs/code_style.rst.
|
|
||||||
|
|
||||||
Matrix-doc workflows
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
Specification changes
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The Matrix specification documents the APIs which Matrix clients and servers use.
|
|
||||||
For this to be effective, the APIs need to be present and working correctly in a
|
|
||||||
server before they can be documented in the specification. This process can take
|
|
||||||
some time to complete.
|
|
||||||
|
|
||||||
Changes to the protocol (new endpoints, ideas, etc) need to go through the
|
|
||||||
`proposals process <https://matrix.org/docs/spec/proposals>`_. Other changes,
|
|
||||||
such as fixing bugs, typos, or clarifying existing behaviour do not need a proposal.
|
|
||||||
If you're not sure, visit us at `#matrix-spec:matrix.org`_
|
|
||||||
and ask.
|
|
||||||
|
|
||||||
|
|
||||||
Other changes
|
|
||||||
~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The above process is unnecessary for smaller changes, and those which do not
|
|
||||||
put new requirements on servers. This category of changes includes the
|
|
||||||
following:
|
|
||||||
|
|
||||||
* Changes to the scripts used to generate the specification.
|
|
||||||
|
|
||||||
* Addition of features which have been in use in practice for some time, but
|
|
||||||
have never made it into the spec (including anything with the `spec-omission
|
|
||||||
<https://github.com/matrix-org/matrix-doc/labels/spec-omission>`_ label).
|
|
||||||
|
|
||||||
* Likewise, corrections to the specification, to fix situations where, in
|
|
||||||
practice, servers and clients behave differently to the specification,
|
|
||||||
including anything with the `spec-bug
|
|
||||||
<https://github.com/matrix-org/matrix-doc/labels/spec-bug>`_ label.
|
|
||||||
|
|
||||||
(If there is any doubt about whether it is the spec or the implementations
|
|
||||||
that need fixing, please discuss it with us first in `#matrix-spec:matrix.org`_.)
|
|
||||||
|
|
||||||
* Clarifications to the specification which do not change the behaviour of
|
|
||||||
Matrix servers or clients in a way which might introduce compatibility
|
|
||||||
problems for existing deployments. This includes anything with the
|
|
||||||
`clarification <https://github.com/matrix-org/matrix-doc/labels/clarification>`_
|
|
||||||
label.
|
|
||||||
|
|
||||||
For example, areas where the specification is unclear do not require a proposal
|
|
||||||
to fix. On the other hand, introducing new behaviour is best represented by a
|
|
||||||
proposal.
|
|
||||||
|
|
||||||
For such changes, please do just open a `pull request`_. If you're not sure if
|
|
||||||
your change is covered by the above, please visit `#matrix-spec:matrix.org` and
|
|
||||||
ask.
|
|
||||||
|
|
||||||
.. _`pull request`: https://help.github.com/articles/about-pull-requests
|
|
||||||
.. _`#matrix-spec:matrix.org`: https://matrix.to/#/#matrix-spec:matrix.org
|
|
||||||
|
|
||||||
|
|
||||||
Adding to the changelog
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Currently only changes to the client-server API need to end up in a changelog. The
|
|
||||||
other APIs are not yet stable and therefore do not have a changelog. Adding to the
|
|
||||||
changelog can only be done after you've opened your pull request, so be sure to do
|
|
||||||
that first.
|
|
||||||
|
|
||||||
The changelog is managed by Towncrier (https://github.com/hawkowl/towncrier) in the
|
|
||||||
form of "news fragments". The news fragments for the client-server API are stored
|
|
||||||
under ``changelogs/client_server/newsfragments``.
|
|
||||||
|
|
||||||
To create a changelog entry, create a file named in the format ``prNumber.type`` in
|
|
||||||
the ``newsfragments`` directory. The ``type`` can be one of the following:
|
|
||||||
|
|
||||||
* ``new`` - Used when adding new endpoints. Please have the file contents be the
|
|
||||||
method and route being added, surrounded in RST code tags. For example: ``POST
|
|
||||||
/accounts/whoami``
|
|
||||||
|
|
||||||
* ``feature`` - Used when adding backwards-compatible changes to the API.
|
|
||||||
|
|
||||||
* ``clarification`` - Used when an area of the spec is being improved upon and does
|
|
||||||
not change or introduce any functionality.
|
|
||||||
|
|
||||||
* ``breaking`` - Used when the change is not backwards compatible.
|
|
||||||
|
|
||||||
* ``deprecation`` - Used when deprecating something.
|
|
||||||
|
|
||||||
All news fragments must have a brief summary explaining the change in the
|
|
||||||
contents of the file. The summary must end in a full stop to be in line with
|
|
||||||
the style guide and and formatting must be done using `Restructured Text
|
|
||||||
<http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_.
|
|
||||||
|
|
||||||
Changes that do not change the spec, such as changes to the build script, formatting,
|
|
||||||
CSS, etc should not get a news fragment.
|
|
||||||
|
|
||||||
Sign off
|
|
||||||
--------
|
|
||||||
|
|
||||||
We ask that everybody who contributes to their project signs off their
|
|
||||||
contributions, as explained below.
|
|
||||||
|
|
||||||
We follow a simple 'inbound=outbound' model for contributions: the act of
|
|
||||||
submitting an 'inbound' contribution means that the contributor agrees to
|
|
||||||
license their contribution under the same terms as the project's overall 'outbound'
|
|
||||||
license - in our case, this is Apache Software License v2 (see LICENSE).
|
|
||||||
|
|
||||||
In order to have a concrete record that your contribution is intentional
|
|
||||||
and you agree to license it under the same terms as the project's license, we've adopted the
|
|
||||||
same lightweight approach that the Linux Kernel
|
|
||||||
(https://www.kernel.org/doc/Documentation/SubmittingPatches), Docker
|
|
||||||
(https://github.com/docker/docker/blob/master/CONTRIBUTING.md), and many other
|
|
||||||
projects use: the DCO (Developer Certificate of Origin:
|
|
||||||
http://developercertificate.org/). This is a simple declaration that you wrote
|
|
||||||
the contribution or otherwise have the right to contribute it to Matrix::
|
|
||||||
|
|
||||||
Developer Certificate of Origin
|
|
||||||
Version 1.1
|
|
||||||
|
|
||||||
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
|
||||||
660 York Street, Suite 102,
|
|
||||||
San Francisco, CA 94110 USA
|
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies of this
|
|
||||||
license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Developer's Certificate of Origin 1.1
|
|
||||||
|
|
||||||
By making a contribution to this project, I certify that:
|
|
||||||
|
|
||||||
(a) The contribution was created in whole or in part by me and I
|
|
||||||
have the right to submit it under the open source license
|
|
||||||
indicated in the file; or
|
|
||||||
|
|
||||||
(b) The contribution is based upon previous work that, to the best
|
|
||||||
of my knowledge, is covered under an appropriate open source
|
|
||||||
license and I have the right under that license to submit that
|
|
||||||
work with modifications, whether created in whole or in part
|
|
||||||
by me, under the same open source license (unless I am
|
|
||||||
permitted to submit under a different license), as indicated
|
|
||||||
in the file; or
|
|
||||||
|
|
||||||
(c) The contribution was provided directly to me by some other
|
|
||||||
person who certified (a), (b) or (c) and I have not modified
|
|
||||||
it.
|
|
||||||
|
|
||||||
(d) I understand and agree that this project and the contribution
|
|
||||||
are public and that a record of the contribution (including all
|
|
||||||
personal information I submit with it, including my sign-off) is
|
|
||||||
maintained indefinitely and may be redistributed consistent with
|
|
||||||
this project or the open source license(s) involved.
|
|
||||||
|
|
||||||
If you agree to this for your contribution, then all that's needed is to
|
|
||||||
include the line in your commit or pull request comment::
|
|
||||||
|
|
||||||
Signed-off-by: Your Name <your@email.example.org>
|
|
||||||
|
|
||||||
...using your real name; unfortunately pseudonyms and anonymous contributions
|
|
||||||
can't be accepted. Git makes this trivial - just use the -s flag when you do
|
|
||||||
``git commit``, having first set ``user.name`` and ``user.email`` git configs
|
|
||||||
(which you should have done anyway :)
|
|
@ -0,0 +1,370 @@
|
|||||||
|
# Matrix Specification Proposals
|
||||||
|
|
||||||
|
This repository contains proposals for changes to the [Matrix
|
||||||
|
Protocol](http://spec.matrix.org), aka "Matrix Spec Changes" (MSCs). The
|
||||||
|
[`proposals`](./proposals) directory contains MSCs which have been accepted.
|
||||||
|
|
||||||
|
See below for instructions for creating new
|
||||||
|
proposals. See also https://spec.matrix.org/proposals/ for more
|
||||||
|
information on the MSC process, in particular
|
||||||
|
https://spec.matrix.org/proposals/#process.
|
||||||
|
|
||||||
|
The source of the Matrix specification itself is maintained at
|
||||||
|
https://github.com/matrix-org/matrix-spec.
|
||||||
|
|
||||||
|
## The Matrix Spec Process
|
||||||
|
|
||||||
|
An MSC is meant to be a **technical document that unambiguously describes a
|
||||||
|
change to the Matrix Spec**, while also justifying _why_ the change should be
|
||||||
|
made.
|
||||||
|
|
||||||
|
The document is used both to judge whether the change should be made as
|
||||||
|
described *and* by developers to actually implement the changes. This is why
|
||||||
|
it's important for an MSC to be fully fleshed out in technical detail, as once
|
||||||
|
merged it's immediately part of the formal spec (even though it still needs to
|
||||||
|
be transcribed into the actual spec itself).
|
||||||
|
|
||||||
|
### What changes need to follow this process?
|
||||||
|
|
||||||
|
In most cases a change to [the Matrix protocol](https://spec.matrix.org) will
|
||||||
|
require an MSC. Changes that would not require an MSC are typically small and
|
||||||
|
uncontentious, or are simply clarifications to the spec. Fixing typos in the
|
||||||
|
spec do not require an MSC. In most cases, removing ambiguities do not either.
|
||||||
|
The exception may be if implementations in the ecosystem have differing views
|
||||||
|
on clarifying the ambiguity. In that case, an MSC is typically the best place
|
||||||
|
to reach consensus.
|
||||||
|
|
||||||
|
Ultimately, the [Spec Core Team](https://matrix.org/foundation) have the final
|
||||||
|
say on this, but generally if the change would require updates to a
|
||||||
|
non-insignificant portion of the Matrix implementation ecosystem or would be
|
||||||
|
met with contention, an MSC is the best route to take. You can also ask in the
|
||||||
|
[Matrix Spec](https://matrix.to/#/#matrix-spec:matrix.org) or [Office of the
|
||||||
|
Spec Core Team](https://matrix.to/#/#sct-office:matrix.org) Matrix rooms for
|
||||||
|
clarification.
|
||||||
|
|
||||||
|
### Summary of the process
|
||||||
|
|
||||||
|
The MSC process consists of three basic steps:
|
||||||
|
|
||||||
|
1. **Write up the proposal** in a
|
||||||
|
[markdown](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#GitHub-flavored-markdown)
|
||||||
|
document. (There's a [proposal
|
||||||
|
template](proposals/0000-proposal-template.md), but don't feel bound by it.)
|
||||||
|
2. **Submit it as a Pull Request** to this repo, marking it as a draft until
|
||||||
|
it's ready for wider review.
|
||||||
|
3. **Seek review** from the community. Once people are generally happy with it,
|
||||||
|
ask the [Spec Core Team](https://matrix.org/foundation) to look at it in
|
||||||
|
[the Office of the SCT Matrix
|
||||||
|
room](https://matrix.to/#/#sct-office:matrix.org). When the SCT are happy
|
||||||
|
with the proposal, and after a successful voting process, your pull request
|
||||||
|
is merged and the **MSC is now officially accepted** as part of the Matrix
|
||||||
|
Spec and can be used 🎉
|
||||||
|
|
||||||
|
For simple changes this is really all you need to know. For larger or more
|
||||||
|
controversial changes, getting an MSC merged can take more time and effort, but
|
||||||
|
the overall process remains the same.
|
||||||
|
|
||||||
|
Below is various guidance to try and help make the experience smoother.
|
||||||
|
|
||||||
|
### Guidance on the process
|
||||||
|
|
||||||
|
#### 1. Writing the proposal
|
||||||
|
|
||||||
|
Come up with an idea. The idea can be for anything, but the solution (MSC)
|
||||||
|
needs to benefit the Matrix ecosystem rather than yourself (or your company)
|
||||||
|
specifically. Sometimes this means that the solution needs to be more generic
|
||||||
|
than the specific itch that you are trying to scratch.
|
||||||
|
|
||||||
|
Remember that an MSC is a formal technical document which will be used by
|
||||||
|
others in the wider community to judge if the proposal should be accepted *and*
|
||||||
|
to actually implement the changes in clients and servers. This means that for
|
||||||
|
an MSC to be accepted it should include justifications and describe the
|
||||||
|
technical changes unambiguously, including specifying what happens in any and
|
||||||
|
all edge cases.
|
||||||
|
|
||||||
|
There's a [proposal template](proposals/0000-proposal-template.md) under
|
||||||
|
`docs/0000-proposal.md`, but you don't necessarily need to use it. Covering the
|
||||||
|
same major points is fine.
|
||||||
|
* Note: At this stage, you won't have an MSC number, so feel free to use
|
||||||
|
`0000`, `XXXX`, or whatever other placeholder you feel comfortable with.
|
||||||
|
|
||||||
|
Some tips for MSC writing:
|
||||||
|
|
||||||
|
* Please wrap your lines to 120 characters maximum.
|
||||||
|
This allows readers to review your markdown without needing to horizontally
|
||||||
|
scroll back and forth. Many markdown text editors have this feature.
|
||||||
|
* If you are referencing an existing endpoint in the spec, or another MSC, it
|
||||||
|
is very helpful to add a link to them so the reader does not need to search
|
||||||
|
themselves. Examples:
|
||||||
|
* "This MSC proposals an alternative to
|
||||||
|
[MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030)."
|
||||||
|
* "A new field will be added to the response body of
|
||||||
|
[`/_matrix/client/v3/sync`](https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3sync)".
|
||||||
|
* Note: it is best to link to the latest stable version of the spec
|
||||||
|
(e.g. /v1.3, not /latest) - failing that,
|
||||||
|
[/unstable](https://spec.matrix.org/unstable/) if the change is not
|
||||||
|
yet in a released spec version.
|
||||||
|
* GitHub supports rendering fancy diagrams from text with very little
|
||||||
|
effort using [Mermaid](https://mermaid-js.github.io/mermaid/#/). See [this
|
||||||
|
guide](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/)
|
||||||
|
for more information.
|
||||||
|
* Take a look at the [MSC Checklist](MSC_CHECKLIST.md). When it comes time for
|
||||||
|
the Spec Core Team to review your MSC for acceptance, they'll use the items
|
||||||
|
on this checklist as a guide.
|
||||||
|
|
||||||
|
#### 2. Submitting a Pull Request
|
||||||
|
|
||||||
|
1. Open a [Pull
|
||||||
|
Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
|
||||||
|
to add your proposal document to the [`proposals`](proposals) directory.
|
||||||
|
Note that this will require a GitHub account.
|
||||||
|
* [Mark your Pull Request as a
|
||||||
|
draft](https://github.blog/2019-02-14-introducing-draft-pull-requests/)
|
||||||
|
for now.
|
||||||
|
2. The MSC number is the number of the pull request that is automatically
|
||||||
|
assigned by GitHub. Go back through and edit the document accordingly. Don't
|
||||||
|
forget the file name itself!
|
||||||
|
3. Edit the pull request title to fit the format "MSC1234: Your proposal
|
||||||
|
title".
|
||||||
|
4. Once your proposal is correctly formatted and ready for review from the
|
||||||
|
wider ecosystem, [take your Pull Request out of draft
|
||||||
|
status](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review).
|
||||||
|
|
||||||
|
The Spec Core Team will notice this and apply various labels/status tracking to
|
||||||
|
your MSC, which will announce it to the wider world.
|
||||||
|
|
||||||
|
#### 3. Seeking review
|
||||||
|
|
||||||
|
Seek review from the Matrix community. Generally this will happen naturally,
|
||||||
|
but if you feel that your proposal is lacking review then ask for people's
|
||||||
|
opinion in the [Matrix Spec room on
|
||||||
|
Matrix](https://matrix.to/#/#matrix-spec:matrix.org).
|
||||||
|
|
||||||
|
Reviews can take many forms, and do not need to be done solely by members of
|
||||||
|
the Spec Core Team. Getting other people who are familiar with the area of
|
||||||
|
Matrix you are proposing changes to is a great first step; especially those who
|
||||||
|
may be implementing these changes in clients and/or homeservers.
|
||||||
|
|
||||||
|
While the proposal is a work in progress, it's fine for it to be high level
|
||||||
|
and hand-wavy in places, but remember that before it can be accepted it needs
|
||||||
|
to be expanded to fully flesh out all the technical detail and edge cases.
|
||||||
|
|
||||||
|
At this stage the proposal should also be implemented as a proof of concept
|
||||||
|
somewhere to show that it _actually_ works in practice. This can be done on any
|
||||||
|
client or server and doesn't need to be merged or released.
|
||||||
|
|
||||||
|
#### 4. Entering Final Comment Period
|
||||||
|
|
||||||
|
After the MSC has been implemented, fully fleshed out, and generally feels
|
||||||
|
ready for final review, you should ask a member of the Spec Core Team to review it in
|
||||||
|
the public [Spec Core Team Office room on
|
||||||
|
Matrix](https://matrix.to/#/#sct-office:matrix.org). Someone from the SCT will
|
||||||
|
then review it, and if all looks well will propose FCP
|
||||||
|
to start.
|
||||||
|
|
||||||
|
At this point, other members of the SCT will look at the proposal and consider
|
||||||
|
it for inclusion in the spec.
|
||||||
|
|
||||||
|
After enough SCT members have approved the proposal, the MSC will enter
|
||||||
|
something called _Final Comment Period_. This is a 5 calendar day countdown to
|
||||||
|
give anyone one last chance to raise any blockers or concerns about the
|
||||||
|
proposed change. Typically MSCs pass this stage without incident, but it
|
||||||
|
nevertheless serves as a safeguard.
|
||||||
|
|
||||||
|
#### 5. The MSC is accepted
|
||||||
|
|
||||||
|
Once FCP has ended and the MSC pull request is merged, the proposed change is
|
||||||
|
considered officially part of the spec. Congratulations!
|
||||||
|
|
||||||
|
Clients and servers can now start using the change, even though at this stage
|
||||||
|
it still needs to be transcribed into the spec document. This happens over in
|
||||||
|
https://github.com/matrix-org/matrix-spec/ and you are very welcome to do it
|
||||||
|
yourself! Otherwise it will be handled by a Spec Core Team member. If you would
|
||||||
|
like help with writing spec PRs, feel free to join and ask questions in the
|
||||||
|
[Matrix Spec and Docs Authoring Room on Matrix](https://matrix.to/#/#matrix-docs:matrix.org).
|
||||||
|
|
||||||
|
### Other useful information
|
||||||
|
|
||||||
|
#### Unstable prefixes
|
||||||
|
|
||||||
|
"Unstable prefixes" are the namespaces which are used by implementations while
|
||||||
|
an MSC is not yet accepted.
|
||||||
|
|
||||||
|
For instance, an MSC might propose that a `m.space`
|
||||||
|
event type or an `/_matrix/client/v1/account/whoami` endpoint should exist.
|
||||||
|
However, implementations cannot use these *stable* identifiers until the MSC
|
||||||
|
has been accepted, as the underlying design may change at any time; the design is
|
||||||
|
*unstable*.
|
||||||
|
|
||||||
|
Instead, an MSC can define a namespace such as `org.matrix.msc1234` (using the real
|
||||||
|
MSC number once known) which is added to the stable identifier, allowing for
|
||||||
|
breaking changes between edits of the MSC itself, and preventing clashes with other
|
||||||
|
MSCs that might attempt to add the same stable identifiers.
|
||||||
|
|
||||||
|
For the above examples, this would mean using `org.matrix.msc1234.space` and
|
||||||
|
`/_matrix/client/unstable/org.matrix.msc1234/account/whoami`. It is also fine to
|
||||||
|
use more traditional forms of namespace prefixes, such as `com.example.*` (e.g.
|
||||||
|
`com.example.space`).
|
||||||
|
|
||||||
|
Note: not all MSCs need to make use of unstable prefixes. They are only needed if
|
||||||
|
implementations of your MSC need to exist in the wild before your MSC is accepted,
|
||||||
|
*and* the MSC defines new endpoints, field names, etc.
|
||||||
|
|
||||||
|
#### Unstable feature flags
|
||||||
|
|
||||||
|
It is common when implementing support for an MSC that a client may wish to check
|
||||||
|
if the homeserver it is communicating with supports an MSC.
|
||||||
|
Typically, this is handled by the MSC defining an
|
||||||
|
entry in the `unstable_features` dictionary of the
|
||||||
|
[`/_matrix/client/versions`](https://spec.matrix.org/v1.6/client-server-api/#get_matrixclientversions)
|
||||||
|
endpoint, in the form of a new entry:
|
||||||
|
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
"unstable_features": {
|
||||||
|
"org.matrix.msc1234": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
... with a value of `true` indicating that the feature is supported, and `false`
|
||||||
|
or lack of the field altogether indicating the feature is not supported.
|
||||||
|
|
||||||
|
#### When can I use stable identifiers?
|
||||||
|
|
||||||
|
[According to the spec
|
||||||
|
process](https://spec.matrix.org/proposals/#early-release-of-an-mscidea): once
|
||||||
|
an MSC has been accepted, implementations are allowed to switch to *stable*
|
||||||
|
identifiers. However, the MSC is still not yet part of a released spec version.
|
||||||
|
|
||||||
|
In most cases, this is not an issue. For instance, if your MSC specifies a new
|
||||||
|
event type, you can now start sending events with those types!
|
||||||
|
|
||||||
|
Some MSCs introduce functionality where coordination between implementations is
|
||||||
|
needed. For instance, a client may want to know whether a homeserver supports
|
||||||
|
the stable version of a new endpoint before actually attempting to request it.
|
||||||
|
Or perhaps the new event type you're trying to send relies on the homeserver
|
||||||
|
recognising that new event type, and doing some work when it sees it.
|
||||||
|
|
||||||
|
At this point, it may be best to wait until a new spec version is released with
|
||||||
|
your changes. Homeservers that support the changes will eventually advertise
|
||||||
|
that spec version under `/versions`, and your client can check for that.
|
||||||
|
|
||||||
|
But if you really can't wait, then there is another option: the homeserver can
|
||||||
|
tell clients that it supports *stable* indentifiers for your MSC before it
|
||||||
|
enters a spec version, using yet another `unstable_features` flag:
|
||||||
|
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
"unstable_features": {
|
||||||
|
"org.matrix.msc1234": true,
|
||||||
|
"org.matrix.msc1234.stable": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If a client sees that `org.matrix.msc1234.stable` is `true`, it knows that it
|
||||||
|
can start using stable identifiers for the new MSC, and the homeserver will
|
||||||
|
accept and act on them accordingly.
|
||||||
|
|
||||||
|
Note: While the general pattern of using the text ".stable" has emerged from
|
||||||
|
previous MSCs, you can pick any name you like. You need only to clearly state
|
||||||
|
their meaning, usually under an "Unstable prefixes" header in your MSC.
|
||||||
|
|
||||||
|
See
|
||||||
|
[MSC3827](https://github.com/matrix-org/matrix-spec-proposals/blob/main/proposals/3827-space-explore.md#unstable-prefix)
|
||||||
|
for a good example of an MSC that wanted to use such a flag to speed up
|
||||||
|
implementation rollout, and how it did so.
|
||||||
|
|
||||||
|
#### Room versions
|
||||||
|
|
||||||
|
To summarize [the spec](https://spec.matrix.org/latest/rooms/) on room
|
||||||
|
versions: they are how servers agree upon algorithms in a decentralized world
|
||||||
|
like ours. Examples of changes that require a new room version include anything that changes:
|
||||||
|
* The format of the core event structure (such as renaming a top-level field,
|
||||||
|
or modifying [the redaction
|
||||||
|
algorithm](https://spec.matrix.org/latest/client-server-api/#redactions)),
|
||||||
|
therefore altering the [reference
|
||||||
|
hash](https://spec.matrix.org/latest/server-server-api/#calculating-the-reference-hash-for-an-event)
|
||||||
|
of an event.
|
||||||
|
* [The authorisation of
|
||||||
|
events](https://spec.matrix.org/latest/server-server-api/#authorization-rules)
|
||||||
|
(such as changes to power levels).
|
||||||
|
|
||||||
|
Unstable prefixes (see above) for room versions work the same as they do for
|
||||||
|
other identifiers; your unstable room version may be called
|
||||||
|
"org.matrix.msc1234".
|
||||||
|
|
||||||
|
In order for the changes to end up in a "real" room version (the ones listed in
|
||||||
|
the spec), it will need a second MSC which aggregates a bunch of functionality
|
||||||
|
from various MSCs into a single room version. Typically these sorts of curating
|
||||||
|
MSCs are written by the Spec Core Team given the complexity in wording, but
|
||||||
|
you're more than welcome to bring an MSC forward which makes the version real.
|
||||||
|
|
||||||
|
For an example of what introducing a new room version-required feature can look
|
||||||
|
like, see [MSC3667](https://github.com/matrix-org/matrix-doc/pull/3667). For an
|
||||||
|
example of what making a new "real" room version looks like, see
|
||||||
|
[MSC3604](https://github.com/matrix-org/matrix-doc/pull/3604).
|
||||||
|
|
||||||
|
#### Ownership of MSCs and closing them
|
||||||
|
|
||||||
|
If an author decides that they would no longer like to pursue their MSC, they
|
||||||
|
can either pass ownership of it off to someone else, or close it themselves.
|
||||||
|
|
||||||
|
* The author of an MSC can close their MSC at any time before FCP by simply
|
||||||
|
closing the pull request.
|
||||||
|
* To appoint another user as an author of the MSC (either to replace the author
|
||||||
|
entirely or to provide additional help), make a note in the MSC's PR
|
||||||
|
description by writing the following on its own line:
|
||||||
|
|
||||||
|
```
|
||||||
|
Author: @username
|
||||||
|
```
|
||||||
|
|
||||||
|
where `@username` is a valid GitHub username. Multiple such lines can be
|
||||||
|
added.
|
||||||
|
|
||||||
|
Finally, [give that user access to write to your fork of
|
||||||
|
matrix-spec-proposals on
|
||||||
|
GitHub](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository),
|
||||||
|
which your PR originates from. This will allow them to change the text of
|
||||||
|
your MSC.
|
||||||
|
|
||||||
|
Similar to accepting an MSC, the Spec Core Team may propose a Final Comment
|
||||||
|
Period with a disposition of "close". This can happen if the MSC appears
|
||||||
|
abandoned by its author, or the idea is widely rejected by the community. A
|
||||||
|
vote and final comment period will still be required for the motion to pass.
|
||||||
|
|
||||||
|
Additionally, FCP can be also proposed with a disposition of "postpone". This
|
||||||
|
may be done for MSCs for which the proposed changes do not make sense for the
|
||||||
|
current state of the ecosystem, but may make sense further down the road.
|
||||||
|
|
||||||
|
## Asking for help
|
||||||
|
|
||||||
|
The Matrix community and members of the Spec Core Team are here to help guide
|
||||||
|
you through the process!
|
||||||
|
|
||||||
|
If you'd just like to get initial feedback about an idea that's not fully
|
||||||
|
fleshed out yet, creating an issue at
|
||||||
|
https://github.com/matrix-org/matrix-spec/issues is a great place to start. Be
|
||||||
|
sure to search for any existing issues first to see if someone has already had
|
||||||
|
the same idea!
|
||||||
|
|
||||||
|
A few official rooms exist on Matrix where your questions can be answered, or
|
||||||
|
feedback on your proposal can be requested:
|
||||||
|
|
||||||
|
* [#matrix-spec:matrix.org](https://matrix.to/#/#matrix-spec:matrix.org) -
|
||||||
|
General chat for MSCs, the spec, and pretty much anything in that sphere.
|
||||||
|
* [#sct-office:matrix.org](https://matrix.to/#/#sct-office:matrix.org) - Where
|
||||||
|
the Spec Core Team hangs out and is available. This room is intended to have
|
||||||
|
extremely high signal and low noise, primarily to ensure that MSCs are not
|
||||||
|
falling through the cracks. If an MSC requires attention or comment from Spec
|
||||||
|
Core Team members, bring it up here.
|
||||||
|
* [#matrix-spec-process:matrix.org](https://matrix.to/#/#matrix-spec-process:matrix.org) - A
|
||||||
|
room dedicated to [the spec process
|
||||||
|
itself](https://spec.matrix.org/proposals/#process). If you have any
|
||||||
|
questions about or suggestions to improve the Matrix Spec process, ask them
|
||||||
|
here.
|
||||||
|
* [#matrix-docs:matrix.org](https://matrix.to/#/#matrix-docs:matrix.org) - A
|
||||||
|
quieter room for discussion of the [formal spec
|
||||||
|
text](https://spec.matrix.org) and [matrix.org](https://matrix.org) website.
|
@ -1,141 +0,0 @@
|
|||||||
This repository contains the Matrix specification.
|
|
||||||
|
|
||||||
If you want to ask more about the specification, join us on
|
|
||||||
`#matrix-dev:matrix.org <http://matrix.to/#/#matrix-dev:matrix.org>`_.
|
|
||||||
|
|
||||||
We welcome contributions to the spec! See the notes below on `Building the
|
|
||||||
specification`_, and `<CONTRIBUTING.rst>`_ to get started making contributions.
|
|
||||||
|
|
||||||
Note that the Matrix Project lists, which were previously kept in this
|
|
||||||
repository, are now in https://github.com/matrix-org/matrix.org.
|
|
||||||
|
|
||||||
Structure of this repository
|
|
||||||
============================
|
|
||||||
|
|
||||||
- ``api`` : `OpenAPI`_ (swagger) specifications for the the HTTP APIs.
|
|
||||||
- ``attic``: historical sections of specification for reference
|
|
||||||
purposes.
|
|
||||||
- ``changelogs``: change logs for the various parts of the
|
|
||||||
specification.
|
|
||||||
- ``drafts``: Previously, contained documents which were under discussion for
|
|
||||||
future incusion into the specification and/or supporting documentation. This
|
|
||||||
is now historical, as we use separate discussion documents (see
|
|
||||||
`<CONTRIBUTING.rst>`_).
|
|
||||||
- ``event-schemas``: the `JSON Schema`_ for all Matrix events
|
|
||||||
contained in the specification, along with example JSON files.
|
|
||||||
- ``meta``: documents outlining the processes involved when writing
|
|
||||||
documents, e.g. documentation style, guidelines.
|
|
||||||
- ``scripts``: scripts to generate formatted versions of the
|
|
||||||
documentation, typically HTML.
|
|
||||||
- ``specification``: the specification split up into sections.
|
|
||||||
|
|
||||||
.. _OpenAPI: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md
|
|
||||||
.. _JSON Schema: http://json-schema.org/
|
|
||||||
|
|
||||||
Building the specification
|
|
||||||
==========================
|
|
||||||
|
|
||||||
The Matrix Spec is generated by a set of scripts, from the RST documents, API
|
|
||||||
specs and event schemas in this repository.
|
|
||||||
|
|
||||||
Preparation
|
|
||||||
-----------
|
|
||||||
|
|
||||||
To use the scripts, it is best to create a Python 3.4+ virtualenv as follows::
|
|
||||||
|
|
||||||
virtualenv -p python3 env
|
|
||||||
env/bin/pip install -r scripts/requirements.txt
|
|
||||||
|
|
||||||
(Benjamin Synders has contributed a script for `Nix`_ users, which can be
|
|
||||||
invoked with ``nix-shell scripts/contrib/shell.nix``.)
|
|
||||||
|
|
||||||
.. TODO: Possibly we need some libs installed; should record what they are.
|
|
||||||
|
|
||||||
.. _`Nix`: https://nixos.org/nix/
|
|
||||||
|
|
||||||
Generating the specification
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
To rebuild the specification, use ``scripts/gendoc.py``::
|
|
||||||
|
|
||||||
source env/bin/activate
|
|
||||||
./scripts/gendoc.py
|
|
||||||
|
|
||||||
The above will write the rendered version of the specification to
|
|
||||||
``scripts/gen``. To view it, point your browser at ``scripts/gen/index.html``.
|
|
||||||
|
|
||||||
Windows users
|
|
||||||
~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
If you're on Windows Vista or higher, be sure that the "Symbolic Links"
|
|
||||||
option was selected when installing Git prior to cloning this repository. If
|
|
||||||
you're still seeing errors about files not being found it is likely because
|
|
||||||
the symlink at ``api/client-server/definitions/event-schemas`` looks like a
|
|
||||||
file. To correct the problem, open an Administrative/Elevated shell in your
|
|
||||||
cloned matrix-doc directory and run the following::
|
|
||||||
|
|
||||||
cd api\client-server\definitions
|
|
||||||
del event-schemas
|
|
||||||
mklink /D event-schemas "..\..\..\event-schemas"
|
|
||||||
|
|
||||||
This will delete the file and replace it with a symlink. Git should not detect
|
|
||||||
this as a change, and you should be able to go back to building the project.
|
|
||||||
|
|
||||||
Generating the OpenAPI (Swagger) specs
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
`Swagger`_ is a framework for representing RESTful APIs. We use it to generate
|
|
||||||
interactive documentation for our APIs.
|
|
||||||
|
|
||||||
Before the Swagger docs can be used in the Swagger UI (or other tool expecting
|
|
||||||
a Swagger specs, they must be combined into a single json file. This can be
|
|
||||||
done as follows::
|
|
||||||
|
|
||||||
source env/bin/activate
|
|
||||||
./scripts/dump-swagger.py
|
|
||||||
|
|
||||||
By default, ``dump-swagger`` will write to ``scripts/swagger/api-docs.json``.
|
|
||||||
|
|
||||||
To make use of the generated file, there are a number of options:
|
|
||||||
|
|
||||||
* It can be uploaded from your filesystem to an online editor/viewer such as
|
|
||||||
http://editor.swagger.io/
|
|
||||||
* You can run a local HTTP server by running
|
|
||||||
``./scripts/swagger-http-server.py``, and then view the documentation via an
|
|
||||||
online viewer; for example, at
|
|
||||||
http://petstore.swagger.io/?url=http://localhost:8000/api-docs.json
|
|
||||||
* You can host the swagger UI yourself. See
|
|
||||||
https://github.com/swagger-api/swagger-ui#how-to-run for advice on how to do
|
|
||||||
so.
|
|
||||||
|
|
||||||
.. _`Swagger`: http://swagger.io/
|
|
||||||
|
|
||||||
Continuserv
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Continuserv is a script which will rebuild the specification every time a file
|
|
||||||
is changed, and will serve it to a browser over HTTP. It is intended for use by
|
|
||||||
specification authors, so that they can quickly see the effects of their
|
|
||||||
changes.
|
|
||||||
|
|
||||||
It is written in Go, so you will need the ``go`` compiler installed on your
|
|
||||||
computer. You will also need to install fsnotify by running::
|
|
||||||
|
|
||||||
go get gopkg.in/fsnotify/fsnotify.v1
|
|
||||||
|
|
||||||
Then, create a virtualenv as described above under `Preparation`_,
|
|
||||||
and::
|
|
||||||
|
|
||||||
source env/bin/activate
|
|
||||||
go run ./scripts/continuserv/main.go
|
|
||||||
|
|
||||||
You will then be able to view the generated spec by visiting
|
|
||||||
http://localhost:8000/index.html.
|
|
||||||
|
|
||||||
Issue tracking
|
|
||||||
==============
|
|
||||||
|
|
||||||
Issues with the Matrix specification are tracked in `GitHub
|
|
||||||
<https://github.com/matrix-org/matrix-doc/issues>`_.
|
|
||||||
|
|
||||||
See `meta/labels.rst <meta/labels.rst>`_ for notes on what the labels mean.
|
|
@ -1,2 +0,0 @@
|
|||||||
This directory contains swagger-compatible representations of our APIs. See
|
|
||||||
the main README.rst for details on how to make use of them.
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
properties:
|
|
||||||
alias:
|
|
||||||
description: An alias for a matrix room.
|
|
||||||
type: string
|
|
||||||
example: "#freenode_#matrix:matrix.org"
|
|
||||||
protocol:
|
|
||||||
description: The protocol ID that the third party location is a part of.
|
|
||||||
type: string
|
|
||||||
example: "irc"
|
|
||||||
fields:
|
|
||||||
description: Information used to identify this third party location.
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"network": "freenode",
|
|
||||||
"channel": "#matrix"
|
|
||||||
}
|
|
||||||
required: ['alias', 'protocol', 'fields']
|
|
||||||
title: Location
|
|
||||||
type: object
|
|
@ -1,17 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: array
|
|
||||||
description: List of matched third party locations.
|
|
||||||
items:
|
|
||||||
$ref: location.yaml
|
|
@ -1,113 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: Protocol
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
user_fields:
|
|
||||||
description: |-
|
|
||||||
Fields which may be used to identify a third party user. These should be
|
|
||||||
ordered to suggest the way that entities may be grouped, where higher
|
|
||||||
groupings are ordered first. For example, the name of a network should be
|
|
||||||
searched before the nickname of a user.
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: Field used to identify a third party user.
|
|
||||||
example: ["network", "nickname"]
|
|
||||||
location_fields:
|
|
||||||
description: |-
|
|
||||||
Fields which may be used to identify a third party location. These should be
|
|
||||||
ordered to suggest the way that entities may be grouped, where higher
|
|
||||||
groupings are ordered first. For example, the name of a network should be
|
|
||||||
searched before the name of a channel.
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: Field used to identify a third party location.
|
|
||||||
example: ["network", "channel"]
|
|
||||||
icon:
|
|
||||||
description: A content URI representing an icon for the third party protocol.
|
|
||||||
type: string
|
|
||||||
example: "mxc://example.org/aBcDeFgH"
|
|
||||||
field_types:
|
|
||||||
title: Field Types
|
|
||||||
description: |-
|
|
||||||
The type definitions for the fields defined in the ``user_fields`` and
|
|
||||||
``location_fields``. Each entry in those arrays MUST have an entry here. The
|
|
||||||
``string`` key for this object is field name itself.
|
|
||||||
|
|
||||||
May be an empty object if no fields are defined.
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
title: Field Type
|
|
||||||
description: Definition of valid values for a field.
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
regexp:
|
|
||||||
description: |-
|
|
||||||
A regular expression for validation of a field's value. This may be relatively
|
|
||||||
coarse to verify the value as the application service providing this protocol
|
|
||||||
may apply additional validation or filtering.
|
|
||||||
type: string
|
|
||||||
placeholder:
|
|
||||||
description: An placeholder serving as a valid example of the field value.
|
|
||||||
type: string
|
|
||||||
required: ['regexp', 'placeholder']
|
|
||||||
required: ['fieldname']
|
|
||||||
example: {
|
|
||||||
"network": {
|
|
||||||
"regexp": "([a-z0-9]+\\.)*[a-z0-9]+",
|
|
||||||
"placeholder": "irc.example.org"
|
|
||||||
},
|
|
||||||
"nickname": {
|
|
||||||
"regexp": "[^\\s#]+",
|
|
||||||
"placeholder": "username"
|
|
||||||
},
|
|
||||||
"channel": {
|
|
||||||
"regexp": "#[^\\s]+",
|
|
||||||
"placeholder": "#foobar"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
instances:
|
|
||||||
description: |-
|
|
||||||
A list of objects representing independent instances of configuration.
|
|
||||||
For example, multiple networks on IRC if multiple are provided by the
|
|
||||||
same application service.
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Protocol Instance
|
|
||||||
properties:
|
|
||||||
desc:
|
|
||||||
type: string
|
|
||||||
description: A human-readable description for the protocol, such as the name.
|
|
||||||
example: "Freenode"
|
|
||||||
icon:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
An optional content URI representing the protocol. Overrides the one provided
|
|
||||||
at the higher level Protocol object.
|
|
||||||
example: "mxc://example.org/JkLmNoPq"
|
|
||||||
fields:
|
|
||||||
type: object
|
|
||||||
description: Preset values for ``fields`` the client may use to search by.
|
|
||||||
example: {
|
|
||||||
"network": "freenode"
|
|
||||||
}
|
|
||||||
network_id:
|
|
||||||
type: string
|
|
||||||
description: A unique identifier across all instances.
|
|
||||||
example: "freenode"
|
|
||||||
required: ['desc', 'fields', 'network_id']
|
|
||||||
required: ['user_fields', 'location_fields', 'icon', 'field_types', 'instances']
|
|
@ -1,70 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: object
|
|
||||||
description: Dictionary of supported third party protocols.
|
|
||||||
additionalProperties:
|
|
||||||
$ref: protocol.yaml
|
|
||||||
example: {
|
|
||||||
"irc": {
|
|
||||||
"user_fields": ["network", "nickname"],
|
|
||||||
"location_fields": ["network", "channel"],
|
|
||||||
"icon": "mxc://example.org/aBcDeFgH",
|
|
||||||
"field_types": {
|
|
||||||
"network": {
|
|
||||||
"regexp": "([a-z0-9]+\\.)*[a-z0-9]+",
|
|
||||||
"placeholder": "irc.example.org"
|
|
||||||
},
|
|
||||||
"nickname": {
|
|
||||||
"regexp": "[^\\s]+",
|
|
||||||
"placeholder": "username"
|
|
||||||
},
|
|
||||||
"channel": {
|
|
||||||
"regexp": "#[^\\s]+",
|
|
||||||
"placeholder": "#foobar"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"instances": [
|
|
||||||
{
|
|
||||||
"network_id": "freenode",
|
|
||||||
"desc": "Freenode",
|
|
||||||
"icon": "mxc://example.org/JkLmNoPq",
|
|
||||||
"fields": {
|
|
||||||
"network": "freenode.net",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"gitter": {
|
|
||||||
"user_fields": ["username"],
|
|
||||||
"location_fields": ["room"],
|
|
||||||
"field_types": {
|
|
||||||
"username": {
|
|
||||||
"regexp": "@[^\\s]+",
|
|
||||||
"placeholder": "@username"
|
|
||||||
},
|
|
||||||
"room": {
|
|
||||||
"regexp": "[^\\s]+\\/[^\\s]+",
|
|
||||||
"placeholder": "matrix-org/matrix-doc"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"instances": [
|
|
||||||
{
|
|
||||||
"network_id": "gitter",
|
|
||||||
"desc": "Gitter",
|
|
||||||
"icon": "mxc://example.org/zXyWvUt",
|
|
||||||
"fields": {}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
homeserverAccessToken:
|
|
||||||
type: apiKey
|
|
||||||
description: The ``hs_token`` provided by the application service's registration.
|
|
||||||
name: access_token
|
|
||||||
in: query
|
|
@ -1,33 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# TODO: Change userid to user_id as a breaking change
|
|
||||||
properties:
|
|
||||||
userid:
|
|
||||||
description: A Matrix User ID represting a third party user.
|
|
||||||
type: string
|
|
||||||
example: "@_gitter_jim:matrix.org"
|
|
||||||
protocol:
|
|
||||||
description: The protocol ID that the third party location is a part of.
|
|
||||||
type: string
|
|
||||||
example: "gitter"
|
|
||||||
fields:
|
|
||||||
description: Information used to identify this third party location.
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"user": "jim"
|
|
||||||
}
|
|
||||||
required: ['userid', 'protocol', 'fields']
|
|
||||||
title: User
|
|
||||||
type: object
|
|
@ -1,17 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: array
|
|
||||||
description: List of matched third party users.
|
|
||||||
items:
|
|
||||||
$ref: user.yaml
|
|
@ -1,279 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Application Service API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/app/v1
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/thirdparty/protocol/{protocol}":
|
|
||||||
get:
|
|
||||||
summary: Retrieve metadata about a specific protocol that the application service supports.
|
|
||||||
description: |-
|
|
||||||
This API is called by the homeserver when it wants to present clients
|
|
||||||
with specific information about the various third party networks that
|
|
||||||
an application service supports.
|
|
||||||
operationId: getProtocolMetadata
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: protocol
|
|
||||||
type: string
|
|
||||||
description: The protocol ID.
|
|
||||||
required: true
|
|
||||||
x-example: "irc"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The protocol was found and metadata returned.
|
|
||||||
schema:
|
|
||||||
$ref: definitions/protocol_metadata.yaml
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver has not supplied credentials to the application service.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The credentials supplied by the homeserver were rejected.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_FORBIDDEN"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
404:
|
|
||||||
description: No protocol was found with the given path.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
"/thirdparty/user/{protocol}":
|
|
||||||
get:
|
|
||||||
summary: Retrieve the Matrix User ID of a corresponding third party user.
|
|
||||||
description: |-
|
|
||||||
This API is called by the homeserver in order to retrieve a Matrix
|
|
||||||
User ID linked to a user on the third party network, given a set of
|
|
||||||
user parameters.
|
|
||||||
operationId: queryUserByProtocol
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: protocol
|
|
||||||
type: string
|
|
||||||
description: The protocol ID.
|
|
||||||
required: true
|
|
||||||
x-example: irc
|
|
||||||
- in: query
|
|
||||||
name: fields...
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
One or more custom fields that are passed to the application
|
|
||||||
service to help identify the user.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The Matrix User IDs found with the given parameters.
|
|
||||||
schema:
|
|
||||||
$ref: definitions/user_batch.yaml
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver has not supplied credentials to the application service.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The credentials supplied by the homeserver were rejected.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_FORBIDDEN"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
404:
|
|
||||||
description: No users were found with the given parameters.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
"/thirdparty/location/{protocol}":
|
|
||||||
get:
|
|
||||||
summary: Retrieve Matrix-side portal rooms leading to a third party location.
|
|
||||||
description: |-
|
|
||||||
Retrieve a list of Matrix portal rooms that lead to the matched third party location.
|
|
||||||
operationId: queryLocationByProtocol
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: protocol
|
|
||||||
type: string
|
|
||||||
description: The protocol ID.
|
|
||||||
required: true
|
|
||||||
x-example: irc
|
|
||||||
- in: query
|
|
||||||
name: fields...
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
One or more custom fields that are passed to the application
|
|
||||||
service to help identify the third party location.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: At least one portal room was found.
|
|
||||||
schema:
|
|
||||||
$ref: definitions/location_batch.yaml
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver has not supplied credentials to the application service.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The credentials supplied by the homeserver were rejected.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_FORBIDDEN"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
404:
|
|
||||||
description: No mappings were found with the given parameters.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
"/thirdparty/location":
|
|
||||||
get:
|
|
||||||
summary: Reverse-lookup third party locations given a Matrix room alias.
|
|
||||||
description: |-
|
|
||||||
Retrieve an array of third party network locations from a Matrix room
|
|
||||||
alias.
|
|
||||||
operationId: queryLocationByAlias
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: alias
|
|
||||||
type: string
|
|
||||||
description: The Matrix room alias to look up.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
All found third party locations.
|
|
||||||
schema:
|
|
||||||
$ref: definitions/location_batch.yaml
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver has not supplied credentials to the application service.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The credentials supplied by the homeserver were rejected.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_FORBIDDEN"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
404:
|
|
||||||
description: No mappings were found with the given parameters.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
"/thirdparty/user":
|
|
||||||
get:
|
|
||||||
summary: Reverse-lookup third party users given a Matrix User ID.
|
|
||||||
description: |-
|
|
||||||
Retrieve an array of third party users from a Matrix User ID.
|
|
||||||
operationId: queryUserByID
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: userid
|
|
||||||
type: string
|
|
||||||
description: The Matrix User ID to look up.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
An array of third party users.
|
|
||||||
schema:
|
|
||||||
$ref: definitions/user_batch.yaml
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver has not supplied credentials to the application service.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The credentials supplied by the homeserver were rejected.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
404:
|
|
||||||
description: No mappings were found with the given parameters.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
@ -1,90 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Application Service API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/app/v1
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomAlias}":
|
|
||||||
get:
|
|
||||||
summary: Query if a room alias should exist on the application service.
|
|
||||||
description: |-
|
|
||||||
This endpoint is invoked by the homeserver on an application service to query
|
|
||||||
the existence of a given room alias. The homeserver will only query room
|
|
||||||
aliases inside the application service's ``aliases`` namespace. The
|
|
||||||
homeserver will send this request when it receives a request to join a
|
|
||||||
room alias within the application service's namespace.
|
|
||||||
operationId: queryRoomByAlias
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: roomAlias
|
|
||||||
type: string
|
|
||||||
description: The room alias being queried.
|
|
||||||
required: true
|
|
||||||
x-example: "#magicforest:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The application service indicates that this room alias exists. The
|
|
||||||
application service MUST have created a room and associated it with
|
|
||||||
the queried room alias using the client-server API. Additional
|
|
||||||
information about the room such as its name and topic can be set
|
|
||||||
before responding.
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver has not supplied credentials to the application service.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The credentials supplied by the homeserver were rejected.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_FORBIDDEN"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
404:
|
|
||||||
description: |-
|
|
||||||
The application service indicates that this room alias does not exist.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
@ -1,87 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Application Service API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/app/v1
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/users/{userId}":
|
|
||||||
get:
|
|
||||||
summary: Query if a user should exist on the application service.
|
|
||||||
description: |-
|
|
||||||
This endpoint is invoked by the homeserver on an application service to query
|
|
||||||
the existence of a given user ID. The homeserver will only query user IDs
|
|
||||||
inside the application service's ``users`` namespace. The homeserver will
|
|
||||||
send this request when it receives an event for an unknown user ID in
|
|
||||||
the application service's namespace, such as a room invite.
|
|
||||||
operationId: queryUserById
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: userId
|
|
||||||
type: string
|
|
||||||
description: The user ID being queried.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The application service indicates that this user exists. The application
|
|
||||||
service MUST create the user using the client-server API.
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver has not supplied credentials to the application service.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_UNAUTHORIZED"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The credentials supplied by the homeserver were rejected.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_FORBIDDEN"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
||||||
404:
|
|
||||||
description: |-
|
|
||||||
The application service indicates that this user does not exist.
|
|
||||||
Optional error information can be included in the body of this response.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "COM.EXAMPLE.MYAPPSERVICE_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: ../client-server/definitions/errors/error.yaml
|
|
@ -1,78 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Application Service API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/app/v1
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/transactions/{txnId}":
|
|
||||||
put:
|
|
||||||
summary: Send some events to the application service.
|
|
||||||
description: |-
|
|
||||||
This API is called by the homeserver when it wants to push an event
|
|
||||||
(or batch of events) to the application service.
|
|
||||||
|
|
||||||
Note that the application service should distinguish state events
|
|
||||||
from message events via the presence of a ``state_key``, rather than
|
|
||||||
via the event type.
|
|
||||||
operationId: sendTransaction
|
|
||||||
security:
|
|
||||||
- homeserverAccessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: txnId
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The transaction ID for this set of events. Homeservers generate
|
|
||||||
these IDs and they are used to ensure idempotency of requests.
|
|
||||||
required: true
|
|
||||||
x-example: "35"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: A list of events.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"events": [
|
|
||||||
{"$ref": "../../event-schemas/examples/m.room.member"},
|
|
||||||
{"$ref": "../../event-schemas/examples/m.room.message$m.text"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
description: Transaction information
|
|
||||||
properties:
|
|
||||||
events:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of events, formatted as per the Client-Server API.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Event
|
|
||||||
required: ["events"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The transaction was processed successfully.
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
@ -1,157 +0,0 @@
|
|||||||
#! /usr/bin/env python
|
|
||||||
#
|
|
||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import json
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
def import_error(module, package, debian, error):
|
|
||||||
sys.stderr.write((
|
|
||||||
"Error importing %(module)s: %(error)r\n"
|
|
||||||
"To install %(module)s run:\n"
|
|
||||||
" pip install %(package)s\n"
|
|
||||||
"or on Debian run:\n"
|
|
||||||
" sudo apt-get install python-%(debian)s\n"
|
|
||||||
) % locals())
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
try:
|
|
||||||
import jsonschema
|
|
||||||
except ImportError as e:
|
|
||||||
import_error("jsonschema", "jsonschema", "jsonschema", e)
|
|
||||||
raise
|
|
||||||
|
|
||||||
try:
|
|
||||||
import yaml
|
|
||||||
except ImportError as e:
|
|
||||||
import_error("yaml", "PyYAML", "yaml", e)
|
|
||||||
raise
|
|
||||||
|
|
||||||
|
|
||||||
def check_schema(filepath, example, schema):
|
|
||||||
example = resolve_references(filepath, example)
|
|
||||||
schema = resolve_references(filepath, schema)
|
|
||||||
resolver = jsonschema.RefResolver(filepath, schema, handlers={"file": load_file})
|
|
||||||
jsonschema.validate(example, schema, resolver=resolver)
|
|
||||||
|
|
||||||
|
|
||||||
def check_parameter(filepath, request, parameter):
|
|
||||||
schema = parameter.get("schema")
|
|
||||||
example = schema.get('example')
|
|
||||||
|
|
||||||
if example and schema:
|
|
||||||
try:
|
|
||||||
print("Checking request schema for: %r %r" % (
|
|
||||||
filepath, request
|
|
||||||
))
|
|
||||||
check_schema(filepath, example, schema)
|
|
||||||
except Exception as e:
|
|
||||||
raise ValueError("Error validating JSON schema for %r" % (
|
|
||||||
request
|
|
||||||
), e)
|
|
||||||
|
|
||||||
|
|
||||||
def check_response(filepath, request, code, response):
|
|
||||||
example = response.get('examples', {}).get('application/json')
|
|
||||||
schema = response.get('schema')
|
|
||||||
if example and schema:
|
|
||||||
try:
|
|
||||||
print ("Checking response schema for: %r %r %r" % (
|
|
||||||
filepath, request, code
|
|
||||||
))
|
|
||||||
check_schema(filepath, example, schema)
|
|
||||||
except jsonschema.SchemaError as error:
|
|
||||||
for suberror in sorted(error.context, key=lambda e: e.schema_path):
|
|
||||||
print(list(suberror.schema_path), suberror.message, sep=", ")
|
|
||||||
raise ValueError("Error validating JSON schema for %r %r" % (
|
|
||||||
request, code
|
|
||||||
), e)
|
|
||||||
except Exception as e:
|
|
||||||
raise ValueError("Error validating JSON schema for %r %r" % (
|
|
||||||
request, code
|
|
||||||
), e)
|
|
||||||
|
|
||||||
|
|
||||||
def check_swagger_file(filepath):
|
|
||||||
with open(filepath) as f:
|
|
||||||
swagger = yaml.load(f)
|
|
||||||
|
|
||||||
for path, path_api in swagger.get('paths', {}).items():
|
|
||||||
|
|
||||||
for method, request_api in path_api.items():
|
|
||||||
request = "%s %s" % (method.upper(), path)
|
|
||||||
for parameter in request_api.get('parameters', ()):
|
|
||||||
if parameter['in'] == 'body':
|
|
||||||
check_parameter(filepath, request, parameter)
|
|
||||||
|
|
||||||
try:
|
|
||||||
responses = request_api['responses']
|
|
||||||
except KeyError:
|
|
||||||
raise ValueError("No responses for %r" % (request,))
|
|
||||||
for code, response in responses.items():
|
|
||||||
check_response(filepath, request, code, response)
|
|
||||||
|
|
||||||
|
|
||||||
def resolve_references(path, schema):
|
|
||||||
if isinstance(schema, dict):
|
|
||||||
# do $ref first
|
|
||||||
if '$ref' in schema:
|
|
||||||
value = schema['$ref']
|
|
||||||
path = os.path.abspath(os.path.join(os.path.dirname(path), value))
|
|
||||||
ref = load_file("file://" + path)
|
|
||||||
result = resolve_references(path, ref)
|
|
||||||
del schema['$ref']
|
|
||||||
else:
|
|
||||||
result = {}
|
|
||||||
|
|
||||||
for key, value in schema.items():
|
|
||||||
result[key] = resolve_references(path, value)
|
|
||||||
return result
|
|
||||||
elif isinstance(schema, list):
|
|
||||||
return [resolve_references(path, value) for value in schema]
|
|
||||||
else:
|
|
||||||
return schema
|
|
||||||
|
|
||||||
|
|
||||||
def load_file(path):
|
|
||||||
print("Loading reference: %s" % path)
|
|
||||||
if not path.startswith("file://"):
|
|
||||||
raise Exception("Bad ref: %s" % (path,))
|
|
||||||
path = path[len("file://"):]
|
|
||||||
with open(path, "r") as f:
|
|
||||||
if path.endswith(".json"):
|
|
||||||
return json.load(f)
|
|
||||||
else:
|
|
||||||
# We have to assume it's YAML because some of the YAML examples
|
|
||||||
# do not have file extensions.
|
|
||||||
return yaml.load(f)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
paths = sys.argv[1:]
|
|
||||||
if not paths:
|
|
||||||
paths = []
|
|
||||||
for (root, dirs, files) in os.walk(os.curdir):
|
|
||||||
for filename in files:
|
|
||||||
if filename.endswith(".yaml"):
|
|
||||||
paths.append(os.path.join(root, filename))
|
|
||||||
for path in paths:
|
|
||||||
try:
|
|
||||||
check_swagger_file(path)
|
|
||||||
except Exception as e:
|
|
||||||
raise ValueError("Error checking file %r" % (path,), e)
|
|
@ -1,197 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Client Config API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/user/{userId}/account_data/{type}":
|
|
||||||
put:
|
|
||||||
summary: Set some account_data for the user.
|
|
||||||
description: |-
|
|
||||||
Set some account_data for the client. This config is only visible to the user
|
|
||||||
that set the account_data. The config will be synced to clients in the
|
|
||||||
top-level ``account_data``.
|
|
||||||
operationId: setAccountData
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the user to set account_data for. The access token must be
|
|
||||||
authorized to make requests for this user ID.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: type
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The event type of the account_data to set. Custom types should be
|
|
||||||
namespaced to avoid clashes.
|
|
||||||
x-example: "org.example.custom.config"
|
|
||||||
- in: body
|
|
||||||
name: content
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The content of the account_data
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"custom_account_data_key": "custom_config_value"}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The account_data was successfully added.
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
get:
|
|
||||||
summary: Get some account_data for the user.
|
|
||||||
description: |-
|
|
||||||
Get some account_data for the client. This config is only visible to the user
|
|
||||||
that set the account_data.
|
|
||||||
operationId: getAccountData
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the user to get account_data for. The access token must be
|
|
||||||
authorized to make requests for this user ID.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: type
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The event type of the account_data to get. Custom types should be
|
|
||||||
namespaced to avoid clashes.
|
|
||||||
x-example: "org.example.custom.config"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The account data content for the given type.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"custom_account_data_key": "custom_config_value"}
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/user/{userId}/rooms/{roomId}/account_data/{type}":
|
|
||||||
put:
|
|
||||||
summary: Set some account_data for the user.
|
|
||||||
description: |-
|
|
||||||
Set some account_data for the client on a given room. This config is only
|
|
||||||
visible to the user that set the account_data. The config will be synced to
|
|
||||||
clients in the per-room ``account_data``.
|
|
||||||
operationId: setAccountDataPerRoom
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the user to set account_data for. The access token must be
|
|
||||||
authorized to make requests for this user ID.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the room to set account_data on.
|
|
||||||
x-example: "!726s6s6q:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: type
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The event type of the account_data to set. Custom types should be
|
|
||||||
namespaced to avoid clashes.
|
|
||||||
x-example: "org.example.custom.room.config"
|
|
||||||
- in: body
|
|
||||||
name: content
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The content of the account_data
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"custom_account_data_key": "custom_account_data_value"}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The account_data was successfully added.
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
get:
|
|
||||||
summary: Get some account_data for the user.
|
|
||||||
description: |-
|
|
||||||
Get some account_data for the client on a given room. This config is only
|
|
||||||
visible to the user that set the account_data.
|
|
||||||
operationId: getAccountDataPerRoom
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the user to set account_data for. The access token must be
|
|
||||||
authorized to make requests for this user ID.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the room to get account_data for.
|
|
||||||
x-example: "!726s6s6q:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: type
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The event type of the account_data to get. Custom types should be
|
|
||||||
namespaced to avoid clashes.
|
|
||||||
x-example: "org.example.custom.room.config"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The account data content for the given type.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"custom_account_data_key": "custom_config_value"}
|
|
||||||
tags:
|
|
||||||
- User data
|
|
@ -1,115 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Administration API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/admin/whois/{userId}":
|
|
||||||
get:
|
|
||||||
summary: Gets information about a particular user.
|
|
||||||
description: |-
|
|
||||||
Gets information about a particular user.
|
|
||||||
|
|
||||||
This API may be restricted to only be called by the user being looked
|
|
||||||
up, or by a server admin. Server-local administrator privileges are not
|
|
||||||
specified in this document.
|
|
||||||
operationId: getWhoIs
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user to look up.
|
|
||||||
required: true
|
|
||||||
x-example: "@peter:rabbit.rocks"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The lookup was successful.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"user_id": "@peter:rabbit.rocks",
|
|
||||||
"devices": {
|
|
||||||
"teapot": {
|
|
||||||
"sessions": [
|
|
||||||
{
|
|
||||||
"connections": [
|
|
||||||
{
|
|
||||||
"ip": "127.0.0.1",
|
|
||||||
"last_seen": 1411996332123,
|
|
||||||
"user_agent": "curl/7.31.0-DEV"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ip": "10.0.0.2",
|
|
||||||
"last_seen": 1411996332123,
|
|
||||||
"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: The Matrix user ID of the user.
|
|
||||||
devices:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Each key is an identitfier for one of the user's devices.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
title: DeviceInfo
|
|
||||||
properties:
|
|
||||||
sessions:
|
|
||||||
type: array
|
|
||||||
description: A user's sessions (i.e. what they did with an access token from one login).
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: SessionInfo
|
|
||||||
properties:
|
|
||||||
connections:
|
|
||||||
type: array
|
|
||||||
description: Information particular connections in the session.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: ConnectionInfo
|
|
||||||
properties:
|
|
||||||
ip:
|
|
||||||
type: string
|
|
||||||
description: Most recently seen IP address of the session.
|
|
||||||
last_seen:
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
description: Unix timestamp that the session was last active.
|
|
||||||
user_agent:
|
|
||||||
type: string
|
|
||||||
description: User agent string last seen in the session.
|
|
||||||
tags:
|
|
||||||
- Server administration
|
|
@ -1,327 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Account Administrative Contact API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/account/3pid":
|
|
||||||
get:
|
|
||||||
summary: Gets a list of a user's third party identifiers.
|
|
||||||
description: |-
|
|
||||||
Gets a list of the third party identifiers that the homeserver has
|
|
||||||
associated with the user's account.
|
|
||||||
|
|
||||||
This is *not* the same as the list of third party identifiers bound to
|
|
||||||
the user's Matrix ID in identity servers.
|
|
||||||
|
|
||||||
Identifiers in this list may be used by the homeserver as, for example,
|
|
||||||
identifiers that it will accept to reset the user's account password.
|
|
||||||
operationId: getAccount3PIDs
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The lookup was successful.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"threepids": [
|
|
||||||
{
|
|
||||||
"medium": "email",
|
|
||||||
"address": "monkey@banana.island",
|
|
||||||
"validated_at": 1535176800000,
|
|
||||||
"added_at": 1535336848756
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
threepids:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Third party identifier
|
|
||||||
properties:
|
|
||||||
medium:
|
|
||||||
type: string
|
|
||||||
description: The medium of the third party identifier.
|
|
||||||
enum: ["email", "msisdn"]
|
|
||||||
address:
|
|
||||||
type: string
|
|
||||||
description: The third party identifier address.
|
|
||||||
validated_at:
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
description: |-
|
|
||||||
The timestamp, in milliseconds, when the identifier was
|
|
||||||
validated by the identity server.
|
|
||||||
added_at:
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
description:
|
|
||||||
The timestamp, in milliseconds, when the homeserver
|
|
||||||
associated the third party identifier with the user.
|
|
||||||
required: ['medium', 'address', 'validated_at', 'added_at']
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
post:
|
|
||||||
summary: Adds contact information to the user's account.
|
|
||||||
description: Adds contact information to the user's account.
|
|
||||||
operationId: post3PIDs
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
three_pid_creds:
|
|
||||||
title: "ThreePidCredentials"
|
|
||||||
type: object
|
|
||||||
description: The third party credentials to associate with the account.
|
|
||||||
properties:
|
|
||||||
client_secret:
|
|
||||||
type: string
|
|
||||||
description: The client secret used in the session with the identity server.
|
|
||||||
id_server:
|
|
||||||
type: string
|
|
||||||
description: The identity server to use.
|
|
||||||
sid:
|
|
||||||
type: string
|
|
||||||
description: The session identifier given by the identity server.
|
|
||||||
required: ["client_secret", "id_server", "sid"]
|
|
||||||
bind:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether the homeserver should also bind this third party
|
|
||||||
identifier to the account's Matrix ID with the passed identity
|
|
||||||
server. Default: ``false``.
|
|
||||||
x-example: true
|
|
||||||
required: ["three_pid_creds"]
|
|
||||||
example: {
|
|
||||||
"three_pid_creds": {
|
|
||||||
"id_server": "matrix.org",
|
|
||||||
"sid": "abc123987",
|
|
||||||
"client_secret": "d0n'tT3ll"
|
|
||||||
},
|
|
||||||
"bind": false
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The addition was successful.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"submit_url": "https://example.org/path/to/submitToken"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
submit_url:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
An optional field containing a URL where the client must
|
|
||||||
submit the validation token to, with identical parameters
|
|
||||||
to the Identity Service API's ``POST
|
|
||||||
/validate/email/submitToken`` endpoint. The homeserver must
|
|
||||||
send this token to the user (if applicable), who should
|
|
||||||
then be prompted to provide it to the client.
|
|
||||||
|
|
||||||
If this field is not present, the client can assume that
|
|
||||||
verification will happen without the client's involvement
|
|
||||||
provided the homeserver advertises this specification version
|
|
||||||
in the ``/versions`` response (ie: r0.5.0).
|
|
||||||
example: "https://example.org/path/to/submitToken"
|
|
||||||
403:
|
|
||||||
description: The credentials could not be verified with the identity server.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_AUTH_FAILED",
|
|
||||||
"error": "The third party credentials could not be verified by the identity server."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/account/3pid/delete":
|
|
||||||
post:
|
|
||||||
summary: Deletes a third party identifier from the user's account
|
|
||||||
description: |-
|
|
||||||
Removes a third party identifier from the user's account. This might not
|
|
||||||
cause an unbind of the identifier from the identity server.
|
|
||||||
operationId: delete3pidFromAccount
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id_server:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The identity server to unbind from. If not provided, the homeserver
|
|
||||||
MUST use the ``id_server`` the identifier was added through. If the
|
|
||||||
homeserver does not know the original ``id_server``, it MUST return
|
|
||||||
a ``id_server_unbind_result`` of ``no-support``.
|
|
||||||
example: "example.org"
|
|
||||||
medium:
|
|
||||||
type: string
|
|
||||||
description: The medium of the third party identifier being removed.
|
|
||||||
enum: ["email", "msisdn"]
|
|
||||||
example: "email"
|
|
||||||
address:
|
|
||||||
type: string
|
|
||||||
description: The third party address being removed.
|
|
||||||
example: "example@example.org"
|
|
||||||
required: ['medium', 'address']
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The homeserver has disassociated the third party identifier from the
|
|
||||||
user.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id_server_unbind_result:
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
# XXX: I don't know why, but the order matters here so that "no-support"
|
|
||||||
# doesn't become "no- support" by the renderer.
|
|
||||||
- "no-support"
|
|
||||||
- "success"
|
|
||||||
description: |-
|
|
||||||
An indicator as to whether or not the homeserver was able to unbind
|
|
||||||
the 3PID from the identity server. ``success`` indicates that the
|
|
||||||
indentity server has unbound the identifier whereas ``no-support``
|
|
||||||
indicates that the identity server refuses to support the request
|
|
||||||
or the homeserver was not able to determine an identity server to
|
|
||||||
unbind from.
|
|
||||||
example: "success"
|
|
||||||
required:
|
|
||||||
- id_server_unbind_result
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/account/3pid/email/requestToken":
|
|
||||||
post:
|
|
||||||
summary: Begins the validation process for an email address for association with the user's account.
|
|
||||||
description: |-
|
|
||||||
The homeserver must check that the given email address is **not**
|
|
||||||
already associated with an account on this homeserver. This API should
|
|
||||||
be used to request validation tokens when adding an email address to an
|
|
||||||
account. This API's parameters and response are identical to that of
|
|
||||||
the |/register/email/requestToken|_ endpoint. The homeserver has the
|
|
||||||
choice of validating the email address itself, or proxying the request
|
|
||||||
to the ``/validate/email/requestToken`` Identity Service API as
|
|
||||||
identified by ``id_server``. It is imperative that the
|
|
||||||
homeserver keep a list of trusted Identity Servers and only proxies to
|
|
||||||
those that it trusts.
|
|
||||||
operationId: requestTokenTo3PIDEmail
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: "../identity/definitions/request_email_validation.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
An email was sent to the given address. Note that this may be an
|
|
||||||
email containing the validation token or it may be informing the
|
|
||||||
user of an error.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/request_token_response.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The homeserver does not allow the third party identifier as a
|
|
||||||
contact option.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_DENIED",
|
|
||||||
"error": "Third party identifier is not allowed"
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
The third party identifier is already in use on the homeserver, or
|
|
||||||
the request was invalid.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_IN_USE",
|
|
||||||
"error": "Third party identifier already in use"
|
|
||||||
}
|
|
||||||
"/account/3pid/msisdn/requestToken":
|
|
||||||
post:
|
|
||||||
summary: Begins the validation process for a phone number for association with the user's account.
|
|
||||||
description: |-
|
|
||||||
The homeserver must check that the given phone number is **not**
|
|
||||||
already associated with an account on this homeserver. This API should
|
|
||||||
be used to request validation tokens when adding a phone number to an
|
|
||||||
account. This API's parameters and response are identical to that of
|
|
||||||
the |/register/msisdn/requestToken|_ endpoint. The homeserver has the
|
|
||||||
choice of validating the phone number itself, or proxying the request
|
|
||||||
to the ``/validate/msisdn/requestToken`` Identity Service API as
|
|
||||||
identified by ``id_server``. It is imperative that the
|
|
||||||
homeserver keep a list of trusted Identity Servers and only proxies to
|
|
||||||
those that it trusts.
|
|
||||||
operationId: requestTokenTo3PIDMSISDN
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: "../identity/definitions/request_msisdn_validation.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: An SMS message was sent to the given phone number.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/request_token_response.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The homeserver does not allow the third party identifier as a
|
|
||||||
contact option.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_DENIED",
|
|
||||||
"error": "Third party identifier is not allowed"
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
The third party identifier is already in use on the homeserver, or
|
|
||||||
the request was invalid.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_IN_USE",
|
|
||||||
"error": "Third party identifier already in use"
|
|
||||||
}
|
|
@ -1,88 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Application Service Room Directory API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
# Note: this is the same access_token definition used elsewhere in the client
|
|
||||||
# server API, however this expects an access token for an application service.
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/directory/list/appservice/{networkId}/{roomId}":
|
|
||||||
put:
|
|
||||||
summary: |-
|
|
||||||
Updates a room's visibility in the application service's room directory.
|
|
||||||
description: |-
|
|
||||||
Updates the visibility of a given room on the application service's room
|
|
||||||
directory.
|
|
||||||
|
|
||||||
This API is similar to the room directory visibility API used by clients
|
|
||||||
to update the homeserver's more general room directory.
|
|
||||||
|
|
||||||
This API requires the use of an application service access token (``as_token``)
|
|
||||||
instead of a typical client's access_token. This API cannot be invoked by
|
|
||||||
users who are not identified as application services.
|
|
||||||
operationId: updateAppserviceRoomDirectoryVsibility
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: networkId
|
|
||||||
description: |-
|
|
||||||
The protocol (network) ID to update the room list for. This would
|
|
||||||
have been provided by the application service as being listed as
|
|
||||||
a supported protocol.
|
|
||||||
required: true
|
|
||||||
x-example: "irc"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room ID to add to the directory.
|
|
||||||
required: true
|
|
||||||
x-example: "!somewhere:example.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
visibility:
|
|
||||||
type: string
|
|
||||||
enum: ["public", "private"]
|
|
||||||
description: |-
|
|
||||||
Whether the room should be visible (public) in the directory
|
|
||||||
or not (private).
|
|
||||||
example: "public"
|
|
||||||
required: ['visibility']
|
|
||||||
security:
|
|
||||||
# again, this is the appservice's token - not a typical client's
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The room's directory visibility has been updated.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
tags:
|
|
||||||
- Application service room directory management
|
|
@ -1,142 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Banning API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/ban":
|
|
||||||
post:
|
|
||||||
summary: Ban a user in the room.
|
|
||||||
description: |-
|
|
||||||
Ban a user in the room. If the user is currently in the room, also kick them.
|
|
||||||
|
|
||||||
When a user is banned from a room, they may not join it or be invited to it until they are unbanned.
|
|
||||||
|
|
||||||
The caller must have the required power level in order to perform this operation.
|
|
||||||
operationId: ban
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier (not alias) from which the user should be banned.
|
|
||||||
required: true
|
|
||||||
x-example: "!e42d8c:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"reason": "Telling unfunny jokes",
|
|
||||||
"user_id": "@cheeky_monkey:matrix.org"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: The fully qualified user ID of the user being banned.
|
|
||||||
reason:
|
|
||||||
type: string
|
|
||||||
description: The reason the user has been banned. This will be supplied as the
|
|
||||||
``reason`` on the target's updated `m.room.member`_ event.
|
|
||||||
required: ["user_id"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user has been kicked and banned from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
You do not have permission to ban the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
|
|
||||||
|
|
||||||
- The banner is not currently in the room.
|
|
||||||
- The banner's power level is insufficient to ban users from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "You do not have a high enough power level to ban from this room."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
||||||
"/rooms/{roomId}/unban":
|
|
||||||
post:
|
|
||||||
summary: Unban a user from the room.
|
|
||||||
description: |-
|
|
||||||
Unban a user from the room. This allows them to be invited to the room,
|
|
||||||
and join if they would otherwise be allowed to join according to its join rules.
|
|
||||||
|
|
||||||
The caller must have the required power level in order to perform this operation.
|
|
||||||
operationId: unban
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier (not alias) from which the user should be unbanned.
|
|
||||||
required: true
|
|
||||||
x-example: "!e42d8c:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"user_id": "@cheeky_monkey:matrix.org"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: The fully qualified user ID of the user being unbanned.
|
|
||||||
required: ["user_id"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user has been unbanned from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
You do not have permission to unban the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
|
|
||||||
|
|
||||||
- The unbanner's power level is insufficient to unban users from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "You do not have a high enough power level to unban from this room."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
@ -1,112 +0,0 @@
|
|||||||
# Copyright 2019 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Capabiltiies API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/capabilities":
|
|
||||||
get:
|
|
||||||
summary: Gets information about the server's capabilities.
|
|
||||||
description: |-
|
|
||||||
Gets information about the server's supported feature set
|
|
||||||
and other relevant capabilities.
|
|
||||||
operationId: getCapabilities
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The capabilities of the server.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"capabilities": {
|
|
||||||
"m.change_password": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"m.room_versions": {
|
|
||||||
"default": "1",
|
|
||||||
"available": {
|
|
||||||
"1": "stable",
|
|
||||||
"2": "stable",
|
|
||||||
"3": "unstable",
|
|
||||||
"test-version": "unstable"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.example.custom.ratelimit": {
|
|
||||||
"max_requests_per_hour": 600
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
required: ["capabilities"]
|
|
||||||
properties:
|
|
||||||
capabilities:
|
|
||||||
type: object
|
|
||||||
title: Capabilities
|
|
||||||
description: |-
|
|
||||||
The custom capabilities the server supports, using the
|
|
||||||
Java package naming convention.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
"m.change_password":
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Capability to indicate if the user can change their password.
|
|
||||||
title: ChangePasswordCapability
|
|
||||||
properties:
|
|
||||||
enabled:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
True if the user can change their password, false otherwise.
|
|
||||||
example: false
|
|
||||||
required: ['enabled']
|
|
||||||
"m.room_versions":
|
|
||||||
type: object
|
|
||||||
description: The room versions the server supports.
|
|
||||||
title: RoomVersionsCapability
|
|
||||||
properties:
|
|
||||||
default:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The default room version the server is using for new rooms.
|
|
||||||
example: "1"
|
|
||||||
available:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
A detailed description of the room versions the server supports.
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
title: RoomVersionStability
|
|
||||||
enum: [stable, unstable]
|
|
||||||
description: The stability of the room version.
|
|
||||||
required: ['default', 'available']
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Capabilities
|
|
@ -1,438 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2019 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Content Repository API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/media/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
- "*/*"
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
- "*/*"
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/upload":
|
|
||||||
post:
|
|
||||||
summary: Upload some content to the content repository.
|
|
||||||
operationId: uploadContent
|
|
||||||
produces: ["application/json"]
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: header
|
|
||||||
name: Content-Type
|
|
||||||
type: string
|
|
||||||
description: The content type of the file being uploaded
|
|
||||||
x-example: "Content-Type: application/pdf"
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
x-example: "War and Peace.pdf"
|
|
||||||
name: filename
|
|
||||||
description: The name of the file being uploaded
|
|
||||||
- in: body
|
|
||||||
name: "<content>"
|
|
||||||
description: The content to be uploaded.
|
|
||||||
required: true
|
|
||||||
x-example: "<bytes>" # so the spec shows "<bytes>" without quotes.
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
example: "<bytes>"
|
|
||||||
format: byte
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The `MXC URI`_ for the uploaded content.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
required: ["content_uri"]
|
|
||||||
properties:
|
|
||||||
content_uri:
|
|
||||||
type: string
|
|
||||||
description: "The `MXC URI`_ to the uploaded content."
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"content_uri": "mxc://example.com/AQwafuaFswefuhsfAFAgsw"
|
|
||||||
}
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The user does not have permission to upload the content. Some reasons for this error include:
|
|
||||||
|
|
||||||
- The server does not permit the file type.
|
|
||||||
- The user has reached a quota for uploaded content.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "Cannot upload this content"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
413:
|
|
||||||
description: |-
|
|
||||||
The uploaded content is too large for the server.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_TOO_LARGE",
|
|
||||||
"error": "Cannot upload files larger than 100mb"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Media
|
|
||||||
"/download/{serverName}/{mediaId}":
|
|
||||||
get:
|
|
||||||
summary: "Download content from the content repository."
|
|
||||||
operationId: getContent
|
|
||||||
produces: ["*/*"]
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: serverName
|
|
||||||
x-example: matrix.org
|
|
||||||
required: true
|
|
||||||
description: |
|
|
||||||
The server name from the ``mxc://`` URI (the authoritory component)
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: mediaId
|
|
||||||
x-example: ascERGshawAWawugaAcauga
|
|
||||||
required: true
|
|
||||||
description: |
|
|
||||||
The media ID from the ``mxc://`` URI (the path component)
|
|
||||||
- in: query
|
|
||||||
type: boolean
|
|
||||||
name: allow_remote
|
|
||||||
x-example: false
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
description: |
|
|
||||||
Indicates to the server that it should not attempt to fetch the media if it is deemed
|
|
||||||
remote. This is to prevent routing loops where the server contacts itself. Defaults to
|
|
||||||
true if not provided.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "The content that was previously uploaded."
|
|
||||||
headers:
|
|
||||||
Content-Type:
|
|
||||||
description: "The content type of the file that was previously uploaded."
|
|
||||||
type: "string"
|
|
||||||
Content-Disposition:
|
|
||||||
description: |-
|
|
||||||
The name of the file that was previously uploaded, if set.
|
|
||||||
type: "string"
|
|
||||||
schema:
|
|
||||||
type: file
|
|
||||||
# This is a workaround for us not being able to say the response is required.
|
|
||||||
description: "**Required.** The bytes for the uploaded file."
|
|
||||||
502:
|
|
||||||
description: |-
|
|
||||||
The content is too large for the server to serve.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_TOO_LARGE",
|
|
||||||
"error": "Content is too large to serve"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Media
|
|
||||||
"/download/{serverName}/{mediaId}/{fileName}":
|
|
||||||
get:
|
|
||||||
summary: |-
|
|
||||||
Download content from the content repository. This is the same as
|
|
||||||
the download endpoint above, except permitting a desired file name.
|
|
||||||
operationId: getContentOverrideName
|
|
||||||
produces: ["*/*"]
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: serverName
|
|
||||||
x-example: matrix.org
|
|
||||||
required: true
|
|
||||||
description: |
|
|
||||||
The server name from the ``mxc://`` URI (the authoritory component)
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: mediaId
|
|
||||||
x-example: ascERGshawAWawugaAcauga
|
|
||||||
required: true
|
|
||||||
description: |
|
|
||||||
The media ID from the ``mxc://`` URI (the path component)
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: fileName
|
|
||||||
x-example: filename.jpg
|
|
||||||
required: true
|
|
||||||
description: A filename to give in the ``Content-Disposition`` header.
|
|
||||||
- in: query
|
|
||||||
type: boolean
|
|
||||||
name: allow_remote
|
|
||||||
x-example: false
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
description: |
|
|
||||||
Indicates to the server that it should not attempt to fetch the media if it is deemed
|
|
||||||
remote. This is to prevent routing loops where the server contacts itself. Defaults to
|
|
||||||
true if not provided.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "The content that was previously uploaded."
|
|
||||||
headers:
|
|
||||||
Content-Type:
|
|
||||||
description: "The content type of the file that was previously uploaded."
|
|
||||||
type: "string"
|
|
||||||
Content-Disposition:
|
|
||||||
description: |-
|
|
||||||
The ``fileName`` requested or the name of the file that was previously
|
|
||||||
uploaded, if set.
|
|
||||||
type: "string"
|
|
||||||
schema:
|
|
||||||
type: file
|
|
||||||
# This is a workaround for us not being able to say the response is required.
|
|
||||||
description: "**Required.** The bytes for the uploaded file."
|
|
||||||
502:
|
|
||||||
description: |-
|
|
||||||
The content is too large for the server to serve.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_TOO_LARGE",
|
|
||||||
"error": "Content is too large to serve"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Media
|
|
||||||
"/thumbnail/{serverName}/{mediaId}":
|
|
||||||
get:
|
|
||||||
summary: |-
|
|
||||||
Download a thumbnail of content from the content repository. See the `thumbnailing <#thumbnails>`_
|
|
||||||
section for more information.
|
|
||||||
operationId: getContentThumbnail
|
|
||||||
produces: ["image/jpeg", "image/png"]
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: serverName
|
|
||||||
required: true
|
|
||||||
x-example: example.org
|
|
||||||
description: |
|
|
||||||
The server name from the ``mxc://`` URI (the authoritory component)
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: mediaId
|
|
||||||
x-example: ascERGshawAWawugaAcauga
|
|
||||||
required: true
|
|
||||||
description: |
|
|
||||||
The media ID from the ``mxc://`` URI (the path component)
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
x-example: 64
|
|
||||||
name: width
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The *desired* width of the thumbnail. The actual thumbnail may be
|
|
||||||
larger than the size specified.
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
x-example: 64
|
|
||||||
name: height
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The *desired* height of the thumbnail. The actual thumbnail may be
|
|
||||||
larger than the size specified.
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
enum: ["crop", "scale"]
|
|
||||||
name: method
|
|
||||||
x-example: "scale"
|
|
||||||
description: |-
|
|
||||||
The desired resizing method. See the `thumbnailing <#thumbnails>`_
|
|
||||||
section for more information.
|
|
||||||
- in: query
|
|
||||||
type: boolean
|
|
||||||
name: allow_remote
|
|
||||||
x-example: false
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
description: |
|
|
||||||
Indicates to the server that it should not attempt to fetch the media if it is deemed
|
|
||||||
remote. This is to prevent routing loops where the server contacts itself. Defaults to
|
|
||||||
true if not provided.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "A thumbnail of the requested content."
|
|
||||||
headers:
|
|
||||||
Content-Type:
|
|
||||||
description: "The content type of the thumbnail."
|
|
||||||
type: "string"
|
|
||||||
enum: ["image/jpeg", "image/png"]
|
|
||||||
schema:
|
|
||||||
type: file
|
|
||||||
# This is a workaround for us not being able to say the response is required.
|
|
||||||
description: "**Required.** The bytes for the thumbnail."
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
The request does not make sense to the server, or the server cannot thumbnail
|
|
||||||
the content. For example, the client requested non-integer dimensions or asked
|
|
||||||
for negatively-sized images.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_UNKNOWN",
|
|
||||||
"error": "Cannot generate thumbnails for the requested content"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
413:
|
|
||||||
description: |-
|
|
||||||
The local content is too large for the server to thumbnail.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_TOO_LARGE",
|
|
||||||
"error": "Content is too large to thumbnail"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
502:
|
|
||||||
description: |-
|
|
||||||
The remote content is too large for the server to thumbnail.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_TOO_LARGE",
|
|
||||||
"error": "Content is too large to thumbnail"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Media
|
|
||||||
"/preview_url":
|
|
||||||
get:
|
|
||||||
summary: "Get information about a URL for a client"
|
|
||||||
operationId: getUrlPreview
|
|
||||||
produces: ["application/json"]
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
x-example: "https://matrix.org"
|
|
||||||
name: url
|
|
||||||
description: "The URL to get a preview of."
|
|
||||||
required: true
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
x-example: 1510610716656
|
|
||||||
name: ts
|
|
||||||
description: |-
|
|
||||||
The preferred point in time to return a preview for. The server may
|
|
||||||
return a newer version if it does not have the requested version
|
|
||||||
available.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The OpenGraph data for the URL, which may be empty. Some values are
|
|
||||||
replaced with matrix equivalents if they are provided in the response.
|
|
||||||
The differences from the OpenGraph protocol are described here.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
"matrix:image:size":
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
description: |-
|
|
||||||
The byte-size of the image. Omitted if there is no image attached.
|
|
||||||
"og:image":
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
An `MXC URI`_ to the image. Omitted if there is no image.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"og:title": "Matrix Blog Post",
|
|
||||||
"og:description": "This is a really cool blog post from matrix.org",
|
|
||||||
"og:image": "mxc://example.com/ascERGshawAWawugaAcauga",
|
|
||||||
"og:image:type": "image/png",
|
|
||||||
"og:image:height": 48,
|
|
||||||
"og:image:width": 48,
|
|
||||||
"matrix:image:size": 102400
|
|
||||||
}
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Media
|
|
||||||
"/config":
|
|
||||||
get:
|
|
||||||
summary: Get the configuration for the content repository.
|
|
||||||
description: |-
|
|
||||||
This endpoint allows clients to retrieve the configuration of the content
|
|
||||||
repository, such as upload limitations.
|
|
||||||
Clients SHOULD use this as a guide when using content repository endpoints.
|
|
||||||
All values are intentionally left optional. Clients SHOULD follow
|
|
||||||
the advice given in the field description when the field is not available.
|
|
||||||
|
|
||||||
**NOTE:** Both clients and server administrators should be aware that proxies
|
|
||||||
between the client and the server may affect the apparent behaviour of content
|
|
||||||
repository APIs, for example, proxies may enforce a lower upload size limit
|
|
||||||
than is advertised by the server on this endpoint.
|
|
||||||
operationId: getConfig
|
|
||||||
produces: ["application/json"]
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The public content repository configuration for the matrix server.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
m.upload.size:
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
description: |-
|
|
||||||
The maximum size an upload can be in bytes.
|
|
||||||
Clients SHOULD use this as a guide when uploading content.
|
|
||||||
If not listed or null, the size limit should be treated as unknown.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"m.upload.size": 50000000
|
|
||||||
}
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
|
|
||||||
tags:
|
|
||||||
- Media
|
|
@ -1,256 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Creation API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/createRoom":
|
|
||||||
post:
|
|
||||||
summary: Create a new room
|
|
||||||
description: |-
|
|
||||||
Create a new room with various configuration options.
|
|
||||||
|
|
||||||
The server MUST apply the normal state resolution rules when creating
|
|
||||||
the new room, including checking power levels for each event. It MUST
|
|
||||||
apply the events implied by the request in the following order:
|
|
||||||
|
|
||||||
0. A default ``m.room.power_levels`` event, giving the room creator
|
|
||||||
(and not other members) permission to send state events. Overridden
|
|
||||||
by the ``power_level_content_override`` parameter.
|
|
||||||
|
|
||||||
1. Events set by the ``preset``. Currently these are the ``m.room.join_rules``,
|
|
||||||
``m.room.history_visibility``, and ``m.room.guest_access`` state events.
|
|
||||||
|
|
||||||
2. Events listed in ``initial_state``, in the order that they are
|
|
||||||
listed.
|
|
||||||
|
|
||||||
3. Events implied by ``name`` and ``topic`` (``m.room.name`` and ``m.room.topic``
|
|
||||||
state events).
|
|
||||||
|
|
||||||
4. Invite events implied by ``invite`` and ``invite_3pid`` (``m.room.member`` with
|
|
||||||
``membership: invite`` and ``m.room.third_party_invite``).
|
|
||||||
|
|
||||||
The available presets do the following with respect to room state:
|
|
||||||
|
|
||||||
======================== ============== ====================== ================ =========
|
|
||||||
Preset ``join_rules`` ``history_visibility`` ``guest_access`` Other
|
|
||||||
======================== ============== ====================== ================ =========
|
|
||||||
``private_chat`` ``invite`` ``shared`` ``can_join``
|
|
||||||
``trusted_private_chat`` ``invite`` ``shared`` ``can_join`` All invitees are given the same power level as the room creator.
|
|
||||||
``public_chat`` ``public`` ``shared`` ``forbidden``
|
|
||||||
======================== ============== ====================== ================ =========
|
|
||||||
|
|
||||||
The server will create a ``m.room.create`` event in the room with the
|
|
||||||
requesting user as the creator, alongside other keys provided in the
|
|
||||||
``creation_content``.
|
|
||||||
operationId: createRoom
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: The desired room configuration.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"preset": "public_chat",
|
|
||||||
"room_alias_name": "thepub",
|
|
||||||
"name": "The Grand Duke Pub",
|
|
||||||
"topic": "All about happy hour",
|
|
||||||
"creation_content": {
|
|
||||||
"m.federate": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
visibility:
|
|
||||||
type: string
|
|
||||||
enum: ["public", "private"]
|
|
||||||
description: |-
|
|
||||||
A ``public`` visibility indicates that the room will be shown
|
|
||||||
in the published room list. A ``private`` visibility will hide
|
|
||||||
the room from the published room list. Rooms default to
|
|
||||||
``private`` visibility if this key is not included. NB: This
|
|
||||||
should not be confused with ``join_rules`` which also uses the
|
|
||||||
word ``public``.
|
|
||||||
room_alias_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The desired room alias **local part**. If this is included, a
|
|
||||||
room alias will be created and mapped to the newly created
|
|
||||||
room. The alias will belong on the *same* homeserver which
|
|
||||||
created the room. For example, if this was set to "foo" and
|
|
||||||
sent to the homeserver "example.com" the complete room alias
|
|
||||||
would be ``#foo:example.com``.
|
|
||||||
|
|
||||||
The complete room alias will become the canonical alias for
|
|
||||||
the room.
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
If this is included, an ``m.room.name`` event will be sent
|
|
||||||
into the room to indicate the name of the room. See Room
|
|
||||||
Events for more information on ``m.room.name``.
|
|
||||||
topic:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
If this is included, an ``m.room.topic`` event will be sent
|
|
||||||
into the room to indicate the topic for the room. See Room
|
|
||||||
Events for more information on ``m.room.topic``.
|
|
||||||
invite:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of user IDs to invite to the room. This will tell the
|
|
||||||
server to invite everyone in the list to the newly created room.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
invite_3pid:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of objects representing third party IDs to invite into
|
|
||||||
the room.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Invite3pid
|
|
||||||
properties:
|
|
||||||
id_server:
|
|
||||||
type: string
|
|
||||||
description: The hostname+port of the identity server which should be used for third party identifier lookups.
|
|
||||||
medium:
|
|
||||||
type: string
|
|
||||||
# TODO: Link to Identity Service spec when it eixsts
|
|
||||||
description: The kind of address being passed in the address field, for example ``email``.
|
|
||||||
address:
|
|
||||||
type: string
|
|
||||||
description: The invitee's third party identifier.
|
|
||||||
required: ["id_server", "medium", "address"]
|
|
||||||
room_version:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The room version to set for the room. If not provided, the homeserver is
|
|
||||||
to use its configured default. If provided, the homeserver will return a
|
|
||||||
400 error with the errcode ``M_UNSUPPORTED_ROOM_VERSION`` if it does not
|
|
||||||
support the room version.
|
|
||||||
example: "1"
|
|
||||||
creation_content:
|
|
||||||
title: CreationContent
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Extra keys, such as ``m.federate``, to be added to the content
|
|
||||||
of the `m.room.create`_ event. The server will clobber the following
|
|
||||||
keys: ``creator``, ``room_version``. Future versions of the specification
|
|
||||||
may allow the server to clobber other keys.
|
|
||||||
initial_state:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of state events to set in the new room. This allows
|
|
||||||
the user to override the default state events set in the new
|
|
||||||
room. The expected format of the state events are an object
|
|
||||||
with type, state_key and content keys set.
|
|
||||||
|
|
||||||
Takes precedence over events set by ``preset``, but gets
|
|
||||||
overriden by ``name`` and ``topic`` keys.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: StateEvent
|
|
||||||
properties:
|
|
||||||
type:
|
|
||||||
type: string
|
|
||||||
description: The type of event to send.
|
|
||||||
state_key:
|
|
||||||
type: string
|
|
||||||
description: The state_key of the state event. Defaults to an empty string.
|
|
||||||
content:
|
|
||||||
type: object
|
|
||||||
description: The content of the event.
|
|
||||||
required: ["type", "content"]
|
|
||||||
preset:
|
|
||||||
type: string
|
|
||||||
enum: ["private_chat", "public_chat", "trusted_private_chat"]
|
|
||||||
description: |-
|
|
||||||
Convenience parameter for setting various default state events
|
|
||||||
based on a preset.
|
|
||||||
|
|
||||||
If unspecified, the server should use the ``visibility`` to determine
|
|
||||||
which preset to use. A visbility of ``public`` equates to a preset of
|
|
||||||
``public_chat`` and ``private`` visibility equates to a preset of
|
|
||||||
``private_chat``.
|
|
||||||
is_direct:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
This flag makes the server set the ``is_direct`` flag on the
|
|
||||||
``m.room.member`` events sent to the users in ``invite`` and
|
|
||||||
``invite_3pid``. See `Direct Messaging`_ for more information.
|
|
||||||
power_level_content_override:
|
|
||||||
title: Power Level Event Content
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The power level content to override in the default power level
|
|
||||||
event. This object is applied on top of the generated `m.room.power_levels`_
|
|
||||||
event content prior to it being sent to the room. Defaults to
|
|
||||||
overriding nothing.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: Information about the newly created room.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
description: Information about the newly created room.
|
|
||||||
properties:
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The created room's ID.
|
|
||||||
required: ['room_id']
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"room_id": "!sefiuhWgwghwWgh:example.com"
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
|
|
||||||
The request is invalid. A meaningful ``errcode`` and description
|
|
||||||
error text will be returned. Example reasons for rejection include:
|
|
||||||
|
|
||||||
- The request body is malformed (``errcode`` set to ``M_BAD_JSON``
|
|
||||||
or ``M_NOT_JSON``).
|
|
||||||
|
|
||||||
- The room alias specified is already taken (``errcode`` set to
|
|
||||||
``M_ROOM_IN_USE``).
|
|
||||||
|
|
||||||
- The initial state implied by the parameters to the request is
|
|
||||||
invalid: for example, the user's ``power_level`` is set below
|
|
||||||
that necessary to set the room name (``errcode`` set to
|
|
||||||
``M_INVALID_ROOM_STATE``).
|
|
||||||
|
|
||||||
- The homeserver doesn't support the requested room version, or
|
|
||||||
one or more users being invited to the new room are residents
|
|
||||||
of a homeserver which does not support the requested room version.
|
|
||||||
The ``errcode`` will be ``M_UNSUPPORTED_ROOM_VERSION`` in these
|
|
||||||
cases.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room creation
|
|
@ -1,33 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: Authentication Data
|
|
||||||
description: |-
|
|
||||||
Used by clients to submit authentication information to the interactive-authentication API
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
type:
|
|
||||||
description: The login type that the client is attempting to complete.
|
|
||||||
type: string
|
|
||||||
session:
|
|
||||||
description: The value of the session key given by the homeserver.
|
|
||||||
type: string
|
|
||||||
additionalProperties:
|
|
||||||
description: Keys dependent on the login type
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- type
|
|
||||||
example:
|
|
||||||
type: "example.type.foo"
|
|
||||||
session: "xxxxx"
|
|
||||||
example_credential: "verypoorsharedsecret"
|
|
@ -1,62 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: Authentication response
|
|
||||||
description: |-
|
|
||||||
Used by servers to indicate that additional authentication information is required,
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
flows:
|
|
||||||
description: A list of the login flows supported by the server for this API.
|
|
||||||
title: Flow information
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
stages:
|
|
||||||
description: |-
|
|
||||||
The login type of each of the stages required to complete this
|
|
||||||
authentication flow
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
example: "example.type.foo"
|
|
||||||
required:
|
|
||||||
- stages
|
|
||||||
params:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Contains any information that the client will need to know in order to
|
|
||||||
use a given type of authentication. For each login type presented,
|
|
||||||
that type may be present as a key in this dictionary. For example, the
|
|
||||||
public part of an OAuth client ID could be given here.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
example:
|
|
||||||
"example.type.baz": { "example_key": "foobar" }
|
|
||||||
session:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
This is a session identifier that the client must pass back to the home
|
|
||||||
server, if one is provided, in subsequent attempts to authenticate in the
|
|
||||||
same API call.
|
|
||||||
example: "xxxxxxyz"
|
|
||||||
completed:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of the stages the client has completed successfully
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
example: "example.type.foo"
|
|
||||||
required:
|
|
||||||
- flows
|
|
@ -1,44 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
type: object
|
|
||||||
description: A client device
|
|
||||||
title: Device
|
|
||||||
properties:
|
|
||||||
device_id:
|
|
||||||
type: string
|
|
||||||
description: Identifier of this device.
|
|
||||||
example: QBUAZIFURK
|
|
||||||
display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Display name set by the user for this device. Absent if no name has been
|
|
||||||
set.
|
|
||||||
example: android
|
|
||||||
last_seen_ip:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The IP address where this device was last seen. (May be a few minutes out
|
|
||||||
of date, for efficiency reasons).
|
|
||||||
example: 1.2.3.4
|
|
||||||
last_seen_ts:
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
description: |-
|
|
||||||
The timestamp (in milliseconds since the unix epoch) when this devices
|
|
||||||
was last seen. (May be a few minutes out of date, for efficiency
|
|
||||||
reasons).
|
|
||||||
example: 1474491775024
|
|
||||||
required:
|
|
||||||
- device_id
|
|
@ -1,68 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: object
|
|
||||||
title: DeviceKeys
|
|
||||||
description: Device identity keys
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The ID of the user the device belongs to. Must match the user ID used
|
|
||||||
when logging in.
|
|
||||||
example: "@alice:example.com"
|
|
||||||
device_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The ID of the device these keys belong to. Must match the device ID used
|
|
||||||
when logging in.
|
|
||||||
example: "JLAFKJWSCS"
|
|
||||||
algorithms:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The encryption algorithms supported by this device.
|
|
||||||
example: ["m.olm.curve25519-aes-sha256", "m.megolm.v1.aes-sha"]
|
|
||||||
keys:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Public identity keys. The names of the properties should be in the
|
|
||||||
format ``<algorithm>:<device_id>``. The keys themselves should be
|
|
||||||
encoded as specified by the key algorithm.
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
example:
|
|
||||||
"curve25519:JLAFKJWSCS": "3C5BFWi2Y8MaVvjM8M22DBmh24PmgR0nPvJOIArzgyI"
|
|
||||||
"ed25519:JLAFKJWSCS": "lEuiRJBit0IG6nUf5pUzWTUEsRVVe/HJkoKuEww9ULI"
|
|
||||||
signatures:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Signatures for the device key object. A map from user ID, to a map from
|
|
||||||
``<algorithm>:<device_id>`` to the signature.
|
|
||||||
|
|
||||||
The signature is calculated using the process described at `Signing
|
|
||||||
JSON`_.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
example:
|
|
||||||
"@alice:example.com":
|
|
||||||
"ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA"
|
|
||||||
required:
|
|
||||||
- user_id
|
|
||||||
- device_id
|
|
||||||
- algorithms
|
|
||||||
- keys
|
|
||||||
- signatures
|
|
@ -1,25 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: object
|
|
||||||
description: A Matrix-level Error
|
|
||||||
properties:
|
|
||||||
errcode:
|
|
||||||
type: string
|
|
||||||
description: An error code.
|
|
||||||
example: M_UNKNOWN
|
|
||||||
error:
|
|
||||||
type: string
|
|
||||||
description: A human-readable error message.
|
|
||||||
example: An unknown error occurred
|
|
||||||
required: ["errcode"]
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
$ref: error.yaml
|
|
||||||
type: object
|
|
||||||
description: The rate limit was reached for this request
|
|
||||||
properties:
|
|
||||||
errcode:
|
|
||||||
type: string
|
|
||||||
description: The M_LIMIT_EXCEEDED error code
|
|
||||||
example: M_LIMIT_EXCEEDED
|
|
||||||
error:
|
|
||||||
type: string
|
|
||||||
description: A human-readable error message.
|
|
||||||
example: Too many requests
|
|
||||||
retry_after_ms:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The amount of time in milliseconds the client should wait
|
|
||||||
before trying the request again.
|
|
||||||
example: 2000
|
|
||||||
required: ["errcode"]
|
|
@ -1 +0,0 @@
|
|||||||
../../../event-schemas
|
|
@ -1,65 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
properties:
|
|
||||||
event_id:
|
|
||||||
description: The ID of this event, if applicable.
|
|
||||||
type: string
|
|
||||||
content:
|
|
||||||
description: The content of this event. The fields in this object will vary depending
|
|
||||||
on the type of event.
|
|
||||||
title: EventContent
|
|
||||||
type: object
|
|
||||||
origin_server_ts:
|
|
||||||
description: Timestamp in milliseconds on originating homeserver when this event
|
|
||||||
was sent.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
sender:
|
|
||||||
description: The MXID of the user who sent this event.
|
|
||||||
type: string
|
|
||||||
state_key:
|
|
||||||
description: Optional. This key will only be present for state events. A unique
|
|
||||||
key which defines the overwriting semantics for this piece of room state.
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
description: The type of event.
|
|
||||||
type: string
|
|
||||||
unsigned:
|
|
||||||
description: Information about this event which was not sent by the originating
|
|
||||||
homeserver
|
|
||||||
properties:
|
|
||||||
age:
|
|
||||||
description: Time in milliseconds since the event was sent.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
prev_content:
|
|
||||||
description: Optional. The previous ``content`` for this state. This will
|
|
||||||
be present only for state events appearing in the ``timeline``. If this
|
|
||||||
is not a state event, or there is no previous content, this key will be
|
|
||||||
missing.
|
|
||||||
title: EventContent
|
|
||||||
type: object
|
|
||||||
transaction_id:
|
|
||||||
description: Optional. The transaction ID set when this message was sent.
|
|
||||||
This key will only be present for message events sent by the device calling
|
|
||||||
this API.
|
|
||||||
type: string
|
|
||||||
redacted_because:
|
|
||||||
description: Optional. The event that redacted this event, if any.
|
|
||||||
title: Event
|
|
||||||
type: object
|
|
||||||
title: Unsigned
|
|
||||||
type: object
|
|
||||||
title: Event
|
|
||||||
type: object
|
|
@ -1,23 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
properties:
|
|
||||||
events:
|
|
||||||
description: List of events.
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: event-schemas/schema/core-event-schema/event.yaml
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
type: object
|
|
@ -1,47 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: EventFilter
|
|
||||||
properties:
|
|
||||||
limit:
|
|
||||||
description: The maximum number of events to return.
|
|
||||||
type: integer
|
|
||||||
not_senders:
|
|
||||||
description: A list of sender IDs to exclude. If this list is absent then no senders
|
|
||||||
are excluded. A matching sender will be excluded even if it is listed in the
|
|
||||||
``'senders'`` filter.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
not_types:
|
|
||||||
description: A list of event types to exclude. If this list is absent then no
|
|
||||||
event types are excluded. A matching type will be excluded even if it is listed
|
|
||||||
in the ``'types'`` filter. A '*' can be used as a wildcard to match any sequence
|
|
||||||
of characters.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
senders:
|
|
||||||
description: A list of senders IDs to include. If this list is absent then all
|
|
||||||
senders are included.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
types:
|
|
||||||
description: A list of event types to include. If this list is absent then all
|
|
||||||
event types are included. A ``'*'`` can be used as a wildcard to match any sequence
|
|
||||||
of characters.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
type: object
|
|
@ -1,105 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
type: object
|
|
||||||
description: A list of the rooms on the server.
|
|
||||||
required: ["chunk"]
|
|
||||||
properties:
|
|
||||||
chunk:
|
|
||||||
title: "PublicRoomsChunks"
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A paginated chunk of public rooms.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: "PublicRoomsChunk"
|
|
||||||
required:
|
|
||||||
- room_id
|
|
||||||
- num_joined_members
|
|
||||||
- world_readable
|
|
||||||
- guest_can_join
|
|
||||||
properties:
|
|
||||||
aliases:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
Aliases of the room. May be empty.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
canonical_alias:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The canonical alias of the room, if any.
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The name of the room, if any.
|
|
||||||
num_joined_members:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The number of members joined to the room.
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The ID of the room.
|
|
||||||
topic:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The topic of the room, if any.
|
|
||||||
world_readable:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether the room may be viewed by guest users without joining.
|
|
||||||
guest_can_join:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether guest users may join the room and participate in it.
|
|
||||||
If they can, they will be subject to ordinary power level
|
|
||||||
rules like any other user.
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
description: The URL for the room's avatar, if one is set.
|
|
||||||
next_batch:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token for the response. The absence of this token
|
|
||||||
means there are no more results to fetch and the client should
|
|
||||||
stop paginating.
|
|
||||||
prev_batch:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token that allows fetching previous results. The
|
|
||||||
absence of this token means there are no results before this
|
|
||||||
batch, i.e. this is the first batch.
|
|
||||||
total_room_count_estimate:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
An estimate on the total number of public rooms, if the
|
|
||||||
server has an estimate.
|
|
||||||
example: {
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"aliases": ["#murrays:cheese.bar"],
|
|
||||||
"avatar_url": "mxc://bleeker.street/CHEDDARandBRIE",
|
|
||||||
"guest_can_join": false,
|
|
||||||
"name": "CHEESE",
|
|
||||||
"num_joined_members": 37,
|
|
||||||
"room_id": "!ol19s:bleecker.street",
|
|
||||||
"topic": "Tasty tasty cheese",
|
|
||||||
"world_readable": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"next_batch": "p190q",
|
|
||||||
"prev_batch": "p1902",
|
|
||||||
"total_room_count_estimate": 115
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
title: PushCondition
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
kind:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The kind of condition to apply. See `conditions <#conditions>`_ for
|
|
||||||
more information on the allowed kinds and how they work.
|
|
||||||
key:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Required for ``event_match`` conditions. The dot-separated field of the
|
|
||||||
event to match.
|
|
||||||
|
|
||||||
Required for ``sender_notification_permission`` conditions. The field in
|
|
||||||
the power level event the user needs a minimum power level for. Fields
|
|
||||||
must be specified under the ``notifications`` property in the power level
|
|
||||||
event's ``content``.
|
|
||||||
x-example: content.body
|
|
||||||
pattern:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Required for ``event_match`` conditions. The glob-style pattern to
|
|
||||||
match against. Patterns with no special glob characters should be
|
|
||||||
treated as having asterisks prepended and appended when testing the
|
|
||||||
condition.
|
|
||||||
is:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Required for ``room_member_count`` conditions. A decimal integer
|
|
||||||
optionally prefixed by one of, ==, <, >, >= or <=. A prefix of < matches
|
|
||||||
rooms where the member count is strictly less than the given number and
|
|
||||||
so forth. If no prefix is present, this parameter defaults to ==.
|
|
||||||
required:
|
|
||||||
- kind
|
|
@ -1,56 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
title: PushRule
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
actions:
|
|
||||||
items:
|
|
||||||
type:
|
|
||||||
- object
|
|
||||||
- string
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The actions to perform when this rule is matched.
|
|
||||||
default:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether this is a default rule, or has been set explicitly.
|
|
||||||
enabled:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether the push rule is enabled or not.
|
|
||||||
rule_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The ID of this rule.
|
|
||||||
conditions:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: push_condition.yaml
|
|
||||||
description: |-
|
|
||||||
The conditions that must hold true for an event in order for a rule to be
|
|
||||||
applied to an event. A rule with no conditions always matches. Only
|
|
||||||
applicable to ``underride`` and ``override`` rules.
|
|
||||||
pattern:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The glob-style pattern to match against. Only applicable to ``content``
|
|
||||||
rules.
|
|
||||||
required:
|
|
||||||
- actions
|
|
||||||
- default
|
|
||||||
- enabled
|
|
||||||
- rule_id
|
|
@ -1,50 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
properties:
|
|
||||||
content:
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: push_rule.yaml
|
|
||||||
title: PushRule
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
override:
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: push_rule.yaml
|
|
||||||
title: PushRule
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
room:
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: push_rule.yaml
|
|
||||||
title: PushRule
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
sender:
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: push_rule.yaml
|
|
||||||
title: PushRule
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
underride:
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: push_rule.yaml
|
|
||||||
title: PushRule
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
type: object
|
|
@ -1,37 +0,0 @@
|
|||||||
# Copyright 2019 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
sid:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The session ID. Session IDs are opaque strings that must consist entirely
|
|
||||||
of the characters ``[0-9a-zA-Z.=_-]``. Their length must not exceed 255
|
|
||||||
characters and they must not be empty.
|
|
||||||
example: "123abc"
|
|
||||||
submit_url:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
An optional field containing a URL where the client must submit the
|
|
||||||
validation token to, with identical parameters to the Identity Service
|
|
||||||
API's ``POST /validate/email/submitToken`` endpoint. The homeserver must
|
|
||||||
send this token to the user (if applicable), who should then be
|
|
||||||
prompted to provide it to the client.
|
|
||||||
|
|
||||||
If this field is not present, the client can assume that verification
|
|
||||||
will happen without the client's involvement provided the homeserver
|
|
||||||
advertises this specification version in the ``/versions`` response
|
|
||||||
(ie: r0.5.0).
|
|
||||||
example: "https://example.org/path/to/submitToken"
|
|
||||||
required: ['sid']
|
|
@ -1,27 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
properties:
|
|
||||||
events:
|
|
||||||
description: List of events.
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: event-schemas/schema/core-event-schema/sync_room_event.yaml
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- event_id
|
|
||||||
#- room_id - Not in /sync
|
|
||||||
- sender
|
|
||||||
- origin_server_ts
|
|
||||||
type: array
|
|
||||||
type: object
|
|
@ -1,49 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
allOf:
|
|
||||||
- $ref: event_filter.yaml
|
|
||||||
- type: object
|
|
||||||
title: RoomEventFilter
|
|
||||||
properties:
|
|
||||||
lazy_load_members:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
If ``true``, enables lazy-loading of membership events. See
|
|
||||||
`Lazy-loading room members <#lazy-loading-room-members>`_
|
|
||||||
for more information. Defaults to ``false``.
|
|
||||||
include_redundant_members:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
If ``true``, sends all membership events for all events, even if they have already
|
|
||||||
been sent to the client. Does not
|
|
||||||
apply unless ``lazy_load_members`` is ``true``. See
|
|
||||||
`Lazy-loading room members <#lazy-loading-room-members>`_
|
|
||||||
for more information. Defaults to ``false``.
|
|
||||||
not_rooms:
|
|
||||||
description: A list of room IDs to exclude. If this list is absent then no rooms
|
|
||||||
are excluded. A matching room will be excluded even if it is listed in the ``'rooms'``
|
|
||||||
filter.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
rooms:
|
|
||||||
description: A list of room IDs to include. If this list is absent then all rooms
|
|
||||||
are included.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
contains_url:
|
|
||||||
type: boolean
|
|
||||||
description: If ``true``, includes only events with a ``url`` key in their content. If
|
|
||||||
``false``, excludes those events. If omitted, ``url`` key is not considered for filtering.
|
|
@ -1,18 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
accessToken:
|
|
||||||
type: apiKey
|
|
||||||
description: The access_token returned by a call to ``/login`` or ``/register``
|
|
||||||
name: access_token
|
|
||||||
in: query
|
|
@ -1,28 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
properties:
|
|
||||||
events:
|
|
||||||
description: List of events.
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: event-schemas/schema/core-event-schema/sync_state_event.yaml
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- event_id
|
|
||||||
#- room_id - Not in /sync
|
|
||||||
- sender
|
|
||||||
- origin_server_ts
|
|
||||||
- state_key
|
|
||||||
type: array
|
|
||||||
type: object
|
|
@ -1,83 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: object
|
|
||||||
title: Filter
|
|
||||||
properties:
|
|
||||||
event_fields:
|
|
||||||
description: List of event fields to include. If this list is absent then all
|
|
||||||
fields are included. The entries may include '.' charaters to indicate sub-fields.
|
|
||||||
So ['content.body'] will include the 'body' field of the 'content' object. A
|
|
||||||
literal '.' character in a field name may be escaped using a '\\'. A server may
|
|
||||||
include more fields than were requested.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
event_format:
|
|
||||||
description: The format to use for events. 'client' will return the events in
|
|
||||||
a format suitable for clients. 'federation' will return the raw event as receieved
|
|
||||||
over federation. The default is 'client'.
|
|
||||||
enum:
|
|
||||||
- client
|
|
||||||
- federation
|
|
||||||
type: string
|
|
||||||
presence:
|
|
||||||
allOf:
|
|
||||||
- $ref: event_filter.yaml
|
|
||||||
description: The presence updates to include.
|
|
||||||
account_data:
|
|
||||||
allOf:
|
|
||||||
- $ref: event_filter.yaml
|
|
||||||
description: The user account data that isn't associated with rooms to include.
|
|
||||||
room:
|
|
||||||
title: RoomFilter
|
|
||||||
description: Filters to be applied to room data.
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
not_rooms:
|
|
||||||
description: A list of room IDs to exclude. If this list is absent then no rooms
|
|
||||||
are excluded. A matching room will be excluded even if it is listed in the ``'rooms'``
|
|
||||||
filter. This filter is applied before the filters in ``ephemeral``,
|
|
||||||
``state``, ``timeline`` or ``account_data``
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
rooms:
|
|
||||||
description: A list of room IDs to include. If this list is absent then all rooms
|
|
||||||
are included. This filter is applied before the filters in ``ephemeral``,
|
|
||||||
``state``, ``timeline`` or ``account_data``
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
ephemeral:
|
|
||||||
allOf:
|
|
||||||
- $ref: room_event_filter.yaml
|
|
||||||
description: The events that aren't recorded in the room history, e.g. typing
|
|
||||||
and receipts, to include for rooms.
|
|
||||||
include_leave:
|
|
||||||
description: Include rooms that the user has left in the sync, default false
|
|
||||||
type: boolean
|
|
||||||
state:
|
|
||||||
type: object
|
|
||||||
title: StateFilter
|
|
||||||
allOf:
|
|
||||||
- $ref: room_event_filter.yaml
|
|
||||||
description: The state events to include for rooms.
|
|
||||||
timeline:
|
|
||||||
allOf:
|
|
||||||
- $ref: room_event_filter.yaml
|
|
||||||
description: The message and state update events to include for rooms.
|
|
||||||
account_data:
|
|
||||||
allOf:
|
|
||||||
- $ref: room_event_filter.yaml
|
|
||||||
description: The per user account data to include for rooms.
|
|
@ -1,41 +0,0 @@
|
|||||||
# Copyright 2019 The Matrix.org Foundation C.I.C.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
type: object
|
|
||||||
title: Third Party Signed
|
|
||||||
description: |-
|
|
||||||
A signature of an ``m.third_party_invite`` token to prove that this user
|
|
||||||
owns a third party identity which has been invited to the room.
|
|
||||||
properties:
|
|
||||||
sender:
|
|
||||||
type: string
|
|
||||||
description: The Matrix ID of the user who issued the invite.
|
|
||||||
example: "@alice:example.org"
|
|
||||||
mxid:
|
|
||||||
type: string
|
|
||||||
description: The Matrix ID of the invitee.
|
|
||||||
example: "@bob:example.org"
|
|
||||||
token:
|
|
||||||
type: string
|
|
||||||
description: The state key of the m.third_party_invite event.
|
|
||||||
example: "random8nonce"
|
|
||||||
signatures:
|
|
||||||
type: object
|
|
||||||
description: A signatures object containing a signature of the entire signed object.
|
|
||||||
title: Signatures
|
|
||||||
example: {
|
|
||||||
"example.org": {
|
|
||||||
"ed25519:0": "some9signature"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
required: ["sender", "mxid", "token", "signatures"]
|
|
@ -1,26 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
allOf:
|
|
||||||
- $ref: room_event_batch.yaml
|
|
||||||
properties:
|
|
||||||
limited:
|
|
||||||
description: True if the number of events returned was limited by the ``limit``
|
|
||||||
on the filter.
|
|
||||||
type: boolean
|
|
||||||
prev_batch:
|
|
||||||
description: A token that can be supplied to the ``from`` parameter of the
|
|
||||||
rooms/{roomId}/messages endpoint.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
@ -1,24 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: User identifier
|
|
||||||
description: |-
|
|
||||||
Identification information for a user
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
type:
|
|
||||||
type: string
|
|
||||||
description: The type of identification. See `Identifier types`_ for supported values and additional property descriptions.
|
|
||||||
required:
|
|
||||||
- type
|
|
||||||
additionalProperties: true
|
|
@ -1,39 +0,0 @@
|
|||||||
# Copyright 2019 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: Discovery Information
|
|
||||||
description: |-
|
|
||||||
Used by clients to determine the homeserver, identity server, and other
|
|
||||||
optional components they should be interacting with.
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
"m.homeserver":
|
|
||||||
$ref: "homeserver.yaml"
|
|
||||||
"m.identity_server":
|
|
||||||
$ref: "identity_server.yaml"
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
description: Application-dependent keys using Java package naming convention.
|
|
||||||
required:
|
|
||||||
- m.homeserver
|
|
||||||
example: {
|
|
||||||
"m.homeserver": {
|
|
||||||
"base_url": "https://matrix.example.com"
|
|
||||||
},
|
|
||||||
"m.identity_server": {
|
|
||||||
"base_url": "https://identity.example.com"
|
|
||||||
},
|
|
||||||
"org.example.custom.property": {
|
|
||||||
"app_url": "https://custom.app.example.org"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: Homeserver Information
|
|
||||||
description: |-
|
|
||||||
Used by clients to discover homeserver information.
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
base_url:
|
|
||||||
type: string
|
|
||||||
description: The base URL for the homeserver for client-server connections.
|
|
||||||
example: https://matrix.example.com
|
|
||||||
required:
|
|
||||||
- base_url
|
|
@ -1,24 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
title: Identity Server Information
|
|
||||||
description: |-
|
|
||||||
Used by clients to discover identity server information.
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
base_url:
|
|
||||||
type: string
|
|
||||||
description: The base URL for the identity server for client-server connections.
|
|
||||||
example: https://identity.example.com
|
|
||||||
required:
|
|
||||||
- base_url
|
|
@ -1,226 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server device management API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/devices":
|
|
||||||
get:
|
|
||||||
summary: List registered devices for the current user
|
|
||||||
description: |-
|
|
||||||
Gets information about all devices for the current user.
|
|
||||||
operationId: getDevices
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: Device information
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
devices:
|
|
||||||
type: array
|
|
||||||
description: A list of all registered devices for this user.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/client_device.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"devices": [
|
|
||||||
{
|
|
||||||
"device_id": "QBUAZIFURK",
|
|
||||||
"display_name": "android",
|
|
||||||
"last_seen_ip": "1.2.3.4",
|
|
||||||
"last_seen_ts": 1474491775024
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Device management
|
|
||||||
"/devices/{deviceId}":
|
|
||||||
get:
|
|
||||||
summary: Get a single device
|
|
||||||
description: |-
|
|
||||||
Gets information on a single device, by device id.
|
|
||||||
operationId: getDevice
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: deviceId
|
|
||||||
description: The device to retrieve.
|
|
||||||
required: true
|
|
||||||
x-example: "QBUAZIFURK"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: Device information
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/client_device.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"device_id": "QBUAZIFURK",
|
|
||||||
"display_name": "android",
|
|
||||||
"last_seen_ip": "1.2.3.4",
|
|
||||||
"last_seen_ts": 1474491775024
|
|
||||||
}
|
|
||||||
404:
|
|
||||||
description: The current user has no device with the given ID.
|
|
||||||
tags:
|
|
||||||
- Device management
|
|
||||||
put:
|
|
||||||
summary: Update a device
|
|
||||||
description: |-
|
|
||||||
Updates the metadata on the given device.
|
|
||||||
operationId: updateDevice
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: deviceId
|
|
||||||
description: The device to update.
|
|
||||||
required: true
|
|
||||||
x-example: "QBUAZIFURK"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
description: New information for the device.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The new display name for this device. If not given, the
|
|
||||||
display name is unchanged.
|
|
||||||
example: My other phone
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The device was successfully updated.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
404:
|
|
||||||
description: The current user has no device with the given ID.
|
|
||||||
tags:
|
|
||||||
- Device management
|
|
||||||
delete:
|
|
||||||
summary: Delete a device
|
|
||||||
description: |-
|
|
||||||
This API endpoint uses the `User-Interactive Authentication API`_.
|
|
||||||
|
|
||||||
Deletes the given device, and invalidates any access token associated with it.
|
|
||||||
operationId: deleteDevice
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: deviceId
|
|
||||||
description: The device to delete.
|
|
||||||
required: true
|
|
||||||
x-example: "QBUAZIFURK"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
auth:
|
|
||||||
description: |-
|
|
||||||
Additional authentication information for the
|
|
||||||
user-interactive authentication API.
|
|
||||||
"$ref": "definitions/auth_data.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The device was successfully removed, or had been removed
|
|
||||||
previously.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver requires additional authentication information.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/auth_response.yaml"
|
|
||||||
tags:
|
|
||||||
- Device management
|
|
||||||
"/delete_devices":
|
|
||||||
post:
|
|
||||||
summary: Bulk deletion of devices
|
|
||||||
description: |-
|
|
||||||
This API endpoint uses the `User-Interactive Authentication API`_.
|
|
||||||
|
|
||||||
Deletes the given devices, and invalidates any access token associated with them.
|
|
||||||
operationId: deleteDevices
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
devices:
|
|
||||||
type: array
|
|
||||||
description: The list of device IDs to delete.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: A list of device IDs.
|
|
||||||
example: ["QBUAZIFURK", "AUIECTSRND"]
|
|
||||||
auth:
|
|
||||||
description: |-
|
|
||||||
Additional authentication information for the
|
|
||||||
user-interactive authentication API.
|
|
||||||
"$ref": "definitions/auth_data.yaml"
|
|
||||||
required:
|
|
||||||
- devices
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The devices were successfully removed, or had been removed
|
|
||||||
previously.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver requires additional authentication information.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/auth_response.yaml"
|
|
||||||
tags:
|
|
||||||
- Device management
|
|
@ -1,161 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Directory API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%/directory
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/room/{roomAlias}":
|
|
||||||
put:
|
|
||||||
summary: Create a new mapping from room alias to room ID.
|
|
||||||
operationId: setRoomAlias
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomAlias
|
|
||||||
description: The room alias to set.
|
|
||||||
required: true
|
|
||||||
x-example: "#monkeys:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: Information about this room alias.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: The room ID to set.
|
|
||||||
required: ['room_id']
|
|
||||||
example: {
|
|
||||||
"room_id": "!abnjk1jdasj98:capuchins.com"
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The mapping was created.
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
409:
|
|
||||||
description: A room alias with that name already exists.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_UNKNOWN",
|
|
||||||
"error": "Room alias #monkeys:matrix.org already exists."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room directory
|
|
||||||
get:
|
|
||||||
summary: Get the room ID corresponding to this room alias.
|
|
||||||
description: |-
|
|
||||||
Requests that the server resolve a room alias to a room ID.
|
|
||||||
|
|
||||||
The server will use the federation API to resolve the alias if the
|
|
||||||
domain part of the alias does not correspond to the server's own
|
|
||||||
domain.
|
|
||||||
|
|
||||||
operationId: getRoomIdByAlias
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomAlias
|
|
||||||
description: The room alias.
|
|
||||||
required: true
|
|
||||||
x-example: "#monkeys:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The room ID and other information for this alias.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: The room ID for this room alias.
|
|
||||||
servers:
|
|
||||||
type: array
|
|
||||||
description: A list of servers that are aware of this room alias.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: A server which is aware of this room alias.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"room_id": "!abnjk1jdasj98:capuchins.com",
|
|
||||||
"servers": [
|
|
||||||
"capuchins.com",
|
|
||||||
"matrix.org",
|
|
||||||
"another.com"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
404:
|
|
||||||
description: There is no mapped room ID for this room alias.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND",
|
|
||||||
"error": "Room alias #monkeys:matrix.org not found."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room directory
|
|
||||||
delete:
|
|
||||||
summary: Remove a mapping of room alias to room ID.
|
|
||||||
description: |-
|
|
||||||
Remove a mapping of room alias to room ID.
|
|
||||||
|
|
||||||
Servers may choose to implement additional access control checks here, for instance that room aliases can only be deleted by their creator or a server administrator.
|
|
||||||
operationId: deleteRoomAlias
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomAlias
|
|
||||||
description: The room alias to remove.
|
|
||||||
required: true
|
|
||||||
x-example: "#monkeys:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The mapping was deleted.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
404:
|
|
||||||
description: There is no mapped room ID for this room alias.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND",
|
|
||||||
"error": "Room alias #monkeys:example.org not found."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room directory
|
|
@ -1,138 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Event Context API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/context/{eventId}":
|
|
||||||
get:
|
|
||||||
summary: Get events and state around the specified event.
|
|
||||||
description: |-
|
|
||||||
This API returns a number of events that happened just before and
|
|
||||||
after the specified event. This allows clients to get the context
|
|
||||||
surrounding an event.
|
|
||||||
|
|
||||||
*Note*: This endpoint supports lazy-loading of room member events. See `Filtering <#lazy-loading-room-members>`_
|
|
||||||
for more information.
|
|
||||||
operationId: getEventContext
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to get events from.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventId
|
|
||||||
description: The event to get context around.
|
|
||||||
required: true
|
|
||||||
x-example: "$f3h4d129462ha:example.com"
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
name: limit
|
|
||||||
description: |-
|
|
||||||
The maximum number of events to return. Default: 10.
|
|
||||||
x-example: 3
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The events and state surrounding the requested event.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
description: The events and state surrounding the requested event.
|
|
||||||
properties:
|
|
||||||
start:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token that can be used to paginate backwards with.
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token that can be used to paginate forwards with.
|
|
||||||
events_before:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of room events that happened just before the
|
|
||||||
requested event, in reverse-chronological order.
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
event:
|
|
||||||
description: |-
|
|
||||||
Details of the requested event.
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
events_after:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of room events that happened just after the
|
|
||||||
requested event, in chronological order.
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
state:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The state of the room at the last event returned.
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/state_event.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"end": "t29-57_2_0_2",
|
|
||||||
"events_after": [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"event": {
|
|
||||||
"event_id": "$f3h4d129462ha:example.com",
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.image"
|
|
||||||
},
|
|
||||||
"events_before": [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.file"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"start": "t27-54_2_0_2",
|
|
||||||
"state": [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.create"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.member"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,156 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server filter API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/user/{userId}/filter":
|
|
||||||
post:
|
|
||||||
summary: Upload a new filter.
|
|
||||||
description: |-
|
|
||||||
Uploads a new filter definition to the homeserver.
|
|
||||||
Returns a filter ID that may be used in future requests to
|
|
||||||
restrict which events are returned to the client.
|
|
||||||
operationId: defineFilter
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description:
|
|
||||||
The id of the user uploading the filter. The access token must be
|
|
||||||
authorized to make requests for this user id.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: body
|
|
||||||
name: filter
|
|
||||||
required: true
|
|
||||||
description: The filter to upload.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/sync_filter.yaml"
|
|
||||||
example: {
|
|
||||||
"room": {
|
|
||||||
"state": {
|
|
||||||
"types": ["m.room.*"],
|
|
||||||
"not_rooms": ["!726s6s6q:example.com"]
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"limit": 10,
|
|
||||||
"types": ["m.room.message"],
|
|
||||||
"not_rooms": ["!726s6s6q:example.com"],
|
|
||||||
"not_senders": ["@spam:example.com"]
|
|
||||||
},
|
|
||||||
"ephemeral": {
|
|
||||||
"types": ["m.receipt", "m.typing"],
|
|
||||||
"not_rooms": ["!726s6s6q:example.com"],
|
|
||||||
"not_senders": ["@spam:example.com"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"presence": {
|
|
||||||
"types": ["m.presence"],
|
|
||||||
"not_senders": ["@alice:example.com"]
|
|
||||||
},
|
|
||||||
"event_format": "client",
|
|
||||||
"event_fields": ["type", "content", "sender"]
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The filter was created.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
filter_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The ID of the filter that was created. Cannot start
|
|
||||||
with a ``{`` as this character is used to determine
|
|
||||||
if the filter provided is inline JSON or a previously
|
|
||||||
declared filter by homeservers on some APIs.
|
|
||||||
example: "66696p746572"
|
|
||||||
required: ['filter_id']
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
"/user/{userId}/filter/{filterId}":
|
|
||||||
get:
|
|
||||||
summary: Download a filter
|
|
||||||
operationId: getFilter
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: userId
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The user ID to download a filter for.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
required: true
|
|
||||||
- in: path
|
|
||||||
name: filterId
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The filter ID to download.
|
|
||||||
x-example: "66696p746572"
|
|
||||||
required: true
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
"The filter defintion"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"room": {
|
|
||||||
"state": {
|
|
||||||
"types": ["m.room.*"],
|
|
||||||
"not_rooms": ["!726s6s6q:example.com"]
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"limit": 10,
|
|
||||||
"types": ["m.room.message"],
|
|
||||||
"not_rooms": ["!726s6s6q:example.com"],
|
|
||||||
"not_senders": ["@spam:example.com"]
|
|
||||||
},
|
|
||||||
"ephemeral": {
|
|
||||||
"types": ["m.receipt", "m.typing"],
|
|
||||||
"not_rooms": ["!726s6s6q:example.com"],
|
|
||||||
"not_senders": ["@spam:example.com"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"presence": {
|
|
||||||
"types": ["m.presence"],
|
|
||||||
"not_senders": ["@alice:example.com"]
|
|
||||||
},
|
|
||||||
"event_format": "client",
|
|
||||||
"event_fields": ["type", "content", "sender"]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/sync_filter.yaml"
|
|
||||||
404:
|
|
||||||
description: "Unknown filter."
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,117 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Joining API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
# With an extra " " to disambiguate from the 3pid invite endpoint
|
|
||||||
# The extra space makes it sort first for what I'm sure is a good reason.
|
|
||||||
"/rooms/{roomId}/invite ":
|
|
||||||
post:
|
|
||||||
summary: Invite a user to participate in a particular room.
|
|
||||||
description: |-
|
|
||||||
.. _invite-by-user-id-endpoint:
|
|
||||||
|
|
||||||
*Note that there are two forms of this API, which are documented separately.
|
|
||||||
This version of the API requires that the inviter knows the Matrix
|
|
||||||
identifier of the invitee. The other is documented in the*
|
|
||||||
`third party invites section`_.
|
|
||||||
|
|
||||||
This API invites a user to participate in a particular room.
|
|
||||||
They do not start participating in the room until they actually join the
|
|
||||||
room.
|
|
||||||
|
|
||||||
Only users currently in a particular room can invite other users to
|
|
||||||
join that room.
|
|
||||||
|
|
||||||
If the user was invited to the room, the homeserver will append a
|
|
||||||
``m.room.member`` event to the room.
|
|
||||||
|
|
||||||
.. _third party invites section: `invite-by-third-party-id-endpoint`_
|
|
||||||
operationId: inviteUser
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier (not alias) to which to invite the user.
|
|
||||||
required: true
|
|
||||||
x-example: "!d41d8cd:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"user_id": "@cheeky_monkey:matrix.org"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: The fully qualified user ID of the invitee.
|
|
||||||
required: ["user_id"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user has been invited to join the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
|
|
||||||
The request is invalid. A meaningful ``errcode`` and description
|
|
||||||
error text will be returned. Example reasons for rejection include:
|
|
||||||
|
|
||||||
- The request body is malformed (``errcode`` set to ``M_BAD_JSON``
|
|
||||||
or ``M_NOT_JSON``).
|
|
||||||
|
|
||||||
- One or more users being invited to the room are residents of a
|
|
||||||
homeserver which does not support the requested room version. The
|
|
||||||
``errcode`` will be ``M_UNSUPPORTED_ROOM_VERSION`` in these cases.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
You do not have permission to invite the user to the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
|
|
||||||
|
|
||||||
- The invitee has been banned from the room.
|
|
||||||
- The invitee is already a member of the room.
|
|
||||||
- The inviter is not currently in the room.
|
|
||||||
- The inviter's power level is insufficient to invite users to the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN", "error": "@cheeky_monkey:matrix.org is banned from the room"}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
@ -1,172 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Inviting API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/join":
|
|
||||||
post:
|
|
||||||
summary: Start the requesting user participating in a particular room.
|
|
||||||
description: |-
|
|
||||||
*Note that this API requires a room ID, not alias.* ``/join/{roomIdOrAlias}`` *exists if you have a room alias.*
|
|
||||||
|
|
||||||
This API starts a user participating in a particular room, if that user
|
|
||||||
is allowed to participate in that room. After this call, the client is
|
|
||||||
allowed to see all current state events in the room, and all subsequent
|
|
||||||
events associated with the room until the user leaves the room.
|
|
||||||
|
|
||||||
After a user has joined a room, the room will appear as an entry in the
|
|
||||||
response of the |/initialSync|_ and |/sync|_ APIs.
|
|
||||||
|
|
||||||
If a ``third_party_signed`` was supplied, the homeserver must verify
|
|
||||||
that it matches a pending ``m.room.third_party_invite`` event in the
|
|
||||||
room, and perform key validity checking if required by the event.
|
|
||||||
operationId: joinRoomById
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier (not alias) to join.
|
|
||||||
required: true
|
|
||||||
x-example: "!d41d8cd:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: third_party_signed
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
third_party_signed:
|
|
||||||
$ref: "definitions/third_party_signed.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The room has been joined.
|
|
||||||
|
|
||||||
The joined room ID must be returned in the ``room_id`` field.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"room_id": "!d41d8cd:matrix.org"}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: The joined room ID.
|
|
||||||
required: ["room_id"]
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
You do not have permission to join the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejection are:
|
|
||||||
|
|
||||||
- The room is invite-only and the user was not invited.
|
|
||||||
- The user has been banned from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN", "error": "You are not invited to this room."}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
||||||
"/join/{roomIdOrAlias}":
|
|
||||||
post:
|
|
||||||
summary: Start the requesting user participating in a particular room.
|
|
||||||
description: |-
|
|
||||||
*Note that this API takes either a room ID or alias, unlike* ``/room/{roomId}/join``.
|
|
||||||
|
|
||||||
This API starts a user participating in a particular room, if that user
|
|
||||||
is allowed to participate in that room. After this call, the client is
|
|
||||||
allowed to see all current state events in the room, and all subsequent
|
|
||||||
events associated with the room until the user leaves the room.
|
|
||||||
|
|
||||||
After a user has joined a room, the room will appear as an entry in the
|
|
||||||
response of the |/initialSync|_ and |/sync|_ APIs.
|
|
||||||
|
|
||||||
If a ``third_party_signed`` was supplied, the homeserver must verify
|
|
||||||
that it matches a pending ``m.room.third_party_invite`` event in the
|
|
||||||
room, and perform key validity checking if required by the event.
|
|
||||||
operationId: joinRoom
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomIdOrAlias
|
|
||||||
description: The room identifier or alias to join.
|
|
||||||
required: true
|
|
||||||
x-example: "#monkeys:matrix.org"
|
|
||||||
- in: query
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
name: server_name
|
|
||||||
description: |-
|
|
||||||
The servers to attempt to join the room through. One of the servers
|
|
||||||
must be participating in the room.
|
|
||||||
x-example: ["matrix.org", "elsewhere.ca"]
|
|
||||||
- in: body
|
|
||||||
name: third_party_signed
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
third_party_signed:
|
|
||||||
$ref: "definitions/third_party_signed.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The room has been joined.
|
|
||||||
|
|
||||||
The joined room ID must be returned in the ``room_id`` field.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"room_id": "!d41d8cd:matrix.org"}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: The joined room ID.
|
|
||||||
required: ["room_id"]
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
You do not have permission to join the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejection are:
|
|
||||||
|
|
||||||
- The room is invite-only and the user was not invited.
|
|
||||||
- The user has been banned from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN", "error": "You are not invited to this room."}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
@ -1,407 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Client Config API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/keys/upload":
|
|
||||||
post:
|
|
||||||
summary: Upload end-to-end encryption keys.
|
|
||||||
description: |-
|
|
||||||
Publishes end-to-end encryption keys for the device.
|
|
||||||
operationId: uploadKeys
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: keys
|
|
||||||
description: |-
|
|
||||||
The keys to be published
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
device_keys:
|
|
||||||
description: |-
|
|
||||||
Identity keys for the device. May be absent if no new
|
|
||||||
identity keys are required.
|
|
||||||
allOf:
|
|
||||||
- $ref: definitions/device_keys.yaml
|
|
||||||
one_time_keys:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
One-time public keys for "pre-key" messages. The names of
|
|
||||||
the properties should be in the format
|
|
||||||
``<algorithm>:<key_id>``. The format of the key is determined
|
|
||||||
by the `key algorithm <#key-algorithms>`_.
|
|
||||||
|
|
||||||
May be absent if no new one-time keys are required.
|
|
||||||
additionalProperties:
|
|
||||||
type:
|
|
||||||
- string
|
|
||||||
- object
|
|
||||||
# XXX: We can't define an actual object here, so we have to hope
|
|
||||||
# that people will look at the swagger source or can figure it out
|
|
||||||
# from the other endpoints/example.
|
|
||||||
# - type: object
|
|
||||||
# title: KeyObject
|
|
||||||
# properties:
|
|
||||||
# key:
|
|
||||||
# type: string
|
|
||||||
# description: The key, encoded using unpadded base64.
|
|
||||||
# signatures:
|
|
||||||
# type: object
|
|
||||||
# description: |-
|
|
||||||
# Signature for the device. Mapped from user ID to signature object.
|
|
||||||
# additionalProperties:
|
|
||||||
# type: string
|
|
||||||
# required: ['key', 'signatures']
|
|
||||||
example: {
|
|
||||||
"curve25519:AAAAAQ": "/qyvZvwjiTxGdGU0RCguDCLeR+nmsb3FfNG3/Ve4vU8",
|
|
||||||
"signed_curve25519:AAAAHg": {
|
|
||||||
"key": "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs",
|
|
||||||
"signatures": {
|
|
||||||
"@alice:example.com": {
|
|
||||||
"ed25519:JLAFKJWSCS": "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"signed_curve25519:AAAAHQ": {
|
|
||||||
"key": "j3fR3HemM16M7CWhoI4Sk5ZsdmdfQHsKL1xuSft6MSw",
|
|
||||||
"signatures": {
|
|
||||||
"@alice:example.com": {
|
|
||||||
"ed25519:JLAFKJWSCS": "IQeCEPb9HFk217cU9kw9EOiusC6kMIkoIRnbnfOh5Oc63S1ghgyjShBGpu34blQomoalCyXWyhaaT3MrLZYQAA"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The provided keys were sucessfully uploaded.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
one_time_key_counts:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
For each key algorithm, the number of unclaimed one-time keys
|
|
||||||
of that type currently held on the server for this device.
|
|
||||||
example:
|
|
||||||
curve25519: 10
|
|
||||||
signed_curve25519: 20
|
|
||||||
required:
|
|
||||||
- one_time_key_counts
|
|
||||||
|
|
||||||
tags:
|
|
||||||
- End-to-end encryption
|
|
||||||
"/keys/query":
|
|
||||||
post:
|
|
||||||
summary: Download device identity keys.
|
|
||||||
description: |-
|
|
||||||
Returns the current devices and identity keys for the given users.
|
|
||||||
operationId: queryKeys
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: query
|
|
||||||
description: |-
|
|
||||||
Query defining the keys to be downloaded
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
timeout:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The time (in milliseconds) to wait when downloading keys from
|
|
||||||
remote servers. 10 seconds is the recommended default.
|
|
||||||
example: 10000
|
|
||||||
device_keys:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The keys to be downloaded. A map from user ID, to a list of
|
|
||||||
device IDs, or to an empty list to indicate all devices for the
|
|
||||||
corresponding user.
|
|
||||||
additionalProperties:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: "device ID"
|
|
||||||
example:
|
|
||||||
"@alice:example.com": []
|
|
||||||
token:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
If the client is fetching keys as a result of a device update received
|
|
||||||
in a sync request, this should be the 'since' token of that sync request,
|
|
||||||
or any later sync token. This allows the server to ensure its response
|
|
||||||
contains the keys advertised by the notification in that sync.
|
|
||||||
required:
|
|
||||||
- device_keys
|
|
||||||
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The device information
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
failures:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
If any remote homeservers could not be reached, they are
|
|
||||||
recorded here. The names of the properties are the names of
|
|
||||||
the unreachable servers.
|
|
||||||
|
|
||||||
If the homeserver could be reached, but the user or device
|
|
||||||
was unknown, no failure is recorded. Instead, the corresponding
|
|
||||||
user or device is missing from the ``device_keys`` result.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
example: {}
|
|
||||||
device_keys:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Information on the queried devices. A map from user ID, to a
|
|
||||||
map from device ID to device information. For each device,
|
|
||||||
the information returned will be the same as uploaded via
|
|
||||||
``/keys/upload``, with the addition of an ``unsigned``
|
|
||||||
property.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
allOf:
|
|
||||||
- $ref: definitions/device_keys.yaml
|
|
||||||
properties:
|
|
||||||
unsigned:
|
|
||||||
title: UnsignedDeviceInfo
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Additional data added to the device key information
|
|
||||||
by intermediate servers, and not covered by the
|
|
||||||
signatures.
|
|
||||||
properties:
|
|
||||||
device_display_name:
|
|
||||||
type: string
|
|
||||||
description:
|
|
||||||
The display name which the user set on the device.
|
|
||||||
example:
|
|
||||||
"@alice:example.com":
|
|
||||||
JLAFKJWSCS: {
|
|
||||||
"user_id": "@alice:example.com",
|
|
||||||
"device_id": "JLAFKJWSCS",
|
|
||||||
"algorithms": [
|
|
||||||
"m.olm.v1.curve25519-aes-sha256",
|
|
||||||
"m.megolm.v1.aes-sha"
|
|
||||||
],
|
|
||||||
"keys": {
|
|
||||||
"curve25519:JLAFKJWSCS": "3C5BFWi2Y8MaVvjM8M22DBmh24PmgR0nPvJOIArzgyI",
|
|
||||||
"ed25519:JLAFKJWSCS": "lEuiRJBit0IG6nUf5pUzWTUEsRVVe/HJkoKuEww9ULI"
|
|
||||||
},
|
|
||||||
"signatures": {
|
|
||||||
"@alice:example.com": {
|
|
||||||
"ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"unsigned": {
|
|
||||||
"device_display_name": "Alice's mobile phone"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tags:
|
|
||||||
- End-to-end encryption
|
|
||||||
"/keys/claim":
|
|
||||||
post:
|
|
||||||
summary: Claim one-time encryption keys.
|
|
||||||
description: |-
|
|
||||||
Claims one-time keys for use in pre-key messages.
|
|
||||||
operationId: claimKeys
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: query
|
|
||||||
description: |-
|
|
||||||
Query defining the keys to be claimed
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
timeout:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The time (in milliseconds) to wait when downloading keys from
|
|
||||||
remote servers. 10 seconds is the recommended default.
|
|
||||||
example: 10000
|
|
||||||
one_time_keys:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The keys to be claimed. A map from user ID, to a map from
|
|
||||||
device ID to algorithm name.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
description: algorithm
|
|
||||||
example: "signed_curve25519"
|
|
||||||
example: {
|
|
||||||
"@alice:example.com": { "JLAFKJWSCS": "signed_curve25519" }
|
|
||||||
}
|
|
||||||
required:
|
|
||||||
- one_time_keys
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The claimed keys.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
failures:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
If any remote homeservers could not be reached, they are
|
|
||||||
recorded here. The names of the properties are the names of
|
|
||||||
the unreachable servers.
|
|
||||||
|
|
||||||
If the homeserver could be reached, but the user or device
|
|
||||||
was unknown, no failure is recorded. Instead, the corresponding
|
|
||||||
user or device is missing from the ``one_time_keys`` result.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
example: {}
|
|
||||||
one_time_keys:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
One-time keys for the queried devices. A map from user ID, to a
|
|
||||||
map from devices to a map from ``<algorithm>:<key_id>`` to the key object.
|
|
||||||
|
|
||||||
See the `key algorithms <#key-algorithms>`_ section for information
|
|
||||||
on the Key Object format.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type:
|
|
||||||
- string
|
|
||||||
- object
|
|
||||||
# XXX: We can't define an actual object here, so we have to hope
|
|
||||||
# that people will look at the swagger source or can figure it out
|
|
||||||
# from the other endpoints/example.
|
|
||||||
# - type: object
|
|
||||||
# title: KeyObject
|
|
||||||
# properties:
|
|
||||||
# key:
|
|
||||||
# type: string
|
|
||||||
# description: The key, encoded using unpadded base64.
|
|
||||||
# signatures:
|
|
||||||
# type: object
|
|
||||||
# description: |-
|
|
||||||
# Signature for the device. Mapped from user ID to signature object.
|
|
||||||
# additionalProperties:
|
|
||||||
# type: string
|
|
||||||
# required: ['key', 'signatures']
|
|
||||||
example: {
|
|
||||||
"@alice:example.com": {
|
|
||||||
"JLAFKJWSCS": {
|
|
||||||
"signed_curve25519:AAAAHg": {
|
|
||||||
"key": "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs",
|
|
||||||
"signatures": {
|
|
||||||
"@alice:example.com": {
|
|
||||||
"ed25519:JLAFKJWSCS": "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
required: ['one_time_keys']
|
|
||||||
tags:
|
|
||||||
- End-to-end encryption
|
|
||||||
"/keys/changes":
|
|
||||||
get:
|
|
||||||
summary: Query users with recent device key updates.
|
|
||||||
description: |-
|
|
||||||
Gets a list of users who have updated their device identity keys since a
|
|
||||||
previous sync token.
|
|
||||||
|
|
||||||
The server should include in the results any users who:
|
|
||||||
|
|
||||||
* currently share a room with the calling user (ie, both users have
|
|
||||||
membership state ``join``); *and*
|
|
||||||
* added new device identity keys or removed an existing device with
|
|
||||||
identity keys, between ``from`` and ``to``.
|
|
||||||
operationId: getKeysChanges
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: from
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The desired start point of the list. Should be the ``next_batch`` field
|
|
||||||
from a response to an earlier call to |/sync|. Users who have not
|
|
||||||
uploaded new device identity keys since this point, nor deleted
|
|
||||||
existing devices with identity keys since then, will be excluded
|
|
||||||
from the results.
|
|
||||||
required: true
|
|
||||||
x-example: "s72594_4483_1934"
|
|
||||||
- in: query
|
|
||||||
name: to
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The desired end point of the list. Should be the ``next_batch``
|
|
||||||
field from a recent call to |/sync| - typically the most recent
|
|
||||||
such call. This may be used by the server as a hint to check its
|
|
||||||
caches are up to date.
|
|
||||||
required: true
|
|
||||||
x-example: "s75689_5632_2435"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The list of users who updated their devices.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
changed:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The Matrix User IDs of all users who updated their device
|
|
||||||
identity keys.
|
|
||||||
example: ["@alice:example.com", "@bob:example.org"]
|
|
||||||
left:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The Matrix User IDs of all users who may have left all
|
|
||||||
the end-to-end encrypted rooms they previously shared
|
|
||||||
with the user.
|
|
||||||
example: ["@clara:example.com", "@doug:example.org"]
|
|
||||||
tags:
|
|
||||||
- End-to-end encryption
|
|
@ -1,93 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Kicking API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/kick":
|
|
||||||
post:
|
|
||||||
summary: Kick a user from the room.
|
|
||||||
description: |-
|
|
||||||
Kick a user from the room.
|
|
||||||
|
|
||||||
The caller must have the required power level in order to perform this operation.
|
|
||||||
|
|
||||||
Kicking a user adjusts the target member's membership state to be ``leave`` with an
|
|
||||||
optional ``reason``. Like with other membership changes, a user can directly adjust
|
|
||||||
the target member's state by making a request to ``/rooms/<room id>/state/m.room.member/<user id>``.
|
|
||||||
operationId: kick
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier (not alias) from which the user should be kicked.
|
|
||||||
required: true
|
|
||||||
x-example: "!e42d8c:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"reason": "Telling unfunny jokes",
|
|
||||||
"user_id": "@cheeky_monkey:matrix.org"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: The fully qualified user ID of the user being kicked.
|
|
||||||
reason:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The reason the user has been kicked. This will be supplied as the
|
|
||||||
``reason`` on the target's updated `m.room.member`_ event.
|
|
||||||
required: ["user_id"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user has been kicked from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
You do not have permission to kick the user from the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
|
|
||||||
|
|
||||||
- The kicker is not currently in the room.
|
|
||||||
- The kickee is not currently in the room.
|
|
||||||
- The kicker's power level is insufficient to kick users from the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "You do not have a high enough power level to kick from this room."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
@ -1,116 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Leaving API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/leave":
|
|
||||||
post:
|
|
||||||
summary: Stop the requesting user participating in a particular room.
|
|
||||||
description: |-
|
|
||||||
This API stops a user participating in a particular room.
|
|
||||||
|
|
||||||
If the user was already in the room, they will no longer be able to see
|
|
||||||
new events in the room. If the room requires an invite to join, they
|
|
||||||
will need to be re-invited before they can re-join.
|
|
||||||
|
|
||||||
If the user was invited to the room, but had not joined, this call
|
|
||||||
serves to reject the invite.
|
|
||||||
|
|
||||||
The user will still be allowed to retrieve history from the room which
|
|
||||||
they were previously allowed to see.
|
|
||||||
operationId: leaveRoom
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier to leave.
|
|
||||||
required: true
|
|
||||||
x-example: "!nkl290a:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The room has been left.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
||||||
"/rooms/{roomId}/forget":
|
|
||||||
post:
|
|
||||||
summary: Stop the requesting user remembering about a particular room.
|
|
||||||
description: |-
|
|
||||||
This API stops a user remembering about a particular room.
|
|
||||||
|
|
||||||
In general, history is a first class citizen in Matrix. After this API
|
|
||||||
is called, however, a user will no longer be able to retrieve history
|
|
||||||
for this room. If all users on a homeserver forget a room, the room is
|
|
||||||
eligible for deletion from that homeserver.
|
|
||||||
|
|
||||||
If the user is currently joined to the room, they must leave the room
|
|
||||||
before calling this API.
|
|
||||||
operationId: forgetRoom
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier to forget.
|
|
||||||
required: true
|
|
||||||
x-example: "!au1ba7o:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The room has been forgotten.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
400:
|
|
||||||
description: The user has not left the room
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_UNKNOWN",
|
|
||||||
"error": "User @example:matrix.org is in room !au1ba7o:matrix.org"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
@ -1,58 +0,0 @@
|
|||||||
# Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Listing API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/joined_rooms":
|
|
||||||
get:
|
|
||||||
summary: Lists the user's current rooms.
|
|
||||||
description: |-
|
|
||||||
This API returns a list of the user's current rooms.
|
|
||||||
operationId: getJoinedRooms
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of the rooms the user is in.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
required: ["joined_rooms"]
|
|
||||||
properties:
|
|
||||||
joined_rooms:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The ID of each room in which the user has ``joined`` membership.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"joined_rooms": [
|
|
||||||
"!foo:example.com"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
@ -1,314 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Directory API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
paths:
|
|
||||||
"/directory/list/room/{roomId}":
|
|
||||||
get:
|
|
||||||
summary: Gets the visibility of a room in the directory
|
|
||||||
description: |-
|
|
||||||
Gets the visibility of a given room on the server's public room directory.
|
|
||||||
operationId: getRoomVisibilityOnDirectory
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room ID.
|
|
||||||
required: true
|
|
||||||
x-example: "!curbf:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The visibility of the room in the directory
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
visibility:
|
|
||||||
type: string
|
|
||||||
enum: ['private', 'public']
|
|
||||||
description: The visibility of the room in the directory.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"visibility": "public"
|
|
||||||
}
|
|
||||||
404:
|
|
||||||
description: The room is not known to the server
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND",
|
|
||||||
"error": "Room not found"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
put:
|
|
||||||
summary: Sets the visibility of a room in the room directory
|
|
||||||
description: |-
|
|
||||||
Sets the visibility of a given room in the server's public room
|
|
||||||
directory.
|
|
||||||
|
|
||||||
Servers may choose to implement additional access control checks
|
|
||||||
here, for instance that room visibility can only be changed by
|
|
||||||
the room creator or a server administrator.
|
|
||||||
operationId: setRoomVisibilityOnDirectory
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room ID.
|
|
||||||
required: true
|
|
||||||
x-example: "!curbf:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The new visibility for the room on the room directory.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
visibility:
|
|
||||||
type: string
|
|
||||||
enum: ["private", "public"]
|
|
||||||
description: |-
|
|
||||||
The new visibility setting for the room.
|
|
||||||
Defaults to 'public'.
|
|
||||||
example: {
|
|
||||||
"visibility": "public"
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The visibility was updated, or no change was needed.
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
404:
|
|
||||||
description: The room is not known to the server
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND",
|
|
||||||
"error": "Room not found"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
"/publicRooms":
|
|
||||||
get:
|
|
||||||
summary: Lists the public rooms on the server.
|
|
||||||
description: |-
|
|
||||||
Lists the public rooms on the server.
|
|
||||||
|
|
||||||
This API returns paginated responses. The rooms are ordered by the number
|
|
||||||
of joined members, with the largest rooms first.
|
|
||||||
operationId: getPublicRooms
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: limit
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
Limit the number of results returned.
|
|
||||||
- in: query
|
|
||||||
name: since
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token from a previous request, allowing clients to
|
|
||||||
get the next (or previous) batch of rooms.
|
|
||||||
The direction of pagination is specified solely by which token
|
|
||||||
is supplied, rather than via an explicit flag.
|
|
||||||
- in: query
|
|
||||||
name: server
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The server to fetch the public room lists from. Defaults to the
|
|
||||||
local server.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of the rooms on the server.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/public_rooms_response.yaml"
|
|
||||||
tags:
|
|
||||||
- Room discovery
|
|
||||||
post:
|
|
||||||
summary: Lists the public rooms on the server with optional filter.
|
|
||||||
description: |-
|
|
||||||
Lists the public rooms on the server, with optional filter.
|
|
||||||
|
|
||||||
This API returns paginated responses. The rooms are ordered by the number
|
|
||||||
of joined members, with the largest rooms first.
|
|
||||||
operationId: queryPublicRooms
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: server
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The server to fetch the public room lists from. Defaults to the
|
|
||||||
local server.
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
Options for which rooms to return.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
limit:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
Limit the number of results returned.
|
|
||||||
since:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token from a previous request, allowing clients
|
|
||||||
to get the next (or previous) batch of rooms. The direction
|
|
||||||
of pagination is specified solely by which token is supplied,
|
|
||||||
rather than via an explicit flag.
|
|
||||||
filter:
|
|
||||||
type: object
|
|
||||||
title: "Filter"
|
|
||||||
description: |-
|
|
||||||
Filter to apply to the results.
|
|
||||||
properties:
|
|
||||||
generic_search_term:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A string to search for in the room metadata, e.g. name,
|
|
||||||
topic, canonical alias etc. (Optional).
|
|
||||||
include_all_networks:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether or not to include all known networks/protocols from
|
|
||||||
application services on the homeserver. Defaults to false.
|
|
||||||
example: false
|
|
||||||
third_party_instance_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The specific third party network/protocol to request from the
|
|
||||||
homeserver. Can only be used if ``include_all_networks`` is false.
|
|
||||||
example: "irc"
|
|
||||||
example: {
|
|
||||||
"limit": 10,
|
|
||||||
"filter": {
|
|
||||||
"generic_search_term": "foo"
|
|
||||||
},
|
|
||||||
"include_all_networks": false,
|
|
||||||
"third_party_instance_id": "irc"
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of the rooms on the server.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
description: A list of the rooms on the server.
|
|
||||||
required: ["chunk"]
|
|
||||||
properties:
|
|
||||||
chunk:
|
|
||||||
title: "PublicRoomsChunks"
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A paginated chunk of public rooms.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: "PublicRoomsChunk"
|
|
||||||
required:
|
|
||||||
- room_id
|
|
||||||
- num_joined_members
|
|
||||||
- world_readable
|
|
||||||
- guest_can_join
|
|
||||||
properties:
|
|
||||||
aliases:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
Aliases of the room. May be empty.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
canonical_alias:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The canonical alias of the room, if any.
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The name of the room, if any.
|
|
||||||
num_joined_members:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The number of members joined to the room.
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The ID of the room.
|
|
||||||
topic:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The topic of the room, if any.
|
|
||||||
world_readable:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether the room may be viewed by guest users without joining.
|
|
||||||
guest_can_join:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether guest users may join the room and participate in it.
|
|
||||||
If they can, they will be subject to ordinary power level
|
|
||||||
rules like any other user.
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
description: The URL for the room's avatar, if one is set.
|
|
||||||
next_batch:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token for the response. The absence of this token
|
|
||||||
means there are no more results to fetch and the client should
|
|
||||||
stop paginating.
|
|
||||||
prev_batch:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token that allows fetching previous results. The
|
|
||||||
absence of this token means there are no results before this
|
|
||||||
batch, i.e. this is the first batch.
|
|
||||||
total_room_count_estimate:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
An estimate on the total number of public rooms, if the
|
|
||||||
server has an estimate.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"aliases": ["#murrays:cheese.bar"],
|
|
||||||
"avatar_url": "mxc://bleeker.street/CHEDDARandBRIE",
|
|
||||||
"guest_can_join": false,
|
|
||||||
"name": "CHEESE",
|
|
||||||
"num_joined_members": 37,
|
|
||||||
"room_id": "!ol19s:bleecker.street",
|
|
||||||
"topic": "Tasty tasty cheese",
|
|
||||||
"world_readable": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"next_batch": "p190q",
|
|
||||||
"prev_batch": "p1902",
|
|
||||||
"total_room_count_estimate": 115
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Room discovery
|
|
@ -1,208 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Registration and Login API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/login":
|
|
||||||
get:
|
|
||||||
summary: Get the supported login types to authenticate users
|
|
||||||
description: |-
|
|
||||||
Gets the homeserver's supported login types to authenticate users. Clients
|
|
||||||
should pick one of these and supply it as the ``type`` when logging in.
|
|
||||||
operationId: getLoginFlows
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The login types the homeserver supports
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"flows": [
|
|
||||||
{"type": "m.login.password"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
flows:
|
|
||||||
type: array
|
|
||||||
description: The homeserver's supported login types
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: LoginFlow
|
|
||||||
properties:
|
|
||||||
type:
|
|
||||||
description: |-
|
|
||||||
The login type. This is supplied as the ``type`` when
|
|
||||||
logging in.
|
|
||||||
type: string
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Session management
|
|
||||||
post:
|
|
||||||
summary: Authenticates the user.
|
|
||||||
description: |-
|
|
||||||
Authenticates the user, and issues an access token they can
|
|
||||||
use to authorize themself in subsequent requests.
|
|
||||||
|
|
||||||
If the client does not supply a ``device_id``, the server must
|
|
||||||
auto-generate one.
|
|
||||||
|
|
||||||
The returned access token must be associated with the ``device_id``
|
|
||||||
supplied by the client or generated by the server. The server may
|
|
||||||
invalidate any access token previously associated with that device. See
|
|
||||||
`Relationship between access tokens and devices`_.
|
|
||||||
operationId: login
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"type": "m.login.password",
|
|
||||||
"identifier": {
|
|
||||||
"type": "m.id.user",
|
|
||||||
"user": "cheeky_monkey"
|
|
||||||
},
|
|
||||||
"password": "ilovebananas",
|
|
||||||
"initial_device_display_name": "Jungle Phone"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
type:
|
|
||||||
type: string
|
|
||||||
enum: ["m.login.password", "m.login.token"]
|
|
||||||
description: The login type being used.
|
|
||||||
identifier:
|
|
||||||
description: Identification information for the user.
|
|
||||||
"$ref": "definitions/user_identifier.yaml"
|
|
||||||
user:
|
|
||||||
type: string
|
|
||||||
description: The fully qualified user ID or just local part of the user ID, to log in. Deprecated in favour of ``identifier``.
|
|
||||||
medium:
|
|
||||||
type: string
|
|
||||||
description: When logging in using a third party identifier, the medium of the identifier. Must be 'email'. Deprecated in favour of ``identifier``.
|
|
||||||
address:
|
|
||||||
type: string
|
|
||||||
description: Third party identifier for the user. Deprecated in favour of ``identifier``.
|
|
||||||
password:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Required when ``type`` is ``m.login.password``. The user's
|
|
||||||
password.
|
|
||||||
token:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Required when ``type`` is ``m.login.token``. Part of `Token-based`_ login.
|
|
||||||
device_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
ID of the client device. If this does not correspond to a
|
|
||||||
known client device, a new device will be created. The server
|
|
||||||
will auto-generate a device_id if this is not specified.
|
|
||||||
initial_device_display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A display name to assign to the newly-created device. Ignored
|
|
||||||
if ``device_id`` corresponds to a known device.
|
|
||||||
required: ["type"]
|
|
||||||
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user has been authenticated.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"user_id": "@cheeky_monkey:matrix.org",
|
|
||||||
"access_token": "abc123",
|
|
||||||
"device_id": "GHTYAJCE",
|
|
||||||
"well_known": {
|
|
||||||
"m.homeserver": {
|
|
||||||
"base_url": "https://example.org"
|
|
||||||
},
|
|
||||||
"m.identity_server": {
|
|
||||||
"base_url": "https://id.example.org"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: The fully-qualified Matrix ID that has been registered.
|
|
||||||
access_token:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
An access token for the account.
|
|
||||||
This access token can then be used to authorize other requests.
|
|
||||||
home_server:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The server_name of the homeserver on which the account has
|
|
||||||
been registered.
|
|
||||||
|
|
||||||
**Deprecated**. Clients should extract the server_name from
|
|
||||||
``user_id`` (by splitting at the first colon) if they require
|
|
||||||
it. Note also that ``homeserver`` is not spelt this way.
|
|
||||||
device_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
ID of the logged-in device. Will be the same as the
|
|
||||||
corresponding parameter in the request, if one was specified.
|
|
||||||
well_known:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Optional client configuration provided by the server. If present,
|
|
||||||
clients SHOULD use the provided object to reconfigure themselves,
|
|
||||||
optionally validating the URLs within. This object takes the same
|
|
||||||
form as the one returned from .well-known autodiscovery.
|
|
||||||
"$ref": "definitions/wellknown/full.yaml"
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
Part of the request was invalid. For example, the login type may not be recognised.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_UNKNOWN",
|
|
||||||
"error": "Bad login type."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The login attempt failed. For example, the password may have been incorrect.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN"}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Session management
|
|
@ -1,72 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Registration and Login API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/logout":
|
|
||||||
post:
|
|
||||||
summary: Invalidates a user access token
|
|
||||||
description: |-
|
|
||||||
Invalidates an existing access token, so that it can no longer be used for
|
|
||||||
authorization. The device associated with the access token is also deleted.
|
|
||||||
`Device keys <#device-keys>`_ for the device are deleted alongside the device.
|
|
||||||
operationId: logout
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The access token used in the request was succesfully invalidated.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties: {}
|
|
||||||
tags:
|
|
||||||
- Session management
|
|
||||||
"/logout/all":
|
|
||||||
post:
|
|
||||||
summary: Invalidates all access tokens for a user
|
|
||||||
description: |-
|
|
||||||
Invalidates all access tokens for a user, so that they can no longer be used for
|
|
||||||
authorization. This includes the access token that made this request. All devices
|
|
||||||
for the user are also deleted. `Device keys <#device-keys>`_ for the device are
|
|
||||||
deleted alongside the device.
|
|
||||||
|
|
||||||
This endpoint does not require UI authorization because UI authorization is
|
|
||||||
designed to protect against attacks where the someone gets hold of a single access
|
|
||||||
token then takes over the account. This endpoint invalidates all access tokens for
|
|
||||||
the user, including the token used in the request, and therefore the attacker is
|
|
||||||
unable to take over the account in this way.
|
|
||||||
operationId: logout_all
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user's access tokens were succesfully invalidated.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties: {}
|
|
||||||
tags:
|
|
||||||
- Session management
|
|
@ -1,155 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Rooms API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/messages":
|
|
||||||
get:
|
|
||||||
summary: Get a list of events for this room
|
|
||||||
description: |-
|
|
||||||
This API returns a list of message and state events for a room. It uses
|
|
||||||
pagination query parameters to paginate history in the room.
|
|
||||||
|
|
||||||
*Note*: This endpoint supports lazy-loading of room member events. See `Filtering <#lazy-loading-room-members>`_
|
|
||||||
for more information.
|
|
||||||
operationId: getRoomEvents
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to get events from.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: from
|
|
||||||
description: |-
|
|
||||||
The token to start returning events from. This token can be obtained
|
|
||||||
from a ``prev_batch`` token returned for each room by the sync API,
|
|
||||||
or from a ``start`` or ``end`` token returned by a previous request
|
|
||||||
to this endpoint.
|
|
||||||
required: true
|
|
||||||
x-example: "s345_678_333"
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: to
|
|
||||||
description: |-
|
|
||||||
The token to stop returning events at. This token can be obtained from
|
|
||||||
a ``prev_batch`` token returned for each room by the sync endpoint,
|
|
||||||
or from a ``start`` or ``end`` token returned by a previous request to
|
|
||||||
this endpoint.
|
|
||||||
required: false
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
enum: ["b", "f"]
|
|
||||||
name: dir
|
|
||||||
description: |-
|
|
||||||
The direction to return events from.
|
|
||||||
required: true
|
|
||||||
x-example: "b"
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
name: limit
|
|
||||||
description: |-
|
|
||||||
The maximum number of events to return. Default: 10.
|
|
||||||
x-example: "3"
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: filter
|
|
||||||
description: |-
|
|
||||||
A JSON RoomEventFilter to filter returned events with.
|
|
||||||
x-example: |-
|
|
||||||
{"contains_url":true}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of messages with a new token to request more.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
description: A list of messages with a new token to request more.
|
|
||||||
properties:
|
|
||||||
start:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The token the pagination starts from. If ``dir=b`` this will be
|
|
||||||
the token supplied in ``from``.
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The token the pagination ends at. If ``dir=b`` this token should
|
|
||||||
be used again to request even earlier events.
|
|
||||||
chunk:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of room events. The order depends on the ``dir`` parameter.
|
|
||||||
For ``dir=b`` events will be in reverse-chronological order,
|
|
||||||
for ``dir=f`` in chronological order, so that events start
|
|
||||||
at the ``from`` point.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: RoomEvent
|
|
||||||
"$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
state:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
A list of state events relevant to showing the ``chunk``. For example, if
|
|
||||||
``lazy_load_members`` is enabled in the filter then this may contain
|
|
||||||
the membership events for the senders of events in the ``chunk``.
|
|
||||||
|
|
||||||
Unless ``include_redundant_members`` is ``true``, the server
|
|
||||||
may remove membership events which would have already been
|
|
||||||
sent to the client in prior calls to this endpoint, assuming
|
|
||||||
the membership of those members has not changed.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: RoomStateEvent
|
|
||||||
$ref: "definitions/event-schemas/schema/core-event-schema/state_event.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"start": "t47429-4392820_219380_26003_2265",
|
|
||||||
"end": "t47409-4357353_219380_26003_2265",
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.name"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.video"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
403:
|
|
||||||
description: >
|
|
||||||
You aren't a member of the room.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,133 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Notifications API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/notifications":
|
|
||||||
get:
|
|
||||||
summary: Gets a list of events that the user has been notified about
|
|
||||||
description: |-
|
|
||||||
This API is used to paginate through the list of events that the
|
|
||||||
user has been, or would have been notified about.
|
|
||||||
operationId: getNotifications
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: from
|
|
||||||
description: Pagination token given to retrieve the next set of events.
|
|
||||||
required: false
|
|
||||||
x-example: "xxxxx"
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
name: limit
|
|
||||||
description: Limit on the number of events to return in this request.
|
|
||||||
required: false
|
|
||||||
x-example: "20"
|
|
||||||
- in: query
|
|
||||||
name: only
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Allows basic filtering of events returned. Supply ``highlight``
|
|
||||||
to return only events where the notification had the highlight
|
|
||||||
tweak set.
|
|
||||||
required: false
|
|
||||||
x-example: "highlight"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A batch of events is being returned
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"next_token": "abcdef",
|
|
||||||
"notifications": [
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify"
|
|
||||||
],
|
|
||||||
"profile_tag": "hcbvkzxhcvb",
|
|
||||||
"read": true,
|
|
||||||
"room_id": "!abcdefg:example.com",
|
|
||||||
"ts": 1475508881945,
|
|
||||||
"event": {
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
required: ["notifications"]
|
|
||||||
properties:
|
|
||||||
next_token:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The token to supply in the ``from`` param of the next
|
|
||||||
``/notifications`` request in order to request more
|
|
||||||
events. If this is absent, there are no more results.
|
|
||||||
notifications:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
required: ["actions", "event", "read", "room_id", "ts"]
|
|
||||||
title: Notification
|
|
||||||
properties:
|
|
||||||
actions:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The action(s) to perform when the conditions for this rule are met.
|
|
||||||
See `Push Rules: API`_.
|
|
||||||
items:
|
|
||||||
type:
|
|
||||||
- object
|
|
||||||
- string
|
|
||||||
event:
|
|
||||||
type: object
|
|
||||||
title: Event
|
|
||||||
description: The Event object for the event that triggered the notification.
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event.yaml"
|
|
||||||
profile_tag:
|
|
||||||
type: string
|
|
||||||
description: The profile tag of the rule that matched this event.
|
|
||||||
read:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Indicates whether the user has sent a read receipt indicating
|
|
||||||
that they have read this message.
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: The ID of the room in which the event was posted.
|
|
||||||
ts:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The unix timestamp at which the event notification was sent,
|
|
||||||
in milliseconds.
|
|
||||||
description: The list of events that triggered notifications.
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
@ -1,337 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Sync API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/events":
|
|
||||||
get:
|
|
||||||
summary: Listen on the event stream.
|
|
||||||
description: |-
|
|
||||||
This will listen for new events and return them to the caller. This will
|
|
||||||
block until an event is received, or until the ``timeout`` is reached.
|
|
||||||
|
|
||||||
This endpoint was deprecated in r0 of this specification. Clients
|
|
||||||
should instead call the |/sync|_ API with a ``since`` parameter. See
|
|
||||||
the `migration guide
|
|
||||||
<https://matrix.org/docs/guides/client-server-migrating-from-v1.html#deprecated-endpoints>`_.
|
|
||||||
operationId: getEvents
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: from
|
|
||||||
description: |-
|
|
||||||
The token to stream from. This token is either from a previous
|
|
||||||
request to this API or from the initial sync API.
|
|
||||||
required: false
|
|
||||||
x-example: "s3456_9_0"
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
name: timeout
|
|
||||||
description: The maximum time in milliseconds to wait for an event.
|
|
||||||
required: false
|
|
||||||
x-example: "35000"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "The events received, which may be none."
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"start": "s3456_9_0",
|
|
||||||
"end": "s3457_9_0",
|
|
||||||
"chunk": [
|
|
||||||
{"$ref": "definitions/event-schemas/examples/m.room.message$m.text"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
start:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the first value in ``chunk``. This
|
|
||||||
is usually the same token supplied to ``from=``.
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the last value in ``chunk``. This
|
|
||||||
token should be used in the next request to ``/events``.
|
|
||||||
chunk:
|
|
||||||
type: array
|
|
||||||
description: "An array of events."
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Event
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
400:
|
|
||||||
description: "Bad pagination ``from`` parameter."
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
deprecated: true
|
|
||||||
"/initialSync":
|
|
||||||
get:
|
|
||||||
summary: Get the user's current state.
|
|
||||||
description: |-
|
|
||||||
This returns the full state for this user, with an optional limit on the
|
|
||||||
number of messages per room to return.
|
|
||||||
|
|
||||||
This endpoint was deprecated in r0 of this specification. Clients
|
|
||||||
should instead call the |/sync|_ API with no ``since`` parameter. See
|
|
||||||
the `migration guide
|
|
||||||
<https://matrix.org/docs/guides/client-server-migrating-from-v1.html#deprecated-endpoints>`_.
|
|
||||||
operationId: initialSync
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
name: limit
|
|
||||||
description: The maximum number of messages to return for each room.
|
|
||||||
required: false
|
|
||||||
x-example: "2"
|
|
||||||
- in: query
|
|
||||||
type: boolean
|
|
||||||
name: archived
|
|
||||||
description: |-
|
|
||||||
Whether to include rooms that the user has left. If ``false`` then
|
|
||||||
only rooms that the user has been invited to or has joined are
|
|
||||||
included. If set to ``true`` then rooms that the user has left are
|
|
||||||
included as well. By default this is ``false``.
|
|
||||||
required: false
|
|
||||||
x-example: "true"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user's current state.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"end": "s3456_9_0",
|
|
||||||
"presence": [
|
|
||||||
{"$ref": "definitions/event-schemas/examples/m.presence"}
|
|
||||||
],
|
|
||||||
"account_data": [
|
|
||||||
{
|
|
||||||
"type": "org.example.custom.config",
|
|
||||||
"content": {
|
|
||||||
"custom_config_key": "custom_config_value"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"rooms": [
|
|
||||||
{
|
|
||||||
"membership": "join",
|
|
||||||
"messages": {
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"room_id": "!TmaZBKYIFrIPVGoUYp:localhost",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!TmaZBKYIFrIPVGoUYp:localhost",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.video"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"end": "s3456_9_0",
|
|
||||||
"start": "t44-3453_9_0"
|
|
||||||
},
|
|
||||||
"room_id": "!TmaZBKYIFrIPVGoUYp:localhost",
|
|
||||||
"state": [
|
|
||||||
{
|
|
||||||
"room_id": "!TmaZBKYIFrIPVGoUYp:localhost",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.join_rules"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!TmaZBKYIFrIPVGoUYp:localhost",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.member"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!TmaZBKYIFrIPVGoUYp:localhost",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.create"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!TmaZBKYIFrIPVGoUYp:localhost",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.power_levels"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"visibility": "private",
|
|
||||||
"account_data": [
|
|
||||||
{
|
|
||||||
"type": "m.tag",
|
|
||||||
"content": {"tags": {"work": {"order": 1}}}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "org.example.custom.room.config",
|
|
||||||
"content": {
|
|
||||||
"custom_config_key": "custom_config_value"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the last value in ``chunk``. This
|
|
||||||
token should be used with the ``/events`` API to listen for new
|
|
||||||
events.
|
|
||||||
presence:
|
|
||||||
type: array
|
|
||||||
description: A list of presence events.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Event
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/event.yaml"
|
|
||||||
rooms:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: RoomInfo
|
|
||||||
properties:
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: "The ID of this room."
|
|
||||||
membership:
|
|
||||||
type: string
|
|
||||||
description: "The user's membership state in this room."
|
|
||||||
enum: ["invite", "join", "leave", "ban"]
|
|
||||||
invite:
|
|
||||||
type: object
|
|
||||||
title: "InviteEvent"
|
|
||||||
description: "The invite event if ``membership`` is ``invite``"
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/m.room.member"
|
|
||||||
messages:
|
|
||||||
type: object
|
|
||||||
title: PaginationChunk
|
|
||||||
description: "The pagination chunk for this room."
|
|
||||||
properties:
|
|
||||||
start:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the first value in ``chunk``.
|
|
||||||
Used for pagination.
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the last value in ``chunk``.
|
|
||||||
Used for pagination.
|
|
||||||
chunk:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
If the user is a member of the room this will be a
|
|
||||||
list of the most recent messages for this room. If
|
|
||||||
the user has left the room this will be the
|
|
||||||
messages that preceeded them leaving. This array
|
|
||||||
will consist of at most ``limit`` elements.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: RoomEvent
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
required: ["start", "end", "chunk"]
|
|
||||||
state:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
If the user is a member of the room this will be the
|
|
||||||
current state of the room as a list of events. If the
|
|
||||||
user has left the room this will be the state of the
|
|
||||||
room when they left it.
|
|
||||||
items:
|
|
||||||
title: StateEvent
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/state_event.yaml"
|
|
||||||
visibility:
|
|
||||||
type: string
|
|
||||||
enum: ["private", "public"]
|
|
||||||
description: |-
|
|
||||||
Whether this room is visible to the ``/publicRooms`` API
|
|
||||||
or not."
|
|
||||||
account_data:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The private data that this user has attached to
|
|
||||||
this room.
|
|
||||||
items:
|
|
||||||
title: Event
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/event.yaml"
|
|
||||||
required: ["room_id", "membership"]
|
|
||||||
account_data:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The global private data created by this user.
|
|
||||||
items:
|
|
||||||
title: Event
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/event.yaml"
|
|
||||||
required: ["end", "rooms", "presence"]
|
|
||||||
404:
|
|
||||||
description: There is no avatar URL for this user or this user does not exist.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
deprecated: true
|
|
||||||
"/events/{eventId}":
|
|
||||||
get:
|
|
||||||
summary: Get a single event by event ID.
|
|
||||||
description: |-
|
|
||||||
Get a single event based on ``event_id``. You must have permission to
|
|
||||||
retrieve this event e.g. by being a member in the room for this event.
|
|
||||||
|
|
||||||
This endpoint was deprecated in r0 of this specification. Clients
|
|
||||||
should instead call the |/rooms/{roomId}/event/{eventId}|_ API
|
|
||||||
or the |/rooms/{roomId}/context/{eventId}|_ API.
|
|
||||||
operationId: getOneEvent
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventId
|
|
||||||
description: The event ID to get.
|
|
||||||
required: true
|
|
||||||
x-example: "$asfDuShaf7Gafaw:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The full event.
|
|
||||||
examples:
|
|
||||||
application/json: {"$ref": "definitions/event-schemas/examples/m.room.message$m.text"}
|
|
||||||
schema:
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/event.yaml"
|
|
||||||
404:
|
|
||||||
description: The event was not found or you do not have permission to read this event.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
deprecated: true
|
|
@ -1,103 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server OpenID API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/user/{userId}/openid/request_token":
|
|
||||||
post:
|
|
||||||
summary: Get an OpenID token object to verify the requester's identity.
|
|
||||||
description: |-
|
|
||||||
Gets an OpenID token object that the requester may supply to another
|
|
||||||
service to verify their identity in Matrix. The generated token is only
|
|
||||||
valid for exchanging for user information from the federation API for
|
|
||||||
OpenID.
|
|
||||||
|
|
||||||
The access token generated is only valid for the OpenID API. It cannot
|
|
||||||
be used to request another OpenID access token or call ``/sync``, for
|
|
||||||
example.
|
|
||||||
operationId: requestOpenIdToken
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: |-
|
|
||||||
The user to request and OpenID token for. Should be the user who
|
|
||||||
is authenticated for the request.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: An empty object. Reserved for future expansion.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
OpenID token information. This response is nearly compatible with the
|
|
||||||
response documented in the `OpenID 1.0 Specification <http://openid.net/specs/openid-connect-core-1_0.html#TokenResponse>`_
|
|
||||||
with the only difference being the lack of an ``id_token``. Instead,
|
|
||||||
the Matrix homeserver's name is provided.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"access_token": "SomeT0kenHere",
|
|
||||||
"token_type": "Bearer",
|
|
||||||
"matrix_server_name": "example.com",
|
|
||||||
"expires_in": 3600,
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
access_token:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
An access token the consumer may use to verify the identity of
|
|
||||||
the person who generated the token. This is given to the federation
|
|
||||||
API ``GET /openid/userinfo``.
|
|
||||||
token_type:
|
|
||||||
type: string
|
|
||||||
description: The string ``Bearer``.
|
|
||||||
matrix_server_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The homeserver domain the consumer should use when attempting to
|
|
||||||
verify the user's identity.
|
|
||||||
expires_in:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The number of seconds before this token expires and a new one must
|
|
||||||
be generated.
|
|
||||||
required: ['access_token', 'token_type', 'matrix_server_name', 'expires_in']
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- OpenID
|
|
@ -1,106 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Sync Guest API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/events":
|
|
||||||
get:
|
|
||||||
summary: Listen on the event stream.
|
|
||||||
description: |-
|
|
||||||
This will listen for new events related to a particular room and return
|
|
||||||
them to the caller. This will block until an event is received, or until
|
|
||||||
the ``timeout`` is reached.
|
|
||||||
|
|
||||||
This API is the same as the normal ``/events`` endpoint, but can be
|
|
||||||
called by users who have not joined the room.
|
|
||||||
|
|
||||||
Note that the normal ``/events`` endpoint has been deprecated. This
|
|
||||||
API will also be deprecated at some point, but its replacement is not
|
|
||||||
yet known.
|
|
||||||
operationId: peekEvents
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: from
|
|
||||||
description: |-
|
|
||||||
The token to stream from. This token is either from a previous
|
|
||||||
request to this API or from the initial sync API.
|
|
||||||
required: false
|
|
||||||
x-example: "s3456_9_0"
|
|
||||||
- in: query
|
|
||||||
type: integer
|
|
||||||
name: timeout
|
|
||||||
description: The maximum time in milliseconds to wait for an event.
|
|
||||||
required: false
|
|
||||||
x-example: "35000"
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: room_id
|
|
||||||
description: |-
|
|
||||||
The room ID for which events should be returned.
|
|
||||||
x-example:
|
|
||||||
- "!somewhere:over.the.rainbow"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "The events received, which may be none."
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"start": "s3456_9_0",
|
|
||||||
"end": "s3457_9_0",
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"room_id": "!somewhere:over.the.rainbow",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
start:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the first value in ``chunk``. This
|
|
||||||
is usually the same token supplied to ``from=``.
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the last value in ``chunk``. This
|
|
||||||
token should be used in the next request to ``/events``.
|
|
||||||
chunk:
|
|
||||||
type: array
|
|
||||||
description: "An array of events."
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Event
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
400:
|
|
||||||
description: "Bad pagination ``from`` parameter."
|
|
||||||
# No tags to exclude this from the swagger UI - use the normal version instead.
|
|
@ -1,138 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Presence API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/presence/{userId}/status":
|
|
||||||
put:
|
|
||||||
summary: Update this user's presence state.
|
|
||||||
description: |-
|
|
||||||
This API sets the given user's presence state. When setting the status,
|
|
||||||
the activity time is updated to reflect that activity; the client does
|
|
||||||
not need to specify the ``last_active_ago`` field. You cannot set the
|
|
||||||
presence state of another user.
|
|
||||||
operationId: setPresence
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose presence state to update.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: body
|
|
||||||
name: presenceState
|
|
||||||
description: The updated presence state.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"presence": "online",
|
|
||||||
"status_msg": "I am here."
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
presence:
|
|
||||||
type: string
|
|
||||||
enum: ["online", "offline", "unavailable"]
|
|
||||||
description: The new presence state.
|
|
||||||
status_msg:
|
|
||||||
type: string
|
|
||||||
description: "The status message to attach to this state."
|
|
||||||
required: ["presence"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The new presence state was set.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Presence
|
|
||||||
get:
|
|
||||||
summary: Get this user's presence state.
|
|
||||||
description: |-
|
|
||||||
Get the given user's presence state.
|
|
||||||
operationId: getPresence
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose presence state to get.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The presence state for this user.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"presence": "unavailable",
|
|
||||||
"last_active_ago": 420845
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
presence:
|
|
||||||
type: string
|
|
||||||
enum: ["online", "offline", "unavailable"]
|
|
||||||
description: This user's presence.
|
|
||||||
last_active_ago:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The length of time in milliseconds since an action was performed
|
|
||||||
by this user.
|
|
||||||
status_msg:
|
|
||||||
type: [string, "null"]
|
|
||||||
description: The state message for this user if one was set.
|
|
||||||
currently_active:
|
|
||||||
type: boolean
|
|
||||||
description: "Whether the user is currently active"
|
|
||||||
required: ["presence"]
|
|
||||||
404:
|
|
||||||
description: |-
|
|
||||||
There is no presence state for this user. This user may not exist or
|
|
||||||
isn't exposing presence information to you.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
403:
|
|
||||||
description: You are not allowed to see this user's presence status.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "You are not allowed to see their presence"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Presence
|
|
@ -1,214 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Profile API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/profile/{userId}/displayname":
|
|
||||||
put:
|
|
||||||
summary: Set the user's display name.
|
|
||||||
description: |-
|
|
||||||
This API sets the given user's display name. You must have permission to
|
|
||||||
set this user's display name, e.g. you need to have their ``access_token``.
|
|
||||||
operationId: setDisplayName
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose display name to set.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: body
|
|
||||||
name: displayName
|
|
||||||
description: The display name info.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"displayname": "Alice Margatroid"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
displayname:
|
|
||||||
type: string
|
|
||||||
description: The new display name for this user.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The display name was set.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
get:
|
|
||||||
summary: Get the user's display name.
|
|
||||||
description: |-
|
|
||||||
Get the user's display name. This API may be used to fetch the user's
|
|
||||||
own displayname or to query the name of other users; either locally or
|
|
||||||
on remote homeservers.
|
|
||||||
operationId: getDisplayName
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose display name to get.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The display name for this user.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"displayname": "Alice Margatroid"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
displayname:
|
|
||||||
type: string
|
|
||||||
description: The user's display name if they have set one, otherwise not present.
|
|
||||||
404:
|
|
||||||
description: There is no display name for this user or this user does not exist.
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/profile/{userId}/avatar_url":
|
|
||||||
put:
|
|
||||||
summary: Set the user's avatar URL.
|
|
||||||
description: |-
|
|
||||||
This API sets the given user's avatar URL. You must have permission to
|
|
||||||
set this user's avatar URL, e.g. you need to have their ``access_token``.
|
|
||||||
operationId: setAvatarUrl
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose avatar URL to set.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: body
|
|
||||||
name: avatar_url
|
|
||||||
description: The avatar url info.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"avatar_url": "mxc://matrix.org/wefh34uihSDRGhw34"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
description: The new avatar URL for this user.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The avatar URL was set.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
get:
|
|
||||||
summary: Get the user's avatar URL.
|
|
||||||
description: |-
|
|
||||||
Get the user's avatar URL. This API may be used to fetch the user's
|
|
||||||
own avatar URL or to query the URL of other users; either locally or
|
|
||||||
on remote homeservers.
|
|
||||||
operationId: getAvatarUrl
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose avatar URL to get.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The avatar URL for this user.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"avatar_url": "mxc://matrix.org/SDGdghriugerRg"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
description: The user's avatar URL if they have set one, otherwise not present.
|
|
||||||
404:
|
|
||||||
description: There is no avatar URL for this user or this user does not exist.
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/profile/{userId}":
|
|
||||||
get:
|
|
||||||
summary: Get this user's profile information.
|
|
||||||
description: |-
|
|
||||||
Get the combined profile information for this user. This API may be used
|
|
||||||
to fetch the user's own profile information or other users; either
|
|
||||||
locally or on remote homeservers. This API may return keys which are not
|
|
||||||
limited to ``displayname`` or ``avatar_url``.
|
|
||||||
operationId: getUserProfile
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user whose profile information to get.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The avatar URL for this user.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"avatar_url": "mxc://matrix.org/SDGdghriugerRg",
|
|
||||||
"displayname": "Alice Margatroid"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
description: The user's avatar URL if they have set one, otherwise not present.
|
|
||||||
displayname:
|
|
||||||
type: string
|
|
||||||
description: The user's display name if they have set one, otherwise not present.
|
|
||||||
404:
|
|
||||||
description: There is no profile information for this user or this user does not exist.
|
|
||||||
tags:
|
|
||||||
- User data
|
|
@ -1,268 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Push API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/pushers":
|
|
||||||
get:
|
|
||||||
summary: Gets the current pushers for the authenticated user
|
|
||||||
description: |-
|
|
||||||
Gets all currently active pushers for the authenticated user.
|
|
||||||
operationId: getPushers
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The pushers for this user.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"pushers": [
|
|
||||||
{
|
|
||||||
"pushkey": "Xp/MzCt8/9DcSNE9cuiaoT5Ac55job3TdLSSmtmYl4A=",
|
|
||||||
"kind": "http",
|
|
||||||
"app_id": "face.mcapp.appy.prod",
|
|
||||||
"app_display_name": "Appy McAppface",
|
|
||||||
"device_display_name": "Alice's Phone",
|
|
||||||
"profile_tag": "xyz",
|
|
||||||
"lang": "en-US",
|
|
||||||
"data": {
|
|
||||||
"url": "https://example.com/_matrix/push/v1/notify"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
pushers:
|
|
||||||
type: array
|
|
||||||
title: Pushers
|
|
||||||
description: |-
|
|
||||||
An array containing the current pushers for the user
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Pusher
|
|
||||||
properties:
|
|
||||||
pushkey:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
This is a unique identifier for this pusher. See ``/set`` for
|
|
||||||
more detail.
|
|
||||||
Max length, 512 bytes.
|
|
||||||
kind:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The kind of pusher. ``"http"`` is a pusher that
|
|
||||||
sends HTTP pokes.
|
|
||||||
app_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
This is a reverse-DNS style identifier for the application.
|
|
||||||
Max length, 64 chars.
|
|
||||||
app_display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A string that will allow the user to identify what application
|
|
||||||
owns this pusher.
|
|
||||||
device_display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A string that will allow the user to identify what device owns
|
|
||||||
this pusher.
|
|
||||||
profile_tag:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
This string determines which set of device specific rules this
|
|
||||||
pusher executes.
|
|
||||||
lang:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The preferred language for receiving notifications (e.g. 'en'
|
|
||||||
or 'en-US')
|
|
||||||
data:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
A dictionary of information for the pusher implementation
|
|
||||||
itself.
|
|
||||||
title: PusherData
|
|
||||||
properties:
|
|
||||||
url:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Required if ``kind`` is ``http``. The URL to use to send
|
|
||||||
notifications to.
|
|
||||||
format:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The format to use when sending notifications to the Push
|
|
||||||
Gateway.
|
|
||||||
required:
|
|
||||||
- pushkey
|
|
||||||
- app_id
|
|
||||||
- kind
|
|
||||||
- app_display_name
|
|
||||||
- device_display_name
|
|
||||||
- lang
|
|
||||||
- data
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
||||||
"/pushers/set":
|
|
||||||
post:
|
|
||||||
summary: Modify a pusher for this user on the homeserver.
|
|
||||||
description: |-
|
|
||||||
This endpoint allows the creation, modification and deletion of `pushers`_
|
|
||||||
for this user ID. The behaviour of this endpoint varies depending on the
|
|
||||||
values in the JSON body.
|
|
||||||
operationId: postPusher
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: pusher
|
|
||||||
description: The pusher information.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"lang": "en",
|
|
||||||
"kind": "http",
|
|
||||||
"app_display_name": "Mat Rix",
|
|
||||||
"device_display_name": "iPhone 9",
|
|
||||||
"profile_tag": "xxyyzz",
|
|
||||||
"app_id": "com.example.app.ios",
|
|
||||||
"pushkey": "APA91bHPRgkF3JUikC4ENAHEeMrd41Zxv3hVZjC9KtT8OvPVGJ-hQMRKRrZuJAEcl7B338qju59zJMjw2DELjzEvxwYv7hH5Ynpc1ODQ0aT4U4OFEeco8ohsN5PjL1iC2dNtk2BAokeMCg2ZXKqpc8FXKmhX94kIxQ",
|
|
||||||
"data": {
|
|
||||||
"url": "https://push-gateway.location.here/_matrix/push/v1/notify",
|
|
||||||
"format": "event_id_only"
|
|
||||||
},
|
|
||||||
"append": false
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
pushkey:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
This is a unique identifier for this pusher. The value you
|
|
||||||
should use for this is the routing or destination address
|
|
||||||
information for the notification, for example, the APNS token
|
|
||||||
for APNS or the Registration ID for GCM. If your notification
|
|
||||||
client has no such concept, use any unique identifier.
|
|
||||||
Max length, 512 bytes.
|
|
||||||
|
|
||||||
If the ``kind`` is ``"email"``, this is the email address to
|
|
||||||
send notifications to.
|
|
||||||
kind:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The kind of pusher to configure. ``"http"`` makes a pusher that
|
|
||||||
sends HTTP pokes. ``"email"`` makes a pusher that emails the
|
|
||||||
user with unread notifications. ``null`` deletes the pusher.
|
|
||||||
app_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
This is a reverse-DNS style identifier for the application.
|
|
||||||
It is recommended that this end with the platform, such that
|
|
||||||
different platform versions get different app identifiers.
|
|
||||||
Max length, 64 chars.
|
|
||||||
|
|
||||||
If the ``kind`` is ``"email"``, this is ``"m.email"``.
|
|
||||||
app_display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A string that will allow the user to identify what application
|
|
||||||
owns this pusher.
|
|
||||||
device_display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A string that will allow the user to identify what device owns
|
|
||||||
this pusher.
|
|
||||||
profile_tag:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
This string determines which set of device specific rules this
|
|
||||||
pusher executes.
|
|
||||||
lang:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The preferred language for receiving notifications (e.g. 'en'
|
|
||||||
or 'en-US').
|
|
||||||
data:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
A dictionary of information for the pusher implementation
|
|
||||||
itself. If ``kind`` is ``http``, this should contain ``url``
|
|
||||||
which is the URL to use to send notifications to.
|
|
||||||
title: PusherData
|
|
||||||
properties:
|
|
||||||
url:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Required if ``kind`` is ``http``. The URL to use to send
|
|
||||||
notifications to. MUST be an HTTPS URL with a path of
|
|
||||||
``/_matrix/push/v1/notify``.
|
|
||||||
example: "https://push-gateway.location.here/_matrix/push/v1/notify"
|
|
||||||
format:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The format to send notifications in to Push Gateways if the
|
|
||||||
``kind`` is ``http``. The details about what fields the
|
|
||||||
homeserver should send to the push gateway are defined in the
|
|
||||||
`Push Gateway Specification`_. Currently the only format
|
|
||||||
available is 'event_id_only'.
|
|
||||||
append:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
If true, the homeserver should add another pusher with the
|
|
||||||
given pushkey and App ID in addition to any others with
|
|
||||||
different user IDs. Otherwise, the homeserver must remove any
|
|
||||||
other pushers with the same App ID and pushkey for different
|
|
||||||
users. The default is ``false``.
|
|
||||||
required: ['kind', 'app_id', 'app_display_name',
|
|
||||||
'device_display_name', 'pushkey', 'lang', 'data']
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The pusher was set.
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
description: An empty object.
|
|
||||||
400:
|
|
||||||
description: One or more of the pusher values were invalid.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"error": "Missing parameters: lang, data",
|
|
||||||
"errcode": "M_MISSING_PARAM"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
@ -1,658 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Push Rules API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/pushrules/":
|
|
||||||
get:
|
|
||||||
summary: Retrieve all push rulesets.
|
|
||||||
description: |-
|
|
||||||
Retrieve all push rulesets for this user. Clients can "drill-down" on
|
|
||||||
the rulesets by suffixing a ``scope`` to this path e.g.
|
|
||||||
``/pushrules/global/``. This will return a subset of this data under the
|
|
||||||
specified key e.g. the ``global`` key.
|
|
||||||
operationId: getPushRules
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: All the push rulesets for this user.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
required: ["global"]
|
|
||||||
properties:
|
|
||||||
global:
|
|
||||||
type: object
|
|
||||||
description: The global ruleset.
|
|
||||||
title: Ruleset
|
|
||||||
allOf: [
|
|
||||||
"$ref": "definitions/push_ruleset.yaml"
|
|
||||||
]
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"global": {
|
|
||||||
"content": [
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify",
|
|
||||||
{
|
|
||||||
"set_tweak": "sound",
|
|
||||||
"value": "default"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"set_tweak": "highlight"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"pattern": "alice",
|
|
||||||
"rule_id": ".m.rule.contains_user_name"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"override": [
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"dont_notify"
|
|
||||||
],
|
|
||||||
"conditions": [],
|
|
||||||
"default": true,
|
|
||||||
"enabled": false,
|
|
||||||
"rule_id": ".m.rule.master"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"dont_notify"
|
|
||||||
],
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"key": "content.msgtype",
|
|
||||||
"kind": "event_match",
|
|
||||||
"pattern": "m.notice"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"rule_id": ".m.rule.suppress_notices"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"room": [],
|
|
||||||
"sender": [],
|
|
||||||
"underride": [
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify",
|
|
||||||
{
|
|
||||||
"set_tweak": "sound",
|
|
||||||
"value": "ring"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"set_tweak": "highlight",
|
|
||||||
"value": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"key": "type",
|
|
||||||
"kind": "event_match",
|
|
||||||
"pattern": "m.call.invite"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"rule_id": ".m.rule.call"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify",
|
|
||||||
{
|
|
||||||
"set_tweak": "sound",
|
|
||||||
"value": "default"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"set_tweak": "highlight"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"kind": "contains_display_name"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"rule_id": ".m.rule.contains_display_name"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify",
|
|
||||||
{
|
|
||||||
"set_tweak": "sound",
|
|
||||||
"value": "default"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"set_tweak": "highlight",
|
|
||||||
"value": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"is": "2",
|
|
||||||
"kind": "room_member_count"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"rule_id": ".m.rule.room_one_to_one"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify",
|
|
||||||
{
|
|
||||||
"set_tweak": "sound",
|
|
||||||
"value": "default"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"set_tweak": "highlight",
|
|
||||||
"value": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"key": "type",
|
|
||||||
"kind": "event_match",
|
|
||||||
"pattern": "m.room.member"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "content.membership",
|
|
||||||
"kind": "event_match",
|
|
||||||
"pattern": "invite"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "state_key",
|
|
||||||
"kind": "event_match",
|
|
||||||
"pattern": "@alice:example.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"rule_id": ".m.rule.invite_for_me"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify",
|
|
||||||
{
|
|
||||||
"set_tweak": "highlight",
|
|
||||||
"value": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"key": "type",
|
|
||||||
"kind": "event_match",
|
|
||||||
"pattern": "m.room.member"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"rule_id": ".m.rule.member_event"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"actions": [
|
|
||||||
"notify",
|
|
||||||
{
|
|
||||||
"set_tweak": "highlight",
|
|
||||||
"value": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"key": "type",
|
|
||||||
"kind": "event_match",
|
|
||||||
"pattern": "m.room.message"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default": true,
|
|
||||||
"enabled": true,
|
|
||||||
"rule_id": ".m.rule.message"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
||||||
"/pushrules/{scope}/{kind}/{ruleId}":
|
|
||||||
get:
|
|
||||||
summary: Retrieve a push rule.
|
|
||||||
description: |-
|
|
||||||
Retrieve a single specified push rule.
|
|
||||||
operationId: getPushRule
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: scope
|
|
||||||
required: true
|
|
||||||
x-example: "global"
|
|
||||||
description: |-
|
|
||||||
``global`` to specify global rules.
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: kind
|
|
||||||
required: true
|
|
||||||
x-example: content
|
|
||||||
enum: ["override", "underride", "sender", "room", "content"]
|
|
||||||
description: |
|
|
||||||
The kind of rule
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: ruleId
|
|
||||||
required: true
|
|
||||||
x-example: "nocake"
|
|
||||||
description: |
|
|
||||||
The identifier for the rule.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The specific push rule. This will also include keys specific to the
|
|
||||||
rule itself such as the rule's ``actions`` and ``conditions`` if set.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"actions": [
|
|
||||||
"dont_notify"
|
|
||||||
],
|
|
||||||
"pattern": "cake*lie",
|
|
||||||
"rule_id": "nocake",
|
|
||||||
"enabled": true,
|
|
||||||
"default": false
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
description: The push rule.
|
|
||||||
allOf: [
|
|
||||||
"$ref": "definitions/push_rule.yaml"
|
|
||||||
]
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
||||||
delete:
|
|
||||||
summary: Delete a push rule.
|
|
||||||
description: |-
|
|
||||||
This endpoint removes the push rule defined in the path.
|
|
||||||
operationId: deletePushRule
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: scope
|
|
||||||
required: true
|
|
||||||
x-example: "global"
|
|
||||||
description: |-
|
|
||||||
``global`` to specify global rules.
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: kind
|
|
||||||
required: true
|
|
||||||
x-example: content
|
|
||||||
enum: ["override", "underride", "sender", "room", "content"]
|
|
||||||
description: |
|
|
||||||
The kind of rule
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: ruleId
|
|
||||||
required: true
|
|
||||||
x-example: "nocake"
|
|
||||||
description: |
|
|
||||||
The identifier for the rule.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The push rule was deleted.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
||||||
put:
|
|
||||||
summary: Add or change a push rule.
|
|
||||||
description: |-
|
|
||||||
This endpoint allows the creation, modification and deletion of pushers
|
|
||||||
for this user ID. The behaviour of this endpoint varies depending on the
|
|
||||||
values in the JSON body.
|
|
||||||
|
|
||||||
When creating push rules, they MUST be enabled by default.
|
|
||||||
operationId: setPushRule
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: scope
|
|
||||||
required: true
|
|
||||||
x-example: "global"
|
|
||||||
description: |-
|
|
||||||
``global`` to specify global rules.
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: kind
|
|
||||||
required: true
|
|
||||||
x-example: content
|
|
||||||
enum: ["override", "underride", "sender", "room", "content"]
|
|
||||||
description: |
|
|
||||||
The kind of rule
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: ruleId
|
|
||||||
required: true
|
|
||||||
x-example: "nocake"
|
|
||||||
description: |
|
|
||||||
The identifier for the rule.
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: before
|
|
||||||
required: false
|
|
||||||
x-example: someRuleId
|
|
||||||
description: |-
|
|
||||||
Use 'before' with a ``rule_id`` as its value to make the new rule the
|
|
||||||
next-most important rule with respect to the given user defined rule.
|
|
||||||
It is not possible to add a rule relative to a predefined server rule.
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: after
|
|
||||||
required: false
|
|
||||||
x-example: anotherRuleId
|
|
||||||
description: |-
|
|
||||||
This makes the new rule the next-less important rule relative to the
|
|
||||||
given user defined rule. It is not possible to add a rule relative
|
|
||||||
to a predefined server rule.
|
|
||||||
- in: body
|
|
||||||
name: pushrule
|
|
||||||
description: |-
|
|
||||||
The push rule data. Additional top-level keys may be present depending
|
|
||||||
on the parameters for the rule ``kind``.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"pattern": "cake*lie",
|
|
||||||
"actions": ["notify"]
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
actions:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The action(s) to perform when the conditions for this rule are met.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
enum: ["notify", "dont_notify", "coalesce", "set_tweak"]
|
|
||||||
# TODO: type: object e.g. {"set_sound":"beeroclock.wav"} :/
|
|
||||||
conditions:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The conditions that must hold true for an event in order for a
|
|
||||||
rule to be applied to an event. A rule with no conditions
|
|
||||||
always matches. Only applicable to ``underride`` and ``override`` rules.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
allOf: [ "$ref": "definitions/push_condition.yaml" ]
|
|
||||||
pattern:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
Only applicable to ``content`` rules. The glob-style pattern to match against.
|
|
||||||
required: ["actions"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The push rule was created/updated.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
400:
|
|
||||||
description: There was a problem configuring this push rule.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"error": "before/after rule not found: someRuleId",
|
|
||||||
"errcode": "M_UNKNOWN"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
||||||
"/pushrules/{scope}/{kind}/{ruleId}/enabled":
|
|
||||||
get:
|
|
||||||
summary: "Get whether a push rule is enabled"
|
|
||||||
description:
|
|
||||||
This endpoint gets whether the specified push rule is enabled.
|
|
||||||
operationId: isPushRuleEnabled
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: scope
|
|
||||||
required: true
|
|
||||||
x-example: "global"
|
|
||||||
description: |-
|
|
||||||
Either ``global`` or ``device/<profile_tag>`` to specify global
|
|
||||||
rules or device rules for the given ``profile_tag``.
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: kind
|
|
||||||
required: true
|
|
||||||
x-example: cake
|
|
||||||
enum: ["override", "underride", "sender", "room", "content"]
|
|
||||||
description: |
|
|
||||||
The kind of rule
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: ruleId
|
|
||||||
required: true
|
|
||||||
x-example: nocake
|
|
||||||
description: |
|
|
||||||
The identifier for the rule.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: Whether the push rule is enabled.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
enabled:
|
|
||||||
type: boolean
|
|
||||||
description: Whether the push rule is enabled or not.
|
|
||||||
required: ["enabled"]
|
|
||||||
put:
|
|
||||||
summary: "Enable or disable a push rule."
|
|
||||||
description: |-
|
|
||||||
This endpoint allows clients to enable or disable the specified push rule.
|
|
||||||
operationId: setPushRuleEnabled
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: scope
|
|
||||||
required: true
|
|
||||||
x-example: "global"
|
|
||||||
description: |-
|
|
||||||
``global`` to specify global rules.
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: kind
|
|
||||||
required: true
|
|
||||||
x-example: content
|
|
||||||
enum: ["override", "underride", "sender", "room", "content"]
|
|
||||||
description: |
|
|
||||||
The kind of rule
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: ruleId
|
|
||||||
required: true
|
|
||||||
x-example: "nocake"
|
|
||||||
description: |
|
|
||||||
The identifier for the rule.
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: |
|
|
||||||
Whether the push rule is enabled or not.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
enabled:
|
|
||||||
type: boolean
|
|
||||||
description: Whether the push rule is enabled or not.
|
|
||||||
required: ["enabled"]
|
|
||||||
example: {
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The push rule was enabled or disabled.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
||||||
"/pushrules/{scope}/{kind}/{ruleId}/actions":
|
|
||||||
get:
|
|
||||||
summary: "The actions for a push rule"
|
|
||||||
description:
|
|
||||||
This endpoint get the actions for the specified push rule.
|
|
||||||
operationId: getPushRuleActions
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: scope
|
|
||||||
required: true
|
|
||||||
x-example: "global"
|
|
||||||
description: |-
|
|
||||||
Either ``global`` or ``device/<profile_tag>`` to specify global
|
|
||||||
rules or device rules for the given ``profile_tag``.
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: kind
|
|
||||||
required: true
|
|
||||||
x-example: content
|
|
||||||
enum: ["override", "underride", "sender", "room", "content"]
|
|
||||||
description: |
|
|
||||||
The kind of rule
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: ruleId
|
|
||||||
required: true
|
|
||||||
x-example: nocake
|
|
||||||
description: |
|
|
||||||
The identifier for the rule.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The actions for this push rule.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"actions": ["notify"]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
actions:
|
|
||||||
type: array
|
|
||||||
description: The action(s) to perform for this rule.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
required: ["actions"]
|
|
||||||
put:
|
|
||||||
summary: "Set the actions for a push rule."
|
|
||||||
description: |-
|
|
||||||
This endpoint allows clients to change the actions of a push rule.
|
|
||||||
This can be used to change the actions of builtin rules.
|
|
||||||
operationId: setPushRuleActions
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: scope
|
|
||||||
required: true
|
|
||||||
x-example: "global"
|
|
||||||
description: |-
|
|
||||||
``global`` to specify global rules.
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: kind
|
|
||||||
required: true
|
|
||||||
x-example: room
|
|
||||||
enum: ["override", "underride", "sender", "room", "content"]
|
|
||||||
description: |
|
|
||||||
The kind of rule
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: ruleId
|
|
||||||
required: true
|
|
||||||
x-example: "#spam:example.com"
|
|
||||||
description: |
|
|
||||||
The identifier for the rule.
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: |
|
|
||||||
The action(s) to perform when the conditions for this rule are met.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
actions:
|
|
||||||
type: array
|
|
||||||
description: The action(s) to perform for this rule.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
enum: ["notify", "dont_notify", "coalesce", "set_tweak"]
|
|
||||||
# TODO: type: object e.g. {"set_sound":"beeroclock.wav"} :/
|
|
||||||
required: ["actions"]
|
|
||||||
example: {
|
|
||||||
"actions": ["notify"]
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The actions for the push rule were set.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
tags:
|
|
||||||
- Push notifications
|
|
@ -1,79 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Read Marker API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/read_markers":
|
|
||||||
post:
|
|
||||||
summary: Set the position of the read marker for a room.
|
|
||||||
description: |-
|
|
||||||
Sets the position of the read marker for a given room, and optionally
|
|
||||||
the read receipt's location.
|
|
||||||
operationId: setReadMarker
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room ID to set the read marker in for the user.
|
|
||||||
required: true
|
|
||||||
x-example: "!somewhere:example.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
description: The read marker and optional read receipt locations.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
"m.fully_read":
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The event ID the read marker should be located at. The
|
|
||||||
event MUST belong to the room.
|
|
||||||
example: "$somewhere:example.org"
|
|
||||||
"m.read":
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The event ID to set the read receipt location at. This is
|
|
||||||
equivalent to calling ``/receipt/m.read/$elsewhere:example.org``
|
|
||||||
and is provided here to save that extra call.
|
|
||||||
example: "$elsewhere:example.org"
|
|
||||||
required: ['m.fully_read']
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
The read marker, and read receipt if provided, have been updated.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties: {}
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Read Markers
|
|
@ -1,81 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Receipts API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/receipt/{receiptType}/{eventId}":
|
|
||||||
post:
|
|
||||||
summary: Send a receipt for the given event ID.
|
|
||||||
description: |-
|
|
||||||
This API updates the marker for the given receipt type to the event ID
|
|
||||||
specified.
|
|
||||||
operationId: postReceipt
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room in which to send the event.
|
|
||||||
required: true
|
|
||||||
x-example: "!wefuh21ffskfuh345:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: receiptType
|
|
||||||
description: The type of receipt to send.
|
|
||||||
required: true
|
|
||||||
x-example: "m.read"
|
|
||||||
enum: ["m.read"]
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventId
|
|
||||||
description: The event ID to acknowledge up to.
|
|
||||||
required: true
|
|
||||||
x-example: "$1924376522eioj:example.com"
|
|
||||||
- in: body
|
|
||||||
name: receipt
|
|
||||||
description: |-
|
|
||||||
Extra receipt information to attach to ``content`` if any. The
|
|
||||||
server will automatically set the ``ts`` field.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The receipt was sent.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,92 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server message redaction API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/redact/{eventId}/{txnId}":
|
|
||||||
put:
|
|
||||||
summary: Strips all non-integrity-critical information out of an event.
|
|
||||||
description: |-
|
|
||||||
Strips all information out of an event which isn't critical to the
|
|
||||||
integrity of the server-side representation of the room.
|
|
||||||
|
|
||||||
This cannot be undone.
|
|
||||||
|
|
||||||
Users may redact their own events, and any user with a power level
|
|
||||||
greater than or equal to the `redact` power level of the room may
|
|
||||||
redact events there.
|
|
||||||
operationId: redactEvent
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room from which to redact the event.
|
|
||||||
required: true
|
|
||||||
x-example: "!637q39766251:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventId
|
|
||||||
description: The ID of the event to redact
|
|
||||||
required: true
|
|
||||||
x-example: "bai2b1i9:matrix.org"
|
|
||||||
- in: path
|
|
||||||
name: txnId
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The transaction ID for this event. Clients should generate a
|
|
||||||
unique ID; it will be used by the server to ensure idempotency of requests.
|
|
||||||
required: true
|
|
||||||
x-example: "37"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"reason": "Indecent material"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
reason:
|
|
||||||
type: string
|
|
||||||
description: The reason for the event being redacted.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "An ID for the redaction event."
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"event_id": "$YUwQidLecu:example.com"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
event_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A unique identifier for the event.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,640 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Registration API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
paths:
|
|
||||||
"/register":
|
|
||||||
post:
|
|
||||||
summary: Register for an account on this homeserver.
|
|
||||||
description: |-
|
|
||||||
This API endpoint uses the `User-Interactive Authentication API`_, except in
|
|
||||||
the cases where a guest account is being registered.
|
|
||||||
|
|
||||||
Register for an account on this homeserver.
|
|
||||||
|
|
||||||
There are two kinds of user account:
|
|
||||||
|
|
||||||
- `user` accounts. These accounts may use the full API described in this specification.
|
|
||||||
|
|
||||||
- `guest` accounts. These accounts may have limited permissions and may not be supported by all servers.
|
|
||||||
|
|
||||||
If registration is successful, this endpoint will issue an access token
|
|
||||||
the client can use to authorize itself in subsequent requests.
|
|
||||||
|
|
||||||
If the client does not supply a ``device_id``, the server must
|
|
||||||
auto-generate one.
|
|
||||||
|
|
||||||
The server SHOULD register an account with a User ID based on the
|
|
||||||
``username`` provided, if any. Note that the grammar of Matrix User ID
|
|
||||||
localparts is restricted, so the server MUST either map the provided
|
|
||||||
``username`` onto a ``user_id`` in a logical manner, or reject
|
|
||||||
``username``\s which do not comply to the grammar, with
|
|
||||||
``M_INVALID_USERNAME``.
|
|
||||||
|
|
||||||
Matrix clients MUST NOT assume that localpart of the registered
|
|
||||||
``user_id`` matches the provided ``username``.
|
|
||||||
|
|
||||||
The returned access token must be associated with the ``device_id``
|
|
||||||
supplied by the client or generated by the server. The server may
|
|
||||||
invalidate any access token previously associated with that device. See
|
|
||||||
`Relationship between access tokens and devices`_.
|
|
||||||
|
|
||||||
When registering a guest account, all parameters in the request body
|
|
||||||
with the exception of ``initial_device_display_name`` MUST BE ignored
|
|
||||||
by the server. The server MUST pick a ``device_id`` for the account
|
|
||||||
regardless of input.
|
|
||||||
|
|
||||||
Any user ID returned by this API must conform to the grammar given in the
|
|
||||||
`Matrix specification <../appendices.html#user-identifiers>`_.
|
|
||||||
operationId: register
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: kind
|
|
||||||
type: string
|
|
||||||
# swagger-UI overrides the default with the example, so better make the
|
|
||||||
# example the default.
|
|
||||||
x-example: user
|
|
||||||
required: false
|
|
||||||
default: user
|
|
||||||
enum:
|
|
||||||
- guest
|
|
||||||
- user
|
|
||||||
description: The kind of account to register. Defaults to ``user``.
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
auth:
|
|
||||||
description: |-
|
|
||||||
Additional authentication information for the
|
|
||||||
user-interactive authentication API. Note that this
|
|
||||||
information is *not* used to define how the registered user
|
|
||||||
should be authenticated, but is instead used to
|
|
||||||
authenticate the ``register`` call itself.
|
|
||||||
"$ref": "definitions/auth_data.yaml"
|
|
||||||
bind_email:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
If true, the server binds the email used for authentication to
|
|
||||||
the Matrix ID with the identity server.
|
|
||||||
example: false
|
|
||||||
bind_msisdn:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
If true, the server binds the phone number used for authentication
|
|
||||||
to the Matrix ID with the identity server.
|
|
||||||
example: false
|
|
||||||
username:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The basis for the localpart of the desired Matrix ID. If omitted,
|
|
||||||
the homeserver MUST generate a Matrix ID local part.
|
|
||||||
example: cheeky_monkey
|
|
||||||
password:
|
|
||||||
type: string
|
|
||||||
description: The desired password for the account.
|
|
||||||
example: ilovebananas
|
|
||||||
device_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
ID of the client device. If this does not correspond to a
|
|
||||||
known client device, a new device will be created. The server
|
|
||||||
will auto-generate a device_id if this is not specified.
|
|
||||||
example: GHTYAJCE
|
|
||||||
initial_device_display_name:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A display name to assign to the newly-created device. Ignored
|
|
||||||
if ``device_id`` corresponds to a known device.
|
|
||||||
example: Jungle Phone
|
|
||||||
inhibit_login:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
If true, an ``access_token`` and ``device_id`` should not be
|
|
||||||
returned from this call, therefore preventing an automatic
|
|
||||||
login. Defaults to false.
|
|
||||||
example: false
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The account has been registered.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"user_id": "@cheeky_monkey:matrix.org",
|
|
||||||
"access_token": "abc123",
|
|
||||||
"device_id": "GHTYAJCE"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The fully-qualified Matrix user ID (MXID) that has been registered.
|
|
||||||
|
|
||||||
Any user ID returned by this API must conform to the grammar given in the
|
|
||||||
`Matrix specification <../appendices.html#user-identifiers>`_.
|
|
||||||
access_token:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
An access token for the account.
|
|
||||||
This access token can then be used to authorize other requests.
|
|
||||||
Required if the ``inhibit_login`` option is false.
|
|
||||||
home_server:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The server_name of the homeserver on which the account has
|
|
||||||
been registered.
|
|
||||||
|
|
||||||
**Deprecated**. Clients should extract the server_name from
|
|
||||||
``user_id`` (by splitting at the first colon) if they require
|
|
||||||
it. Note also that ``homeserver`` is not spelt this way.
|
|
||||||
device_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
ID of the registered device. Will be the same as the
|
|
||||||
corresponding parameter in the request, if one was specified.
|
|
||||||
Required if the ``inhibit_login`` option is false.
|
|
||||||
required: ['user_id']
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
Part of the request was invalid. This may include one of the following error codes:
|
|
||||||
|
|
||||||
* ``M_USER_IN_USE`` : The desired user ID is already taken.
|
|
||||||
* ``M_INVALID_USERNAME`` : The desired user ID is not a valid user name.
|
|
||||||
* ``M_EXCLUSIVE`` : The desired user ID is in the exclusive namespace
|
|
||||||
claimed by an application service.
|
|
||||||
|
|
||||||
These errors may be returned at any stage of the registration process,
|
|
||||||
including after authentication if the requested user ID was registered
|
|
||||||
whilst the client was performing authentication.
|
|
||||||
|
|
||||||
Homeservers MUST perform the relevant checks and return these codes before
|
|
||||||
performing User-Interactive Authentication, although they may also return
|
|
||||||
them after authentication is completed if, for example, the requested user ID
|
|
||||||
was registered whilst the client was performing authentication.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_USER_IN_USE",
|
|
||||||
"error": "Desired user ID is already taken."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver requires additional authentication information.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/auth_response.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The homeserver does not permit registering the account. This response
|
|
||||||
can be used to identify that a particular ``kind`` of account is not
|
|
||||||
allowed, or that registration is generally not supported by the homeserver.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "Registration is disabled"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/register/email/requestToken":
|
|
||||||
post:
|
|
||||||
summary: Begins the validation process for an email to be used during registration.
|
|
||||||
description: |-
|
|
||||||
The homeserver must check that the given email address is **not**
|
|
||||||
already associated with an account on this homeserver. The homeserver
|
|
||||||
has the choice of validating the email address itself, or proxying the
|
|
||||||
request to the ``/validate/email/requestToken`` Identity Service API. The
|
|
||||||
request should be proxied to the domain that is sent by the client in
|
|
||||||
the ``id_server``. It is imperative that the homeserver keep a list of
|
|
||||||
trusted Identity Servers and only proxies to those it trusts.
|
|
||||||
operationId: requestTokenToRegisterEmail
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: "../identity/definitions/request_email_validation.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
An email has been sent to the specified address. Note that this
|
|
||||||
may be an email containing the validation token or it may be
|
|
||||||
informing the user of an error.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/request_token_response.yaml"
|
|
||||||
403:
|
|
||||||
description: The homeserver does not permit the address to be bound.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_DENIED",
|
|
||||||
"error": "Third party identifier is not allowed"
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
Part of the request was invalid. This may include one of the following error codes:
|
|
||||||
|
|
||||||
* ``M_THREEPID_IN_USE`` : The email address is already registered to an account on this server.
|
|
||||||
However, if the homeserver has the ability to send email, it is recommended that the server
|
|
||||||
instead send an email to the user with instructions on how to reset their password.
|
|
||||||
This prevents malicious parties from being able to determine if a given email address
|
|
||||||
has an account on the homeserver in question.
|
|
||||||
* ``M_SERVER_NOT_TRUSTED`` : The ``id_server`` parameter refers to an identity server
|
|
||||||
that is not trusted by this homeserver.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_IN_USE",
|
|
||||||
"error": "The specified address is already in use"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
"/register/msisdn/requestToken":
|
|
||||||
post:
|
|
||||||
summary: Requests a validation token be sent to the given phone number for the purpose of registering an account
|
|
||||||
description: |-
|
|
||||||
The homeserver must check that the given phone number is **not**
|
|
||||||
already associated with an account on this homeserver. The homeserver
|
|
||||||
has the choice of validating the phone number itself, or proxying the
|
|
||||||
request to the ``/validate/msisdn/requestToken`` Identity Service API. The
|
|
||||||
request should be proxied to the domain that is sent by the client in
|
|
||||||
the ``id_server``. It is imperative that the homeserver keep a list of
|
|
||||||
trusted Identity Servers and only proxies to those it trusts.
|
|
||||||
operationId: requestTokenToRegisterMSISDN
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: "../identity/definitions/request_msisdn_validation.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
An SMS message has been sent to the specified phone number. Note
|
|
||||||
that this may be an SMS message containing the validation token or
|
|
||||||
it may be informing the user of an error.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/request_token_response.yaml"
|
|
||||||
403:
|
|
||||||
description: The homeserver does not permit the address to be bound.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_DENIED",
|
|
||||||
"error": "Third party identifier is not allowed"
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
Part of the request was invalid. This may include one of the following error codes:
|
|
||||||
|
|
||||||
* ``M_THREEPID_IN_USE`` : The phone number is already registered to an account on this server.
|
|
||||||
However, if the homeserver has the ability to send SMS message, it is recommended that the server
|
|
||||||
instead send an SMS message to the user with instructions on how to reset their password.
|
|
||||||
This prevents malicious parties from being able to determine if a given phone number
|
|
||||||
has an account on the homeserver in question.
|
|
||||||
* ``M_SERVER_NOT_TRUSTED`` : The ``id_server`` parameter refers to an identity server
|
|
||||||
that is not trusted by this homeserver.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_IN_USE",
|
|
||||||
"error": "The specified address is already in use"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
"/account/password":
|
|
||||||
post:
|
|
||||||
summary: "Changes a user's password."
|
|
||||||
description: |-
|
|
||||||
Changes the password for an account on this homeserver.
|
|
||||||
|
|
||||||
This API endpoint uses the `User-Interactive Authentication API`_ to
|
|
||||||
ensure the user changing the password is actually the owner of the
|
|
||||||
account.
|
|
||||||
|
|
||||||
An access token should be submitted to this endpoint if the client has
|
|
||||||
an active session.
|
|
||||||
|
|
||||||
The homeserver may change the flows available depending on whether a
|
|
||||||
valid access token is provided. The homeserver SHOULD NOT revoke the
|
|
||||||
access token provided in the request, however all other access tokens
|
|
||||||
for the user should be revoked if the request succeeds.
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
operationId: changePassword
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
new_password:
|
|
||||||
type: string
|
|
||||||
description: The new password for the account.
|
|
||||||
example: "ihatebananas"
|
|
||||||
auth:
|
|
||||||
description: |-
|
|
||||||
Additional authentication information for the user-interactive authentication API.
|
|
||||||
"$ref": "definitions/auth_data.yaml"
|
|
||||||
required: ["new_password"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The password has been changed.
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver requires additional authentication information.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/auth_response.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/account/password/email/requestToken":
|
|
||||||
post:
|
|
||||||
summary: Requests a validation token be sent to the given email address for the purpose of resetting a user's password
|
|
||||||
description: |-
|
|
||||||
The homeserver must check that the given email address **is
|
|
||||||
associated** with an account on this homeserver. This API should be
|
|
||||||
used to request validation tokens when authenticating for the
|
|
||||||
``/account/password`` endpoint.
|
|
||||||
|
|
||||||
This API's parameters and response are identical to that of the
|
|
||||||
|/register/email/requestToken|_ endpoint, except that
|
|
||||||
``M_THREEPID_NOT_FOUND`` may be returned if no account matching the
|
|
||||||
given email address could be found. The server may instead send an
|
|
||||||
email to the given address prompting the user to create an account.
|
|
||||||
``M_THREEPID_IN_USE`` may not be returned.
|
|
||||||
|
|
||||||
The homeserver has the choice of validating the email address itself,
|
|
||||||
or proxying the request to the ``/validate/email/requestToken``
|
|
||||||
Identity Service API. The request should be proxied to the domain that
|
|
||||||
is sent by the client in the ``id_server``. It is imperative that the
|
|
||||||
homeserver keep a list of trusted Identity Servers and only proxies to
|
|
||||||
those that it trusts.
|
|
||||||
|
|
||||||
|
|
||||||
.. |/register/email/requestToken| replace:: ``/register/email/requestToken``
|
|
||||||
|
|
||||||
.. _/register/email/requestToken: #post-matrix-client-%CLIENT_MAJOR_VERSION%-register-email-requesttoken
|
|
||||||
operationId: requestTokenToResetPasswordEmail
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: "../identity/definitions/request_email_validation.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: An email was sent to the given address.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/request_token_response.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The homeserver does not allow the third party identifier as a
|
|
||||||
contact option.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_DENIED",
|
|
||||||
"error": "Third party identifier is not allowed"
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
The referenced third party identifier is not recognised by the
|
|
||||||
homeserver, or the request was invalid
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_NOT_FOUND",
|
|
||||||
"error": "Email not found"
|
|
||||||
}
|
|
||||||
"/account/password/msisdn/requestToken":
|
|
||||||
post:
|
|
||||||
summary: Requests a validation token be sent to the given phone number for the purpose of resetting a user's password.
|
|
||||||
description: |-
|
|
||||||
The homeserver must check that the given phone number **is
|
|
||||||
associated** with an account on this homeserver. This API should be
|
|
||||||
used to request validation tokens when authenticating for the
|
|
||||||
``/account/password`` endpoint.
|
|
||||||
|
|
||||||
This API's parameters and response are identical to that of the
|
|
||||||
|/register/msisdn/requestToken|_ endpoint, except that
|
|
||||||
``M_THREEPID_NOT_FOUND`` may be returned if no account matching the
|
|
||||||
given phone number could be found. The server may instead send the SMS
|
|
||||||
to the given phone number prompting the user to create an account.
|
|
||||||
``M_THREEPID_IN_USE`` may not be returned.
|
|
||||||
|
|
||||||
The homeserver has the choice of validating the phone number itself, or
|
|
||||||
proxying the request to the ``/validate/msisdn/requestToken`` Identity
|
|
||||||
Service API. The request should be proxied to the domain that is sent
|
|
||||||
by the client in the ``id_server``. It is imperative that the
|
|
||||||
homeserver keep a list of trusted Identity Servers and only proxies to
|
|
||||||
those that it trusts.
|
|
||||||
|
|
||||||
.. |/register/msisdn/requestToken| replace:: ``/register/msisdn/requestToken``
|
|
||||||
|
|
||||||
.. _/register/msisdn/requestToken: #post-matrix-client-%CLIENT_MAJOR_VERSION%-register-email-requesttoken
|
|
||||||
operationId: requestTokenToResetPasswordMSISDN
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: "../identity/definitions/request_msisdn_validation.yaml"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: An SMS message was sent to the given phone number.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/request_token_response.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The homeserver does not allow the third party identifier as a
|
|
||||||
contact option.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_DENIED",
|
|
||||||
"error": "Third party identifier is not allowed"
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
The referenced third party identifier is not recognised by the
|
|
||||||
homeserver, or the request was invalid
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_THREEPID_NOT_FOUND",
|
|
||||||
"error": "Phone number not found"
|
|
||||||
}
|
|
||||||
"/account/deactivate":
|
|
||||||
post:
|
|
||||||
summary: "Deactivate a user's account."
|
|
||||||
description: |-
|
|
||||||
Deactivate the user's account, removing all ability for the user to
|
|
||||||
login again.
|
|
||||||
|
|
||||||
This API endpoint uses the `User-Interactive Authentication API`_.
|
|
||||||
|
|
||||||
An access token should be submitted to this endpoint if the client has
|
|
||||||
an active session.
|
|
||||||
|
|
||||||
The homeserver may change the flows available depending on whether a
|
|
||||||
valid access token is provided.
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
operationId: deactivateAccount
|
|
||||||
parameters:
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
auth:
|
|
||||||
description: |-
|
|
||||||
Additional authentication information for the user-interactive authentication API.
|
|
||||||
"$ref": "definitions/auth_data.yaml"
|
|
||||||
id_server:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The identity server to unbind all of the user's 3PIDs from.
|
|
||||||
If not provided, the homeserver MUST use the ``id_server``
|
|
||||||
that was originally use to bind each identifier. If the
|
|
||||||
homeserver does not know which ``id_server`` that was,
|
|
||||||
it must return an ``id_server_unbind_result`` of
|
|
||||||
``no-support``.
|
|
||||||
example: "example.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The account has been deactivated.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id_server_unbind_result:
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- "success"
|
|
||||||
- "no-support"
|
|
||||||
description: |-
|
|
||||||
An indicator as to whether or not the homeserver was able to unbind
|
|
||||||
the user's 3PIDs from the identity server(s). ``success`` indicates
|
|
||||||
that all identifiers have been unbound from the identity server while
|
|
||||||
``no-support`` indicates that one or more identifiers failed to unbind
|
|
||||||
due to the identity server refusing the request or the homeserver
|
|
||||||
being unable to determine an identity server to unbind from. This
|
|
||||||
must be ``success`` if the homeserver has no identifiers to unbind
|
|
||||||
for the user.
|
|
||||||
example: "success"
|
|
||||||
required:
|
|
||||||
- id_server_unbind_result
|
|
||||||
401:
|
|
||||||
description: |-
|
|
||||||
The homeserver requires additional authentication information.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/auth_response.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/register/available":
|
|
||||||
get:
|
|
||||||
summary: Checks to see if a username is available on the server.
|
|
||||||
description: |-
|
|
||||||
Checks to see if a username is available, and valid, for the server.
|
|
||||||
|
|
||||||
The server should check to ensure that, at the time of the request, the
|
|
||||||
username requested is available for use. This includes verifying that an
|
|
||||||
application service has not claimed the username and that the username
|
|
||||||
fits the server's desired requirements (for example, a server could dictate
|
|
||||||
that it does not permit usernames with underscores).
|
|
||||||
|
|
||||||
Matrix clients may wish to use this API prior to attempting registration,
|
|
||||||
however the clients must also be aware that using this API does not normally
|
|
||||||
reserve the username. This can mean that the username becomes unavailable
|
|
||||||
between checking its availability and attempting to register it.
|
|
||||||
operationId: checkUsernameAvailability
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: username
|
|
||||||
type: string
|
|
||||||
x-example: my_cool_localpart
|
|
||||||
required: true
|
|
||||||
default: my_cool_localpart
|
|
||||||
description: The username to check the availability of.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The username is available
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"available": true
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
available:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
A flag to indicate that the username is available. This should always
|
|
||||||
be ``true`` when the server replies with 200 OK.
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
Part of the request was invalid or the username is not available. This may
|
|
||||||
include one of the following error codes:
|
|
||||||
|
|
||||||
* ``M_USER_IN_USE`` : The desired username is already taken.
|
|
||||||
* ``M_INVALID_USERNAME`` : The desired username is not a valid user name.
|
|
||||||
* ``M_EXCLUSIVE`` : The desired username is in the exclusive namespace
|
|
||||||
claimed by an application service.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_USER_IN_USE",
|
|
||||||
"error": "Desired user ID is already taken."
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- User data
|
|
@ -1,78 +0,0 @@
|
|||||||
# Copyright 2018 Travis Ralston
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Report Content API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/report/{eventId}":
|
|
||||||
post:
|
|
||||||
summary: Reports an event as inappropriate.
|
|
||||||
description: |-
|
|
||||||
Reports an event as inappropriate to the server, which may then notify
|
|
||||||
the appropriate people.
|
|
||||||
operationId: reportContent
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room in which the event being reported is located.
|
|
||||||
required: true
|
|
||||||
x-example: "!637q39766251:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventId
|
|
||||||
description: The event to report.
|
|
||||||
required: true
|
|
||||||
x-example: "$something:example.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"score": -100,
|
|
||||||
"reason": "this makes me sad"
|
|
||||||
}
|
|
||||||
required: ['score', 'reason']
|
|
||||||
properties:
|
|
||||||
score:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The score to rate this content as where -100 is most offensive
|
|
||||||
and 0 is inoffensive.
|
|
||||||
reason:
|
|
||||||
type: string
|
|
||||||
description: The reason the content is being reported. May be blank.
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The event has been reported successfully.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
tags:
|
|
||||||
- Reporting content
|
|
@ -1,156 +0,0 @@
|
|||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Rooms API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/initialSync":
|
|
||||||
get:
|
|
||||||
summary: Snapshot the current state of a room and its most recent messages.
|
|
||||||
description: |-
|
|
||||||
Get a copy of the current state and the most recent messages in a room.
|
|
||||||
|
|
||||||
This endpoint was deprecated in r0 of this specification. There is no
|
|
||||||
direct replacement; the relevant information is returned by the
|
|
||||||
|/sync|_ API. See the `migration guide
|
|
||||||
<https://matrix.org/docs/guides/client-server-migrating-from-v1.html#deprecated-endpoints>`_.
|
|
||||||
operationId: roomInitialSync
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to get the data.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The current state of the room
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"membership": "join",
|
|
||||||
"messages": {
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.file"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"end": "s3456_9_0",
|
|
||||||
"start": "t44-3453_9_0"
|
|
||||||
},
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"state": [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.join_rules"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.member"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.create"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.power_levels"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"visibility": "private",
|
|
||||||
"account_data": [{
|
|
||||||
"type": "m.tag",
|
|
||||||
"content": {"tags": {"work": {"order": "1"}}}
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
title: RoomInfo
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
room_id:
|
|
||||||
type: string
|
|
||||||
description: "The ID of this room."
|
|
||||||
membership:
|
|
||||||
type: string
|
|
||||||
description: "The user's membership state in this room."
|
|
||||||
enum: ["invite", "join", "leave", "ban"]
|
|
||||||
messages:
|
|
||||||
type: object
|
|
||||||
title: PaginationChunk
|
|
||||||
description: "The pagination chunk for this room."
|
|
||||||
properties:
|
|
||||||
start:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the first value in ``chunk``.
|
|
||||||
Used for pagination.
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A token which correlates to the last value in ``chunk``.
|
|
||||||
Used for pagination.
|
|
||||||
chunk:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
If the user is a member of the room this will be a
|
|
||||||
list of the most recent messages for this room. If
|
|
||||||
the user has left the room this will be the
|
|
||||||
messages that preceeded them leaving. This array
|
|
||||||
will consist of at most ``limit`` elements.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: RoomEvent
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
required: ["start", "end", "chunk"]
|
|
||||||
state:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
If the user is a member of the room this will be the
|
|
||||||
current state of the room as a list of events. If the
|
|
||||||
user has left the room this will be the state of the
|
|
||||||
room when they left it.
|
|
||||||
items:
|
|
||||||
title: StateEvent
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/state_event.yaml"
|
|
||||||
visibility:
|
|
||||||
type: string
|
|
||||||
enum: ["private", "public"]
|
|
||||||
description: |-
|
|
||||||
Whether this room is visible to the ``/publicRooms`` API
|
|
||||||
or not."
|
|
||||||
account_data:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The private data that this user has attached to this room.
|
|
||||||
items:
|
|
||||||
title: Event
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/event.yaml"
|
|
||||||
required: ["room_id"]
|
|
||||||
403:
|
|
||||||
description: >
|
|
||||||
You aren't a member of the room and weren't previously a
|
|
||||||
member of the room.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
deprecated: true
|
|
@ -1,89 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server message event send API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/send/{eventType}/{txnId}":
|
|
||||||
put:
|
|
||||||
summary: Send a message event to the given room.
|
|
||||||
description: |-
|
|
||||||
This endpoint is used to send a message event to a room. Message events
|
|
||||||
allow access to historical events and pagination, making them suited
|
|
||||||
for "once-off" activity in a room.
|
|
||||||
|
|
||||||
The body of the request should be the content object of the event; the
|
|
||||||
fields in this object will vary depending on the type of event. See
|
|
||||||
`Room Events`_ for the m. event specification.
|
|
||||||
operationId: sendMessage
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to send the event to.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventType
|
|
||||||
description: The type of event to send.
|
|
||||||
required: true
|
|
||||||
x-example: "m.room.message"
|
|
||||||
- in: path
|
|
||||||
name: txnId
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The transaction ID for this event. Clients should generate an
|
|
||||||
ID unique across requests with the same access token; it will be
|
|
||||||
used by the server to ensure idempotency of requests.
|
|
||||||
required: true
|
|
||||||
x-example: "35"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"msgtype": "m.text",
|
|
||||||
"body": "hello"
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "An ID for the sent event."
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"event_id": "$YUwRidLecu:example.com"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
event_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A unique identifier for the event.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,106 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server state event send API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/state/{eventType}/{stateKey}":
|
|
||||||
put:
|
|
||||||
summary: Send a state event to the given room.
|
|
||||||
description: |
|
|
||||||
.. For backwards compatibility with older links...
|
|
||||||
.. _`put-matrix-client-%CLIENT_MAJOR_VERSION%-rooms-roomid-state-eventtype`:
|
|
||||||
|
|
||||||
State events can be sent using this endpoint. These events will be
|
|
||||||
overwritten if ``<room id>``, ``<event type>`` and ``<state key>`` all
|
|
||||||
match.
|
|
||||||
|
|
||||||
Requests to this endpoint **cannot use transaction IDs**
|
|
||||||
like other ``PUT`` paths because they cannot be differentiated from the
|
|
||||||
``state_key``. Furthermore, ``POST`` is unsupported on state paths.
|
|
||||||
|
|
||||||
The body of the request should be the content object of the event; the
|
|
||||||
fields in this object will vary depending on the type of event. See
|
|
||||||
`Room Events`_ for the ``m.`` event specification.
|
|
||||||
operationId: setRoomStateWithKey
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to set the state in
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventType
|
|
||||||
description: The type of event to send.
|
|
||||||
required: true
|
|
||||||
x-example: "m.room.member"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: stateKey
|
|
||||||
description: |-
|
|
||||||
The state_key for the state to send. Defaults to the empty string. When
|
|
||||||
an empty string, the trailing slash on this endpoint is optional.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"membership": "join",
|
|
||||||
"avatar_url": "mxc://localhost/SEsfnsuifSDFSSEF",
|
|
||||||
"displayname": "Alice Margatroid"
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: "An ID for the sent event."
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"event_id": "$YUwRidLecu:example.com"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
event_id:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A unique identifier for the event.
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The sender doesn't have permission to send the event into the room.
|
|
||||||
schema:
|
|
||||||
$ref: "definitions/errors/error.yaml"
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "You do not have permission to send the event."
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,93 +0,0 @@
|
|||||||
# Copyright 2019 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Upgrades API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/upgrade":
|
|
||||||
post:
|
|
||||||
summary: Upgrades a room to a new room version.
|
|
||||||
description: |-
|
|
||||||
Upgrades the given room to a particular room version.
|
|
||||||
operationId: upgradeRoom
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
required: true
|
|
||||||
description: The ID of the room to upgrade.
|
|
||||||
x-example: "!oldroom:example.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
description: The request body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
new_version:
|
|
||||||
type: string
|
|
||||||
description: The new version for the room.
|
|
||||||
example: {"new_version": "2"}
|
|
||||||
required: [new_version]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The room was successfully upgraded.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"replacement_room": "!newroom:example.org"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
replacement_room:
|
|
||||||
type: string
|
|
||||||
description: The ID of the new room.
|
|
||||||
required: [replacement_room]
|
|
||||||
400:
|
|
||||||
description: |-
|
|
||||||
The request was invalid. One way this can happen is if the room version
|
|
||||||
requested is not supported by the homeserver.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_UNSUPPORTED_ROOM_VERSION",
|
|
||||||
"error": "This server does not support that room version"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
The user is not permitted to upgrade the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN",
|
|
||||||
"error": "You cannot upgrade this room"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
tags:
|
|
||||||
- Room ugprades
|
|
@ -1,307 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Rooms API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/event/{eventId}":
|
|
||||||
get:
|
|
||||||
summary: Get a single event by event ID.
|
|
||||||
description: |-
|
|
||||||
Get a single event based on ``roomId/eventId``. You must have permission to
|
|
||||||
retrieve this event e.g. by being a member in the room for this event.
|
|
||||||
operationId: getOneRoomEvent
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The ID of the room the event is in.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:matrix.org"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventId
|
|
||||||
description: The event ID to get.
|
|
||||||
required: true
|
|
||||||
x-example: "$asfDuShaf7Gafaw:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The full event.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"room_id": "!636q39766251:matrix.org",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/event.yaml"
|
|
||||||
404:
|
|
||||||
description: The event was not found or you do not have permission to read this event.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
"/rooms/{roomId}/state/{eventType}/{stateKey}":
|
|
||||||
get:
|
|
||||||
summary: Get the state identified by the type and key.
|
|
||||||
description: |-
|
|
||||||
.. For backwards compatibility with older links...
|
|
||||||
.. _`get-matrix-client-%CLIENT_MAJOR_VERSION%-rooms-roomid-state-eventtype`:
|
|
||||||
|
|
||||||
Looks up the contents of a state event in a room. If the user is
|
|
||||||
joined to the room then the state is taken from the current
|
|
||||||
state of the room. If the user has left the room then the state is
|
|
||||||
taken from the state of the room when they left.
|
|
||||||
operationId: getRoomStateWithKey
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to look up the state in.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventType
|
|
||||||
description: The type of state to look up.
|
|
||||||
required: true
|
|
||||||
x-example: "m.room.name"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: stateKey
|
|
||||||
description: |-
|
|
||||||
The key of the state to look up. Defaults to an empty string. When
|
|
||||||
an empty string, the trailing slash on this endpoint is optional.
|
|
||||||
required: true
|
|
||||||
x-example: ""
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The content of the state event.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"name": "Example room name"}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
404:
|
|
||||||
description: The room has no state with the given type or key.
|
|
||||||
403:
|
|
||||||
description: >
|
|
||||||
You aren't a member of the room and weren't previously a
|
|
||||||
member of the room.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
"/rooms/{roomId}/state":
|
|
||||||
get:
|
|
||||||
summary: Get all state events in the current state of a room.
|
|
||||||
description: |-
|
|
||||||
Get the state events for the current state of a room.
|
|
||||||
operationId: getRoomState
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to look up the state for.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The current state of the room
|
|
||||||
examples:
|
|
||||||
application/json: [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.join_rules"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.member"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.create"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.power_levels"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
schema:
|
|
||||||
type: array
|
|
||||||
title: RoomState
|
|
||||||
description: |-
|
|
||||||
If the user is a member of the room this will be the
|
|
||||||
current state of the room as a list of events. If the user
|
|
||||||
has left the room then this will be the state of the room
|
|
||||||
when they left as a list of events.
|
|
||||||
items:
|
|
||||||
title: StateEvent
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/core-event-schema/state_event.yaml"
|
|
||||||
403:
|
|
||||||
description: >
|
|
||||||
You aren't a member of the room and weren't previously a
|
|
||||||
member of the room.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
"/rooms/{roomId}/members":
|
|
||||||
get:
|
|
||||||
summary: Get the m.room.member events for the room.
|
|
||||||
description:
|
|
||||||
Get the list of members for this room.
|
|
||||||
operationId: getMembersByRoom
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to get the member events for.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
- in: query
|
|
||||||
name: at
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The point in time (pagination token) to return members for in the room.
|
|
||||||
This token can be obtained from a ``prev_batch`` token returned for
|
|
||||||
each room by the sync API. Defaults to the current state of the room,
|
|
||||||
as determined by the server.
|
|
||||||
x-example: "YWxsCgpOb25lLDM1ODcwOA"
|
|
||||||
# XXX: As mentioned in MSC1227, replacing `[not_]membership` with a JSON
|
|
||||||
# filter might be a better alternative.
|
|
||||||
# See https://github.com/matrix-org/matrix-doc/issues/1337
|
|
||||||
- in: query
|
|
||||||
name: membership
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- join
|
|
||||||
- invite
|
|
||||||
- leave
|
|
||||||
- ban
|
|
||||||
description: |-
|
|
||||||
The kind of membership to filter for. Defaults to no filtering if
|
|
||||||
unspecified. When specified alongside ``not_membership``, the two
|
|
||||||
parameters create an 'or' condition: either the membership *is*
|
|
||||||
the same as ``membership`` **or** *is not* the same as ``not_membership``.
|
|
||||||
x-example: "join"
|
|
||||||
- in: query
|
|
||||||
name: not_membership
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- join
|
|
||||||
- invite
|
|
||||||
- leave
|
|
||||||
- ban
|
|
||||||
description: |-
|
|
||||||
The kind of membership to exclude from the results. Defaults to no
|
|
||||||
filtering if unspecified.
|
|
||||||
x-example: leave
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
A list of members of the room. If you are joined to the room then
|
|
||||||
this will be the current members of the room. If you have left the
|
|
||||||
room then this will be the members of the room when you left.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"room_id": "!636q39766251:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.member"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
chunk:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
title: MemberEvent
|
|
||||||
type: object
|
|
||||||
allOf:
|
|
||||||
- "$ref": "definitions/event-schemas/schema/m.room.member"
|
|
||||||
403:
|
|
||||||
description: >
|
|
||||||
You aren't a member of the room and weren't previously a
|
|
||||||
member of the room.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
||||||
"/rooms/{roomId}/joined_members":
|
|
||||||
get:
|
|
||||||
summary: Gets the list of currently joined users and their profile data.
|
|
||||||
description:
|
|
||||||
This API returns a map of MXIDs to member info objects for members of the room. The current user must be in the room for it to work, unless it is an Application Service in which case any of the AS's users must be in the room.
|
|
||||||
This API is primarily for Application Services and should be faster to respond than ``/members`` as it can be implemented more efficiently on the server.
|
|
||||||
operationId: getJoinedMembersByRoom
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room to get the members of.
|
|
||||||
required: true
|
|
||||||
x-example: "!636q39766251:example.com"
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
A map of MXID to room member objects.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"joined": {
|
|
||||||
"@bar:example.com": {
|
|
||||||
"display_name": "Bar",
|
|
||||||
"avatar_url": "mxc://riot.ovh/printErCATzZijQsSDWorRaK"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
joined:
|
|
||||||
additionalProperties:
|
|
||||||
title: RoomMember
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
display_name:
|
|
||||||
type: string
|
|
||||||
description: The display name of the user this object is representing.
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
description: The mxc avatar url of the user this object is representing.
|
|
||||||
description: A map from user ID to a RoomMember object.
|
|
||||||
type: object
|
|
||||||
403:
|
|
||||||
description: >
|
|
||||||
You aren't a member of the room.
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,366 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Search API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/search":
|
|
||||||
post:
|
|
||||||
summary: Perform a server-side search.
|
|
||||||
description: |-
|
|
||||||
Performs a full text search across different categories.
|
|
||||||
operationId: search
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: next_batch
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The point to return events from. If given, this should be a
|
|
||||||
``next_batch`` result from a previous call to this endpoint.
|
|
||||||
x-example: "YWxsCgpOb25lLDM1ODcwOA"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"search_categories": {
|
|
||||||
"room_events": {
|
|
||||||
"keys": [
|
|
||||||
"content.body"
|
|
||||||
],
|
|
||||||
"search_term": "martians and men",
|
|
||||||
"order_by": "recent",
|
|
||||||
"groupings": {
|
|
||||||
"group_by": [
|
|
||||||
{
|
|
||||||
"key": "room_id"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
search_categories:
|
|
||||||
type: object
|
|
||||||
title: "Categories"
|
|
||||||
description: Describes which categories to search in and
|
|
||||||
their criteria.
|
|
||||||
properties:
|
|
||||||
room_events:
|
|
||||||
type: object
|
|
||||||
title: Room Events Criteria
|
|
||||||
description: Mapping of category name to search criteria.
|
|
||||||
properties:
|
|
||||||
search_term:
|
|
||||||
type: string
|
|
||||||
description: The string to search events for
|
|
||||||
keys:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
enum: ["content.body", "content.name", "content.topic"]
|
|
||||||
description: The keys to search. Defaults to all.
|
|
||||||
filter:
|
|
||||||
type: object
|
|
||||||
title: Filter
|
|
||||||
# Within the C-S spec document, `filter`_ is picked up
|
|
||||||
# as a link to the filtering section. In OpenAPI 3.0,
|
|
||||||
# we could use the link feature, but we're still on 2.0
|
|
||||||
# for now :/
|
|
||||||
description: |-
|
|
||||||
This takes a `filter`_.
|
|
||||||
$ref: "definitions/room_event_filter.yaml"
|
|
||||||
order_by:
|
|
||||||
title: "Ordering"
|
|
||||||
type: string
|
|
||||||
enum: ["recent", "rank"]
|
|
||||||
description: |-
|
|
||||||
The order in which to search for results.
|
|
||||||
By default, this is ``"rank"``.
|
|
||||||
event_context:
|
|
||||||
title: Include Event Context
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Configures whether any context for the events
|
|
||||||
returned are included in the response.
|
|
||||||
properties:
|
|
||||||
before_limit:
|
|
||||||
type: integer
|
|
||||||
title: "Before limit"
|
|
||||||
description: |-
|
|
||||||
How many events before the result are
|
|
||||||
returned. By default, this is ``5``.
|
|
||||||
after_limit:
|
|
||||||
type: integer
|
|
||||||
title: "After limit"
|
|
||||||
description: |-
|
|
||||||
How many events after the result are
|
|
||||||
returned. By default, this is ``5``.
|
|
||||||
include_profile:
|
|
||||||
type: boolean
|
|
||||||
title: "Return profile information"
|
|
||||||
description: |-
|
|
||||||
Requests that the server returns the
|
|
||||||
historic profile information for the users
|
|
||||||
that sent the events that were returned.
|
|
||||||
By default, this is ``false``.
|
|
||||||
include_state:
|
|
||||||
type: boolean
|
|
||||||
title: Include current state
|
|
||||||
description: |-
|
|
||||||
Requests the server return the current state for
|
|
||||||
each room returned.
|
|
||||||
groupings:
|
|
||||||
type: object
|
|
||||||
title: Groupings
|
|
||||||
description: |-
|
|
||||||
Requests that the server partitions the result set
|
|
||||||
based on the provided list of keys.
|
|
||||||
properties:
|
|
||||||
group_by:
|
|
||||||
type: array
|
|
||||||
title: Groups
|
|
||||||
description: List of groups to request.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Group
|
|
||||||
description: Configuration for group.
|
|
||||||
properties:
|
|
||||||
key:
|
|
||||||
type: string
|
|
||||||
title: Group Key
|
|
||||||
description: |-
|
|
||||||
Key that defines the group.
|
|
||||||
enum: ["room_id", "sender"]
|
|
||||||
required: ["search_term"]
|
|
||||||
required: ["search_categories"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: Results of the search.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
title: Results
|
|
||||||
required: ["search_categories"]
|
|
||||||
properties:
|
|
||||||
search_categories:
|
|
||||||
type: object
|
|
||||||
title: Result Categories
|
|
||||||
description: Describes which categories to search in and
|
|
||||||
their criteria.
|
|
||||||
properties:
|
|
||||||
room_events:
|
|
||||||
type: object
|
|
||||||
title: Result Room Events
|
|
||||||
description: Mapping of category name to search criteria.
|
|
||||||
properties:
|
|
||||||
count:
|
|
||||||
type: integer
|
|
||||||
description: An approximate count of the total number of results found.
|
|
||||||
highlights:
|
|
||||||
type: array
|
|
||||||
title: Highlights
|
|
||||||
description: List of words which should be highlighted, useful for stemming which may change the query terms.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
results:
|
|
||||||
type: array
|
|
||||||
title: Results
|
|
||||||
description: List of results in the requested order.
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
title: Result
|
|
||||||
description: The result object.
|
|
||||||
properties:
|
|
||||||
rank:
|
|
||||||
type: number
|
|
||||||
description: A number that describes how closely
|
|
||||||
this result matches the search. Higher is
|
|
||||||
closer.
|
|
||||||
result:
|
|
||||||
type: object
|
|
||||||
title: Event
|
|
||||||
description: The event that matched.
|
|
||||||
"$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
context:
|
|
||||||
type: object
|
|
||||||
title: Event Context
|
|
||||||
description: Context for result, if requested.
|
|
||||||
properties:
|
|
||||||
start:
|
|
||||||
type: string
|
|
||||||
title: Start Token
|
|
||||||
description: |-
|
|
||||||
Pagination token for the start of the chunk
|
|
||||||
end:
|
|
||||||
type: string
|
|
||||||
title: End Token
|
|
||||||
description: |-
|
|
||||||
Pagination token for the end of the chunk
|
|
||||||
profile_info:
|
|
||||||
type: object
|
|
||||||
title: Profile Information
|
|
||||||
description: |-
|
|
||||||
The historic profile information of the
|
|
||||||
users that sent the events returned.
|
|
||||||
|
|
||||||
The ``string`` key is the user ID for which
|
|
||||||
the profile belongs to.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
title: User Profile
|
|
||||||
properties:
|
|
||||||
displayname:
|
|
||||||
type: string
|
|
||||||
title: Display name
|
|
||||||
avatar_url:
|
|
||||||
type: string
|
|
||||||
title: Avatar Url
|
|
||||||
events_before:
|
|
||||||
type: array
|
|
||||||
title: Events Before
|
|
||||||
description: Events just before the result.
|
|
||||||
items:
|
|
||||||
title: Event
|
|
||||||
type: object
|
|
||||||
"$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
events_after:
|
|
||||||
type: array
|
|
||||||
title: Events After
|
|
||||||
description: Events just after the result.
|
|
||||||
items:
|
|
||||||
title: Event
|
|
||||||
type: object
|
|
||||||
"$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
|
|
||||||
state:
|
|
||||||
type: object
|
|
||||||
title: Current state
|
|
||||||
description: |-
|
|
||||||
The current state for every room in the results.
|
|
||||||
This is included if the request had the
|
|
||||||
``include_state`` key set with a value of ``true``.
|
|
||||||
|
|
||||||
The ``string`` key is the room ID for which the ``State
|
|
||||||
Event`` array belongs to.
|
|
||||||
additionalProperties:
|
|
||||||
type: array
|
|
||||||
title: Room State
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
"$ref": "definitions/event-schemas/schema/core-event-schema/state_event.yaml"
|
|
||||||
groups:
|
|
||||||
type: object
|
|
||||||
title: Groups
|
|
||||||
description: |-
|
|
||||||
Any groups that were requested.
|
|
||||||
|
|
||||||
The outer ``string`` key is the group key requested (eg: ``room_id``
|
|
||||||
or ``sender``). The inner ``string`` key is the grouped value (eg:
|
|
||||||
a room's ID or a user's ID).
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
title: Group Key
|
|
||||||
description: The results for a given group.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
title: Group Value
|
|
||||||
description: |-
|
|
||||||
The results for a particular group value.
|
|
||||||
properties:
|
|
||||||
next_batch:
|
|
||||||
type: string
|
|
||||||
title: Next Batch in Group
|
|
||||||
description: |-
|
|
||||||
Token that can be used to get the next batch
|
|
||||||
of results in the group, by passing as the
|
|
||||||
`next_batch` parameter to the next call. If
|
|
||||||
this field is absent, there are no more
|
|
||||||
results in this group.
|
|
||||||
order:
|
|
||||||
type: integer
|
|
||||||
title: Group Order
|
|
||||||
description: |-
|
|
||||||
Key that can be used to order different
|
|
||||||
groups.
|
|
||||||
results:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
Which results are in this group.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
title: Result Event ID
|
|
||||||
next_batch:
|
|
||||||
type: string
|
|
||||||
title: Next Batch
|
|
||||||
description: |-
|
|
||||||
Token that can be used to get the next batch of
|
|
||||||
results, by passing as the `next_batch` parameter to
|
|
||||||
the next call. If this field is absent, there are no
|
|
||||||
more results.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"search_categories": {
|
|
||||||
"room_events": {
|
|
||||||
"groups": {
|
|
||||||
"room_id": {
|
|
||||||
"!qPewotXpIctQySfjSy:localhost": {
|
|
||||||
"order": 1,
|
|
||||||
"next_batch": "BdgFsdfHSf-dsFD",
|
|
||||||
"results": [
|
|
||||||
"$144429830826TWwbB:localhost"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"highlights": [
|
|
||||||
"martians",
|
|
||||||
"men"
|
|
||||||
],
|
|
||||||
"next_batch": "5FdgFsd234dfgsdfFD",
|
|
||||||
"count": 1224,
|
|
||||||
"results": [
|
|
||||||
{
|
|
||||||
"rank": 0.00424866,
|
|
||||||
"result": {
|
|
||||||
"room_id": "!qPewotXpIctQySfjSy:localhost",
|
|
||||||
"event_id": "$144429830826TWwbB:localhost",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
400:
|
|
||||||
description: Part of the request was invalid.
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Search
|
|
@ -1,46 +0,0 @@
|
|||||||
# Copyright 2019 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server SSO Login API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
paths:
|
|
||||||
"/login/sso/redirect":
|
|
||||||
get:
|
|
||||||
summary: Redirect the user's browser to the SSO interface.
|
|
||||||
description: |-
|
|
||||||
A web-based Matrix client should instruct the user's browser to
|
|
||||||
navigate to this endpoint in order to log in via SSO.
|
|
||||||
|
|
||||||
The server MUST respond with an HTTP redirect to the SSO interface.
|
|
||||||
operationId: redirectToSSO
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
type: string
|
|
||||||
name: redirectUrl
|
|
||||||
description: |-
|
|
||||||
URI to which the user will be redirected after the homeserver has
|
|
||||||
authenticated the user with SSO.
|
|
||||||
required: true
|
|
||||||
responses:
|
|
||||||
302:
|
|
||||||
description: A redirect to the SSO interface.
|
|
||||||
headers:
|
|
||||||
Location:
|
|
||||||
type: "string"
|
|
@ -1,440 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server sync API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/sync":
|
|
||||||
get:
|
|
||||||
summary: Synchronise the client's state and receive new messages.
|
|
||||||
description: |-
|
|
||||||
Synchronise the client's state with the latest state on the server.
|
|
||||||
Clients use this API when they first log in to get an initial snapshot
|
|
||||||
of the state on the server, and then continue to call this API to get
|
|
||||||
incremental deltas to the state, and to receive new messages.
|
|
||||||
|
|
||||||
*Note*: This endpoint supports lazy-loading. See `Filtering <#filtering>`_
|
|
||||||
for more information. Lazy-loading members is only supported on a ``StateFilter``
|
|
||||||
for this endpoint. When lazy-loading is enabled, servers MUST include the
|
|
||||||
syncing user's own membership event when they join a room, or when the
|
|
||||||
full state of rooms is requested, to aid discovering the user's avatar &
|
|
||||||
displayname.
|
|
||||||
|
|
||||||
Like other members, the user's own membership event is eligible
|
|
||||||
for being considered redundant by the server. When a sync is ``limited``,
|
|
||||||
the server MUST return membership events for events in the gap
|
|
||||||
(between ``since`` and the start of the returned timeline), regardless
|
|
||||||
as to whether or not they are redundant. This ensures that joins/leaves
|
|
||||||
and profile changes which occur during the gap are not lost.
|
|
||||||
operationId: sync
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: filter
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The ID of a filter created using the filter API or a filter JSON
|
|
||||||
object encoded as a string. The server will detect whether it is
|
|
||||||
an ID or a JSON object by whether the first character is a ``"{"``
|
|
||||||
open brace. Passing the JSON inline is best suited to one off
|
|
||||||
requests. Creating a filter using the filter API is recommended for
|
|
||||||
clients that reuse the same filter multiple times, for example in
|
|
||||||
long poll requests.
|
|
||||||
|
|
||||||
See `Filtering <#filtering>`_ for more information.
|
|
||||||
x-example: "66696p746572"
|
|
||||||
- in: query
|
|
||||||
name: since
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A point in time to continue a sync from.
|
|
||||||
x-example: "s72594_4483_1934"
|
|
||||||
- in: query
|
|
||||||
name: full_state
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Controls whether to include the full state for all rooms the user
|
|
||||||
is a member of.
|
|
||||||
|
|
||||||
If this is set to ``true``, then all state events will be returned,
|
|
||||||
even if ``since`` is non-empty. The timeline will still be limited
|
|
||||||
by the ``since`` parameter. In this case, the ``timeout`` parameter
|
|
||||||
will be ignored and the query will return immediately, possibly with
|
|
||||||
an empty timeline.
|
|
||||||
|
|
||||||
If ``false``, and ``since`` is non-empty, only state which has
|
|
||||||
changed since the point indicated by ``since`` will be returned.
|
|
||||||
|
|
||||||
By default, this is ``false``.
|
|
||||||
x-example: "false"
|
|
||||||
- in: query
|
|
||||||
name: set_presence
|
|
||||||
type: string
|
|
||||||
enum: ["offline", "online", "unavailable"]
|
|
||||||
description: |-
|
|
||||||
Controls whether the client is automatically marked as online by
|
|
||||||
polling this API. If this parameter is omitted then the client is
|
|
||||||
automatically marked as online when it uses this API. Otherwise if
|
|
||||||
the parameter is set to "offline" then the client is not marked as
|
|
||||||
being online when it uses this API. When set to "unavailable", the
|
|
||||||
client is marked as being idle.
|
|
||||||
x-example: "offline"
|
|
||||||
- in: query
|
|
||||||
name: timeout
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The maximum time to wait, in milliseconds, before returning this
|
|
||||||
request. If no events (or other data) become available before this
|
|
||||||
time elapses, the server will return a response with empty fields.
|
|
||||||
|
|
||||||
By default, this is ``0``, so the server will return immediately
|
|
||||||
even if the response is empty.
|
|
||||||
x-example: 30000
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The initial snapshot or delta for the client to use to update their
|
|
||||||
state.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
next_batch:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The batch token to supply in the ``since`` param of the next
|
|
||||||
``/sync`` request.
|
|
||||||
rooms:
|
|
||||||
title: Rooms
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Updates to rooms.
|
|
||||||
properties:
|
|
||||||
join:
|
|
||||||
title: Joined Rooms
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The rooms that the user has joined.
|
|
||||||
additionalProperties:
|
|
||||||
title: Joined Room
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
summary:
|
|
||||||
title: RoomSummary
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Information about the room which clients may need to
|
|
||||||
correctly render it to users.
|
|
||||||
properties:
|
|
||||||
"m.heroes":
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The users which can be used to generate a room name
|
|
||||||
if the room does not have one. Required if the room's
|
|
||||||
``m.room.name`` or ``m.room.canonical_alias`` state events
|
|
||||||
are unset or empty.
|
|
||||||
|
|
||||||
This should be the first 5 members of the room, ordered
|
|
||||||
by stream ordering, which are joined or invited. The
|
|
||||||
list must never include the client's own user ID. When
|
|
||||||
no joined or invited members are available, this should
|
|
||||||
consist of the banned and left users. More than 5 members
|
|
||||||
may be provided, however less than 5 should only be provided
|
|
||||||
when there are less than 5 members to represent.
|
|
||||||
|
|
||||||
When lazy-loading room members is enabled, the membership
|
|
||||||
events for the heroes MUST be included in the ``state``,
|
|
||||||
unless they are redundant. When the list of users changes,
|
|
||||||
the server notifies the client by sending a fresh list of
|
|
||||||
heroes. If there are no changes since the last sync, this
|
|
||||||
field may be omitted.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
"m.joined_member_count":
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The number of users with ``membership`` of ``join``,
|
|
||||||
including the client's own user ID. If this field has
|
|
||||||
not changed since the last sync, it may be omitted.
|
|
||||||
Required otherwise.
|
|
||||||
"m.invited_member_count":
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The number of users with ``membership`` of ``invite``.
|
|
||||||
If this field has not changed since the last sync, it
|
|
||||||
may be omitted. Required otherwise.
|
|
||||||
state:
|
|
||||||
title: State
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Updates to the state, between the time indicated by
|
|
||||||
the ``since`` parameter, and the start of the
|
|
||||||
``timeline`` (or all state up to the start of the
|
|
||||||
``timeline``, if ``since`` is not given, or
|
|
||||||
``full_state`` is true).
|
|
||||||
|
|
||||||
N.B. state updates for ``m.room.member`` events will
|
|
||||||
be incomplete if ``lazy_load_members`` is enabled in
|
|
||||||
the ``/sync`` filter, and only return the member events
|
|
||||||
required to display the senders of the timeline events
|
|
||||||
in this response.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/state_event_batch.yaml"
|
|
||||||
timeline:
|
|
||||||
title: Timeline
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The timeline of messages and state changes in the
|
|
||||||
room.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/timeline_batch.yaml"
|
|
||||||
ephemeral:
|
|
||||||
title: Ephemeral
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The ephemeral events in the room that aren't
|
|
||||||
recorded in the timeline or state of the room.
|
|
||||||
e.g. typing.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/event_batch.yaml"
|
|
||||||
account_data:
|
|
||||||
title: Account Data
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The private data that this user has attached to
|
|
||||||
this room.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/event_batch.yaml"
|
|
||||||
unread_notifications:
|
|
||||||
title: Unread Notification Counts
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Counts of unread notifications for this room. See the
|
|
||||||
`Receiving notifications section <#receiving-notifications>`_
|
|
||||||
for more information on how these are calculated.
|
|
||||||
properties:
|
|
||||||
highlight_count:
|
|
||||||
title: Highlighted notification count
|
|
||||||
type: integer
|
|
||||||
description: The number of unread notifications
|
|
||||||
for this room with the highlight flag set
|
|
||||||
notification_count:
|
|
||||||
title: Total notification count
|
|
||||||
type: integer
|
|
||||||
description: The total number of unread notifications
|
|
||||||
for this room
|
|
||||||
invite:
|
|
||||||
title: Invited Rooms
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The rooms that the user has been invited to.
|
|
||||||
additionalProperties:
|
|
||||||
title: Invited Room
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
invite_state:
|
|
||||||
title: InviteState
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The state of a room that the user has been invited
|
|
||||||
to. These state events may only have the ``sender``,
|
|
||||||
``type``, ``state_key`` and ``content`` keys
|
|
||||||
present. These events do not replace any state that
|
|
||||||
the client already has for the room, for example if
|
|
||||||
the client has archived the room. Instead the
|
|
||||||
client should keep two separate copies of the
|
|
||||||
state: the one from the ``invite_state`` and one
|
|
||||||
from the archived ``state``. If the client joins
|
|
||||||
the room then the current state will be given as a
|
|
||||||
delta against the archived ``state`` not the
|
|
||||||
``invite_state``.
|
|
||||||
properties:
|
|
||||||
events:
|
|
||||||
description: The StrippedState events that form the invite state.
|
|
||||||
items:
|
|
||||||
$ref: "definitions/event-schemas/schema/stripped_state.yaml"
|
|
||||||
type: array
|
|
||||||
leave:
|
|
||||||
title: Left rooms
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The rooms that the user has left or been banned from.
|
|
||||||
additionalProperties:
|
|
||||||
title: Left Room
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
state:
|
|
||||||
title: State
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The state updates for the room up to the start of the timeline.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/state_event_batch.yaml"
|
|
||||||
timeline:
|
|
||||||
title: Timeline
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The timeline of messages and state changes in the
|
|
||||||
room up to the point when the user left.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/timeline_batch.yaml"
|
|
||||||
account_data:
|
|
||||||
title: Account Data
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The private data that this user has attached to
|
|
||||||
this room.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/event_batch.yaml"
|
|
||||||
presence:
|
|
||||||
title: Presence
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The updates to the presence status of other users.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/event_batch.yaml"
|
|
||||||
account_data:
|
|
||||||
title: Account Data
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The global private data created by this user.
|
|
||||||
allOf:
|
|
||||||
- $ref: "definitions/event_batch.yaml"
|
|
||||||
to_device:
|
|
||||||
title: ToDevice
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Information on the send-to-device messages for the client
|
|
||||||
device, as defined in |send_to_device_sync|_.
|
|
||||||
device_lists:
|
|
||||||
title: DeviceLists
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Information on end-to-end device updates, as specified in
|
|
||||||
|device_lists_sync|_.
|
|
||||||
device_one_time_keys_count:
|
|
||||||
title: One-time keys count
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
Information on end-to-end encryption keys, as specified
|
|
||||||
in |device_lists_sync|_.
|
|
||||||
required:
|
|
||||||
- next_batch
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"next_batch": "s72595_4483_1934",
|
|
||||||
"presence": {
|
|
||||||
"events": [
|
|
||||||
{"$ref": "definitions/event-schemas/examples/m.presence"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"account_data": {
|
|
||||||
"events": [
|
|
||||||
{
|
|
||||||
"type": "org.example.custom.config",
|
|
||||||
"content": {
|
|
||||||
"custom_config_key": "custom_config_value"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"rooms": {
|
|
||||||
"join": {
|
|
||||||
"!726s6s6q:example.com": {
|
|
||||||
"summary": {
|
|
||||||
"m.heroes": [
|
|
||||||
"@alice:example.com",
|
|
||||||
"@bob:example.com"
|
|
||||||
],
|
|
||||||
"m.joined_member_count": 2,
|
|
||||||
"m.invited_member_count": 0
|
|
||||||
},
|
|
||||||
"state": {
|
|
||||||
"events": [
|
|
||||||
{
|
|
||||||
"room_id": "!726s6s6q:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.member"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"events": [
|
|
||||||
{
|
|
||||||
"room_id": "!726s6s6q:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.member"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"room_id": "!726s6s6q:example.com",
|
|
||||||
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"limited": true,
|
|
||||||
"prev_batch": "t34-23535_0_0"
|
|
||||||
},
|
|
||||||
"ephemeral": {
|
|
||||||
"events": [
|
|
||||||
{"$ref": "definitions/event-schemas/examples/m.typing"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"account_data": {
|
|
||||||
"events": [
|
|
||||||
{"$ref": "definitions/event-schemas/examples/m.tag"},
|
|
||||||
{
|
|
||||||
"type": "org.example.custom.room.config",
|
|
||||||
"content": {
|
|
||||||
"custom_config_key": "custom_config_value"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"invite": {
|
|
||||||
"!696r7674:example.com": {
|
|
||||||
"invite_state": {
|
|
||||||
"events": [
|
|
||||||
{
|
|
||||||
"sender": "@alice:example.com",
|
|
||||||
"type": "m.room.name",
|
|
||||||
"state_key": "",
|
|
||||||
"content": {"name": "My Room Name"}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sender": "@alice:example.com",
|
|
||||||
"type": "m.room.member",
|
|
||||||
"state_key": "@bob:example.com",
|
|
||||||
"content": {"membership": "invite"}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"leave": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
@ -1,183 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server tag API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/user/{userId}/rooms/{roomId}/tags":
|
|
||||||
get:
|
|
||||||
summary: List the tags for a room.
|
|
||||||
description: |-
|
|
||||||
List the tags set by a user on a room.
|
|
||||||
operationId: getRoomTags
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The id of the user to get tags for. The access token must be
|
|
||||||
authorized to make requests for this user ID.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the room to get tags for.
|
|
||||||
x-example: "!726s6s6q:example.com"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The list of tags for the user for the room.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
tags:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
title: Tag
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
order:
|
|
||||||
type: number
|
|
||||||
format: float
|
|
||||||
description: |-
|
|
||||||
A number in a range ``[0,1]`` describing a relative
|
|
||||||
position of the room under the given tag.
|
|
||||||
additionalProperties: true
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"tags": {
|
|
||||||
"m.favourite": {"order": 0.1},
|
|
||||||
"u.Work": {"order": 0.7},
|
|
||||||
"u.Customers": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
"/user/{userId}/rooms/{roomId}/tags/{tag}":
|
|
||||||
put:
|
|
||||||
summary: Add a tag to a room.
|
|
||||||
description: |-
|
|
||||||
Add a tag to the room.
|
|
||||||
operationId: setRoomTag
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The id of the user to add a tag for. The access token must be
|
|
||||||
authorized to make requests for this user ID.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the room to add a tag to.
|
|
||||||
x-example: "!726s6s6q:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: tag
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The tag to add.
|
|
||||||
x-example: "u.work"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
Extra data for the tag, e.g. ordering.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
order:
|
|
||||||
type: number
|
|
||||||
format: float
|
|
||||||
description: |-
|
|
||||||
A number in a range ``[0,1]`` describing a relative
|
|
||||||
position of the room under the given tag.
|
|
||||||
additionalProperties: true
|
|
||||||
example: {
|
|
||||||
"order": 0.25
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The tag was successfully added.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
tags:
|
|
||||||
- User data
|
|
||||||
delete:
|
|
||||||
summary: Remove a tag from the room.
|
|
||||||
description: |-
|
|
||||||
Remove a tag from the room.
|
|
||||||
operationId: deleteRoomTag
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The id of the user to remove a tag for. The access token must be
|
|
||||||
authorized to make requests for this user ID.
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The ID of the room to remove a tag from.
|
|
||||||
x-example: "!726s6s6q:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: tag
|
|
||||||
required: true
|
|
||||||
description: |-
|
|
||||||
The tag to remove.
|
|
||||||
x-example: "u.work"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The tag was successfully removed.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
examples:
|
|
||||||
application/json: {}
|
|
||||||
tags:
|
|
||||||
- User data
|
|
@ -1,208 +0,0 @@
|
|||||||
# Copyright 2018 New Vector Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Third Party Lookup API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/thirdparty/protocols":
|
|
||||||
get:
|
|
||||||
summary: Retrieve metadata about all protocols that a homeserver supports.
|
|
||||||
description: |-
|
|
||||||
Fetches the overall metadata about protocols supported by the
|
|
||||||
homeserver. Includes both the available protocols and all fields
|
|
||||||
required for queries against each protocol.
|
|
||||||
operationId: getProtocols
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The protocols supported by the homeserver.
|
|
||||||
schema:
|
|
||||||
$ref: ../application-service/definitions/protocol_metadata.yaml
|
|
||||||
"/thirdparty/protocol/{protocol}":
|
|
||||||
get:
|
|
||||||
summary: Retrieve metadata about a specific protocol that the homeserver supports.
|
|
||||||
description: |-
|
|
||||||
Fetches the metadata from the homeserver about a particular third party protocol.
|
|
||||||
operationId: getProtocolMetadata
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: protocol
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The name of the protocol.
|
|
||||||
required: true
|
|
||||||
x-example: "irc"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The protocol was found and metadata returned.
|
|
||||||
schema:
|
|
||||||
$ref: ../application-service/definitions/protocol.yaml
|
|
||||||
404:
|
|
||||||
description: The protocol is unknown.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: definitions/errors/error.yaml
|
|
||||||
"/thirdparty/location/{protocol}":
|
|
||||||
get:
|
|
||||||
summary: Retrieve Matrix-side portals rooms leading to a third party location.
|
|
||||||
description: |-
|
|
||||||
Requesting this endpoint with a valid protocol name results in a list
|
|
||||||
of successful mapping results in a JSON array. Each result contains
|
|
||||||
objects to represent the Matrix room or rooms that represent a portal
|
|
||||||
to this third party network. Each has the Matrix room alias string,
|
|
||||||
an identifier for the particular third party network protocol, and an
|
|
||||||
object containing the network-specific fields that comprise this
|
|
||||||
identifier. It should attempt to canonicalise the identifier as much
|
|
||||||
as reasonably possible given the network type.
|
|
||||||
operationId: queryLocationByProtocol
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: protocol
|
|
||||||
type: string
|
|
||||||
description: The protocol used to communicate to the third party network.
|
|
||||||
required: true
|
|
||||||
x-example: irc
|
|
||||||
- in: query
|
|
||||||
name: searchFields
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
One or more custom fields to help identify the third party
|
|
||||||
location.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: At least one portal room was found.
|
|
||||||
schema:
|
|
||||||
$ref: ../application-service/definitions/location_batch.yaml
|
|
||||||
404:
|
|
||||||
description: No portal rooms were found.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: definitions/errors/error.yaml
|
|
||||||
"/thirdparty/user/{protocol}":
|
|
||||||
get:
|
|
||||||
summary: Retrieve the Matrix User ID of a corresponding third party user.
|
|
||||||
description: |-
|
|
||||||
Retrieve a Matrix User ID linked to a user on the third party service, given
|
|
||||||
a set of user parameters.
|
|
||||||
operationId: queryUserByProtocol
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: protocol
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The name of the protocol.
|
|
||||||
required: true
|
|
||||||
x-example: irc
|
|
||||||
- in: query
|
|
||||||
name: fields...
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
One or more custom fields that are passed to the AS to help identify the user.
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The Matrix User IDs found with the given parameters.
|
|
||||||
schema:
|
|
||||||
$ref: ../application-service/definitions/user_batch.yaml
|
|
||||||
404:
|
|
||||||
description: The Matrix User ID was not found
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: definitions/errors/error.yaml
|
|
||||||
"/thirdparty/location":
|
|
||||||
get:
|
|
||||||
summary: Reverse-lookup third party locations given a Matrix room alias.
|
|
||||||
description: |-
|
|
||||||
Retrieve an array of third party network locations from a Matrix room
|
|
||||||
alias.
|
|
||||||
operationId: queryLocationByAlias
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: alias
|
|
||||||
type: string
|
|
||||||
description: The Matrix room alias to look up.
|
|
||||||
required: true
|
|
||||||
x-example: "#matrix:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
All found third party locations.
|
|
||||||
schema:
|
|
||||||
$ref: ../application-service/definitions/location_batch.yaml
|
|
||||||
404:
|
|
||||||
description: The Matrix room alias was not found
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: definitions/errors/error.yaml
|
|
||||||
"/thirdparty/user":
|
|
||||||
get:
|
|
||||||
summary: Reverse-lookup third party users given a Matrix User ID.
|
|
||||||
description: |-
|
|
||||||
Retrieve an array of third party users from a Matrix User ID.
|
|
||||||
operationId: queryUserByID
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: query
|
|
||||||
name: userid
|
|
||||||
type: string
|
|
||||||
description: The Matrix User ID to look up.
|
|
||||||
required: true
|
|
||||||
x-example: "@bob:matrix.org"
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: |-
|
|
||||||
An array of third party users.
|
|
||||||
schema:
|
|
||||||
$ref: ../application-service/definitions/user_batch.yaml
|
|
||||||
404:
|
|
||||||
description: The Matrix User ID was not found
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_NOT_FOUND"
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
$ref: definitions/errors/error.yaml
|
|
@ -1,136 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Room Membership API for third party identifiers"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/invite":
|
|
||||||
post:
|
|
||||||
summary: Invite a user to participate in a particular room.
|
|
||||||
description: |-
|
|
||||||
.. _invite-by-third-party-id-endpoint:
|
|
||||||
|
|
||||||
*Note that there are two forms of this API, which are documented separately.
|
|
||||||
This version of the API does not require that the inviter know the Matrix
|
|
||||||
identifier of the invitee, and instead relies on third party identifiers.
|
|
||||||
The homeserver uses an identity server to perform the mapping from
|
|
||||||
third party identifier to a Matrix identifier. The other is documented in the*
|
|
||||||
`joining rooms section`_.
|
|
||||||
|
|
||||||
This API invites a user to participate in a particular room.
|
|
||||||
They do not start participating in the room until they actually join the
|
|
||||||
room.
|
|
||||||
|
|
||||||
Only users currently in a particular room can invite other users to
|
|
||||||
join that room.
|
|
||||||
|
|
||||||
If the identity server did know the Matrix user identifier for the
|
|
||||||
third party identifier, the homeserver will append a ``m.room.member``
|
|
||||||
event to the room.
|
|
||||||
|
|
||||||
If the identity server does not know a Matrix user identifier for the
|
|
||||||
passed third party identifier, the homeserver will issue an invitation
|
|
||||||
which can be accepted upon providing proof of ownership of the third
|
|
||||||
party identifier. This is achieved by the identity server generating a
|
|
||||||
token, which it gives to the inviting homeserver. The homeserver will
|
|
||||||
add an ``m.room.third_party_invite`` event into the graph for the room,
|
|
||||||
containing that token.
|
|
||||||
|
|
||||||
When the invitee binds the invited third party identifier to a Matrix
|
|
||||||
user ID, the identity server will give the user a list of pending
|
|
||||||
invitations, each containing:
|
|
||||||
|
|
||||||
- The room ID to which they were invited
|
|
||||||
|
|
||||||
- The token given to the homeserver
|
|
||||||
|
|
||||||
- A signature of the token, signed with the identity server's private key
|
|
||||||
|
|
||||||
- The matrix user ID who invited them to the room
|
|
||||||
|
|
||||||
If a token is requested from the identity server, the homeserver will
|
|
||||||
append a ``m.room.third_party_invite`` event to the room.
|
|
||||||
|
|
||||||
.. _joining rooms section: `invite-by-user-id-endpoint`_
|
|
||||||
operationId: inviteBy3PID
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room identifier (not alias) to which to invite the user.
|
|
||||||
required: true
|
|
||||||
x-example: "!d41d8cd:matrix.org"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"id_server": "matrix.org",
|
|
||||||
"medium": "email",
|
|
||||||
"address": "cheeky@monkey.com"
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
id_server:
|
|
||||||
type: string
|
|
||||||
description: The hostname+port of the identity server which should be used for third party identifier lookups.
|
|
||||||
medium:
|
|
||||||
type: string
|
|
||||||
# TODO: Link to Identity Service spec when it eixsts
|
|
||||||
description: The kind of address being passed in the address field, for example ``email``.
|
|
||||||
address:
|
|
||||||
type: string
|
|
||||||
description: The invitee's third party identifier.
|
|
||||||
required: ["id_server", "medium", "address"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The user has been invited to join the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
403:
|
|
||||||
description: |-
|
|
||||||
You do not have permission to invite the user to the room. A meaningful ``errcode`` and description error text will be returned. Example reasons for rejections are:
|
|
||||||
|
|
||||||
- The invitee has been banned from the room.
|
|
||||||
- The invitee is already a member of the room.
|
|
||||||
- The inviter is not currently in the room.
|
|
||||||
- The inviter's power level is insufficient to invite users to the room.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
"errcode": "M_FORBIDDEN", "error": "@cheeky_monkey:matrix.org is banned from the room"}
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/error.yaml"
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room membership
|
|
@ -1,90 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Send-to-device API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/sendToDevice/{eventType}/{txnId}":
|
|
||||||
put:
|
|
||||||
summary: Send an event to a given set of devices.
|
|
||||||
description: |-
|
|
||||||
This endpoint is used to send send-to-device events to a set of
|
|
||||||
client devices.
|
|
||||||
operationId: sendToDevice
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: eventType
|
|
||||||
description: The type of event to send.
|
|
||||||
required: true
|
|
||||||
x-example: "m.new_device"
|
|
||||||
- in: path
|
|
||||||
name: txnId
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The transaction ID for this event. Clients should generate an
|
|
||||||
ID unique across requests with the same access token; it will be
|
|
||||||
used by the server to ensure idempotency of requests.
|
|
||||||
required: true
|
|
||||||
x-example: "35"
|
|
||||||
- in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
title: body
|
|
||||||
properties:
|
|
||||||
messages:
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The messages to send. A map from user ID, to a map from
|
|
||||||
device ID to message body. The device ID may also be `*`,
|
|
||||||
meaning all known devices for the user.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
|
||||||
title: EventContent
|
|
||||||
description: Message content
|
|
||||||
example: {
|
|
||||||
"@alice:example.com": {
|
|
||||||
"TLLBEANAAG": {
|
|
||||||
"example_content_key": "value"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description:
|
|
||||||
The message was successfully sent.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
tags:
|
|
||||||
- Send-to-Device messaging
|
|
@ -1,87 +0,0 @@
|
|||||||
# Copyright 2016 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
swagger: '2.0'
|
|
||||||
info:
|
|
||||||
title: "Matrix Client-Server Typing API"
|
|
||||||
version: "1.0.0"
|
|
||||||
host: localhost:8008
|
|
||||||
schemes:
|
|
||||||
- https
|
|
||||||
- http
|
|
||||||
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
securityDefinitions:
|
|
||||||
$ref: definitions/security.yaml
|
|
||||||
paths:
|
|
||||||
"/rooms/{roomId}/typing/{userId}":
|
|
||||||
put:
|
|
||||||
summary: Informs the server that the user has started or stopped typing.
|
|
||||||
description: |-
|
|
||||||
This tells the server that the user is typing for the next N
|
|
||||||
milliseconds where N is the value specified in the ``timeout`` key.
|
|
||||||
Alternatively, if ``typing`` is ``false``, it tells the server that the
|
|
||||||
user has stopped typing.
|
|
||||||
operationId: setTyping
|
|
||||||
security:
|
|
||||||
- accessToken: []
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: userId
|
|
||||||
description: The user who has started to type.
|
|
||||||
required: true
|
|
||||||
x-example: "@alice:example.com"
|
|
||||||
- in: path
|
|
||||||
type: string
|
|
||||||
name: roomId
|
|
||||||
description: The room in which the user is typing.
|
|
||||||
required: true
|
|
||||||
x-example: "!wefh3sfukhs:example.com"
|
|
||||||
- in: body
|
|
||||||
name: typingState
|
|
||||||
description: The current typing state.
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
example: {
|
|
||||||
"typing": true,
|
|
||||||
"timeout": 30000
|
|
||||||
}
|
|
||||||
properties:
|
|
||||||
typing:
|
|
||||||
type: boolean
|
|
||||||
description: |-
|
|
||||||
Whether the user is typing or not. If ``false``, the ``timeout``
|
|
||||||
key can be omitted.
|
|
||||||
timeout:
|
|
||||||
type: integer
|
|
||||||
description: The length of time in milliseconds to mark this user as typing.
|
|
||||||
required: ["typing"]
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: The new typing state was set.
|
|
||||||
examples:
|
|
||||||
application/json: {
|
|
||||||
}
|
|
||||||
schema:
|
|
||||||
type: object # empty json object
|
|
||||||
429:
|
|
||||||
description: This request was rate-limited.
|
|
||||||
schema:
|
|
||||||
"$ref": "definitions/errors/rate_limited.yaml"
|
|
||||||
tags:
|
|
||||||
- Room participation
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue