SchemaBuilderV1   B
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 2100
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
eloc 1826
c 1
b 0
f 0
dl 0
loc 2100
rs 8.8

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 2
A getSchemaClass() 0 3 1
A getSchema() 0 3 1
A getEnterpriseUser() 0 3 1
A getGroup() 0 3 1
A getUser() 0 3 1
A getServiceProviderConfig() 0 3 1
1
<?php
2
3
/*
4
 * This file is part of the tmilos/scim-schema package.
5
 *
6
 * (c) Milos Tomic <[email protected]>
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
namespace Tmilos\ScimSchema\Builder;
13
14
use Tmilos\ScimSchema\Model\v1\Schema;
15
use Tmilos\ScimSchema\ScimConstantsV1;
16
17
class SchemaBuilderV1 extends SchemaBuilder
18
{
19
    protected static $schemas = array(
20
        ScimConstantsV1::SCHEMA_GROUP => array(
21
            'id' => 'urn:scim:schemas:core:1.0:Group',
22
            'schema' => 'urn:scim:schemas:core:1.0',
23
            'name' => 'Group',
24
            'description' => 'Group resource.',
25
            'attributes' => array(
26
                array(
27
                    'name' => 'displayName',
28
                    'description' => 'A human-readable name for the group.',
29
                    'type' => 'string',
30
                    'caseExact' => false,
31
                    'multiValued' => false,
32
                    'mutability' => 'readWrite',
33
                    'required' => true,
34
                    'returned' => 'default',
35
                    'uniqueness' => 'none',
36
                ),
37
                array(
38
                    'name' => 'members',
39
                    'description' => 'A list of members of the group.',
40
                    'type' => 'complex',
41
                    'multiValued' => true,
42
                    'mutability' => 'readWrite',
43
                    'required' => false,
44
                    'returned' => 'default',
45
                    'uniqueness' => 'none',
46
                    'subAttributes' => array(
47
                        array(
48
                            'name' => 'type',
49
                            'description' => 'A label indicating the type of resource, e.g., \'User\' or \'Group\'.',
50
                            'type' => 'string',
51
                            'canonicalValues' => array(
52
                                'User',
53
                                'Group',
54
                            ),
55
                            'caseExact' => false,
56
                            'multiValued' => false,
57
                            'mutability' => 'immutable',
58
                            'required' => false,
59
                            'returned' => 'default',
60
                            'uniqueness' => 'none',
61
                        ),
62
                        array(
63
                            'name' => 'primary',
64
                            'description' => null,
65
                            'type' => 'boolean',
66
                            'multiValued' => false,
67
                            'mutability' => 'readWrite',
68
                            'required' => false,
69
                            'returned' => 'default',
70
                            'uniqueness' => 'none',
71
                        ),
72
                        array(
73
                            'name' => 'display',
74
                            'description' => null,
75
                            'type' => 'string',
76
                            'caseExact' => false,
77
                            'multiValued' => false,
78
                            'mutability' => 'readWrite',
79
                            'required' => false,
80
                            'returned' => 'default',
81
                            'uniqueness' => 'none',
82
                        ),
83
                        array(
84
                            'name' => 'value',
85
                            'description' => 'Identifier of the member of this group.',
86
                            'type' => 'string',
87
                            'caseExact' => false,
88
                            'multiValued' => false,
89
                            'mutability' => 'immutable',
90
                            'required' => false,
91
                            'returned' => 'default',
92
                            'uniqueness' => 'none',
93
                        ),
94
                        array(
95
                            'name' => '$ref',
96
                            'description' => 'The URI corresponding to a SCIM resource that is a member of this group.',
97
                            'type' => 'reference',
98
                            'multiValued' => false,
99
                            'mutability' => 'immutable',
100
                            'required' => false,
101
                            'returned' => 'default',
102
                            'referenceTypes' => array(
103
                                'User',
104
                                'Group',
105
                            ),
106
                            'uniqueness' => 'none',
107
                        ),
108
                    ),
109
                ),
110
                array(
111
                    'name' => 'schemas',
112
                    'description' => null,
113
                    'type' => 'string',
114
                    'caseExact' => false,
115
                    'multiValued' => true,
116
                    'mutability' => 'readWrite',
117
                    'required' => false,
118
                    'returned' => 'always',
119
                    'uniqueness' => 'none',
120
                ),
121
                array(
122
                    'name' => 'id',
123
                    'description' => 'A unique identifier for a SCIM resource as defined by the service provider.',
124
                    'type' => 'string',
125
                    'caseExact' => true,
126
                    'multiValued' => false,
127
                    'mutability' => 'readOnly',
128
                    'required' => false,
129
                    'returned' => 'always',
130
                    'uniqueness' => 'server',
131
                ),
132
                array(
133
                    'name' => 'externalId',
134
                    'description' => 'An identifier for the resource as defined by the provisioning client.',
135
                    'type' => 'string',
136
                    'caseExact' => false,
137
                    'multiValued' => false,
138
                    'mutability' => 'readWrite',
139
                    'required' => false,
140
                    'returned' => 'default',
141
                    'uniqueness' => 'none',
142
                ),
143
                array(
144
                    'name' => 'meta',
145
                    'description' => null,
146
                    'type' => 'complex',
147
                    'multiValued' => false,
148
                    'mutability' => 'readOnly',
149
                    'required' => false,
150
                    'returned' => 'always',
151
                    'uniqueness' => 'none',
152
                    'subAttributes' => array(
153
                        array(
154
                            'name' => 'resourceType',
155
                            'description' => 'The name of the resource type of the resource.',
156
                            'type' => 'string',
157
                            'caseExact' => true,
158
                            'multiValued' => false,
159
                            'mutability' => 'readOnly',
160
                            'required' => false,
161
                            'returned' => 'default',
162
                            'uniqueness' => 'none',
163
                        ),
164
                        array(
165
                            'name' => 'created',
166
                            'description' => 'The DateTime that the resource was added to the service provider.',
167
                            'type' => 'datetime',
168
                            'multiValued' => false,
169
                            'mutability' => 'readOnly',
170
                            'required' => false,
171
                            'returned' => 'default',
172
                            'uniqueness' => 'none',
173
                        ),
174
                        array(
175
                            'name' => 'lastModified',
176
                            'description' => 'The most recent DateTime that the details of this resource were updated at the service provider.',
177
                            'type' => 'datetime',
178
                            'multiValued' => false,
179
                            'mutability' => 'readOnly',
180
                            'required' => false,
181
                            'returned' => 'default',
182
                            'uniqueness' => 'none',
183
                        ),
184
                        array(
185
                            'name' => 'location',
186
                            'description' => 'The URI of the resource being returned.',
187
                            'type' => 'reference',
188
                            'multiValued' => false,
189
                            'mutability' => 'readOnly',
190
                            'required' => false,
191
                            'returned' => 'default',
192
                            'referenceTypes' => null,
193
                            'uniqueness' => 'none',
194
                        ),
195
                        array(
196
                            'name' => 'version',
197
                            'description' => 'The version of the resource being returned.',
198
                            'type' => 'string',
199
                            'caseExact' => true,
200
                            'multiValued' => false,
201
                            'mutability' => 'readOnly',
202
                            'required' => false,
203
                            'returned' => 'default',
204
                            'uniqueness' => 'none',
205
                        ),
206
                    ),
207
                ),
208
            ),
209
            'externalId' => null,
210
            'meta' => array(
211
                'resourceType' => 'Schema',
212
                'created' => '0001-01-01T00:00:00Z',
213
                'lastModified' => '0001-01-01T00:00:00Z',
214
                'location' => 'http://localhost:9091/scim/v1/schemas/urn:scim:schemas:core:1.0:Group',
215
                'version' => 'W/"F57BE29D14171D1FDD6C41E7A5C616AE7B631728"',
216
            ),
217
        ),
218
        ScimConstantsV1::SCHEMA_SCHEMA => array(
219
            'id' => 'urn:scim:schemas:core:1.0:Schema',
220
            'schema' => 'urn:scim:schemas:core:1.0',
221
            'name' => 'Schema',
222
            'description' => 'Specifies the schema that describes a SCIM schema.',
223
            'attributes' => array(
224
                array(
225
                    'name' => 'schema',
226
                    'description' => null,
227
                    'type' => 'string',
228
                    'caseExact' => false,
229
                    'multiValued' => true,
230
                    'mutability' => 'readWrite',
231
                    'required' => false,
232
                    'returned' => 'default',
233
                    'uniqueness' => 'none',
234
                ),
235
                array(
236
                    'name' => 'name',
237
                    'description' => 'The schema\'s human-readable name. When applicable, service providers MUST specify the name, e.g., \'User\'.',
238
                    'type' => 'string',
239
                    'caseExact' => false,
240
                    'multiValued' => false,
241
                    'mutability' => 'readOnly',
242
                    'required' => false,
243
                    'returned' => 'default',
244
                    'uniqueness' => 'none',
245
                ),
246
                array(
247
                    'name' => 'description',
248
                    'description' => 'The schema\'s human-readable description. When applicable, service providers MUST specify the description.',
249
                    'type' => 'string',
250
                    'caseExact' => false,
251
                    'multiValued' => false,
252
                    'mutability' => 'readOnly',
253
                    'required' => false,
254
                    'returned' => 'default',
255
                    'uniqueness' => 'none',
256
                ),
257
                array(
258
                    'name' => 'attributes',
259
                    'description' => 'A complex attribute that includes the attributes of a schema.',
260
                    'type' => 'complex',
261
                    'multiValued' => true,
262
                    'mutability' => 'readOnly',
263
                    'required' => false,
264
                    'returned' => 'default',
265
                    'uniqueness' => 'none',
266
                    'subAttributes' => array(
267
                        array(
268
                            'name' => 'canonicalValues',
269
                            'description' => 'A collection of suggested canonical values that MAY be used (e.g., "work" and "home"). In some cases, service providers MAY choose to ignore unsupported values.',
270
                            'type' => 'SCIM data-type of the associated attribute type being defined.',
271
                            'multiValued' => true,
272
                            'mutability' => 'readOnly',
273
                            'required' => false,
274
                            'returned' => 'default',
275
                            'uniqueness' => 'none',
276
                        ),
277
                        array(
278
                            'name' => 'caseExact',
279
                            'description' => 'A boolean value that specifies whether or not a string attribute is case sensitive.',
280
                            'type' => 'boolean',
281
                            'multiValued' => false,
282
                            'mutability' => 'readOnly',
283
                            'required' => false,
284
                            'returned' => 'default',
285
                            'uniqueness' => 'none',
286
                        ),
287
                        array(
288
                            'name' => 'description',
289
                            'description' => 'A human-readable description of the attribute.',
290
                            'type' => 'string',
291
                            'caseExact' => false,
292
                            'multiValued' => false,
293
                            'mutability' => 'readOnly',
294
                            'required' => false,
295
                            'returned' => 'default',
296
                            'uniqueness' => 'none',
297
                        ),
298
                        array(
299
                            'name' => 'multiValued',
300
                            'description' => 'A boolean value indicating an attribute\'s plurality.',
301
                            'type' => 'boolean',
302
                            'multiValued' => false,
303
                            'mutability' => 'readOnly',
304
                            'required' => true,
305
                            'returned' => 'default',
306
                            'uniqueness' => 'none',
307
                        ),
308
                        array(
309
                            'name' => 'mutability',
310
                            'description' => 'A single keyword indicating the circumstances under which the value of the attribute can be (re)defined.',
311
                            'type' => 'string',
312
                            'canonicalValues' => array(
313
                                'readOnly',
314
                                'readWrite',
315
                                'immutable',
316
                                'writeOnly',
317
                            ),
318
                            'caseExact' => false,
319
                            'multiValued' => false,
320
                            'mutability' => 'readOnly',
321
                            'required' => false,
322
                            'returned' => 'default',
323
                            'uniqueness' => 'none',
324
                        ),
325
                        array(
326
                            'name' => 'name',
327
                            'description' => 'The attribute\'s name.',
328
                            'type' => 'string',
329
                            'caseExact' => true,
330
                            'multiValued' => false,
331
                            'mutability' => 'readOnly',
332
                            'required' => true,
333
                            'returned' => 'default',
334
                            'uniqueness' => 'none',
335
                        ),
336
                        array(
337
                            'name' => 'required',
338
                            'description' => 'A Boolean value that specifies whether or not the attribute is required.',
339
                            'type' => 'boolean',
340
                            'multiValued' => false,
341
                            'mutability' => 'readOnly',
342
                            'required' => false,
343
                            'returned' => 'default',
344
                            'uniqueness' => 'none',
345
                        ),
346
                        array(
347
                            'name' => 'returned',
348
                            'description' => 'A single keyword that indicates when an attribute and associated values are returned in response to a GET request or in response to a PUT, POST, or PATCH request.',
349
                            'type' => 'string',
350
                            'canonicalValues' => array(
351
                                'always',
352
                                'never',
353
                                'default',
354
                                'request',
355
                            ),
356
                            'caseExact' => false,
357
                            'multiValued' => false,
358
                            'mutability' => 'readOnly',
359
                            'required' => false,
360
                            'returned' => 'default',
361
                            'uniqueness' => 'none',
362
                        ),
363
                        array(
364
                            'name' => 'referenceTypes',
365
                            'description' => 'A multi-valued array of JSON strings that indicate the SCIM resource types that may be referenced.',
366
                            'type' => 'string',
367
                            'canonicalValues' => array(
368
                                'A SCIM resource type (e.g., "User" or "Group")',
369
                                'external',
370
                                'uri',
371
                            ),
372
                            'caseExact' => false,
373
                            'multiValued' => true,
374
                            'mutability' => 'readOnly',
375
                            'required' => false,
376
                            'returned' => 'default',
377
                            'uniqueness' => 'none',
378
                        ),
379
                        array(
380
                            'name' => 'subAttributes',
381
                            'description' => 'Used to define the sub-attributes of a complex attribute.',
382
                            'type' => 'complex',
383
                            'multiValued' => true,
384
                            'mutability' => 'readOnly',
385
                            'required' => false,
386
                            'returned' => 'default',
387
                            'uniqueness' => 'none',
388
                        ),
389
                        array(
390
                            'name' => 'type',
391
                            'description' => 'The attribute\'s data type. Valid values include \'string\', \'complex\', \'boolean\', \'decimal\', \'integer\', \'dateTime\', \'reference\', \'binary\'.',
392
                            'type' => 'string',
393
                            'canonicalValues' => array(
394
                                'string',
395
                                'complex',
396
                                'boolean',
397
                                'decimal',
398
                                'integer',
399
                                'dateTime',
400
                                'reference',
401
                                'binary',
402
                            ),
403
                            'caseExact' => false,
404
                            'multiValued' => false,
405
                            'mutability' => 'readOnly',
406
                            'required' => true,
407
                            'returned' => 'default',
408
                            'uniqueness' => 'none',
409
                        ),
410
                        array(
411
                            'name' => 'uniqueness',
412
                            'description' => 'A single keyword value that specifies how the service provider enforces uniqueness of attribute values.',
413
                            'type' => 'string',
414
                            'canonicalValues' => array(
415
                                'none',
416
                                'server',
417
                                'global',
418
                            ),
419
                            'caseExact' => false,
420
                            'multiValued' => false,
421
                            'mutability' => 'readOnly',
422
                            'required' => false,
423
                            'returned' => 'default',
424
                            'uniqueness' => 'none',
425
                        ),
426
                    ),
427
                ),
428
                array(
429
                    'name' => 'id',
430
                    'description' => 'The unique URI of the schema.',
431
                    'type' => 'string',
432
                    'caseExact' => false,
433
                    'multiValued' => false,
434
                    'mutability' => 'readOnly',
435
                    'required' => false,
436
                    'returned' => 'default',
437
                    'uniqueness' => 'none',
438
                ),
439
                array(
440
                    'name' => 'externalId',
441
                    'description' => 'An identifier for the resource as defined by the provisioning client.',
442
                    'type' => 'string',
443
                    'caseExact' => false,
444
                    'multiValued' => false,
445
                    'mutability' => 'readWrite',
446
                    'required' => false,
447
                    'returned' => 'default',
448
                    'uniqueness' => 'none',
449
                ),
450
                array(
451
                    'name' => 'meta',
452
                    'description' => null,
453
                    'type' => 'complex',
454
                    'multiValued' => false,
455
                    'mutability' => 'readWrite',
456
                    'required' => false,
457
                    'returned' => 'default',
458
                    'uniqueness' => 'none',
459
                    'subAttributes' => array(
460
                        array(
461
                            'name' => 'resourceType',
462
                            'description' => 'The name of the resource type of the resource.',
463
                            'type' => 'string',
464
                            'caseExact' => true,
465
                            'multiValued' => false,
466
                            'mutability' => 'readOnly',
467
                            'required' => false,
468
                            'returned' => 'default',
469
                            'uniqueness' => 'none',
470
                        ),
471
                        array(
472
                            'name' => 'created',
473
                            'description' => 'The DateTime that the resource was added to the service provider.',
474
                            'type' => 'datetime',
475
                            'multiValued' => false,
476
                            'mutability' => 'readOnly',
477
                            'required' => false,
478
                            'returned' => 'default',
479
                            'uniqueness' => 'none',
480
                        ),
481
                        array(
482
                            'name' => 'lastModified',
483
                            'description' => 'The most recent DateTime that the details of this resource were updated at the service provider.',
484
                            'type' => 'datetime',
485
                            'multiValued' => false,
486
                            'mutability' => 'readOnly',
487
                            'required' => false,
488
                            'returned' => 'default',
489
                            'uniqueness' => 'none',
490
                        ),
491
                        array(
492
                            'name' => 'location',
493
                            'description' => 'The URI of the resource being returned.',
494
                            'type' => 'reference',
495
                            'multiValued' => false,
496
                            'mutability' => 'readOnly',
497
                            'required' => false,
498
                            'returned' => 'default',
499
                            'referenceTypes' => null,
500
                            'uniqueness' => 'none',
501
                        ),
502
                        array(
503
                            'name' => 'version',
504
                            'description' => 'The version of the resource being returned.',
505
                            'type' => 'string',
506
                            'caseExact' => true,
507
                            'multiValued' => false,
508
                            'mutability' => 'readOnly',
509
                            'required' => false,
510
                            'returned' => 'default',
511
                            'uniqueness' => 'none',
512
                        ),
513
                    ),
514
                ),
515
            ),
516
            'externalId' => null,
517
            'meta' => array(
518
                'resourceType' => 'Schema',
519
                'created' => '0001-01-01T00:00:00Z',
520
                'lastModified' => '0001-01-01T00:00:00Z',
521
                'location' => 'http://localhost:9091/scim/v1/schemas/urn:scim:schemas:core:1.0:Schema',
522
                'version' => 'W/"8F0731A43909A8DB52FF3E35DE5940E5387979A1"',
523
            ),
524
        ),
525
        ScimConstantsV1::SCHEMA_USER => array(
526
            'id' => 'urn:scim:schemas:core:1.0:User',
527
            'schema' => 'urn:scim:schemas:core:1.0',
528
            'name' => 'User',
529
            'description' => 'User resource.',
530
            'attributes' => array(
531
                array(
532
                    'name' => 'userName',
533
                    'description' => 'Unique identifier for the User, typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value.This identifier MUST be unique across the service provider\'s entire set of Users. REQUIRED.',
534
                    'type' => 'string',
535
                    'caseExact' => false,
536
                    'multiValued' => false,
537
                    'mutability' => 'readWrite',
538
                    'required' => true,
539
                    'returned' => 'default',
540
                    'uniqueness' => 'server',
541
                ),
542
                array(
543
                    'name' => 'name',
544
                    'description' => 'The components of the user\'s real name. Providers MAY return just the full name as a single string in the formatted sub-attribute, or they MAY return just the individual component attributes using the other sub-attributes, or they MAY return both.If both variants are returned, they SHOULD be describing the same name, with the formatted name indicating how the component attributes should be combined.',
545
                    'type' => 'complex',
546
                    'multiValued' => false,
547
                    'mutability' => 'readWrite',
548
                    'required' => false,
549
                    'returned' => 'default',
550
                    'uniqueness' => 'none',
551
                    'subAttributes' => array(
552
                        array(
553
                            'name' => 'formatted',
554
                            'description' => 'The full name, including all middle names, titles, and suffixes as appropriate, formatted for display (e.g., \'Ms. Barbara J Jensen, III\').',
555
                            'type' => 'string',
556
                            'caseExact' => false,
557
                            'multiValued' => false,
558
                            'mutability' => 'readWrite',
559
                            'required' => false,
560
                            'returned' => 'default',
561
                            'uniqueness' => 'none',
562
                        ),
563
                        array(
564
                            'name' => 'familyName',
565
                            'description' => 'The family name of the User, or last name in most Western languages (e.g., \'Jensen\' given the full name \'Ms. Barbara J Jensen, III\').',
566
                            'type' => 'string',
567
                            'caseExact' => false,
568
                            'multiValued' => false,
569
                            'mutability' => 'readWrite',
570
                            'required' => false,
571
                            'returned' => 'default',
572
                            'uniqueness' => 'none',
573
                        ),
574
                        array(
575
                            'name' => 'givenName',
576
                            'description' => 'The given name of the User, or first name in most Western languages (e.g., \'Barbara\' given the full name \'Ms. Barbara J Jensen, III\').',
577
                            'type' => 'string',
578
                            'caseExact' => false,
579
                            'multiValued' => false,
580
                            'mutability' => 'readWrite',
581
                            'required' => false,
582
                            'returned' => 'default',
583
                            'uniqueness' => 'none',
584
                        ),
585
                        array(
586
                            'name' => 'middleName',
587
                            'description' => 'The middle name(s) of the User (e.g., \'Jane\' given the full name \'Ms. Barbara J Jensen, III\').',
588
                            'type' => 'string',
589
                            'caseExact' => false,
590
                            'multiValued' => false,
591
                            'mutability' => 'readWrite',
592
                            'required' => false,
593
                            'returned' => 'default',
594
                            'uniqueness' => 'none',
595
                        ),
596
                        array(
597
                            'name' => 'honorificPrefix',
598
                            'description' => 'The honorific prefix(es) of the User, or title in most Western languages (e.g., \'Ms.\' given the full name \'Ms. Barbara J Jensen, III\').',
599
                            'type' => 'string',
600
                            'caseExact' => false,
601
                            'multiValued' => false,
602
                            'mutability' => 'readWrite',
603
                            'required' => false,
604
                            'returned' => 'default',
605
                            'uniqueness' => 'none',
606
                        ),
607
                        array(
608
                            'name' => 'honorificSuffix',
609
                            'description' => 'The honorific suffix(es) of the User, or suffix in most Western languages(e.g., \'III\' given the full name \'Ms. Barbara J Jensen, III\').',
610
                            'type' => 'string',
611
                            'caseExact' => false,
612
                            'multiValued' => false,
613
                            'mutability' => 'readWrite',
614
                            'required' => false,
615
                            'returned' => 'default',
616
                            'uniqueness' => 'none',
617
                        ),
618
                    ),
619
                ),
620
                array(
621
                    'name' => 'displayName',
622
                    'description' => 'The name of the User, suitable for display to end-users.The name SHOULD be the full name of the User being described, if known.',
623
                    'type' => 'string',
624
                    'caseExact' => false,
625
                    'multiValued' => false,
626
                    'mutability' => 'readWrite',
627
                    'required' => false,
628
                    'returned' => 'default',
629
                    'uniqueness' => 'none',
630
                ),
631
                array(
632
                    'name' => 'nickName',
633
                    'description' => 'The casual way to address the user in real life, e.g., \'Bob\' or \'Bobby\' instead of \'Robert\'. This attribute SHOULD NOT be used to represent a User\'s username (e.g., \'bjensen\' or \'mpepperidge\').',
634
                    'type' => 'string',
635
                    'caseExact' => false,
636
                    'multiValued' => false,
637
                    'mutability' => 'readWrite',
638
                    'required' => false,
639
                    'returned' => 'default',
640
                    'uniqueness' => 'none',
641
                ),
642
                array(
643
                    'name' => 'profileUrl',
644
                    'description' => 'A fully qualified URL pointing to a page representing the User\'s online profile.',
645
                    'type' => 'reference',
646
                    'multiValued' => false,
647
                    'mutability' => 'readWrite',
648
                    'required' => false,
649
                    'returned' => 'default',
650
                    'referenceTypes' => array(
651
                        'external',
652
                    ),
653
                    'uniqueness' => 'none',
654
                ),
655
                array(
656
                    'name' => 'title',
657
                    'description' => 'The user\'s title, such as \'Vice President\'.',
658
                    'type' => 'string',
659
                    'caseExact' => false,
660
                    'multiValued' => false,
661
                    'mutability' => 'readWrite',
662
                    'required' => false,
663
                    'returned' => 'default',
664
                    'uniqueness' => 'none',
665
                ),
666
                array(
667
                    'name' => 'userType',
668
                    'description' => 'Used to identify the relationship between the organization and the user. Typical values used might be \'Contractor\', \'Employee\', \'Intern\', \'Temp\', \'External\', and \'Unknown\', but any value may be used.',
669
                    'type' => 'string',
670
                    'caseExact' => false,
671
                    'multiValued' => false,
672
                    'mutability' => 'readWrite',
673
                    'required' => false,
674
                    'returned' => 'default',
675
                    'uniqueness' => 'none',
676
                ),
677
                array(
678
                    'name' => 'preferredLanguage',
679
                    'description' => 'Indicates the User\'s preferred written or spoken language.Generally used for selecting a localized user interface; e.g., \'en-US\' specifies the language English and country US.',
680
                    'type' => 'string',
681
                    'caseExact' => false,
682
                    'multiValued' => false,
683
                    'mutability' => 'readWrite',
684
                    'required' => false,
685
                    'returned' => 'default',
686
                    'uniqueness' => 'none',
687
                ),
688
                array(
689
                    'name' => 'locale',
690
                    'description' => 'Used to indicate the User\'s default location for purposes of localizing items such as currency, date time format, or numerical representations.',
691
                    'type' => 'string',
692
                    'caseExact' => false,
693
                    'multiValued' => false,
694
                    'mutability' => 'readWrite',
695
                    'required' => false,
696
                    'returned' => 'default',
697
                    'uniqueness' => 'none',
698
                ),
699
                array(
700
                    'name' => 'timezone',
701
                    'description' => 'The User\'s time zone in the \'Olson\' time zone database format, e.g., \'America/Los_Angeles\'.',
702
                    'type' => 'string',
703
                    'caseExact' => false,
704
                    'multiValued' => false,
705
                    'mutability' => 'readWrite',
706
                    'required' => false,
707
                    'returned' => 'default',
708
                    'uniqueness' => 'none',
709
                ),
710
                array(
711
                    'name' => 'active',
712
                    'description' => 'A Boolean value indicating the User\'s administrative status.',
713
                    'type' => 'boolean',
714
                    'multiValued' => false,
715
                    'mutability' => 'readWrite',
716
                    'required' => false,
717
                    'returned' => 'default',
718
                    'uniqueness' => 'none',
719
                ),
720
                array(
721
                    'name' => 'password',
722
                    'description' => 'The User\'s cleartext password. This attribute is intended to be used as a means to specify an initial password when creating a new User or to reset an existing User\'s password.',
723
                    'type' => 'string',
724
                    'caseExact' => false,
725
                    'multiValued' => false,
726
                    'mutability' => 'writeOnly',
727
                    'required' => false,
728
                    'returned' => 'never',
729
                    'uniqueness' => 'none',
730
                ),
731
                array(
732
                    'name' => 'emails',
733
                    'description' => 'Email addresses for the user. The value SHOULD be canonicalized by the service provider, e.g., \'[email protected]\' instead of \'[email protected]\'.',
734
                    'type' => 'complex',
735
                    'multiValued' => true,
736
                    'mutability' => 'readWrite',
737
                    'required' => false,
738
                    'returned' => 'default',
739
                    'uniqueness' => 'none',
740
                    'subAttributes' => array(
741
                        array(
742
                            'name' => 'type',
743
                            'description' => 'A label indicating the attribute\'s function, e.g., \'work\' or \'home\'.',
744
                            'type' => 'string',
745
                            'canonicalValues' => array(
746
                                'work',
747
                                'home',
748
                                'other',
749
                            ),
750
                            'caseExact' => false,
751
                            'multiValued' => false,
752
                            'mutability' => 'readWrite',
753
                            'required' => false,
754
                            'returned' => 'default',
755
                            'uniqueness' => 'none',
756
                        ),
757
                        array(
758
                            'name' => 'primary',
759
                            'description' => 'A Boolean value indicating the \'primary\' or preferred attribute value for this attribute, e.g., the preferred mailing address or primary email address.',
760
                            'type' => 'boolean',
761
                            'multiValued' => false,
762
                            'mutability' => 'readWrite',
763
                            'required' => false,
764
                            'returned' => 'default',
765
                            'uniqueness' => 'none',
766
                        ),
767
                        array(
768
                            'name' => 'display',
769
                            'description' => 'A human-readable name, primarily used for display purposes.',
770
                            'type' => 'string',
771
                            'caseExact' => false,
772
                            'multiValued' => false,
773
                            'mutability' => 'readOnly',
774
                            'required' => false,
775
                            'returned' => 'default',
776
                            'uniqueness' => 'none',
777
                        ),
778
                        array(
779
                            'name' => 'value',
780
                            'description' => 'Email address value.',
781
                            'type' => 'string',
782
                            'caseExact' => false,
783
                            'multiValued' => false,
784
                            'mutability' => 'readWrite',
785
                            'required' => false,
786
                            'returned' => 'default',
787
                            'uniqueness' => 'none',
788
                        ),
789
                        array(
790
                            'name' => '$ref',
791
                            'description' => null,
792
                            'type' => 'reference',
793
                            'multiValued' => false,
794
                            'mutability' => 'readWrite',
795
                            'required' => false,
796
                            'returned' => 'default',
797
                            'referenceTypes' => null,
798
                            'uniqueness' => 'none',
799
                        ),
800
                    ),
801
                ),
802
                array(
803
                    'name' => 'phoneNumbers',
804
                    'description' => 'Phone numbers for the User. The value SHOULD be canonicalized by the service provider according to the format specified in RFC 3966, e.g., \'tel:+1-201-555-0123\'.',
805
                    'type' => 'complex',
806
                    'multiValued' => true,
807
                    'mutability' => 'readWrite',
808
                    'required' => false,
809
                    'returned' => 'default',
810
                    'uniqueness' => 'none',
811
                    'subAttributes' => array(
812
                        array(
813
                            'name' => 'type',
814
                            'description' => 'A label indicating the attribute\'s function, e.g., \'work\', \'home\', \'mobile\'.',
815
                            'type' => 'string',
816
                            'canonicalValues' => array(
817
                                'work',
818
                                'home',
819
                                'mobile',
820
                                'fax',
821
                                'pager',
822
                                'other',
823
                            ),
824
                            'caseExact' => false,
825
                            'multiValued' => false,
826
                            'mutability' => 'readWrite',
827
                            'required' => false,
828
                            'returned' => 'default',
829
                            'uniqueness' => 'none',
830
                        ),
831
                        array(
832
                            'name' => 'primary',
833
                            'description' => 'A boolean value indicating the \'primary\' or preferred attribute value for this attribute, e.g., the preferred phone number or primary phone number.',
834
                            'type' => 'boolean',
835
                            'multiValued' => false,
836
                            'mutability' => 'readWrite',
837
                            'required' => false,
838
                            'returned' => 'default',
839
                            'uniqueness' => 'none',
840
                        ),
841
                        array(
842
                            'name' => 'display',
843
                            'description' => 'A human-readable name, primarily used for display purposes.',
844
                            'type' => 'string',
845
                            'caseExact' => false,
846
                            'multiValued' => false,
847
                            'mutability' => 'readOnly',
848
                            'required' => false,
849
                            'returned' => 'default',
850
                            'uniqueness' => 'none',
851
                        ),
852
                        array(
853
                            'name' => 'value',
854
                            'description' => 'Phone number of the user.',
855
                            'type' => 'string',
856
                            'caseExact' => false,
857
                            'multiValued' => false,
858
                            'mutability' => 'readWrite',
859
                            'required' => false,
860
                            'returned' => 'default',
861
                            'uniqueness' => 'none',
862
                        ),
863
                        array(
864
                            'name' => '$ref',
865
                            'description' => null,
866
                            'type' => 'reference',
867
                            'multiValued' => false,
868
                            'mutability' => 'readWrite',
869
                            'required' => false,
870
                            'returned' => 'default',
871
                            'referenceTypes' => null,
872
                            'uniqueness' => 'none',
873
                        ),
874
                    ),
875
                ),
876
                array(
877
                    'name' => 'ims',
878
                    'description' => 'Instant messaging addresses for the User.',
879
                    'type' => 'complex',
880
                    'multiValued' => true,
881
                    'mutability' => 'readWrite',
882
                    'required' => false,
883
                    'returned' => 'default',
884
                    'uniqueness' => 'none',
885
                    'subAttributes' => array(
886
                        array(
887
                            'name' => 'type',
888
                            'description' => 'A label indicating the attribute\'s function, e.g., \'aim\', \'gtalk\', \'xmpp\'.',
889
                            'type' => 'string',
890
                            'canonicalValues' => array(
891
                                'aim',
892
                                'gtalk',
893
                                'icq',
894
                                'xmpp',
895
                                'msn',
896
                                'skype',
897
                                'qq',
898
                                'yahoo',
899
                            ),
900
                            'caseExact' => false,
901
                            'multiValued' => false,
902
                            'mutability' => 'readWrite',
903
                            'required' => false,
904
                            'returned' => 'default',
905
                            'uniqueness' => 'none',
906
                        ),
907
                        array(
908
                            'name' => 'primary',
909
                            'description' => 'A Boolean value indicating the \'primary\' or preferred attribute value for this attribute, e.g., the preferred messenger or primary messenger.',
910
                            'type' => 'boolean',
911
                            'multiValued' => false,
912
                            'mutability' => 'readWrite',
913
                            'required' => false,
914
                            'returned' => 'default',
915
                            'uniqueness' => 'none',
916
                        ),
917
                        array(
918
                            'name' => 'display',
919
                            'description' => 'A human-readable name, primarily used for display purposes.',
920
                            'type' => 'string',
921
                            'caseExact' => false,
922
                            'multiValued' => false,
923
                            'mutability' => 'readOnly',
924
                            'required' => false,
925
                            'returned' => 'default',
926
                            'uniqueness' => 'none',
927
                        ),
928
                        array(
929
                            'name' => 'value',
930
                            'description' => 'Instant messaging address for the user.',
931
                            'type' => 'string',
932
                            'caseExact' => false,
933
                            'multiValued' => false,
934
                            'mutability' => 'readWrite',
935
                            'required' => false,
936
                            'returned' => 'default',
937
                            'uniqueness' => 'none',
938
                        ),
939
                        array(
940
                            'name' => '$ref',
941
                            'description' => null,
942
                            'type' => 'reference',
943
                            'multiValued' => false,
944
                            'mutability' => 'readWrite',
945
                            'required' => false,
946
                            'returned' => 'default',
947
                            'referenceTypes' => null,
948
                            'uniqueness' => 'none',
949
                        ),
950
                    ),
951
                ),
952
                array(
953
                    'name' => 'photos',
954
                    'description' => 'URLs of photos of the User.',
955
                    'type' => 'complex',
956
                    'multiValued' => true,
957
                    'mutability' => 'readWrite',
958
                    'required' => false,
959
                    'returned' => 'default',
960
                    'uniqueness' => 'none',
961
                    'subAttributes' => array(
962
                        array(
963
                            'name' => 'value',
964
                            'description' => 'URL of a photo of the user.',
965
                            'type' => 'reference',
966
                            'multiValued' => false,
967
                            'mutability' => 'readWrite',
968
                            'required' => false,
969
                            'returned' => 'default',
970
                            'referenceTypes' => array(
971
                                'external',
972
                            ),
973
                            'uniqueness' => 'none',
974
                        ),
975
                        array(
976
                            'name' => 'type',
977
                            'description' => 'A label indicating the attribute\'s function, i.e., \'photo\' or \'thumbnail\'.',
978
                            'type' => 'string',
979
                            'canonicalValues' => array(
980
                                'photo',
981
                                'thumbnail',
982
                            ),
983
                            'caseExact' => false,
984
                            'multiValued' => false,
985
                            'mutability' => 'readWrite',
986
                            'required' => false,
987
                            'returned' => 'default',
988
                            'uniqueness' => 'none',
989
                        ),
990
                        array(
991
                            'name' => 'primary',
992
                            'description' => 'A Boolean value indicating the \'primary\' or preferred attribute value for this attribute, e.g., the preferred photo or thumbnail.',
993
                            'type' => 'boolean',
994
                            'multiValued' => false,
995
                            'mutability' => 'readWrite',
996
                            'required' => false,
997
                            'returned' => 'default',
998
                            'uniqueness' => 'none',
999
                        ),
1000
                        array(
1001
                            'name' => 'display',
1002
                            'description' => null,
1003
                            'type' => 'string',
1004
                            'caseExact' => false,
1005
                            'multiValued' => false,
1006
                            'mutability' => 'readWrite',
1007
                            'required' => false,
1008
                            'returned' => 'default',
1009
                            'uniqueness' => 'none',
1010
                        ),
1011
                        array(
1012
                            'name' => '$ref',
1013
                            'description' => null,
1014
                            'type' => 'reference',
1015
                            'multiValued' => false,
1016
                            'mutability' => 'readWrite',
1017
                            'required' => false,
1018
                            'returned' => 'default',
1019
                            'referenceTypes' => null,
1020
                            'uniqueness' => 'none',
1021
                        ),
1022
                    ),
1023
                ),
1024
                array(
1025
                    'name' => 'addresses',
1026
                    'description' => 'A physical mailing address for this User.',
1027
                    'type' => 'complex',
1028
                    'multiValued' => true,
1029
                    'mutability' => 'readWrite',
1030
                    'required' => false,
1031
                    'returned' => 'default',
1032
                    'uniqueness' => 'none',
1033
                    'subAttributes' => array(
1034
                        array(
1035
                            'name' => 'formatted',
1036
                            'description' => 'The full mailing address, formatted for display or use with a mailing label. This attribute MAY contain newlines.',
1037
                            'type' => 'string',
1038
                            'caseExact' => false,
1039
                            'multiValued' => false,
1040
                            'mutability' => 'readWrite',
1041
                            'required' => false,
1042
                            'returned' => 'default',
1043
                            'uniqueness' => 'none',
1044
                        ),
1045
                        array(
1046
                            'name' => 'streetAddress',
1047
                            'description' => 'The full street address component, which may include house number, street name, P.O. box, and multi-line extended street address information. This attribute MAY contain newlines.',
1048
                            'type' => 'string',
1049
                            'caseExact' => false,
1050
                            'multiValued' => false,
1051
                            'mutability' => 'readWrite',
1052
                            'required' => false,
1053
                            'returned' => 'default',
1054
                            'uniqueness' => 'none',
1055
                        ),
1056
                        array(
1057
                            'name' => 'locality',
1058
                            'description' => 'The city or locality component.',
1059
                            'type' => 'string',
1060
                            'caseExact' => false,
1061
                            'multiValued' => false,
1062
                            'mutability' => 'readWrite',
1063
                            'required' => false,
1064
                            'returned' => 'default',
1065
                            'uniqueness' => 'none',
1066
                        ),
1067
                        array(
1068
                            'name' => 'region',
1069
                            'description' => 'The state or region component.',
1070
                            'type' => 'string',
1071
                            'caseExact' => false,
1072
                            'multiValued' => false,
1073
                            'mutability' => 'readWrite',
1074
                            'required' => false,
1075
                            'returned' => 'default',
1076
                            'uniqueness' => 'none',
1077
                        ),
1078
                        array(
1079
                            'name' => 'postalCode',
1080
                            'description' => 'The zip code or postal code component.',
1081
                            'type' => 'string',
1082
                            'caseExact' => false,
1083
                            'multiValued' => false,
1084
                            'mutability' => 'readWrite',
1085
                            'required' => false,
1086
                            'returned' => 'default',
1087
                            'uniqueness' => 'none',
1088
                        ),
1089
                        array(
1090
                            'name' => 'country',
1091
                            'description' => 'The country name component.',
1092
                            'type' => 'string',
1093
                            'caseExact' => false,
1094
                            'multiValued' => false,
1095
                            'mutability' => 'readWrite',
1096
                            'required' => false,
1097
                            'returned' => 'default',
1098
                            'uniqueness' => 'none',
1099
                        ),
1100
                        array(
1101
                            'name' => 'type',
1102
                            'description' => 'A label indicating the attribute\'s function, e.g., \'work\' or \'home\'.',
1103
                            'type' => 'string',
1104
                            'canonicalValues' => array(
1105
                                'work',
1106
                                'home',
1107
                                'other',
1108
                            ),
1109
                            'caseExact' => false,
1110
                            'multiValued' => false,
1111
                            'mutability' => 'readWrite',
1112
                            'required' => false,
1113
                            'returned' => 'default',
1114
                            'uniqueness' => 'none',
1115
                        ),
1116
                        array(
1117
                            'name' => 'primary',
1118
                            'description' => 'A boolean value indicating the \'primary\' or preferred attribute value for this attribute.',
1119
                            'type' => 'boolean',
1120
                            'multiValued' => false,
1121
                            'mutability' => 'readWrite',
1122
                            'required' => false,
1123
                            'returned' => 'default',
1124
                            'uniqueness' => 'none',
1125
                        ),
1126
                        array(
1127
                            'name' => 'display',
1128
                            'description' => 'A human-readable name, primarily used for display purposes.',
1129
                            'type' => 'string',
1130
                            'caseExact' => false,
1131
                            'multiValued' => false,
1132
                            'mutability' => 'readOnly',
1133
                            'required' => false,
1134
                            'returned' => 'default',
1135
                            'uniqueness' => 'none',
1136
                        ),
1137
                        array(
1138
                            'name' => 'value',
1139
                            'description' => null,
1140
                            'type' => 'string',
1141
                            'caseExact' => false,
1142
                            'multiValued' => false,
1143
                            'mutability' => 'readWrite',
1144
                            'required' => false,
1145
                            'returned' => 'default',
1146
                            'uniqueness' => 'none',
1147
                        ),
1148
                        array(
1149
                            'name' => '$ref',
1150
                            'description' => null,
1151
                            'type' => 'reference',
1152
                            'multiValued' => false,
1153
                            'mutability' => 'readWrite',
1154
                            'required' => false,
1155
                            'returned' => 'default',
1156
                            'referenceTypes' => null,
1157
                            'uniqueness' => 'none',
1158
                        ),
1159
                    ),
1160
                ),
1161
                array(
1162
                    'name' => 'groups',
1163
                    'description' => 'A list of groups to which the user belongs, either through direct membership, through nested groups, or dynamically calculated.',
1164
                    'type' => 'complex',
1165
                    'multiValued' => true,
1166
                    'mutability' => 'readOnly',
1167
                    'required' => false,
1168
                    'returned' => 'default',
1169
                    'uniqueness' => 'none',
1170
                    'subAttributes' => array(
1171
                        array(
1172
                            'name' => 'type',
1173
                            'description' => 'A label indicating the attribute\'s function, e.g., \'direct\' or \'indirect\'.',
1174
                            'type' => 'string',
1175
                            'canonicalValues' => array(
1176
                                'direct',
1177
                                'indirect',
1178
                            ),
1179
                            'caseExact' => false,
1180
                            'multiValued' => false,
1181
                            'mutability' => 'readOnly',
1182
                            'required' => false,
1183
                            'returned' => 'default',
1184
                            'uniqueness' => 'none',
1185
                        ),
1186
                        array(
1187
                            'name' => 'primary',
1188
                            'description' => 'A boolean value indicating the \'primary\' or preferred attribute value for this attribute.',
1189
                            'type' => 'boolean',
1190
                            'multiValued' => false,
1191
                            'mutability' => 'readOnly',
1192
                            'required' => false,
1193
                            'returned' => 'default',
1194
                            'uniqueness' => 'none',
1195
                        ),
1196
                        array(
1197
                            'name' => 'display',
1198
                            'description' => 'A human-readable name, primarily used for display purposes.',
1199
                            'type' => 'string',
1200
                            'caseExact' => false,
1201
                            'multiValued' => false,
1202
                            'mutability' => 'readOnly',
1203
                            'required' => false,
1204
                            'returned' => 'default',
1205
                            'uniqueness' => 'none',
1206
                        ),
1207
                        array(
1208
                            'name' => 'value',
1209
                            'description' => 'The identifier of the user\'s group.',
1210
                            'type' => 'string',
1211
                            'caseExact' => false,
1212
                            'multiValued' => false,
1213
                            'mutability' => 'readOnly',
1214
                            'required' => false,
1215
                            'returned' => 'default',
1216
                            'uniqueness' => 'none',
1217
                        ),
1218
                        array(
1219
                            'name' => '$ref',
1220
                            'description' => 'The URI of the corresponding \'Group\' resource to which the user belongs.',
1221
                            'type' => 'reference',
1222
                            'multiValued' => false,
1223
                            'mutability' => 'readOnly',
1224
                            'required' => false,
1225
                            'returned' => 'default',
1226
                            'referenceTypes' => array(
1227
                                'Group',
1228
                            ),
1229
                            'uniqueness' => 'none',
1230
                        ),
1231
                    ),
1232
                ),
1233
                array(
1234
                    'name' => 'entitlements',
1235
                    'description' => 'A list of entitlements for the User that represent a thing the User has.',
1236
                    'type' => 'complex',
1237
                    'multiValued' => true,
1238
                    'mutability' => 'readWrite',
1239
                    'required' => false,
1240
                    'returned' => 'default',
1241
                    'uniqueness' => 'none',
1242
                    'subAttributes' => array(
1243
                        array(
1244
                            'name' => 'type',
1245
                            'description' => 'A label indicating the attribute\'s function, e.g., \'work\' or \'home\'.',
1246
                            'type' => 'string',
1247
                            'caseExact' => false,
1248
                            'multiValued' => false,
1249
                            'mutability' => 'readWrite',
1250
                            'required' => false,
1251
                            'returned' => 'default',
1252
                            'uniqueness' => 'none',
1253
                        ),
1254
                        array(
1255
                            'name' => 'primary',
1256
                            'description' => 'A boolean value indicating the \'primary\' or preferred attribute value for this attribute.',
1257
                            'type' => 'boolean',
1258
                            'multiValued' => false,
1259
                            'mutability' => 'readWrite',
1260
                            'required' => false,
1261
                            'returned' => 'default',
1262
                            'uniqueness' => 'none',
1263
                        ),
1264
                        array(
1265
                            'name' => 'display',
1266
                            'description' => 'A human-readable name, primarily used for display purposes.',
1267
                            'type' => 'string',
1268
                            'caseExact' => false,
1269
                            'multiValued' => false,
1270
                            'mutability' => 'readOnly',
1271
                            'required' => false,
1272
                            'returned' => 'default',
1273
                            'uniqueness' => 'none',
1274
                        ),
1275
                        array(
1276
                            'name' => 'value',
1277
                            'description' => 'The value of an entitlement.',
1278
                            'type' => 'string',
1279
                            'caseExact' => false,
1280
                            'multiValued' => false,
1281
                            'mutability' => 'readWrite',
1282
                            'required' => false,
1283
                            'returned' => 'default',
1284
                            'uniqueness' => 'none',
1285
                        ),
1286
                        array(
1287
                            'name' => '$ref',
1288
                            'description' => null,
1289
                            'type' => 'reference',
1290
                            'multiValued' => false,
1291
                            'mutability' => 'readWrite',
1292
                            'required' => false,
1293
                            'returned' => 'default',
1294
                            'referenceTypes' => null,
1295
                            'uniqueness' => 'none',
1296
                        ),
1297
                    ),
1298
                ),
1299
                array(
1300
                    'name' => 'roles',
1301
                    'description' => 'A list of roles for the User that collectively represent who the User is, e.g., \'Student\', \'Faculty\'.',
1302
                    'type' => 'complex',
1303
                    'multiValued' => true,
1304
                    'mutability' => 'readWrite',
1305
                    'required' => false,
1306
                    'returned' => 'default',
1307
                    'uniqueness' => 'none',
1308
                    'subAttributes' => array(
1309
                        array(
1310
                            'name' => 'type',
1311
                            'description' => 'A label indicating the attribute\'s function, e.g., \'work\' or \'home\'.',
1312
                            'type' => 'string',
1313
                            'caseExact' => false,
1314
                            'multiValued' => false,
1315
                            'mutability' => 'readWrite',
1316
                            'required' => false,
1317
                            'returned' => 'default',
1318
                            'uniqueness' => 'none',
1319
                        ),
1320
                        array(
1321
                            'name' => 'primary',
1322
                            'description' => 'A boolean value indicating the \'primary\' or preferred attribute value for this attribute.',
1323
                            'type' => 'boolean',
1324
                            'multiValued' => false,
1325
                            'mutability' => 'readWrite',
1326
                            'required' => false,
1327
                            'returned' => 'default',
1328
                            'uniqueness' => 'none',
1329
                        ),
1330
                        array(
1331
                            'name' => 'display',
1332
                            'description' => 'A human-readable name, primarily used for display purposes.',
1333
                            'type' => 'string',
1334
                            'caseExact' => false,
1335
                            'multiValued' => false,
1336
                            'mutability' => 'readOnly',
1337
                            'required' => false,
1338
                            'returned' => 'default',
1339
                            'uniqueness' => 'none',
1340
                        ),
1341
                        array(
1342
                            'name' => 'value',
1343
                            'description' => 'The value of a role.',
1344
                            'type' => 'string',
1345
                            'caseExact' => false,
1346
                            'multiValued' => false,
1347
                            'mutability' => 'readWrite',
1348
                            'required' => false,
1349
                            'returned' => 'default',
1350
                            'uniqueness' => 'none',
1351
                        ),
1352
                        array(
1353
                            'name' => '$ref',
1354
                            'description' => null,
1355
                            'type' => 'reference',
1356
                            'multiValued' => false,
1357
                            'mutability' => 'readWrite',
1358
                            'required' => false,
1359
                            'returned' => 'default',
1360
                            'referenceTypes' => null,
1361
                            'uniqueness' => 'none',
1362
                        ),
1363
                    ),
1364
                ),
1365
                array(
1366
                    'name' => 'x509Certificates',
1367
                    'description' => 'A list of certificates issued to the User.',
1368
                    'type' => 'complex',
1369
                    'multiValued' => true,
1370
                    'mutability' => 'readWrite',
1371
                    'required' => false,
1372
                    'returned' => 'default',
1373
                    'uniqueness' => 'none',
1374
                    'subAttributes' => array(
1375
                        array(
1376
                            'name' => 'value',
1377
                            'description' => 'The value of an X.509 certificate.',
1378
                            'type' => 'binary',
1379
                            'multiValued' => false,
1380
                            'mutability' => 'readWrite',
1381
                            'required' => false,
1382
                            'returned' => 'default',
1383
                            'uniqueness' => 'none',
1384
                        ),
1385
                        array(
1386
                            'name' => 'type',
1387
                            'description' => null,
1388
                            'type' => 'string',
1389
                            'caseExact' => false,
1390
                            'multiValued' => false,
1391
                            'mutability' => 'readWrite',
1392
                            'required' => false,
1393
                            'returned' => 'default',
1394
                            'uniqueness' => 'none',
1395
                        ),
1396
                        array(
1397
                            'name' => 'primary',
1398
                            'description' => null,
1399
                            'type' => 'boolean',
1400
                            'multiValued' => false,
1401
                            'mutability' => 'readWrite',
1402
                            'required' => false,
1403
                            'returned' => 'default',
1404
                            'uniqueness' => 'none',
1405
                        ),
1406
                        array(
1407
                            'name' => 'display',
1408
                            'description' => null,
1409
                            'type' => 'string',
1410
                            'caseExact' => false,
1411
                            'multiValued' => false,
1412
                            'mutability' => 'readWrite',
1413
                            'required' => false,
1414
                            'returned' => 'default',
1415
                            'uniqueness' => 'none',
1416
                        ),
1417
                        array(
1418
                            'name' => '$ref',
1419
                            'description' => null,
1420
                            'type' => 'reference',
1421
                            'multiValued' => false,
1422
                            'mutability' => 'readWrite',
1423
                            'required' => false,
1424
                            'returned' => 'default',
1425
                            'referenceTypes' => null,
1426
                            'uniqueness' => 'none',
1427
                        ),
1428
                    ),
1429
                ),
1430
                array(
1431
                    'name' => 'schemas',
1432
                    'description' => null,
1433
                    'type' => 'string',
1434
                    'caseExact' => false,
1435
                    'multiValued' => true,
1436
                    'mutability' => 'readWrite',
1437
                    'required' => false,
1438
                    'returned' => 'always',
1439
                    'uniqueness' => 'none',
1440
                ),
1441
                array(
1442
                    'name' => 'id',
1443
                    'description' => 'A unique identifier for a SCIM resource as defined by the service provider.',
1444
                    'type' => 'string',
1445
                    'caseExact' => true,
1446
                    'multiValued' => false,
1447
                    'mutability' => 'readOnly',
1448
                    'required' => false,
1449
                    'returned' => 'always',
1450
                    'uniqueness' => 'server',
1451
                ),
1452
                array(
1453
                    'name' => 'externalId',
1454
                    'description' => 'An identifier for the resource as defined by the provisioning client.',
1455
                    'type' => 'string',
1456
                    'caseExact' => false,
1457
                    'multiValued' => false,
1458
                    'mutability' => 'readWrite',
1459
                    'required' => false,
1460
                    'returned' => 'default',
1461
                    'uniqueness' => 'none',
1462
                ),
1463
                array(
1464
                    'name' => 'meta',
1465
                    'description' => null,
1466
                    'type' => 'complex',
1467
                    'multiValued' => false,
1468
                    'mutability' => 'readOnly',
1469
                    'required' => false,
1470
                    'returned' => 'default',
1471
                    'uniqueness' => 'none',
1472
                    'subAttributes' => array(
1473
                        array(
1474
                            'name' => 'resourceType',
1475
                            'description' => 'The name of the resource type of the resource.',
1476
                            'type' => 'string',
1477
                            'caseExact' => true,
1478
                            'multiValued' => false,
1479
                            'mutability' => 'readOnly',
1480
                            'required' => false,
1481
                            'returned' => 'default',
1482
                            'uniqueness' => 'none',
1483
                        ),
1484
                        array(
1485
                            'name' => 'created',
1486
                            'description' => 'The DateTime that the resource was added to the service provider.',
1487
                            'type' => 'datetime',
1488
                            'multiValued' => false,
1489
                            'mutability' => 'readOnly',
1490
                            'required' => false,
1491
                            'returned' => 'default',
1492
                            'uniqueness' => 'none',
1493
                        ),
1494
                        array(
1495
                            'name' => 'lastModified',
1496
                            'description' => 'The most recent DateTime that the details of this resource were updated at the service provider.',
1497
                            'type' => 'datetime',
1498
                            'multiValued' => false,
1499
                            'mutability' => 'readOnly',
1500
                            'required' => false,
1501
                            'returned' => 'default',
1502
                            'uniqueness' => 'none',
1503
                        ),
1504
                        array(
1505
                            'name' => 'location',
1506
                            'description' => 'The URI of the resource being returned.',
1507
                            'type' => 'reference',
1508
                            'multiValued' => false,
1509
                            'mutability' => 'readOnly',
1510
                            'required' => false,
1511
                            'returned' => 'default',
1512
                            'referenceTypes' => null,
1513
                            'uniqueness' => 'none',
1514
                        ),
1515
                        array(
1516
                            'name' => 'version',
1517
                            'description' => 'The version of the resource being returned.',
1518
                            'type' => 'string',
1519
                            'caseExact' => true,
1520
                            'multiValued' => false,
1521
                            'mutability' => 'readOnly',
1522
                            'required' => false,
1523
                            'returned' => 'default',
1524
                            'uniqueness' => 'none',
1525
                        ),
1526
                    ),
1527
                ),
1528
            ),
1529
            'externalId' => null,
1530
            'meta' => array(
1531
                'resourceType' => 'Schema',
1532
                'created' => '0001-01-01T00:00:00Z',
1533
                'lastModified' => '0001-01-01T00:00:00Z',
1534
                'location' => 'http://localhost:9091/scim/v1/schemas/urn:scim:schemas:core:1.0:User',
1535
                'version' => 'W/"7B32B77F0591B527021ECCD8A548B9E400D4413A"',
1536
            ),
1537
        ),
1538
        ScimConstantsV1::SCHEMA_ENTERPRISE_USER => array(
1539
            'id' => 'urn:scim:schemas:extension:enterprise:1.0',
1540
            'schema' => 'urn:scim:schemas:core:1.0',
1541
            'name' => null,
1542
            'description' => 'Enterprise user.',
1543
            'attributes' => array(
1544
                array(
1545
                    'name' => 'employeeNumber',
1546
                    'description' => null,
1547
                    'type' => 'string',
1548
                    'caseExact' => false,
1549
                    'multiValued' => false,
1550
                    'mutability' => 'readWrite',
1551
                    'required' => false,
1552
                    'returned' => 'default',
1553
                    'uniqueness' => 'none',
1554
                ),
1555
                array(
1556
                    'name' => 'costCenter',
1557
                    'description' => null,
1558
                    'type' => 'string',
1559
                    'caseExact' => false,
1560
                    'multiValued' => false,
1561
                    'mutability' => 'readWrite',
1562
                    'required' => false,
1563
                    'returned' => 'default',
1564
                    'uniqueness' => 'none',
1565
                ),
1566
                array(
1567
                    'name' => 'organization',
1568
                    'description' => null,
1569
                    'type' => 'string',
1570
                    'caseExact' => false,
1571
                    'multiValued' => false,
1572
                    'mutability' => 'readWrite',
1573
                    'required' => false,
1574
                    'returned' => 'default',
1575
                    'uniqueness' => 'none',
1576
                ),
1577
                array(
1578
                    'name' => 'division',
1579
                    'description' => null,
1580
                    'type' => 'string',
1581
                    'caseExact' => false,
1582
                    'multiValued' => false,
1583
                    'mutability' => 'readWrite',
1584
                    'required' => false,
1585
                    'returned' => 'default',
1586
                    'uniqueness' => 'none',
1587
                ),
1588
                array(
1589
                    'name' => 'department',
1590
                    'description' => null,
1591
                    'type' => 'string',
1592
                    'caseExact' => false,
1593
                    'multiValued' => false,
1594
                    'mutability' => 'readWrite',
1595
                    'required' => false,
1596
                    'returned' => 'default',
1597
                    'uniqueness' => 'none',
1598
                ),
1599
                array(
1600
                    'name' => 'manager',
1601
                    'description' => null,
1602
                    'type' => 'complex',
1603
                    'multiValued' => false,
1604
                    'mutability' => 'readWrite',
1605
                    'required' => false,
1606
                    'returned' => 'default',
1607
                    'uniqueness' => 'none',
1608
                    'subAttributes' => array(
1609
                        array(
1610
                            'name' => 'value',
1611
                            'description' => 'The "id" of the SCIM resource representing the user\'s manager.',
1612
                            'type' => 'string',
1613
                            'caseExact' => false,
1614
                            'multiValued' => false,
1615
                            'mutability' => 'readWrite',
1616
                            'required' => false,
1617
                            'returned' => 'default',
1618
                            'uniqueness' => 'none',
1619
                        ),
1620
                        array(
1621
                            'name' => '$ref',
1622
                            'description' => 'The URI of the SCIM resource representing the user\'s manager.',
1623
                            'type' => 'reference',
1624
                            'multiValued' => false,
1625
                            'mutability' => 'readWrite',
1626
                            'required' => false,
1627
                            'returned' => 'default',
1628
                            'referenceTypes' => null,
1629
                            'uniqueness' => 'none',
1630
                        ),
1631
                        array(
1632
                            'name' => 'displayName',
1633
                            'description' => 'The displayName of the user\'s manager.',
1634
                            'type' => 'string',
1635
                            'caseExact' => false,
1636
                            'multiValued' => false,
1637
                            'mutability' => 'readOnly',
1638
                            'required' => false,
1639
                            'returned' => 'default',
1640
                            'uniqueness' => 'none',
1641
                        ),
1642
                    ),
1643
                ),
1644
            ),
1645
            'externalId' => null,
1646
            'meta' => array(
1647
                'resourceType' => 'Schema',
1648
                'created' => '0001-01-01T00:00:00Z',
1649
                'lastModified' => '0001-01-01T00:00:00Z',
1650
                'location' => 'http://localhost:9091/scim/v1/schemas/urn:scim:schemas:extension:enterprise:1.0',
1651
                'version' => 'W/"4E3F49246DCA6C2FC7E7F368DD9A15DB2B22C183"',
1652
            ),
1653
        ),
1654
        ScimConstantsV1::SCHEMA_SERVICE_PROVIDER_CONFIG => array(
1655
            'id' => 'urn:scim:schemas:core:1.0:Service Provider Configuration',
1656
            'schema' => 'urn:scim:schemas:core:1.0',
1657
            'name' => 'Service Provider Configuration',
1658
            'description' => 'Schema for representing the service provider\'s configuration',
1659
            'attributes' => array(
1660
                array(
1661
                    'name' => 'documentationUri',
1662
                    'description' => 'An HTTP-addressable URL pointing to the service provider\'s human-consumable help documentation.',
1663
                    'type' => 'reference',
1664
                    'multiValued' => false,
1665
                    'mutability' => 'readOnly',
1666
                    'required' => false,
1667
                    'returned' => 'default',
1668
                    'referenceTypes' => array(
1669
                        'external',
1670
                    ),
1671
                    'uniqueness' => 'none',
1672
                ),
1673
                array(
1674
                    'name' => 'patch',
1675
                    'description' => 'A complex type that specifies PATCH configuration options.',
1676
                    'type' => 'complex',
1677
                    'multiValued' => false,
1678
                    'mutability' => 'readOnly',
1679
                    'required' => true,
1680
                    'returned' => 'default',
1681
                    'uniqueness' => 'none',
1682
                    'subAttributes' => array(
1683
                        array(
1684
                            'name' => 'supported',
1685
                            'description' => 'A boolean value specifying whether or not the operation is supported.',
1686
                            'type' => 'boolean',
1687
                            'multiValued' => false,
1688
                            'mutability' => 'readOnly',
1689
                            'required' => true,
1690
                            'returned' => 'default',
1691
                            'uniqueness' => 'none',
1692
                        ),
1693
                    ),
1694
                ),
1695
                array(
1696
                    'name' => 'bulk',
1697
                    'description' => 'A complex type that specifies bulk configuration options.',
1698
                    'type' => 'complex',
1699
                    'multiValued' => false,
1700
                    'mutability' => 'readOnly',
1701
                    'required' => true,
1702
                    'returned' => 'default',
1703
                    'uniqueness' => 'none',
1704
                    'subAttributes' => array(
1705
                        array(
1706
                            'name' => 'maxOperations',
1707
                            'description' => 'An integer value specifying the maximum number of operations.',
1708
                            'type' => 'integer',
1709
                            'multiValued' => false,
1710
                            'mutability' => 'readOnly',
1711
                            'required' => true,
1712
                            'returned' => 'default',
1713
                            'uniqueness' => 'none',
1714
                        ),
1715
                        array(
1716
                            'name' => 'maxPayloadSize',
1717
                            'description' => 'An integer value specifying the maximum payload size in bytes.',
1718
                            'type' => 'integer',
1719
                            'multiValued' => false,
1720
                            'mutability' => 'readOnly',
1721
                            'required' => true,
1722
                            'returned' => 'default',
1723
                            'uniqueness' => 'none',
1724
                        ),
1725
                        array(
1726
                            'name' => 'supported',
1727
                            'description' => 'A boolean value specifying whether or not the operation is supported.',
1728
                            'type' => 'boolean',
1729
                            'multiValued' => false,
1730
                            'mutability' => 'readOnly',
1731
                            'required' => true,
1732
                            'returned' => 'default',
1733
                            'uniqueness' => 'none',
1734
                        ),
1735
                    ),
1736
                ),
1737
                array(
1738
                    'name' => 'filter',
1739
                    'description' => 'A complex type that specifies FILTER options.',
1740
                    'type' => 'complex',
1741
                    'multiValued' => false,
1742
                    'mutability' => 'readOnly',
1743
                    'required' => true,
1744
                    'returned' => 'default',
1745
                    'uniqueness' => 'none',
1746
                    'subAttributes' => array(
1747
                        array(
1748
                            'name' => 'maxResults',
1749
                            'description' => 'An integer value specifying the maximum number of resources returned in a response.',
1750
                            'type' => 'integer',
1751
                            'multiValued' => false,
1752
                            'mutability' => 'readOnly',
1753
                            'required' => true,
1754
                            'returned' => 'default',
1755
                            'uniqueness' => 'none',
1756
                        ),
1757
                        array(
1758
                            'name' => 'supported',
1759
                            'description' => 'A boolean value specifying whether or not the operation is supported.',
1760
                            'type' => 'boolean',
1761
                            'multiValued' => false,
1762
                            'mutability' => 'readOnly',
1763
                            'required' => true,
1764
                            'returned' => 'default',
1765
                            'uniqueness' => 'none',
1766
                        ),
1767
                    ),
1768
                ),
1769
                array(
1770
                    'name' => 'changePassword',
1771
                    'description' => 'A complex type that specifies configuration options related to changing a password.',
1772
                    'type' => 'complex',
1773
                    'multiValued' => false,
1774
                    'mutability' => 'readOnly',
1775
                    'required' => true,
1776
                    'returned' => 'default',
1777
                    'uniqueness' => 'none',
1778
                    'subAttributes' => array(
1779
                        array(
1780
                            'name' => 'supported',
1781
                            'description' => 'A boolean value specifying whether or not the operation is supported.',
1782
                            'type' => 'boolean',
1783
                            'multiValued' => false,
1784
                            'mutability' => 'readOnly',
1785
                            'required' => true,
1786
                            'returned' => 'default',
1787
                            'uniqueness' => 'none',
1788
                        ),
1789
                    ),
1790
                ),
1791
                array(
1792
                    'name' => 'sort',
1793
                    'description' => 'A complex type that specifies Sort configuration options.',
1794
                    'type' => 'complex',
1795
                    'multiValued' => false,
1796
                    'mutability' => 'readOnly',
1797
                    'required' => true,
1798
                    'returned' => 'default',
1799
                    'uniqueness' => 'none',
1800
                    'subAttributes' => array(
1801
                        array(
1802
                            'name' => 'supported',
1803
                            'description' => 'A boolean value specifying whether or not the operation is supported.',
1804
                            'type' => 'boolean',
1805
                            'multiValued' => false,
1806
                            'mutability' => 'readOnly',
1807
                            'required' => true,
1808
                            'returned' => 'default',
1809
                            'uniqueness' => 'none',
1810
                        ),
1811
                    ),
1812
                ),
1813
                array(
1814
                    'name' => 'etag',
1815
                    'description' => 'A complex type that specifies ETag configuration options.',
1816
                    'type' => 'complex',
1817
                    'multiValued' => false,
1818
                    'mutability' => 'readOnly',
1819
                    'required' => true,
1820
                    'returned' => 'default',
1821
                    'uniqueness' => 'none',
1822
                    'subAttributes' => array(
1823
                        array(
1824
                            'name' => 'isWeak',
1825
                            'description' => null,
1826
                            'type' => 'boolean',
1827
                            'multiValued' => false,
1828
                            'mutability' => 'readWrite',
1829
                            'required' => false,
1830
                            'returned' => 'default',
1831
                            'uniqueness' => 'none',
1832
                        ),
1833
                        array(
1834
                            'name' => 'supported',
1835
                            'description' => null,
1836
                            'type' => 'boolean',
1837
                            'multiValued' => false,
1838
                            'mutability' => 'readWrite',
1839
                            'required' => false,
1840
                            'returned' => 'default',
1841
                            'uniqueness' => 'none',
1842
                        ),
1843
                    ),
1844
                ),
1845
                array(
1846
                    'name' => 'authenticationSchemes',
1847
                    'description' => 'A multi-valued complex type that specifies supported authentication scheme properties.',
1848
                    'type' => 'complex',
1849
                    'multiValued' => true,
1850
                    'mutability' => 'readOnly',
1851
                    'required' => true,
1852
                    'returned' => 'default',
1853
                    'uniqueness' => 'none',
1854
                    'subAttributes' => array(
1855
                        array(
1856
                            'name' => 'name',
1857
                            'description' => 'The common authentication scheme name, e.g., HTTP Basic.',
1858
                            'type' => 'string',
1859
                            'caseExact' => false,
1860
                            'multiValued' => false,
1861
                            'mutability' => 'readOnly',
1862
                            'required' => true,
1863
                            'returned' => 'default',
1864
                            'uniqueness' => 'none',
1865
                        ),
1866
                        array(
1867
                            'name' => 'description',
1868
                            'description' => 'A description of the authentication scheme.',
1869
                            'type' => 'string',
1870
                            'caseExact' => false,
1871
                            'multiValued' => false,
1872
                            'mutability' => 'readOnly',
1873
                            'required' => true,
1874
                            'returned' => 'default',
1875
                            'uniqueness' => 'none',
1876
                        ),
1877
                        array(
1878
                            'name' => 'specUri',
1879
                            'description' => 'An HTTP-addressable URL pointing to the authentication scheme\'s specification.',
1880
                            'type' => 'reference',
1881
                            'multiValued' => false,
1882
                            'mutability' => 'readOnly',
1883
                            'required' => false,
1884
                            'returned' => 'default',
1885
                            'referenceTypes' => array(
1886
                                'external',
1887
                            ),
1888
                            'uniqueness' => 'none',
1889
                        ),
1890
                        array(
1891
                            'name' => 'documentationUri',
1892
                            'description' => 'An HTTP-addressable URL pointing to the authentication scheme\'s usage documentation.',
1893
                            'type' => 'reference',
1894
                            'multiValued' => false,
1895
                            'mutability' => 'readOnly',
1896
                            'required' => false,
1897
                            'returned' => 'default',
1898
                            'referenceTypes' => array(
1899
                                'external',
1900
                            ),
1901
                            'uniqueness' => 'none',
1902
                        ),
1903
                        array(
1904
                            'name' => 'type',
1905
                            'description' => 'The authentication scheme.',
1906
                            'type' => 'string',
1907
                            'caseExact' => false,
1908
                            'multiValued' => false,
1909
                            'mutability' => 'readOnly',
1910
                            'required' => true,
1911
                            'returned' => 'default',
1912
                            'uniqueness' => 'none',
1913
                        ),
1914
                        array(
1915
                            'name' => 'primary',
1916
                            'description' => null,
1917
                            'type' => 'boolean',
1918
                            'multiValued' => false,
1919
                            'mutability' => 'readWrite',
1920
                            'required' => false,
1921
                            'returned' => 'default',
1922
                            'uniqueness' => 'none',
1923
                        ),
1924
                        array(
1925
                            'name' => 'display',
1926
                            'description' => null,
1927
                            'type' => 'string',
1928
                            'caseExact' => false,
1929
                            'multiValued' => false,
1930
                            'mutability' => 'readWrite',
1931
                            'required' => false,
1932
                            'returned' => 'default',
1933
                            'uniqueness' => 'none',
1934
                        ),
1935
                        array(
1936
                            'name' => 'value',
1937
                            'description' => null,
1938
                            'type' => 'string',
1939
                            'caseExact' => false,
1940
                            'multiValued' => false,
1941
                            'mutability' => 'readWrite',
1942
                            'required' => false,
1943
                            'returned' => 'default',
1944
                            'uniqueness' => 'none',
1945
                        ),
1946
                        array(
1947
                            'name' => '$ref',
1948
                            'description' => null,
1949
                            'type' => 'reference',
1950
                            'multiValued' => false,
1951
                            'mutability' => 'readWrite',
1952
                            'required' => false,
1953
                            'returned' => 'default',
1954
                            'referenceTypes' => null,
1955
                            'uniqueness' => 'none',
1956
                        ),
1957
                    ),
1958
                ),
1959
                array(
1960
                    'name' => 'schemas',
1961
                    'description' => null,
1962
                    'type' => 'string',
1963
                    'caseExact' => false,
1964
                    'multiValued' => true,
1965
                    'mutability' => 'readWrite',
1966
                    'required' => false,
1967
                    'returned' => 'always',
1968
                    'uniqueness' => 'none',
1969
                ),
1970
                array(
1971
                    'name' => 'id',
1972
                    'description' => 'A unique identifier for a SCIM resource as defined by the service provider.',
1973
                    'type' => 'string',
1974
                    'caseExact' => false,
1975
                    'multiValued' => false,
1976
                    'mutability' => 'readWrite',
1977
                    'required' => false,
1978
                    'returned' => 'never',
1979
                    'uniqueness' => 'none',
1980
                ),
1981
                array(
1982
                    'name' => 'externalId',
1983
                    'description' => 'An identifier for the resource as defined by the provisioning client.',
1984
                    'type' => 'string',
1985
                    'caseExact' => false,
1986
                    'multiValued' => false,
1987
                    'mutability' => 'readWrite',
1988
                    'required' => false,
1989
                    'returned' => 'never',
1990
                    'uniqueness' => 'none',
1991
                ),
1992
                array(
1993
                    'name' => 'meta',
1994
                    'description' => null,
1995
                    'type' => 'complex',
1996
                    'multiValued' => false,
1997
                    'mutability' => 'readWrite',
1998
                    'required' => false,
1999
                    'returned' => 'default',
2000
                    'uniqueness' => 'none',
2001
                    'subAttributes' => array(
2002
                        array(
2003
                            'name' => 'resourceType',
2004
                            'description' => 'The name of the resource type of the resource.',
2005
                            'type' => 'string',
2006
                            'caseExact' => true,
2007
                            'multiValued' => false,
2008
                            'mutability' => 'readOnly',
2009
                            'required' => false,
2010
                            'returned' => 'default',
2011
                            'uniqueness' => 'none',
2012
                        ),
2013
                        array(
2014
                            'name' => 'created',
2015
                            'description' => 'The DateTime that the resource was added to the service provider.',
2016
                            'type' => 'datetime',
2017
                            'multiValued' => false,
2018
                            'mutability' => 'readOnly',
2019
                            'required' => false,
2020
                            'returned' => 'default',
2021
                            'uniqueness' => 'none',
2022
                        ),
2023
                        array(
2024
                            'name' => 'lastModified',
2025
                            'description' => 'The most recent DateTime that the details of this resource were updated at the service provider.',
2026
                            'type' => 'datetime',
2027
                            'multiValued' => false,
2028
                            'mutability' => 'readOnly',
2029
                            'required' => false,
2030
                            'returned' => 'default',
2031
                            'uniqueness' => 'none',
2032
                        ),
2033
                        array(
2034
                            'name' => 'location',
2035
                            'description' => 'The URI of the resource being returned.',
2036
                            'type' => 'reference',
2037
                            'multiValued' => false,
2038
                            'mutability' => 'readOnly',
2039
                            'required' => false,
2040
                            'returned' => 'default',
2041
                            'referenceTypes' => null,
2042
                            'uniqueness' => 'none',
2043
                        ),
2044
                        array(
2045
                            'name' => 'version',
2046
                            'description' => 'The version of the resource being returned.',
2047
                            'type' => 'string',
2048
                            'caseExact' => true,
2049
                            'multiValued' => false,
2050
                            'mutability' => 'readOnly',
2051
                            'required' => false,
2052
                            'returned' => 'default',
2053
                            'uniqueness' => 'none',
2054
                        ),
2055
                    ),
2056
                ),
2057
            ),
2058
            'externalId' => null,
2059
            'meta' => array(
2060
                'resourceType' => 'Schema',
2061
                'created' => '0001-01-01T00:00:00Z',
2062
                'lastModified' => '0001-01-01T00:00:00Z',
2063
                'location' => 'http://localhost:9091/scim/v1/schemas/urn:scim:schemas:core:1.0:Service%20Provider%20Configuration',
2064
                'version' => 'W/"7D42A92B1CF945D7A8572A34DBF6D4F4960B856B"',
2065
            ),
2066
        ),
2067
    );
2068
2069
    public function __construct($schemasEndpointUrl = null)
2070
    {
2071
        parent::__construct($schemasEndpointUrl ?: 'http://localhost/'.ScimConstantsV1::ENDPOINT_SCHEMAS);
2072
    }
2073
2074
    protected function getSchemaClass()
2075
    {
2076
        return Schema::class;
2077
    }
2078
2079
    /**
2080
     * @return Schema
2081
     */
2082
    public function getGroup()
2083
    {
2084
        return $this->get(ScimConstantsV1::SCHEMA_GROUP);
2085
    }
2086
2087
    /**
2088
     * @return Schema
2089
     */
2090
    public function getSchema()
2091
    {
2092
        return $this->get(ScimConstantsV1::SCHEMA_SCHEMA);
2093
    }
2094
2095
    /**
2096
     * @return Schema
2097
     */
2098
    public function getUser()
2099
    {
2100
        return $this->get(ScimConstantsV1::SCHEMA_USER);
2101
    }
2102
2103
    /**
2104
     * @return Schema
2105
     */
2106
    public function getEnterpriseUser()
2107
    {
2108
        return $this->get(ScimConstantsV1::SCHEMA_ENTERPRISE_USER);
2109
    }
2110
2111
    /**
2112
     * @return Schema
2113
     */
2114
    public function getServiceProviderConfig()
2115
    {
2116
        return $this->get(ScimConstantsV1::SCHEMA_SERVICE_PROVIDER_CONFIG);
2117
    }
2118
}
2119