1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-11-21 08:45:04 -05:00

Accept inbox/pubsub-filter.xml as XEP-0462

This commit is contained in:
Jonas Schäfer 2022-03-08 20:35:26 +01:00
parent b855715e6f
commit 6c741db673
2 changed files with 154 additions and 0 deletions

153
xep-0462.xml Normal file
View File

@ -0,0 +1,153 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
<title>PubSub Type Filtering</title>
<abstract>This specification provides a way to filter PubSub nodes in a disco query.</abstract>
&LEGALNOTICE;
<number>0462</number>
<status>Experimental</status>
<type>Standards Track</type>
<sig>Standards</sig>
<approver>Council</approver>
<dependencies>
<spec>XEP-0004</spec>
<spec>XEP-0030</spec>
<spec>XEP-0060</spec>
</dependencies>
<supersedes/>
<supersededby/>
<shortname>NOT_YET_ASSIGNED</shortname>
<author>
<firstname>Timothée</firstname>
<surname>Jaussoin</surname>
<email>edhelas@movim.eu</email>
<jid>edhelas@movim.eu</jid>
</author>
<author>
<firstname>Maxime</firstname>
<surname>Buquet</surname>
<email>pep@bouah.net</email>
<jid>pep@bouah.net</jid>
</author>
<revision>
<version>0.1.0</version>
<date>2022-03-08</date>
<initials>XEP Editor (jsc)</initials>
<remark>Accepted by vote of Council on 2022-02-09.</remark>
</revision>
<revision>
<version>0.0.1</version>
<date>2022-02-01</date>
<initials>edhelas, pep</initials>
<remark><p>First draft.</p></remark>
</revision>
</header>
<section1 anchor="intro" topic="Introduction">
<p>Implementations have been able to declare a <tt>pubsub#type</tt> attribute on PubSub nodes for about as long as &xep0060; has existed. This attribute doesnt seem to be widely used in the community though, maybe due to the vagueness of its description, that has recently changed, or the lack of features associated with it.</p>
<p>This specification provides a way for implementations to allow filtering on this attribute when discovering items on a PubSub service.</p>
<p>Filtering is particularly useful for example combined with &xep0277; and comment nodes that are created on the same service. When listing content nodes of a service, one may want to filter out comment nodes.</p>
</section1>
<section1 anchor="reqs" topic="Requirements">
<ul>
<li>Allow querying only a subset of nodes in a disco items request, in the form of include/exclude</li>
</ul>
</section1>
<section1 anchor="usecases" topic="Use Cases">
<section2 anchor="support" topic="Discovering support">
<p>A service implementing this specification MUST advertize through &xep0030; a <tt>urn:xmpp:pubsub-filter:0</tt> feature.</p>
</section2>
<section2 anchor="sending-a-disco-request" topic="Sending a disco request">
<p>While requesting disco#items on a PubSub service, an entity might want to only get nodes of certain <tt>pubsub#type</tt>. To do so, it may add a filter child of namespace <tt>urn:xmpp:pubsub-filter:0</tt> to the query element, containing a &xep0004; form with FORM_TYPE set to <tt>urn:xmpp:pubsub-filter:0</tt> and an <tt>included-types</tt> or <tt>excluded-types</tt> list-multi type field containing the various types it wants to filter.</p>
<p>When <tt>included-types</tt> is specified, a PubSub service MUST return nodes of matching <tt>pubsub#type</tt> in its response.</p>
<p>When <tt>excluded-types</tt> is specified, a PubSub service MUST return every node but those of matching <tt>pubsub#types</tt> in its response.</p>
<p>Both included and excluded fields MAY contain an empty value to designate nodes with an empty <tt>pubsub#type</tt>.</p>
<example caption='Requesting disco#items with only nodes of the following types, including empty ones'><![CDATA[<iq type='get'
from='rosa@com.int/desktop'
to='news.commons.social'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#items>
<filter xmlns='urn:xmpp:pubsub-filter:0'>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>urn:xmpp:pubsub-filter:0</value>
</field>
<field type='list-multi' var='included-types'>
<value>urn:xmpp:microblog:0</value>
<value/>
</field>
</x>
</filter>
</query>
</iq>]]></example>
<p>If both the included and excluded fields are specified, a service MUST return an error of type <tt>modify</tt> containing a <tt>bad-request</tt> element in the <tt>urn:ietf:params:xml:ns:xmpp-stanzas</tt> namespace.</p>
<example caption='Error returned when a requesting entity includes both fields'><![CDATA[<iq type='error'
from='news.com.int'
to='peter@commons.social/desktop'
id='error1'>
<error type='modify'>
<bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>]]></example>
</section2>
</section1>
<section1 anchor="iana" topic="IANA Considerations">
<p>None.</p>
</section1>
<section1 anchor="registrar" topic="XMPP Registrar Considerations">
<p>None.</p>
</section1>
<section1 anchor="schema" topic="XML Schema">
<section2 anchor="urnxmpppubsub-filter0" topic="urn:xmpp:pubsub-filter:0">
<code><![CDATA[<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
xmlns:xdata='jabber:x:data'
targetNamespace='urn:xmpp:pubsub-filter:0'
xmlns='urn:xmpp:pubsub-filter:0'
elementFormDefault='qualified'>
<xs:annotation>
<xs:documentation>
The protocol documented by this schema is defined in
XEP-XXXX: http://xmpp.org/extensions/xep-xxxx.html
</xs:documentation>
</xs:annotation>
<xs:element name='filter'>
<xs:complexType>
<xs:choice xmlns:xdata='jabber:x:data'>
<xs:element ref='xdata:x'/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>]]></code>
</section2>
</section1>
</xep>

View File

@ -1634,3 +1634,4 @@ IANA Service Location Protocol, Version 2 (SLPv2) Templates</link></span> <note>
<!ENTITY xep0459 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0459.html'>XMPP Compliance Suites 2022 (XEP-0459)</link></span> <note>XEP-0459: XMPP Compliance Suites 2022 &lt;<link url='https://xmpp.org/extensions/xep-0459.html'>https://xmpp.org/extensions/xep-0459.html</link>&gt;.</note>" >
<!ENTITY xep0460 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0460.html'>Pubsub Caching Hints (XEP-0460)</link></span> <note>XEP-0460: Pubsub Caching Hints &lt;<link url='https://xmpp.org/extensions/xep-0460.html'>https://xmpp.org/extensions/xep-0460.html</link>&gt;.</note>" >
<!ENTITY xep0461 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0461.html'>Message Replies (XEP-0461)</link></span> <note>XEP-0461: Message Replies &lt;<link url='https://xmpp.org/extensions/xep-0461.html'>https://xmpp.org/extensions/xep-0461.html</link>&gt;.</note>" >
<!ENTITY xep0462 "<span class='ref'><link url='https://xmpp.org/extensions/xep-0462.html'>PubSub Type Filtering (XEP-0462)</link></span> <note>XEP-0462: PubSub Type Filtering &lt;<link url='https://xmpp.org/extensions/xep-0462.html'>https://xmpp.org/extensions/xep-0462.html</link>&gt;.</note>" >