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