<description xmlns=“riddl.org/ns/description/1.0” xmlns:ann=“riddl.org/ns/annotation/1.0” xmlns:xi=“www.w3.org/2001/XInclude” datatypeLibrary=“www.w3.org/2001/XMLSchema-datatypes”>

<message name="item">
  <parameter name="stage" type="string">
    <xi:include href="stages"/>
  </parameter>
  <parameter name="new" type="string">
    <param name="pattern">[a-zA-Z0-9öäüÖÄÜ _-]+</param>
  </parameter>
</message>
<message name="name">
  <parameter name="new" type="string">
    <param name="pattern">[a-zA-Z0-9öäüÖÄÜ _-]+</param>
  </parameter>
</message>
<message name="dir">
  <parameter name="dir" type="string">
    <param name="pattern">([a-zA-Z0-9öäüÖÄÜ _-]+)|</param>
  </parameter>
</message>
<message name="dirname">
  <parameter name="dir" type="string">
    <param name="pattern">([a-zA-Z0-9öäüÖÄÜ _-]+)\.dir|</param>
  </parameter>
</message>
<message name="duplicate">
  <parameter name="new" type="string">
    <param name="pattern">[a-zA-Z0-9öäüÖÄÜ _-]+</param>
  </parameter>
  <parameter name="old" type="string">
    <param name="pattern">[a-zA-Z0-9öäüÖÄÜ _-]+\.xml</param>
  </parameter>
</message>
<message name="stages">
  <parameter name="stages" type="string"/>
</message>
<message name="newstage">
  <parameter name="stage" type="string">
    <xi:include href="stages"/>
  </parameter>
</message>
<message name="stage">
  <optional>
    <parameter name="stage" type="string">
      <xi:include href="stages"/>
    </parameter>
  </optional>
</message>
<message name="full">
  <parameter name="full" type="string"/>
  <optional>
    <parameter name="stage" type="string">
      <xi:include href="stages"/>
    </parameter>
  </optional>
</message>
<message name="list">
  <parameter name="list" mimetype="application/json"/>
</message>
<message name="content">
  <parameter name="content" mimetype="application/xml"/>
</message>
<resource>
  <post in="item"/>
  <post in="dir"/>
  <post in="duplicate"/>
  <get in="stage" out="list"/>
  <get in="full" out="list"/>
  <get in="stages" out="list"/>
  <sse/>
  <resource relative="[a-zA-Z0-9&#xF6;&#xE4;&#xFC;&#xD6;&#xC4;&#xDC; _-]+\.dir">
    <post in="item"/>
    <post in="duplicate"/>
    <get in="stage" out="list"/>
    <delete/>
    <put in="name"/> <!-- rename -->
    <resource relative="[a-zA-Z0-9&#xF6;&#xE4;&#xFC;&#xD6;&#xC4;&#xDC; _-]+\.xml">
      <get out='content'/>
      <delete/>
      <put in="content"/>
      <put in="name"/> <!-- rename -->
      <put in="dirname"/> <!-- move -->
      <put in="newstage"/> <!-- shift -->
      <resource relative="open"><get in="stage"/></resource>
      <resource relative="open-new"><get in="stage"/></resource>
    </resource>
  </resource>
  <resource relative="[a-zA-Z0-9&#xF6;&#xE4;&#xFC;&#xD6;&#xC4;&#xDC; _-]+\.xml">
    <get out='content'/>
    <delete/>
    <put in="content"/>
    <put in="name"/> <!-- rename -->
    <put in="dirname"/> <!-- move -->
    <put in="newstage"/> <!-- shift -->
    <resource relative="open"><get in="stage"/></resource>
    <resource relative="open-new"><get in="stage"/></resource>
  </resource>
</resource>

</description>