source: cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.interface.rest/module.xml @ 4571

Last change on this file since 4571 was 4571, checked in by andmor, 10 years ago

Added GET licenses endpoint to the RESToverlay.
Added POST metadata field endpoint to the RESToverlay.
Added POST schema access endpoint to the RESToverlay.

File size: 52.2 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<module version="2.0">
3   <meta>
4      <identity>
5         <uri>urn:org:isocat:schemacat:interface:rest</uri>
6         <version>1.0.0</version>
7      </identity>
8      <info>
9         <name>SCHEMAcat - interface - REST</name>
10         <description>REST interface for SCHEMAcat</description>
11         <icon>res:/schemacat/pub/icon.png</icon>
12      </info>
13   </meta>
14   <system>
15      <dynamic/>
16   </system>
17   <rootspace name="SCHEMAcat - interface - REST - Development Space"
18      uri="urn:org:isocat:schemacat:interface:rest">
19      <fileset>
20         <regex>res:/etc/system/SimpleDynamicImportHook.xml</regex>
21      </fileset>
22      <overlay>
23         <!-- this scratch pad is used to store the user info -->
24         <prototype>ScratchPad</prototype>
25         <space>
26            <pluggable-overlay>
27               <preProcess>
28                  <identifier>active:javascript</identifier>
29                  <argument name="operator">res:/interface/checkUser.js</argument>
30                  <argument name="operand">arg:request</argument>
31               </preProcess>
32               <space>
33                  <fileset>
34                     <regex>res:/debug/.*</regex>
35                     <mutable/>
36                  </fileset>
37                  <fileset>
38                     <regex>res:/interface/.*</regex>
39                  </fileset>
40                  <import>
41                     <uri>urn:org:isocat:schemacat:interface:rest:overlay</uri>
42                  </import>
43                  <import>
44                     <uri>urn:org:netkernel:lang:javascript</uri>
45                  </import>
46                  <import>
47                     <uri>urn:org:netkernel:web:core</uri>
48                  </import>
49               </space>
50            </pluggable-overlay>
51         </space>     
52      </overlay>
53      <overlay>
54         <!-- serve webapp files directly with this overlay -->
55         <prototype>RESTOverlay</prototype>
56         <config>
57            <basepath>/schemacat</basepath>
58         </config>
59         <space>
60            <mapper>
61               <config>
62                  <endpoint>
63                     <meta>
64                        <rest>
65                           <simple>/site/{file}</simple>
66                           <compress/>
67                           <Etag>MD5</Etag>
68                        </rest>
69                     </meta>
70                     <grammar>res:/schemacat/<group name="file"><regex type="anything"/></group></grammar>
71                     <request>
72                        <identifier>res:/schemacat/site/[[arg:file]]</identifier>
73                     </request>
74                  </endpoint>
75               </config>
76               <space>
77                  <import>
78                     <uri>urn:org:isocat:schemacat:site</uri>
79                  </import>
80               </space>
81            </mapper>
82         </space>
83      </overlay>
84      <fileset>
85         <!--Icon-->
86         <regex>res:/pub/(.*)</regex>
87         <rewrite>res:/pub/$1</rewrite>
88      </fileset>
89      <import>
90         <private/>
91         <uri>urn:org:netkernel:tpt:http</uri>
92      </import>
93      <import>
94         <private/>
95         <uri>urn:org:netkernel:ext:layer1</uri>
96      </import>
97   </rootspace>
98   <rootspace name="SCHEMAcat - interface - REST Overlay - Space" public="true"
99      uri="urn:org:isocat:schemacat:interface:rest:overlay">
100      <overlay>
101         <!-- all endpoints firs run findUser to store the user info in the scratch pad -->
102         <prototype>RESTOverlay</prototype>
103         <config>
104            <basepath>/schemacat</basepath>
105         </config>
106         <space>
107            <mapper>
108               <config>
109                  <endpoint>
110                     <meta>
111                        <rest>
112                           <method>POST</method>
113                           <simple>/users/{userID:([^/]+)}{slash:(/|)}</simple>
114                           <compress/>
115                           <Etag>MD5</Etag>
116                           <consumes>application/json</consumes>
117                           <produces>application/json</produces>
118                        </rest>
119                     </meta>
120                     <grammar>
121                        <active>
122                           <identifier>active:org.schemacat.rest.post.user.json</identifier>
123                           <argument name="userID" min="1" max="1"/>
124                           <argument name="slash"/>
125                        </active>
126                     </grammar>
127                     <request>
128                        <identifier>active:JSONFromXML</identifier>
129                        <argument name="operand">
130                           <request>
131                              <identifier>active:sloot.dpml</identifier>
132                              <argument name="operator">res:/interface/postUser.dpml</argument>
133                              <argument name="userID" method="as-string">arg:userID</argument>
134                           </request>
135                        </argument>
136                     </request>
137                     <header name="mime">application/json</header>
138                  </endpoint> 
139                  <endpoint>
140                     <meta>
141                        <rest>
142                           <method>POST</method>
143                           <simple>/schemas/{schemaID:([^/]+)}/access{slash:(/|)}</simple>
144                           <compress/>
145                           <Etag>MD5</Etag>
146                           <consumes>application/json</consumes>
147                           <produces>application/json</produces>
148                        </rest>
149                     </meta>
150                     <grammar>
151                        <active>
152                           <identifier>active:org.schemacat.rest.schema.access</identifier>
153                           <argument name="schemaID"/>
154                           <argument name="slash"/>
155                        </active>
156                     </grammar>
157                     <request>
158                        <identifier>active:JSONFromXML</identifier>
159                        <argument name="operand">
160                           <request>
161                              <identifier>active:sloot.dpml</identifier>
162                              <argument name="operator">res:/interface/postSchemaAccess.dpml</argument>
163                              <argument method="as-string" name="schemaID">arg:schemaID</argument>
164                           </request>
165                        </argument>
166                     </request>
167                     <header name="mime">application/json</header>
168                  </endpoint>
169                  <endpoint>
170                     <meta>
171                        <rest>
172                           <method>POST</method>
173                           <simple>/schemas/{schemaID:([^/]+)}/{metadataFieldName:(?!access)[^/]+}{slash:(/|)}</simple>
174                           <compress/>
175                           <Etag>MD5</Etag>
176                           <consumes>application/json</consumes>
177                           <produces>application/json</produces>
178                        </rest>
179                     </meta>
180                     <grammar>
181                        <active>
182                           <identifier>active:org.schemacat.rest.schema.metadataField</identifier>
183                           <argument name="schemaID"/>
184                           <argument name="metadataFieldName"/>
185                           <argument name="slash"/>
186                        </active>
187                     </grammar>
188                     <request>
189                        <identifier>active:JSONFromXML</identifier>
190                        <argument name="operand">
191                           <request>
192                              <identifier>active:sloot.dpml</identifier>
193                              <argument name="operator">res:/interface/postSchemaMetadataField.dpml</argument>
194                              <argument method="as-string" name="schemaID">arg:schemaID</argument>
195                              <argument method="as-string" name="metadataFieldName">arg:metadataFieldName</argument>
196                           </request>
197                        </argument>
198                     </request>
199                     <header name="mime">application/json</header>
200                  </endpoint>
201                  <endpoint>
202                     <meta>
203                        <rest>
204                           <method>GET</method>
205                           <simple>/users/{userID:([^/]+)}{slash:(/|)}</simple>
206                           <compress/>
207                           <Etag>MD5</Etag>
208                           <produces>application/json</produces>
209                        </rest>
210                     </meta>
211                     <grammar>
212                        <active>
213                           <identifier>active:org.schemacat.rest.get.user.json</identifier>
214                           <argument name="userID" min="1" max="1"/>
215                           <argument name="slash"/>
216                        </active>
217                     </grammar>
218                     <request>
219                        <identifier>active:JSONFromXML</identifier>
220                        <argument name="operand">
221                           <request>
222                              <identifier>active:sloot.dpml</identifier>
223                              <argument name="operator">res:/interface/getUser.dpml</argument>
224                              <argument name="userID" method="as-string">arg:userID</argument>
225                           </request>
226                        </argument>
227                     </request>
228                     <header name="mime">application/json</header>
229                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
230                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
231                  </endpoint>
232                  <endpoint>
233                     <meta>
234                        <rest>
235                           <method>GET</method>
236                           <simple>/users/{userID:([^/]+)}{slash:(/|)}</simple>
237                           <compress/>
238                           <Etag>MD5</Etag>
239                           <produces>application/xml</produces>
240                        </rest>
241                     </meta>
242                     <grammar>
243                        <active>
244                           <identifier>active:org.schemacat.rest.get.user.xml</identifier>
245                           <argument name="userID" min="1" max="1"/>
246                           <argument name="slash"/>
247                        </active>
248                     </grammar>
249                     <request>
250                        <identifier>active:sloot.dpml</identifier>
251                        <argument name="operator">res:/interface/getUser.dpml</argument>
252                        <argument name="userID" method="as-string">arg:userID</argument>
253                     </request>
254                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
255                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
256                  </endpoint>
257                  <endpoint>
258                     <meta>
259                        <rest>
260                           <method>GET</method>
261                           <simple>/users{slash:(/|)}</simple>
262                           <compress/>
263                           <Etag>MD5</Etag>
264                           <produces>application/json</produces>
265                        </rest>
266                     </meta>
267                     <grammar>
268                        <active>
269                           <identifier>active:org.schemacat.rest.users.json</identifier>
270                           <argument name="slash"/>
271                        </active>
272                     </grammar>
273                     <request>
274                        <identifier>active:JSONFromXML</identifier>
275                        <argument name="operand">
276                           <request>
277                              <identifier>active:sloot.dpml</identifier>
278                              <argument name="operator">res:/interface/users.dpml</argument>
279                           </request>
280                        </argument>
281                     </request>
282                     <header name="mime">application/json</header>
283                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
284                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
285                  </endpoint>
286                  <endpoint>
287                     <meta>
288                        <rest>
289                           <method>GET</method>
290                           <simple>/users{slash:(/|)}</simple>
291                           <compress/>
292                           <Etag>MD5</Etag>
293                           <produces>application/xml</produces>
294                        </rest>
295                     </meta>
296                     <grammar>
297                        <active>
298                           <identifier>active:org.schemacat.rest.users.xml</identifier>
299                           <argument name="slash"/>
300                        </active>
301                     </grammar>
302                     <request>
303                        <identifier>active:sloot.dpml</identifier>
304                        <argument name="operator">res:/interface/users.dpml</argument>
305                     </request>
306                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
307                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
308                  </endpoint>
309                  <endpoint>
310                     <meta>
311                        <rest>
312                           <method>GET</method>
313                           <simple>/users/{userID}/schemas{slash:(/|)}</simple>
314                           <compress/>
315                           <Etag>MD5</Etag>
316                           <produces>application/json</produces>
317                        </rest>
318                     </meta>
319                     <grammar>
320                        <active>
321                           <identifier>active:org.schemacat.rest.user.schemas.json</identifier>
322                           <argument name="userID" min="1" max="1"/>
323                           <argument name="slash"/>
324                        </active>
325                     </grammar>
326                     <request>
327                        <identifier>active:JSONFromXML</identifier>
328                        <argument name="operand">
329                           <request>
330                              <identifier>active:sloot.dpml</identifier>
331                              <argument name="operator">res:/interface/userSchemas.dpml</argument>
332                              <argument method="as-string" name="userID">arg:userID</argument>
333                           </request>
334                        </argument>
335                     </request>
336                     <header name="mime">application/json</header>
337                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
338                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
339                  </endpoint>
340                  <endpoint>
341                     <meta>
342                        <rest>
343                           <method>GET</method>
344                           <simple>/users/{userID}/schemas{slash:(/|)}</simple>
345                           <compress/>
346                           <Etag>MD5</Etag>
347                           <produces>application/xml</produces>
348                        </rest>
349                     </meta>
350                     <grammar>
351                        <active>
352                           <identifier>active:org.schemacat.rest.user.schemas.xml</identifier>
353                           <argument name="userID" min="1" max="1"/>
354                           <argument name="slash"/>
355                        </active>
356                     </grammar>
357                     <request>
358                        <identifier>active:sloot.dpml</identifier>
359                        <argument name="operator">res:/interface/userSchemas.dpml</argument>
360                        <argument method="as-string" name="userID">arg:userID</argument>
361                     </request>
362                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
363                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
364                  </endpoint>
365                  <endpoint>
366                     <meta>
367                        <rest>
368                           <method>GET</method>
369                           <simple>/users/{userID}/schemas/pagedlist/page/{startPage:([1-9][0-9]*)}/pagesize/{pageSize:([1-9][0-9]*)}{slash:(/|)}</simple>
370                           <compress/>
371                           <Etag>MD5</Etag>
372                           <produces>application/json</produces>
373                        </rest>
374                     </meta>
375                     <grammar>
376                        <active>
377                           <identifier>active:org.schemacat.rest.user.schemas.paged.json</identifier>
378                           <argument name="userID" min="1" max="1"/>
379                           <argument name="startPage" min="1" max="1"/>
380                           <argument name="pageSize" min="1" max="1"/>
381                           <argument name="slash"/>
382                        </active>
383                     </grammar>
384                     <request>
385                        <identifier>active:JSONFromXML</identifier>
386                        <argument name="operand">
387                           <request>
388                              <identifier>active:sloot.dpml</identifier>
389                              <argument name="operator">res:/interface/pagedUserSchemas.dpml</argument>
390                              <argument method="as-string" name="userID">arg:userID</argument>
391                              <argument method="as-string" name="startPage">arg:startPage</argument>
392                              <argument method="as-string" name="pageSize">arg:pageSize</argument>
393                           </request>
394                        </argument>
395                     </request>
396                     <header name="mime">application/json</header>
397                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
398                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
399                  </endpoint>
400                  <endpoint>
401                     <meta>
402                        <rest>
403                           <method>GET</method>
404                           <simple>/users/{userID}/schemas/pagedlist/page/{startPage:([1-9][0-9]*)}/pagesize/{pageSize:([1-9][0-9]*)}{slash:(/|)}</simple>
405                           <compress/>
406                           <Etag>MD5</Etag>
407                           <produces>application/xml</produces>
408                        </rest>
409                     </meta>
410                     <grammar>
411                        <active>
412                           <identifier>active:org.schemacat.rest.user.schemas.paged.xml</identifier>
413                           <argument name="userID" min="1" max="1"/>
414                           <argument name="startPage" min="1" max="1"/>
415                           <argument name="pageSize" min="1" max="1"/>
416                           <argument name="slash"/>
417                        </active>
418                     </grammar>
419                     <request>
420                        <identifier>active:sloot.dpml</identifier>
421                        <argument name="operator">res:/interface/pagedUserSchemas.dpml</argument>
422                        <argument method="as-string" name="userID">arg:userID</argument>
423                        <argument method="as-string" name="startPage">arg:startPage</argument>
424                        <argument method="as-string" name="pageSize">arg:pageSize</argument>
425                     </request>
426                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
427                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
428                  </endpoint>
429                  <endpoint>
430                     <meta>
431                        <rest>
432                           <method>GET</method>
433                           <simple>/schemas{slash:(/|)}</simple>
434                           <compress/>
435                           <Etag>MD5</Etag>
436                           <produces>application/json</produces>
437                        </rest>
438                     </meta>
439                     <grammar>
440                        <active>
441                           <identifier>active:org.schemacat.rest.schemas.json</identifier>
442                           <argument name="slash"/>
443                        </active>
444                     </grammar>
445                     <request>
446                        <identifier>active:JSONFromXML</identifier>
447                        <argument name="operand">
448                           <request>
449                              <identifier>active:sloot.dpml</identifier>
450                              <argument name="operator">res:/interface/schemas.dpml</argument>
451                           </request>
452                        </argument>
453                     </request>
454                     <header name="mime">application/json</header>
455                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
456                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
457                  </endpoint>
458                  <endpoint>
459                     <meta>
460                        <rest>
461                           <method>GET</method>
462                           <simple>/schemas{slash:(/|)}</simple>
463                           <compress/>
464                           <Etag>MD5</Etag>
465                           <produces>application/xml</produces>
466                        </rest>
467                     </meta>
468                     <grammar>
469                        <active>
470                           <identifier>active:org.schemacat.rest.schemas.xml</identifier>
471                           <argument name="slash"/>
472                        </active>
473                     </grammar>
474                     <request>
475                        <identifier>active:sloot.dpml</identifier>
476                        <argument name="operator">res:/interface/schemas.dpml</argument>
477                     </request>
478                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
479                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
480                  </endpoint>
481                  <endpoint>
482                     <meta>
483                        <rest>
484                           <method>GET</method>
485                           <simple>/schemas/pagedlist/page/{startPage:([1-9][0-9]*)}/pagesize/{pageSize:([1-9][0-9]*)}{slash:(/|)}</simple>
486                           <compress/>
487                           <Etag>MD5</Etag>
488                           <produces>application/json</produces>
489                        </rest>
490                     </meta>
491                     <grammar>
492                        <active>
493                           <identifier>active:org.schemacat.rest.schemas.paged.json</identifier>
494                           <argument name="startPage" min="1" max="1"/>
495                           <argument name="pageSize" min="1" max="1"/>
496                           <argument name="slash"/>
497                        </active>
498                     </grammar>
499                     <request>
500                        <identifier>active:JSONFromXML</identifier>
501                        <argument name="operand">
502                           <request>
503                              <identifier>active:sloot.dpml</identifier>
504                              <argument name="operator">res:/interface/pagedSchemas.dpml</argument>
505                              <argument method="as-string" name="startPage">arg:startPage</argument>
506                              <argument method="as-string" name="pageSize">arg:pageSize</argument>
507                           </request>
508                        </argument>
509                     </request>
510                     <header name="mime">application/json</header>
511                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
512                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
513                  </endpoint>
514                  <endpoint>
515                     <meta>
516                        <rest>
517                           <method>GET</method>
518                           <simple>/schemas/pagedlist/page/{startPage:([1-9][0-9]*)}/pagesize/{pageSize:([1-9][0-9]*)}{slash:(/|)}</simple>
519                           <compress/>
520                           <Etag>MD5</Etag>
521                           <produces>application/xml</produces>
522                        </rest>
523                     </meta>
524                     <grammar>
525                        <active>
526                           <identifier>active:org.schemacat.rest.schemas.paged.xml</identifier>
527                           <argument name="startPage" min="1" max="1"/>
528                           <argument name="pageSize" min="1" max="1"/>
529                           <argument name="slash"/>
530                        </active>
531                     </grammar>
532                     <request>
533                        <identifier>active:sloot.dpml</identifier>
534                        <argument name="operator">res:/interface/pagedSchemas.dpml</argument>
535                        <argument method="as-string" name="startPage">arg:startPage</argument>
536                        <argument method="as-string" name="pageSize">arg:pageSize</argument>
537                     </request>
538                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate</header>
539                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
540                  </endpoint>
541                  <endpoint>
542                     <meta>
543                        <rest>
544                           <method>GET</method>
545                           <simple>/schemas/public{slash:(/|)}</simple>
546                           <compress/>
547                           <Etag>MD5</Etag>
548                           <produces>application/json</produces>
549                        </rest>
550                     </meta>
551                     <grammar>
552                        <active>
553                           <identifier>active:org.schemacat.rest.schemas.public.json</identifier>
554                           <argument name="slash"/>
555                        </active>
556                     </grammar>
557                     <request>
558                        <identifier>active:JSONFromXML</identifier>
559                        <argument name="operand">
560                           <request>
561                              <identifier>active:sloot.dpml</identifier>
562                              <argument name="operator">res:/interface/publicSchemas.dpml</argument>
563                           </request>
564                        </argument>
565                     </request>
566                     <header name="mime">application/json</header>
567                     <header name="httpResponse:/header/Cache-Control">public, max-age=0, must-revalidate, proxy-revalidate</header>
568                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
569                  </endpoint>
570                  <endpoint>
571                     <meta>
572                        <rest>
573                           <method>GET</method>
574                           <simple>/schemas/public{slash:(/|)}</simple>
575                           <compress/>
576                           <Etag>MD5</Etag>
577                           <produces>application/xml</produces>
578                        </rest>
579                     </meta>
580                     <grammar>
581                        <active>
582                           <identifier>active:org.schemacat.rest.schemas.public.xml</identifier>
583                           <argument name="slash"/>
584                        </active>
585                     </grammar>
586                     <request>
587                        <identifier>active:sloot.dpml</identifier>
588                        <argument name="operator">res:/interface/publicSchemas.dpml</argument>
589                     </request>
590                     <header name="httpResponse:/header/Cache-Control">public, max-age=0, must-revalidate, proxy-revalidate</header>
591                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
592                  </endpoint>
593                  <endpoint>
594                     <meta>
595                        <rest>
596                           <method>GET</method>
597                           <simple>/schemas/public/pagedlist/page/{startPage:([1-9][0-9]*)}/pagesize/{pageSize:([1-9][0-9]*)}{slash:(/|)}</simple>
598                           <compress/>
599                           <Etag>MD5</Etag>
600                           <produces>application/json</produces>
601                        </rest>
602                     </meta>
603                     <grammar>
604                        <active>
605                           <identifier>active:org.schemacat.rest.schemas.public.paged.json</identifier>
606                           <argument name="startPage" min="1" max="1"/>
607                           <argument name="pageSize" min="1" max="1"/>
608                           <argument name="slash"/>
609                        </active>
610                     </grammar>
611                     <request>
612                        <identifier>active:JSONFromXML</identifier>
613                        <argument name="operand">
614                           <request>
615                              <identifier>active:sloot.dpml</identifier>
616                              <argument name="operator">res:/interface/pagedPublicSchemas.dpml</argument>
617                              <argument method="as-string" name="startPage">arg:startPage</argument>
618                              <argument method="as-string" name="pageSize">arg:pageSize</argument>
619                           </request>
620                        </argument>
621                     </request>
622                     <header name="mime">application/json</header>
623                     <header name="httpResponse:/header/Cache-Control">public, max-age=0, must-revalidate, proxy-revalidate</header>
624                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
625                  </endpoint>
626                  <endpoint>
627                     <meta>
628                        <rest>
629                           <method>GET</method>
630                           <simple>/schemas/public/pagedlist/page/{startPage:([1-9][0-9]*)}/pagesize/{pageSize:([1-9][0-9]*)}{slash:(/|)}</simple>
631                           <compress/>
632                           <Etag>MD5</Etag>
633                           <produces>application/xml</produces>
634                        </rest>
635                     </meta>
636                     <grammar>
637                        <active>
638                           <identifier>active:org.schemacat.rest.schemas.public.paged.xml</identifier>
639                           <argument name="startPage" min="1" max="1"/>
640                           <argument name="pageSize" min="1" max="1"/>
641                           <argument name="slash"/>
642                        </active>
643                     </grammar>
644                     <request>
645                        <identifier>active:sloot.dpml</identifier>
646                        <argument name="operator">res:/interface/pagedPublicSchemas.dpml</argument>
647                        <argument method="as-string" name="startPage">arg:startPage</argument>
648                        <argument method="as-string" name="pageSize">arg:pageSize</argument>
649                     </request>
650                     <header name="httpResponse:/header/Cache-Control">public, max-age=0, must-revalidate, proxy-revalidate</header>
651                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
652                  </endpoint>
653                  <endpoint>
654                     <meta>
655                        <rest>
656                           <method>GET</method>
657                           <simple>/schemas/{schemaID:([^/]+)}{slash:(/|)}</simple>
658                           <compress/>
659                           <Etag>MD5</Etag>
660                           <produces>application/json</produces>
661                        </rest>
662                     </meta>
663                     <grammar>
664                        <active>
665                           <identifier>active:org.schemacat.rest.schema.metadata.json</identifier>
666                           <argument name="schemaID" min="1" max="1"/>
667                           <argument name="slash"/>
668                        </active>
669                     </grammar>
670                     <request>
671                        <identifier>active:sloot.dpml</identifier>
672                        <argument name="operator">res:/interface/getSchemaMetadata.dpml</argument>
673                        <argument method="as-string" name="schemaID">arg:schemaID</argument>
674                        <argument name="json">
675                           <literal type="boolean">true</literal>
676                        </argument>
677                     </request>
678                  </endpoint>
679                  <endpoint>
680                     <meta>
681                        <rest>
682                           <method>GET</method>
683                           <simple>/schemas/{schemaID:([^/]+)}{slash:(/|)}</simple>
684                           <compress/>
685                           <Etag>MD5</Etag>
686                           <produces>application/xml</produces>
687                        </rest>
688                     </meta>
689                     <grammar>
690                        <active>
691                           <identifier>active:org.schemacat.rest.schema.metadata.xml</identifier>
692                           <argument name="schemaID" min="1" max="1"/>
693                           <argument name="slash"/>
694                        </active>
695                     </grammar>
696                     <request>
697                        <identifier>active:sloot.dpml</identifier>
698                        <argument name="operator">res:/interface/getSchemaMetadata.dpml</argument>
699                        <argument method="as-string" name="schemaID">arg:schemaID</argument>
700                        <argument name="json">
701                           <literal type="boolean">false</literal>
702                        </argument>
703                     </request>
704                  </endpoint>
705                  <endpoint>
706                     <meta>
707                        <rest>
708                           <method>GET</method>
709                           <simple>/schemas/{schemaID:([^/]+)}/files/{file-name}</simple>
710                           <compress/>
711                           <Etag>MD5</Etag>
712                        </rest>
713                     </meta>
714                     <grammar>
715                        <active>
716                           <identifier>active:org.schemacat.rest.schema.file</identifier>
717                           <argument name="schemaID"/>
718                           <argument name="file-name"/>
719                        </active>
720                     </grammar>
721                     <request>
722                        <identifier>active:sloot.dpml</identifier>
723                        <argument name="operator">res:/interface/schemaFile.dpml</argument>
724                        <argument method="as-string" name="schemaID">arg:schemaID</argument>
725                        <argument method="as-string" name="file-name">arg:file-name</argument>
726                        <argument name="download">
727                           <literal type="boolean">false</literal>
728                        </argument>
729                     </request>
730                  </endpoint>
731                  <endpoint>
732                     <meta>
733                        <rest>
734                           <method>GET</method>
735                           <simple>/schemas/{schemaID:([^/]+)}/download/files/{file-name}</simple>
736                           <compress/>
737                           <Etag>MD5</Etag>
738                        </rest>
739                     </meta>
740                     <grammar>
741                        <active>
742                           <identifier>active:org.schemacat.rest.schema.file.download</identifier>
743                           <argument name="schemaID"/>
744                           <argument name="file-name"/>
745                        </active>
746                     </grammar>
747                     <request>
748                        <identifier>active:sloot.dpml</identifier>
749                        <argument name="operator">res:/interface/schemaFile.dpml</argument>
750                        <argument method="as-string" name="schemaID">arg:schemaID</argument>
751                        <argument method="as-string" name="file-name">arg:file-name</argument>
752                        <argument name="download">
753                           <literal type="boolean">true</literal>
754                        </argument>
755                     </request>
756                  </endpoint>
757                  <endpoint>
758                     <meta>
759                        <rest>
760                           <method>GET</method>
761                           <simple>/licenses{slash:(/|)}</simple>
762                           <compress/>
763                           <Etag>MD5</Etag>
764                           <produces>application/json</produces>
765                        </rest>
766                     </meta>
767                     <grammar>
768                        <active>
769                           <identifier>active:org.schemacat.rest.user.licenses.xml</identifier>
770                           <argument name="slash"/>
771                        </active>
772                     </grammar>
773                     <request>
774                        <identifier>active:JSONFromXML</identifier>
775                        <argument name="operand">
776                           <request>
777                              <identifier>active:sloot.dpml</identifier>
778                              <argument name="operator">res:/interface/licenses.dpml</argument>
779                           </request>
780                        </argument>
781                     </request>
782                     <header name="httpResponse:/header/Cache-Control">max-age=0, must-revalidate</header>
783                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
784                  </endpoint>
785                  <endpoint>
786                     <meta>
787                        <rest>
788                           <method>GET</method>
789                           <simple>/licenses{slash:(/|)}</simple>
790                           <compress/>
791                           <Etag>MD5</Etag>
792                           <produces>application/xml</produces>
793                        </rest>
794                     </meta>
795                     <grammar>
796                        <active>
797                           <identifier>active:org.schemacat.rest.user.licenses.xml</identifier>
798                           <argument name="slash"/>
799                        </active>
800                     </grammar>
801                     <request>
802                        <identifier>active:sloot.dpml</identifier>
803                        <argument name="operator">res:/interface/licenses.dpml</argument>
804                     </request>
805                     <header name="httpResponse:/header/Cache-Control">max-age=0, must-revalidate</header>
806                     <header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">0</header>
807                  </endpoint>
808                  <endpoint>
809                     <!-- this falls through to the urn.org.isocat.schemacat.site module -->
810                     <meta>
811                        <rest>
812                           <method>GET</method>
813                           <simple>/site{file:(?i)(/index.html|/index.htm)}</simple>
814                           <compress/>
815                           <Etag>MD5</Etag>
816                        </rest>
817                     </meta>
818                     <grammar>
819                        <active>
820                           <identifier>active:org.schemacat.rest.index</identifier>
821                           <argument name="file"/>
822                        </active>
823                     </grammar>
824                     <request>
825                        <identifier>active:org.schemacat.site.index</identifier>
826                     </request>
827                  </endpoint>
828                  <endpoint>
829                     <!-- this falls through to the urn.org.isocat.schemacat.site module -->
830                     <meta>
831                        <rest>
832                           <method>GET</method>
833                           <simple>/site/completeuserdetails.html</simple>
834                           <compress/>
835                           <Etag>MD5</Etag>
836                        </rest>
837                     </meta>
838                     <grammar>
839                        <active>
840                           <identifier>active:org.schemacat.rest.completeuserdetails</identifier>
841                        </active>
842                     </grammar>
843                     <request>
844                        <identifier>active:org.schemacat.site.completeuserdetails</identifier>
845                     </request>
846                     <header name="httpResponse:/header/Cache-Control">private, max-age=0, must-revalidate, proxy-revalidate, no-cache, no-store</header>
847                  </endpoint>
848                  <endpoint>
849                     <!-- redirect matches for: /schemacat, /schemacat/, /schemacat/index.html, /schemacat/index.htm and /schemacat/site.
850                     Case insensitive-->
851                     <meta>
852                        <rest>
853                           <method>GET</method>
854                           <simple>{redirect:(?i)(|/|/index.html|/index.htm|/site|/site/)}</simple>
855                           <compress/>
856                           <Etag>MD5</Etag>
857                        </rest>
858                     </meta>
859                     <grammar>
860                        <active>
861                           <identifier>active:org.schemacat.rest.index.redirect</identifier>
862                           <argument name="redirect"/>
863                        </active>
864                     </grammar>
865                     <request>
866                        <identifier>active:redirectHTML</identifier>
867                        <argument name="url">/schemacat/site/index.html</argument>
868                     </request>
869                  </endpoint>
870           
871                 
872                  <!-- endpoint for NetKernel testing  purposes -->
873                  <endpoint>
874                     <meta>
875                        <rest>
876                           <method>GET</method>
877                           <simple>/site/NKtest/{testarg}</simple>
878                           <Etag>MD5</Etag>   
879                        </rest>
880                     </meta>
881                     <grammar>
882                        <active>
883                           <identifier>active:org.schemacat.test</identifier>
884                           <argument name="testarg" min="1" max="1"/>
885                        </active>
886                     </grammar>
887                     <request>
888                        <identifier>active:sloot.dpml</identifier>
889                        <argument name="operator">res:/interface/test.dpml</argument>
890                        <argument method="as-string" name="operand">arg:testarg</argument>
891                     </request>
892                     <!--<header name="HTTP_CACHE_EXPIRES_DELTA_SECONDS">86400</header>-->
893                  </endpoint>
894                 
895                 
896                 
897                 
898
899                  <endpoint>
900                     <!-- finds user info -->
901                     <id>findUser</id>
902                     <grammar>
903                        <active>
904                           <identifier>active:findUser</identifier>
905                           <argument name="request"/>
906                        </active>
907                     </grammar>
908                     <request>
909                        <identifier>active:sloot.dpml</identifier>
910                        <argument name="operator">res:/interface/findUser.dpml</argument>
911                     </request>
912                  </endpoint>
913                  <endpoint>
914                     <!-- finds the principal -->
915                     <id>findPrincipal</id>
916                     <grammar>
917                        <active>
918                           <identifier>active:findPrincipal</identifier>
919                        </active>
920                     </grammar>
921                     <request>
922                        <identifier>active:sloot.dpml</identifier>
923                        <argument name="operator">res:/interface/findPrincipal.dpml</argument>
924                     </request>
925                  </endpoint>
926                  <endpoint>
927                     <!-- true if requester (from scratchpad) is present in authorized IDs or has an authorized role-->
928                     <id>isAuthorized</id>
929                     <grammar>
930                        <active>
931                           <identifier>active:isAuthorized</identifier>
932                           <argument name="authorizedIDs" min="1" max="1"/>
933                           <argument name="authorizedRoles" min="1" max="1"/>
934                           <argument name="user" min="1" max="1"/>
935                        </active>
936                     </grammar>
937                     <request>
938                        <identifier>active:sloot.dpml</identifier>
939                        <argument name="operator">res:/interface/isAuthorized.dpml</argument>
940                        <argument name="authorizedIDs">arg:authorizedIDs</argument>
941                        <argument name="authorizedRoles">arg:authorizedRoles</argument>
942                        <argument name="user">arg:user</argument>
943                     </request>
944                  </endpoint>
945                  <endpoint>
946                     <!-- get the user IDs authorized to access a given (by schema-metadata) or specified (by schemaID) schema. -->
947                     <grammar>
948                        <active>
949                           <identifier>active:interface.rest.schema.access.authorizedIds</identifier>
950                           <argument name="schemaID" min="0" max="1"/>
951                           <argument name="schema-metadata" min="0" max="1"/>
952                        </active>
953                     </grammar>
954                     <request>
955                        <identifier>active:sloot.dpml</identifier>
956                        <argument name="operator">res:/interface/schemaAuthorizedIDs.dpml</argument>
957                        <argument name="schemaID">arg:schemaID</argument>
958                        <argument name="schema-metadata">arg:schema-metadata</argument>
959                     </request>
960                  </endpoint>
961                  <endpoint>
962                     <!-- gets the share status of a given (by schema-metadata) or specified (by schemaID) schema.
963                        This can be: 'private', 'public' or 'sharedURL' -->
964                     <grammar>
965                        <active>
966                           <identifier>active:interface.rest.schema.access.getstatus</identifier>
967                           <argument name="schemaID" min="0" max="1"/>
968                           <argument name="schema-metadata" min="0" max="1"/>
969                        </active>
970                     </grammar>
971                     <request>
972                        <identifier>active:sloot.dpml</identifier>
973                        <argument name="operator">res:/interface/schemaAccessStatus.dpml</argument>
974                        <argument name="schemaID">arg:schemaID</argument>
975                        <argument name="schema-metadata">arg:schema-metadata</argument>
976                     </request>
977                  </endpoint>
978                  <endpoint>
979                     <!-- verifies if the user saved in the scratch pad has its profile complete.
980                     i.e. mandatory fields are all filled in. -->
981                     <id>verifyProfileCompletion</id>
982                     <grammar>
983                        <active>
984                           <identifier>active:verifyProfileCompletion</identifier>
985                           <argument name="user" min="1" max="1"/>
986                        </active>
987                     </grammar>
988                     <request>
989                        <identifier>active:sloot.dpml</identifier>
990                        <argument name="operator">res:/interface/verifyProfileCompletion.dpml</argument>
991                        <argument name="user" method="data-uri">arg:user</argument>
992                     </request>
993                  </endpoint>
994                  <endpoint>
995                     <!-- 403 forbidden response to return when request try to access unauthorized resources. -->
996                     <grammar>
997                        <active>
998                           <identifier>active:interface.rest.HTTPresponse.forbidden</identifier>
999                        </active>
1000                     </grammar>
1001                     <request>
1002                        <identifier>active:groovy</identifier>
1003                        <argument name="operator">
1004                           <!-- TODO: check if this is the proper way to generata a forbidden response -->
1005                           <literal type="string">
1006                              context.createResponseFrom("&lt;html lang='en' xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;body&gt;&lt;img src='/schemacat/site/images/HTTPstatus/403-Forbidden.jpg'/&gt;&lt;/body&gt;&lt;/html&gt;").setMimeType("text/html");
1007                              context.sink("httpResponse:/code", 403);
1008                           </literal>
1009                        </argument>
1010                     </request>
1011                  </endpoint>
1012               </config>
1013               <space>
1014                  <fileset>
1015                     <regex>res:/etc/system/LogConfig.xml</regex>
1016                  </fileset>
1017                  <import>
1018                     <uri>urn:org:netkernel:lang:groovy</uri>
1019                  </import>
1020                  <import>
1021                     <uri>urn:org:netkernel:lang:dpml</uri>
1022                  </import>
1023                  <import>
1024                     <uri>urn:org:netkernel:json:core</uri>
1025                  </import>
1026                  <import>
1027                     <uri>urn:org:isocat:schemacat:access:data</uri>
1028                  </import>
1029                  <import>
1030                     <uri>urn:org:isocat:schemacat:site</uri>
1031                  </import>
1032                  <import>
1033                     <uri>urn:org:isocat:sloot</uri>
1034                  </import>
1035                  <import>
1036                     <uri>urn:org:netkernel:client:http</uri>
1037                  </import>
1038                  <import>
1039                     <uri>urn:org:netkernel:xml:saxon</uri>
1040                  </import>
1041                  <import>
1042                     <uri>urn:org:netkernel:mod:security</uri>
1043                  </import>
1044               </space>
1045            </mapper>
1046         </space>
1047      </overlay>
1048      <import>
1049         <private/>
1050         <uri>urn:org:netkernel:tpt:http</uri>
1051      </import>
1052   </rootspace>
1053   <rootspace name="SCHEMAcat - interface - REST - Documentation Space" public="true"
1054      uri="urn:org:isocat:schemacat:interface:rest:doc">
1055      <fileset>
1056         <regex>res:/etc/system/(Books|Docs).xml</regex>
1057      </fileset>
1058      <fileset>
1059         <regex>res:/doc/.*</regex>
1060      </fileset>
1061   </rootspace>
1062   <rootspace name="SCHEMAcat - interface - REST - Unit Test Space" public="true"
1063      uri="urn:org:isocat:schemacat:interface:rest:test">
1064      <fileset>
1065         <regex>res:/etc/system/Tests.xml</regex>
1066      </fileset>
1067      <fileset>
1068         <regex>res:/test/.*</regex>
1069      </fileset>
1070      <endpoint>
1071         <!-- stop any configuration from module under test from polluting address space -->
1072         <prototype>Limiter</prototype>
1073         <grammar>res:/etc/<regex type="anything"/>
1074         </grammar>
1075      </endpoint>
1076      <import>
1077         <!-- import the main space which we are testing -->
1078         <uri>urn:org:isocat:schemacat:interface:rest</uri>
1079      </import>
1080      <import>
1081         <uri>urn:org:netkernel:client:http</uri>
1082      </import>
1083      <import>
1084         <uri>urn:org:netkernel:ext:layer1</uri>
1085      </import>
1086   </rootspace>
1087</module>
Note: See TracBrowser for help on using the repository browser.