/Puts on Council hat

I'm -1 on this for now because this really needs some more discussion on the 
list as this duplicates quite a bit.


Technical nitpicks for proposal as is:

- The 'jabber:iq:rest' name should not be used. The 'urn:xmpp:xml-rest' 
namespace could be used instead.
- If the <resource /> element can only have the child <method />, why not use 
<resource method="X" />, or <method name="X" path="/foo" />?
- An example showing retrieving the value of a resource would be useful.




Given that XMPP nodes can represent resource paths, the proposal reduces to 
providing a new call/response mechanism that places the action name in an 
attribute value of a generic element (<iq><resource><method name="ACTION" 
/></resource></iq>) instead of an action-specific namespaced IQ child element 
(<iq><ACTION xmlns='ACTION-NS' /></iq>).

Likewise, a new form description schema is provided instead of using Dataforms. 
I do see that there are some special types introduced, but those few special 
cases could be added as an extension to Dataforms instead of a full replacement.

A discovery method is introduced for finding methods that a resource supports, 
but that is already provided by Disco#info features. Of course, Disco does not 
itself provide parameter definitions, but we traditionally do that by using an 
IQ-GET to retrieve an empty data form, followed by an IQ-SET to apply the data 
form.


If the goal is to provide easy mappings for CRUD behaviour, then consider this 
straw man:



Let Resource be represented by a node named "/the/resource".


To find methods supported by the Resource:

<iq type='get'><query xmlns='http://jabber.org/protocol/disco#info' 
node='/the/resource' /></iq>
<iq type='result'>
  <query xmlns='http://jabber.org/protocol/disco#info' node='/the/resource'>
    ...
    <feature var="urn:example:xmpp:rest:get" />
    <feature var="urn:example:xmpp:rest:put" />
    <feature var="urn:example:xmpp:rest:post" />
    <feature var="urn:example:xmpp:rest:delete" />
    ...
  </query>
</iq>


Discovering parameters of the "post" method for the Resource:

<iq type='get'><post xmlns='urn:example:xmpp:rest' node='/the/resource' /></iq>
<iq type='result'>
  <post xmlns='urn:example:xmpp:rest' node='/the/resource'>
    <x xmlns='jabber:x:data'>...</x>
  </post>
</iq>


Performing a "post" to the Resource:
<iq type='set'>
  <post xmlns='urn:example:xmpp:rest' node='/the/resource'>
    <x xmlns='jabber:x:data'>...</x>
  </post>
</iq>
<iq type='result'>...</iq>



Such an approach would still need refining, but it would fit in better with 
existing XEPs without creating a parallel track of extensions for new method 
types.



- Lance


Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to