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