AT&T 2.0.19 Code drop, stage 4
[aaf/authz.git] / authz-client / src / main / xsd / 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         Note: jan 22, 2015.  Deprecating the "force" element in the "Request" Structure.  Do that
10         with Query Params. 
11         
12         Eliminate in 3.0 
13  -->
14 <!--
15         Errors
16         Note: This Error Structure has been made to conform to the AT&T TSS Policies
17         
18          
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:date" 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                                         </xs:sequence>
103                                 </xs:extension>
104                         </xs:complexContent>
105                 </xs:complexType>
106         </xs:element>
107         
108         <xs:element name="perms">
109                 <xs:complexType>
110                         <xs:sequence>
111                                 <xs:element ref="aaf:perm" minOccurs="0" maxOccurs="unbounded"/>
112                         </xs:sequence>
113                 </xs:complexType>
114         </xs:element>
115
116         <xs:element name="permRequest">
117                 <xs:complexType>
118                         <xs:complexContent>
119                                 <xs:extension base="aaf:Request">
120                                         <xs:sequence>
121                                                 <xs:element name="type" type="xs:string"/>
122                                                 <xs:element name="instance" type="xs:string"/>
123                                                 <xs:element name="action" type="xs:string"/>
124                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
125                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
126                                         </xs:sequence>
127                                 </xs:extension>
128                         </xs:complexContent>
129                 </xs:complexType>
130         </xs:element>
131
132
133 <!-- 
134         Roles 
135 -->     
136         <xs:complexType name="rkey">
137                 <xs:sequence>
138                         <xs:element name="name" type="xs:string"/>
139                 </xs:sequence>
140         </xs:complexType>
141         
142         <xs:element name="roleKey">
143                 <xs:complexType >
144                         <xs:complexContent>
145                                 <xs:extension base="aaf:rkey" />
146                         </xs:complexContent>
147                 </xs:complexType>
148         </xs:element>
149
150         <xs:element name="role">
151                 <xs:complexType>
152                         <xs:complexContent>
153                                 <xs:extension base="aaf:rkey">
154                                         <xs:sequence>
155                                                 <xs:element name="perms" type="aaf:pkey" minOccurs="0" maxOccurs="unbounded"/>
156                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
157                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
158                                         </xs:sequence>
159                                 </xs:extension>
160                         </xs:complexContent>
161                 </xs:complexType>
162         </xs:element>
163         
164         <xs:element name="roles">
165                 <xs:complexType>
166                         <xs:sequence>
167                                 <xs:element ref="aaf:role" minOccurs="0" maxOccurs="unbounded"/>
168                         </xs:sequence>
169                 </xs:complexType>
170         </xs:element>
171
172         <xs:element name="roleRequest">
173                 <xs:complexType>
174                         <xs:complexContent>
175                                 <xs:extension base="aaf:Request">
176                                         <xs:sequence>
177                                                 <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
178                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
179                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
180                                         </xs:sequence>
181                                 </xs:extension>
182                         </xs:complexContent>
183                 </xs:complexType>
184         </xs:element>
185
186         <!-- Added userRole return types 9/16/2015 -->
187         <xs:element name="userRole">
188                 <xs:complexType>
189                         <xs:sequence>
190                                 <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
191                                 <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
192                                 <xs:element name="expires" type="xs:date" minOccurs="1" maxOccurs="1" />
193                         </xs:sequence>
194                 </xs:complexType>
195         </xs:element>
196         
197         <!-- Added userRoles return types 9/16/2015 -->
198         <xs:element name="userRoles">
199                 <xs:complexType>
200                         <xs:sequence>
201                                 <xs:element ref="aaf:userRole" minOccurs="0" maxOccurs="unbounded"/>
202                         </xs:sequence>
203                 </xs:complexType>
204         </xs:element>
205
206         <xs:element name="userRoleRequest">
207                 <xs:complexType>
208                         <xs:complexContent>
209                                 <xs:extension base="aaf:Request">
210                                         <xs:sequence>
211                                                 <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
212                                                 <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
213                                         </xs:sequence>
214                                 </xs:extension>
215                         </xs:complexContent>
216                 </xs:complexType>
217         </xs:element>
218         
219         <xs:element name="rolePermRequest">
220                 <xs:complexType>
221                         <xs:complexContent>
222                                 <xs:extension base="aaf:Request">
223                                         <xs:sequence>
224                                                 <xs:element name="perm" type="aaf:pkey" minOccurs="1" maxOccurs="1"/>
225                                                 <xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1"/>
226                                         </xs:sequence>
227                                 </xs:extension>
228                         </xs:complexContent>
229                 </xs:complexType>
230         </xs:element>
231         
232
233         <xs:element name="nsRequest">
234                 <xs:complexType>
235                         <xs:complexContent>
236                                 <xs:extension base="aaf:Request">
237                                         <xs:sequence>
238                                                 <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
239                                                 <xs:element name="admin" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
240                                                 <xs:element name="responsible" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
241                                                 <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
242                                                 <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
243                                                 <!-- Note: dec 11, 2015.  Request-able NS Type JG -->
244                                                 <xs:element name="type" type="xs:string" minOccurs="0" maxOccurs="1"/>
245
246                                                 <!-- "scope" is deprecated and unused as of AAF 2.0.11.  It will be removed in future versions
247                                                         -->
248                                                 <xs:element name="scope" type="xs:int" minOccurs="0" maxOccurs="1"/>
249
250                                         </xs:sequence>
251                                 </xs:extension>
252                         </xs:complexContent>
253                 </xs:complexType>
254         </xs:element>
255         
256         <xs:element name = "nss">
257                 <xs:complexType>
258                         <xs:sequence>
259                                 <xs:element name = "ns" minOccurs="0" maxOccurs="unbounded">
260                                         <xs:complexType>
261                                                 <xs:sequence>
262                                                         <xs:element name = "name" type = "xs:string" minOccurs="1" maxOccurs="1"/>
263                                                         <xs:element name = "responsible" type = "xs:string" minOccurs="0" maxOccurs="unbounded"/>
264                                                         <xs:element name = "admin" type = "xs:string" minOccurs="0" maxOccurs="unbounded"/>
265                                                         <!-- Note: feb 23, 2015.  Added description field. Verify backward compatibility. JR -->
266                                                         <xs:element name = "description" type = "xs:string" minOccurs="0" maxOccurs="1"/>
267                                                         <!-- Note: Dec 16, 2015.  Added description field. Verify backward compatibility. JG -->
268                                                         <xs:element name = "attrib" minOccurs="0" maxOccurs="unbounded">
269                                                                 <xs:complexType>
270                                                                         <xs:sequence>
271                                                                                 <xs:element name = "key" type="xs:string" minOccurs="1" maxOccurs="1"/>
272                                                                                 <xs:element name = "value" type="xs:string" minOccurs="0" maxOccurs="1"/>
273                                                                         </xs:sequence>
274                                                                 </xs:complexType>
275                                                         </xs:element>
276                                                 </xs:sequence>
277                                         </xs:complexType>
278                                 </xs:element>
279                         </xs:sequence>
280                 </xs:complexType>
281         </xs:element>
282
283 <!-- 
284         Users 
285 -->     
286         <xs:element name="users">
287                 <xs:complexType>
288                         <xs:sequence>
289                                 <xs:element name="user" minOccurs="0" maxOccurs="unbounded">
290                                         <xs:complexType>
291                                                 <xs:sequence>
292                                                 <xs:element name="id" type="xs:string"  minOccurs="1" maxOccurs="1" />
293                                                 <!-- Changed type to dateTime, because of importance of Certs -->
294                                                 <xs:element name="expires" type="xs:dateTime" minOccurs="1" maxOccurs="1" />
295                                                 <!-- need to differentiate User Cred Types, 5/20/2015
296                                                          This Return Object is shared by multiple functions: 
297                                                                 Type is not returned for "UserRole", but only "Cred" 
298                                                 -->
299                                                 <xs:element name="type" type="xs:int" minOccurs="0" maxOccurs="1" />
300                                                 </xs:sequence>
301                                         </xs:complexType>
302                                 </xs:element>
303                         </xs:sequence>
304                 </xs:complexType>
305         </xs:element>
306
307 <!-- 
308         Certs
309         Added 5/20/2015 to support identifying Certificate based Services
310  -->
311         <xs:element name="certs">
312                 <xs:complexType>
313                         <xs:sequence>
314                                 <xs:element name="cert" minOccurs="0" maxOccurs="unbounded">
315                                         <xs:complexType>
316                                                 <xs:sequence>
317                                                         <xs:element name="id" type="xs:string" minOccurs="1" maxOccurs="1" />
318                                                         <xs:element name="x500" type="xs:string" minOccurs="1" maxOccurs="1" />
319                                                         <xs:element name="expires" type="xs:dateTime" minOccurs="1" maxOccurs="1" />
320                                                         <xs:element name="fingerprint" type="xs:hexBinary" minOccurs="1" maxOccurs="1" />
321                                                 </xs:sequence>
322                                         </xs:complexType>
323                                 </xs:element>
324                         </xs:sequence>
325                 </xs:complexType>
326         </xs:element>
327
328 <!-- 
329         Credentials 
330 -->     
331         <xs:element name="credRequest">
332                 <xs:complexType>
333                         <xs:complexContent>
334                                 <xs:extension base="aaf:Request">
335                                         <xs:sequence>
336                                                 <xs:element name="id" type="xs:string"/>
337                                                 <xs:element name="type" type="xs:int" minOccurs="0" maxOccurs="1"/>
338                                                 <xs:choice >
339                                                         <xs:element name="password" type="xs:string" />
340                                                         <xs:element name="entry" type="xs:string" />
341                                                 </xs:choice>
342                                         </xs:sequence>
343                                 </xs:extension>
344                         </xs:complexContent>
345                 </xs:complexType>
346         </xs:element>
347         
348 <!--
349         History 
350  -->
351         <xs:element name="history">
352                 <xs:complexType>
353                         <xs:sequence>
354                                 <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
355                                         <xs:complexType>
356                                                 <xs:sequence>
357                                                         <xs:element name="YYYYMM" type="xs:string" minOccurs="1" maxOccurs="1"/>
358                                                         <xs:element name="timestamp" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
359                                                         <xs:element name="subject" type="xs:string" minOccurs="1" maxOccurs="1"/>
360                                                         <xs:element name="target" type = "xs:string" minOccurs="1" maxOccurs="1"/>
361                                                         <xs:element name="action" type="xs:string" minOccurs="1" maxOccurs="1"/>
362                                                         <xs:element name="memo" type="xs:string" minOccurs="1" maxOccurs="1"/>
363                                                         <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
364                                                 </xs:sequence>
365                                         </xs:complexType>
366                                 </xs:element>
367                         </xs:sequence>
368                  </xs:complexType>
369         </xs:element>
370  
371 <!-- 
372         Approvals
373  -->
374         <xs:complexType name="approval">
375            <xs:sequence>
376                    <!-- Note, id is set by system -->
377                    <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="1"/>
378                    <xs:element name="ticket" type="xs:string"/>
379                <xs:element name="user" type="xs:string"/>
380                <xs:element name="approver" type="xs:string"/>
381                <xs:element name="type" type="xs:string"/>
382                <xs:element name="memo" type="xs:string"/>
383                <xs:element name="updated" type="xs:dateTime"/>
384                <xs:element name="status">
385                           <xs:simpleType>
386                             <xs:restriction base="xs:string">
387                               <xs:enumeration value="approve"/>
388                               <xs:enumeration value="reject"/>
389                               <xs:enumeration value="pending"/>
390                             </xs:restriction>
391                           </xs:simpleType>
392                    </xs:element>        
393                    <xs:element name="operation">
394                           <xs:simpleType>
395                             <xs:restriction base="xs:string">
396                               <xs:enumeration value="C"/>
397                               <xs:enumeration value="U"/>
398                               <xs:enumeration value="D"/>
399                               <xs:enumeration value="G"/>
400                               <xs:enumeration value="UG"/>
401                             </xs:restriction>
402                           </xs:simpleType>
403                    </xs:element>        
404            </xs:sequence>
405         </xs:complexType>
406         <xs:element name="approvals">
407                 <xs:complexType>
408                         <xs:sequence>
409                                 <xs:element name="approvals" type="aaf:approval" minOccurs="1" maxOccurs="unbounded"/>
410                         </xs:sequence>
411                 </xs:complexType>
412         </xs:element>
413         
414 <!-- 
415         Delegates 
416 -->     
417         <xs:complexType name="delg">
418            <xs:sequence>
419                <xs:element name="user" type="xs:string"/>
420                <xs:element name="delegate" type="xs:string"/>
421                <xs:element name="expires" type="xs:date"/>
422            </xs:sequence>
423         </xs:complexType>
424         
425         <xs:element name="delgRequest">
426                 <xs:complexType>
427                         <xs:complexContent>
428                                 <xs:extension base="aaf:Request">
429                                         <xs:sequence>
430                                        <xs:element name="user" type="xs:string" minOccurs="1" maxOccurs="1"/>
431                                        <xs:element name="delegate" type="xs:string" minOccurs="1" maxOccurs="1"/>
432                                         </xs:sequence>
433                                 </xs:extension>
434                         </xs:complexContent>
435                 </xs:complexType>
436         </xs:element>
437
438         <xs:element name="delgs">
439                 <xs:complexType>
440                         <xs:sequence>
441                                 <xs:element name="delgs" type="aaf:delg" minOccurs="0" maxOccurs="unbounded"/>
442                         </xs:sequence>
443                 </xs:complexType>
444         </xs:element>
445         
446         <!-- jg 3/11/2015 New for 2.0.8 -->
447         <xs:element name="api">
448                 <xs:complexType>
449                         <xs:sequence>
450                                 <xs:element name="route" minOccurs="0" maxOccurs="unbounded">
451                                         <xs:complexType>
452                                                 <xs:sequence>
453                                                         <xs:element name="meth" type="xs:string" minOccurs="1" maxOccurs="1"/>
454                                                         <xs:element name="path" type="xs:string" minOccurs="1" maxOccurs="1"/>
455                                                         <xs:element name="param" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
456                                                         <xs:element name="desc" type="xs:string" minOccurs="1" maxOccurs="1"/>
457                                                         <xs:element name="comments" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
458                                                         <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
459                                                         <xs:element name="expected" type="xs:int" minOccurs="1" maxOccurs="1"/>
460                                                         <xs:element name="explicitErr" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
461                                                 </xs:sequence>  
462                                         </xs:complexType>
463                                 </xs:element>
464                         </xs:sequence>
465                 </xs:complexType>
466         </xs:element>
467 </xs:schema>