59d4331b222311269fc2d404549075f5d5050937
[aaf/authz.git] / auth / sample / public / aaf_2_0.xsd
1 <!-- Used by AAF (ATT inc 2013) -->
2 <xs:schema 
3         xmlns:xs="http://www.w3.org/2001/XMLSchema" 
4         xmlns:aaf="urn:aaf:v2_0" 
5         targetNamespace="urn:aaf:v2_0" 
6         elementFormDefault="qualified">
7         
8 <!-- 
9         June 2, 2017, adding Roles, Perms, etc to NSRequest for Onboarding purposes.
10         
11         Note: jan 22, 2015.  Deprecating the "force" element in the "Request" Structure.  Do that
12         with Query Params. 
13         
14         Eliminate in 3.0 
15  -->
16 <!--
17         Errors
18         Note: This Error Structure has been made to conform to the AT&T TSS Policies
19  -->
20         <xs:element name="error">
21                 <xs:complexType>
22                         <xs:sequence>
23                                 <!--
24                                 Unique message identifier of the format ‘ABCnnnn’ where ‘ABC’ is
25                                         either ‘SVC’ for Service Exceptions or ‘POL’ for Policy Exception.
26                                         Exception numbers may be in the range of 0001 to 9999 where :
27                                         * 0001 to 0199 are reserved for common exception messages
28                                         * 0200 to 0999 are reserved for Parlay Web Services specification use
29                                         * 1000-9999 are available for exceptions 
30                                  -->
31                                 <xs:element name="messageId" type="xs:string" minOccurs="1" maxOccurs="1"/>
32                                 
33                                 <!-- 
34                                 Message text, with replacement
35                                         variables marked with %n, where n is
36                                         an index into the list of <variables>
37                                         elements, starting at 1
38                                  -->
39                                 <xs:element name="text" type="xs:string" minOccurs="1" maxOccurs="1"/>
40                                 
41                                 <!-- 
42                                 List of zero or more strings that
43                                         represent the contents of the variables
44                                         used by the message text. -->
45                                 <xs:element name="variables" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
46                         </xs:sequence>
47                 </xs:complexType>
48         </xs:element>
49
50 <!-- 
51         Requests
52  -->
53         <xs:complexType name="Request">
54                 <xs:sequence>
55                         <xs:element name="start" type="xs:dateTime" minOccurs="1" maxOccurs="1" />
56                         <xs:element name="end" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
57                         <!-- Deprecated.  Use Query Command 
58                         <xs:element name="force" type="xs:string" minOccurs="1" maxOccurs="1" default="false"/>
59                         -->
60                 </xs:sequence>
61         </xs:complexType>
62
63 <!--
64         Keys
65  -->
66     <xs:element name="keys">
67         <xs:complexType>
68                 <xs:sequence>
69                         <xs:element name="key" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
70                 </xs:sequence>
71         </xs:complexType>
72     </xs:element>
73  
74  
75 <!-- 
76         Permissions 
77 -->     
78         <xs:complexType name = "pkey">
79                 <xs:sequence>
80                         <xs:element name="type" type="xs:string"/>
81                         <xs:element name="instance" type="xs:string"/>
82                         <xs:element name="action" type="xs:string"/>
83                 </xs:sequence>
84         </xs:complexType>
85
86         <xs:element name="permKey">
87                 <xs:complexType >
88                         <xs:complexContent>
89                                 <xs:extension base="aaf:pkey" />
90                         </xs:complexContent>
91                 </xs:complexType>
92         </xs:element>
93         
94         <xs:element name="perm">
95                 <xs:complexType >
96                         <xs:complexContent>
97                                 <xs:extension base="aaf:pkey">
98                                         <xs:sequence>                                   
99                                                 <xs:element name="roles" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
100                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
101                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
102                                                 <!-- This data not filled in unless Requested  -->
103                                                 <xs:element name="ns" type="xs:string" minOccurs="0" maxOccurs="1"/>
104                                         </xs:sequence>
105                                 </xs:extension>
106                         </xs:complexContent>
107                 </xs:complexType>
108         </xs:element>
109         
110         <xs:element name="perms">
111                 <xs:complexType>
112                         <xs:sequence>
113                                 <xs:element ref="aaf:perm" minOccurs="0" maxOccurs="unbounded"/>
114                         </xs:sequence>
115                 </xs:complexType>
116         </xs:element>
117
118         <xs:element name="permRequest">
119                 <xs:complexType>
120                         <xs:complexContent>
121                                 <xs:extension base="aaf:Request">
122                                         <xs:sequence>
123                                                 <xs:element name="type" type="xs:string"/>
124                                                 <xs:element name="instance" type="xs:string"/>
125                                                 <xs:element name="action" type="xs:string"/>
126                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
127                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
128                                         </xs:sequence>
129                                 </xs:extension>
130                         </xs:complexContent>
131                 </xs:complexType>
132         </xs:element>
133
134
135 <!-- 
136         Roles 
137 -->     
138         <xs:complexType name="rkey">
139                 <xs:sequence>
140                         <xs:element name="name" type="xs:string"/>
141                 </xs:sequence>
142         </xs:complexType>
143         
144         <xs:element name="roleKey">
145                 <xs:complexType >
146                         <xs:complexContent>
147                                 <xs:extension base="aaf:rkey" />
148                         </xs:complexContent>
149                 </xs:complexType>
150         </xs:element>
151
152         <xs:element name="role">
153                 <xs:complexType>
154                         <xs:complexContent>
155                                 <xs:extension base="aaf:rkey">
156                                         <xs:sequence>
157                                                 <xs:element name="perms" type="aaf:pkey" minOccurs="0" maxOccurs="unbounded"/>
158                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
159                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
160                                                 <!-- This data not filled in unless Requested  -->
161                                                 <xs:element name="ns" type="xs:string" minOccurs="0" maxOccurs="1"/>
162                                         </xs:sequence>
163                                 </xs:extension>
164                         </xs:complexContent>
165                 </xs:complexType>
166         </xs:element>
167         
168         <xs:element name="roles">
169                 <xs:complexType>
170                         <xs:sequence>
171                                 <xs:element ref="aaf:role" minOccurs="0" maxOccurs="unbounded"/>
172                         </xs:sequence>
173                 </xs:complexType>
174         </xs:element>
175
176         <xs:element name="roleRequest">
177                 <xs:complexType>
178                         <xs:complexContent>
179                                 <xs:extension base="aaf:Request">
180                                         <xs:sequence>
181                                                 <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
182                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
183                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
184                                         </xs:sequence>
185                                 </xs:extension>
186                         </xs:complexContent>
187                 </xs:complexType>
188         </xs:element>
189
190         <!-- Added userRole return types jg1555 9/16/2015 -->
191         <xs:element name="userRole">
192                 <xs:complexType>
193                         <xs:sequence>
194                                 <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
195                                 <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
196                                 <xs:element name="expires" type="xs:date" minOccurs="1" maxOccurs="1" />
197                         </xs:sequence>
198                 </xs:complexType>
199         </xs:element>
200         
201         <!-- Added userRoles return types jg1555 9/16/2015 -->
202         <xs:element name="userRoles">
203                 <xs:complexType>
204                         <xs:sequence>
205                                 <xs:element ref="aaf:userRole" minOccurs="0" maxOccurs="unbounded"/>
206                         </xs:sequence>
207                 </xs:complexType>
208         </xs:element>
209
210         <xs:element name="userRoleRequest">
211                 <xs:complexType>
212                         <xs:complexContent>
213                                 <xs:extension base="aaf:Request">
214                                         <xs:sequence>
215                                                 <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
216                                                 <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
217                                         </xs:sequence>
218                                 </xs:extension>
219                         </xs:complexContent>
220                 </xs:complexType>
221         </xs:element>
222         
223         <xs:element name="rolePermRequest">
224                 <xs:complexType>
225                         <xs:complexContent>
226                                 <xs:extension base="aaf:Request">
227                                         <xs:sequence>
228                                                 <xs:element name="perm" type="aaf:pkey" minOccurs="1" maxOccurs="1"/>
229                                                 <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
230                                         </xs:sequence>
231                                 </xs:extension>
232                         </xs:complexContent>
233                 </xs:complexType>
234         </xs:element>
235         
236         <xs:element name="nsRequest">
237                 <xs:complexType>
238                         <xs:complexContent>
239                                 <xs:extension base="aaf:Request">
240                                         <xs:sequence>
241                                                 <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
242                                                 <xs:element name="admin" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
243                                                 <xs:element name="responsible" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
244                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
245                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
246                                                 <!-- Note: dec 11, 2015.  Request-able NS Type JG -->
247                                                 <xs:element name="type" type="xs:string" minOccurs="0" maxOccurs="1"/>
248         
249                                                 <!-- "scope" is deprecated and unused as of AAF 2.0.11.  It will be removed in future versions
250                                                         <xs:element name="scope" type="xs:int" minOccurs="0" maxOccurs="1"/>
251                                                         
252                                                                                                         
253                                                 <xs:element ref="aaf:roleRequest" minOccurs="0" maxOccurs="unbounded"/>
254                                                 <xs:element ref="aaf:permRequest" minOccurs="0" maxOccurs="unbounded"/>
255                                                 <xs:element name="aaf_id" type="xs:string" minOccurs="0" maxOccurs="1"/>
256                                                 <xs:element ref="aaf:userRoleRequest" minOccurs="0" maxOccurs="unbounded"/>
257                                                 <xs:element name = "attrib" minOccurs="0" maxOccurs="unbounded">
258                                                                 <xs:complexType>
259                                                                         <xs:sequence>
260                                                                                 <xs:element name = "key" type="xs:string" minOccurs="1" maxOccurs="1"/>
261                                                                                 <xs:element name = "value" type="xs:string" minOccurs="0" maxOccurs="1"/>
262                                                                         </xs:sequence>
263                                                                 </xs:complexType>
264                                                         </xs:element>
265
266                                                         
267                                                 -->
268                                         </xs:sequence>
269                                 </xs:extension>
270                         </xs:complexContent>
271                 </xs:complexType>
272         </xs:element>
273
274         <xs:element name="nsAttribRequest">
275                 <xs:complexType>
276                         <xs:complexContent>
277                                 <xs:extension base="aaf:Request">
278                                         <xs:sequence>
279                                                 <xs:element name="ns" type="xs:string" minOccurs="1" maxOccurs="1"/>
280                                                 <xs:element name = "attrib" minOccurs="0" maxOccurs="unbounded">
281                                                         <xs:complexType>
282                                                                 <xs:sequence>
283                                                                         <xs:element name = "key" type="xs:string" minOccurs="1" maxOccurs="1"/>
284                                                                         <xs:element name = "value" type="xs:string" minOccurs="0" maxOccurs="1"/>
285                                                                 </xs:sequence>
286                                                         </xs:complexType>
287                                                 </xs:element>
288                                         </xs:sequence>
289                                 </xs:extension>
290                         </xs:complexContent>
291                 </xs:complexType>
292         </xs:element>
293
294         <xs:element name = "nss">
295                 <xs:complexType>
296                         <xs:sequence>
297                                 <xs:element name = "ns" minOccurs="0" maxOccurs="unbounded">
298                                         <xs:complexType>
299                                                 <xs:sequence>
300                                                         <xs:element name = "name" type = "xs:string" minOccurs="1" maxOccurs="1"/>
301                                                         <xs:element name = "responsible" type = "xs:string" minOccurs="0" maxOccurs="unbounded"/>
302                                                         <xs:element name = "admin" type = "xs:string" minOccurs="0" maxOccurs="unbounded"/>
303                                                         <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
304                                                         <xs:element name = "description" type = "xs:string" minOccurs="0" maxOccurs="1"/>
305                                                         <!-- Note: Dec 16, 2015.  Added description field. Verify backward compatibility. JG -->
306                                                         <xs:element name = "attrib" minOccurs="0" maxOccurs="unbounded">
307                                                                 <xs:complexType>
308                                                                         <xs:sequence>
309                                                                                 <xs:element name = "key" type="xs:string" minOccurs="1" maxOccurs="1"/>
310                                                                                 <xs:element name = "value" type="xs:string" minOccurs="0" maxOccurs="1"/>
311                                                                         </xs:sequence>
312                                                                 </xs:complexType>
313                                                         </xs:element>
314                                                 </xs:sequence>
315                                         </xs:complexType>
316                                 </xs:element>
317                         </xs:sequence>
318                 </xs:complexType>
319         </xs:element>
320
321 <!-- 
322         Users 
323 -->     
324         <xs:element name="users">
325                 <xs:complexType>
326                         <xs:sequence>
327                                 <xs:element name="user" minOccurs="0" maxOccurs="unbounded">
328                                         <xs:complexType>
329                                                 <xs:sequence>
330                                                 <xs:element name="id" type="xs:string"  minOccurs="1" maxOccurs="1" />
331                                                 <!-- Changed type to dateTime, because of importance of Certs -->
332                                                 <xs:element name="expires" type="xs:dateTime" minOccurs="1" maxOccurs="1" />
333                                                 <!-- need to differentiate User Cred Types, jg1555 5/20/2015
334                                                          This Return Object is shared by multiple functions: 
335                                                                 Type is not returned for "UserRole", but only "Cred" 
336                                                 -->
337                                                 <xs:element name="type" type="xs:int" minOccurs="0" maxOccurs="1" />
338                                                 </xs:sequence>
339                                         </xs:complexType>
340                                 </xs:element>
341                         </xs:sequence>
342                 </xs:complexType>
343         </xs:element>
344
345 <!-- 
346         Certs
347         Added jg1555 5/20/2015 to support identifying Certificate based Services
348  -->
349         <xs:element name="certs">
350                 <xs:complexType>
351                         <xs:sequence>
352                                 <xs:element name="cert" minOccurs="0" maxOccurs="unbounded">
353                                         <xs:complexType>
354                                                 <xs:sequence>
355                                                         <xs:element name="id" type="xs:string" minOccurs="1" maxOccurs="1" />
356                                                         <xs:element name="x500" type="xs:string" minOccurs="1" maxOccurs="1" />
357                                                         <xs:element name="expires" type="xs:dateTime" minOccurs="1" maxOccurs="1" />
358                                                         <xs:element name="fingerprint" type="xs:hexBinary" minOccurs="1" maxOccurs="1" />
359                                                 </xs:sequence>
360                                         </xs:complexType>
361                                 </xs:element>
362                         </xs:sequence>
363                 </xs:complexType>
364         </xs:element>
365
366 <!-- 
367         Credentials 
368 -->     
369         <xs:element name="credRequest">
370                 <xs:complexType>
371                         <xs:complexContent>
372                                 <xs:extension base="aaf:Request">
373                                         <xs:sequence>
374                                                 <xs:element name="id" type="xs:string"/>
375                                                 <xs:element name="type" type="xs:int" minOccurs="0" maxOccurs="1"/>
376                                                 <xs:choice >
377                                                         <xs:element name="password" type="xs:string" />
378                                                         <xs:element name="entry" type="xs:string" />
379                                                 </xs:choice>
380                                         </xs:sequence>
381                                 </xs:extension>
382                         </xs:complexContent>
383                 </xs:complexType>
384         </xs:element>
385         
386 <!--
387         Multi Request 
388  -->
389  
390     <xs:element name="multiRequest"> 
391                 <xs:complexType>
392                         <xs:complexContent>
393                                 <xs:extension base="aaf:Request">
394                                         <xs:sequence>
395                                                 <xs:element ref="aaf:nsRequest" minOccurs="0" maxOccurs="1"/>
396                                                 <xs:element ref="aaf:nsAttribRequest" minOccurs="0" maxOccurs="unbounded"/>
397                                                 <xs:element ref="aaf:roleRequest" minOccurs="0" maxOccurs="unbounded"/>
398                                                 <xs:element ref="aaf:permRequest" minOccurs="0" maxOccurs="unbounded"/>
399                                                 <xs:element ref="aaf:credRequest" minOccurs="0" maxOccurs="unbounded"/>
400                                                 <xs:element ref="aaf:userRoleRequest" minOccurs="0" maxOccurs="unbounded"/>
401                                                 <xs:element ref="aaf:rolePermRequest" minOccurs="0" maxOccurs="unbounded"/>
402                                         </xs:sequence>
403                                 </xs:extension>
404                         </xs:complexContent>
405                 </xs:complexType>
406     </xs:element>
407         
408 <!--
409         History 
410  -->
411         <xs:element name="history">
412                 <xs:complexType>
413                         <xs:sequence>
414                                 <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
415                                         <xs:complexType>
416                                                 <xs:sequence>
417                                                         <xs:element name="YYYYMM" type="xs:string" minOccurs="1" maxOccurs="1"/>
418                                                         <xs:element name="timestamp" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
419                                                         <xs:element name="subject" type="xs:string" minOccurs="1" maxOccurs="1"/>
420                                                         <xs:element name="target" type = "xs:string" minOccurs="1" maxOccurs="1"/>
421                                                         <xs:element name="action" type="xs:string" minOccurs="1" maxOccurs="1"/>
422                                                         <xs:element name="memo" type="xs:string" minOccurs="1" maxOccurs="1"/>
423                                                         <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
424                                                 </xs:sequence>
425                                         </xs:complexType>
426                                 </xs:element>
427                         </xs:sequence>
428                  </xs:complexType>
429         </xs:element>
430  
431 <!-- 
432         Approvals
433  -->
434         <xs:complexType name="approval">
435            <xs:sequence>
436                    <!-- Note, id is set by system -->
437                    <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="1"/>
438                    <xs:element name="ticket" type="xs:string"/>
439                <xs:element name="user" type="xs:string"/>
440                <xs:element name="approver" type="xs:string"/>
441                <xs:element name="type" type="xs:string"/>
442                <xs:element name="memo" type="xs:string"/>
443                <xs:element name="updated" type="xs:dateTime"/>
444                <xs:element name="status">
445                           <xs:simpleType>
446                             <xs:restriction base="xs:string">
447                               <xs:enumeration value="approve"/>
448                               <xs:enumeration value="reject"/>
449                               <xs:enumeration value="pending"/>
450                             </xs:restriction>
451                           </xs:simpleType>
452                    </xs:element>        
453                    <xs:element name="operation">
454                           <xs:simpleType>
455                             <xs:restriction base="xs:string">
456                               <xs:enumeration value="C"/>
457                               <xs:enumeration value="U"/>
458                               <xs:enumeration value="D"/>
459                               <xs:enumeration value="G"/>
460                               <xs:enumeration value="UG"/>
461                             </xs:restriction>
462                           </xs:simpleType>
463                    </xs:element>        
464            </xs:sequence>
465         </xs:complexType>
466         <xs:element name="approvals">
467                 <xs:complexType>
468                         <xs:sequence>
469                                 <xs:element name="approvals" type="aaf:approval" minOccurs="1" maxOccurs="unbounded"/>
470                         </xs:sequence>
471                 </xs:complexType>
472         </xs:element>
473         
474 <!-- 
475         Delegates 
476 -->     
477         <xs:complexType name="delg">
478            <xs:sequence>
479                <xs:element name="user" type="xs:string"/>
480                <xs:element name="delegate" type="xs:string"/>
481                <xs:element name="expires" type="xs:date"/>
482            </xs:sequence>
483         </xs:complexType>
484         
485         <xs:element name="delgRequest">
486                 <xs:complexType>
487                         <xs:complexContent>
488                                 <xs:extension base="aaf:Request">
489                                         <xs:sequence>
490                                        <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
491                                        <xs:element name="delegate" type="xs:string" minOccurs="1" maxOccurs="1"/>
492                                         </xs:sequence>
493                                 </xs:extension>
494                         </xs:complexContent>
495                 </xs:complexType>
496         </xs:element>
497
498         <xs:element name="delgs">
499                 <xs:complexType>
500                         <xs:sequence>
501                                 <xs:element name="delgs" type="aaf:delg" minOccurs="0" maxOccurs="unbounded"/>
502                         </xs:sequence>
503                 </xs:complexType>
504         </xs:element>
505         
506         <!-- jg 3/11/2015 New for 2.0.8 -->
507         <xs:element name="api">
508                 <xs:complexType>
509                         <xs:sequence>
510                                 <xs:element name="route" minOccurs="0" maxOccurs="unbounded">
511                                         <xs:complexType>
512                                                 <xs:sequence>
513                                                         <xs:element name="meth" type="xs:string" minOccurs="1" maxOccurs="1"/>
514                                                         <xs:element name="path" type="xs:string" minOccurs="1" maxOccurs="1"/>
515                                                         <xs:element name="param" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
516                                                         <xs:element name="desc" type="xs:string" minOccurs="1" maxOccurs="1"/>
517                                                         <xs:element name="comments" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
518                                                         <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
519                                                         <xs:element name="expected" type="xs:int" minOccurs="1" maxOccurs="1"/>
520                                                         <xs:element name="explicitErr" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
521                                                 </xs:sequence>  
522                                         </xs:complexType>
523                                 </xs:element>
524                         </xs:sequence>
525                 </xs:complexType>
526         </xs:element>
527 </xs:schema>