%ents; ]>
HTTP Online Meetings This specification defines a protocol extension to request URLs from an external HTTP entity usable to initiate and invite participants to an online meeting. &LEGALNOTICE; XXXX ProtoXEP Standards Track Standards Council http_online-meetings Dele Olajide dele@olajide.net dele.olajide@igniterealtime.org Guus der Kinderen guus.der.kinderen@gmail.com guus.der.kinderen@igniterealtime.org 0.0.3 2023-09-12 gdk
  • Modified wording of abstract.
  • Specified distribution of URL / add meeting invitation
  • Differentiate between Meeting service providers that are integrated with XMPP server, and those that are not.
  • Differentiate between URL to create and join meeting
  • Replaced textual references with XML entities
  • Introduced distinct namespaces for create and invite, retaining type-specific namespaces for feature discovery
  • Introduced Meeting Service type registry
  • Removed CORS-related implementation note
  • Meeting ID in request now optional
  • Add optional 'desc' in the meeting request.
  • Moved IQ child elements into a wrapper, renamed 'create' element to 'initiate'
  • Add fall-back body element to invite message stanza.
  • Removed dependency on XEP-0066.
0.0.2 2023-08-22 do
  • Remove base URL attribute.
  • Add support for a web-based protocol handler in OOB data result.
0.0.1 2023-08-21 do
  • Initial version.

XMPP protocol extensions already defines a method for initiating peer-to-peer media sessions such as &xep0166; however due to its very nature of being peer-to-peer it does not work very well in scenarios with online meetings. It also does not work alongside offline storage, MUC history and &xep0313;.

Using a web browser to manually request a URL from an HTTP server and sharing the link has been a workaround for this for a long time now. While users have a variety of services to choose from, the downside of this manual approach is that an XMPP client can not automate this process on behalf of the user since these services don’t share a common API.

This XEP defines an approach to request initiation of an online meeting via an HTTP server and receive a URL can be used to join and invite others to the meeting.

An entity advertises support for meeting initiation, as specified by this protocol, by including the "urn:xmpp:http:online-meetings:initiate:0" namespace, as well as "urn:xmpp:http:online-meetings#xxxxxx" (where xxxxx is the name of the supported meeting service) namespaces in its service discovery information features as specified in &xep0030; or section 6.3 of &xep0115;.

A user’s server SHOULD include itself as a services provider for this protocol in its service discovery items.

]]> ]]>

If an entity supports receiving meeting invitations as specified by this protocol, it advertises support by including the "urn:xmpp:http:online-meetings:invite:0" in its service discovery information features as specified in &xep0030; or section 6.3 of &xep0115;. Support for specific meeting services can be specified by including the corresponding "urn:xmpp:http:online-meetings#xxxxxx" namespaces.

]]> ]]>

In order for an application to determine whether an entity supports this protocol, where possible it SHOULD use the dynamic, presence-based profile of service discovery defined in &xep0115;. However, if an application has not received entity capabilities information from an entity, it SHOULD use explicit service discovery instead.

A client requests an online new meeting to be initiated by sending an IQ-get to the server containing a <query> child element qualified by the 'urn:xmpp:http:online-meetings:invite:0' namespace.

This 'query' MUST include the type attribute specifying the Meeting Service type, which SHOULD be registered as described in the Meeting Service Type Registry section of this document.

]]>

If the requesting entity desires to (re)initiate a meeting with a specific identifier, the optional 'id' attribute can be used to specify the identity of the online meeting requested. When the provided value cannot be used, for example when it does not match the format used by a meeting provider, or a meeting with that particular value is already in use, the server SHOULD return an error.

]]>

An optional 'desc' child element can be used to assign a human-readable description to the meeting. The server MAY use this value when configuring the online meeting with the service provider, and SHOULD use this value in its response, but otherwise treat this as an opaque value.

Meeting room for Open Standards discussion ]]>

The XMPP server responds with one or two child elements: a 'initiate' element that contains a URL to be used to create and configure the meeting, and an 'invite' element that contains a URL suitable to invite others into the meeting.

In the URLs that it returns, the server MAY specify a web-based protocol handler if available and registered by the user. Otherwise, standard HTTPS protocol will be specified. In any case, the fully resolved URL provided by the host MUST provide Transport Layer Security (&rfc5246;). The HTTPS URL MUST adhere to &rfc3986;. Non ASCII characters MUST be percent-encoded.

web+jitsi:https://meet.jit.si/OpenStandardsMuchGreatness Meeting room for Open Standards discussion web+jitsi:https://meet.jit.si/OpenStandardsMuchGreatness Meeting room for Open Standards discussion ]]> https://meet.jit.si/OpenStandardsMuchGreatness Meeting room for Open Standards discussion https://meet.jit.si/OpenStandardsMuchGreatness Meeting room for Open Standards discussion ]]>

The XMPP server MAY be tightly integrated with the Meeting Provider and facilitate registration, configuration and association of a web-based protocol handler, but the protocol to implement such integration is out of scope of this document.

If the XMPP server is tightly integrated with the Meeting Provider, and no other data is needed for a meeting to be initiated, the XMPP server MAY initiate a meeting on behalf of the requester and leave out the 'initiate' element from the response. Note that a server SHOULD include a 'initiate' URL in its response if it cannot initiate a meeting on behalf of the requesting entity, even if it knows that no additional data is needed for a meeting to be automatically initiated upon joining the meeting URL. Inclusion of the 'initiate' element signals that the requesting entity may need join the meeting as the first participant, in order to be assigned 'creator' or 'moderator' privileges.

Instead of providing the client with a URL the server MAY respond with an error if the request fails. In addition, the HTTP entity MAY inform the requester about the reason for the failure.

The 'jitsi' meeting service provider type is not supported. ]]> Meeting is in use ]]>

For any other type of error the service SHOULD respond with appropriate error types to indicate temporary or permanent errors.

For temporary errors such as exceeding a personal quota the service MAY include a <retry/> element qualified by the 'urn:xmpp:http:online-meetings:0' namespace as a child of the <error/> element. The retry element MUST include an attribute 'stamp' which indicates the time at which the requesting entity may try again. The format of the timestamp MUST adhere to the date-time format specified in &xep0082; and MUST be expressed in UTC.

Quota reached. You can only request 5 meetings a day ]]> Only premium members are allowed to initiate meetings ]]>

After the requesting entity has successfully initiated a meeting, it MAY invite other entities to join the meeting. It does so by sending invitees a message stanza containing an 'invite' child element, qualified by the online-meetings namespace, as was sent by the server in response to the initiation request.

To allow users of clients that do not support this XEP to receive the invitation, a &xep0066; element and/or a 'body' element containing the meeting details MAY be included.

https://meet.jit.si/OpenStandardsMuchGreatness Meeting room for Open Standards discussion https://meet.jit.si/OpenStandardsMuchGreatness Meeting room for Open Standards discussion You are invited to join 'Meeting room for Open Standards discussion' at https://meet.jit.si/OpenStandardsMuchGreatness ]]>

There is no further XMPP communication required between the server and the client for the client to join the meeting. The actual online meeting engagement with the provided URL is out of scope of this document.

The server SHOULD choose an appropriate timeout for the validity of the URL. Since there is no reason for a client to wait between requesting the URL and joining the meeting via the URL before dispatching invitations, relatively low timeout values of around 300s are RECOMMENDED.

  • Service implementors SHOULD use long randomized parts in their URLs making it impossible to guess the location of arbitrary meeting url.
  • Implementors should keep in mind, that without additional end-to-end-encryption, online meetings may not be secure. Client implementors are advised to either use this only for semi public meetings (for example meetings hosted on a public MUC) or implement appropriate end-to-end encryption.
  • Joining an HTTP Online Meeting will leak the client’s IP address to the HTTP service. The HTTP service might not be the same service as the XMPP service the client is currently connected to.

This document requires no interaction with the &IANA;

This specification defines the following XML namespaces:

  • urn:xmpp:http:online-meetings:0
  • urn:xmpp:http:online-meetings:initiate:0
  • urn:xmpp:http:online-meetings:invite:0
  • urn:xmpp:http:online-meetings#jitsi
  • urn:xmpp:http:online-meetings#galene

Upon advancement of this specification from a status of Experimental to a status of Draft, the ®ISTRAR; shall add the foregoing namespace to the registry located at &NAMESPACES;, as described in Section 4 of &xep0053;.

The XMPP Registrar maintains a registry of Meeting provider types at TBD.

]]>