diff --git a/schema/api.capnp b/schema/api.capnp index ed09a14..e668ebf 100644 --- a/schema/api.capnp +++ b/schema/api.capnp @@ -40,11 +40,15 @@ interface Diflouroborane { # Diflouroborane stores machine¹ information in an opaque internal database. This interface is # the only stable process of modifying that information + rooms @3 () -> ( room :Rooms ); + # Diflouroborane stores room information in an opaque internal database. This interface is + # the only stable process of modifying that information. + # TODO Capability transfer system, required for machine takeover, session resumption. } struct UUID { - # UUID type used to identify machines. + # UUID type used to identify machines or rooms. # Since the exact value has no meaning the encoding rules are not too relevant, but it is # paramount that you are consistent when encoding and decoding this type. # @@ -92,6 +96,16 @@ interface Permissions { addPolicy @5 ( p :List(Text) ) -> (); } +interface Room { + + interface Inside { + leave @0 () -> (); + } + + enter @0 ( uuid :UUID ) -> ( inside :Inside ); + # Enter a room, identified by its UUID. If the caller is allowed to a `inside` Capability will be returned. +} + interface Authentication { # List all SASL mechs the server is willing to use availableMechanisms @0 () -> ( mechanisms :List(Text) );