arelle-release 2.37.17__py3-none-any.whl → 2.37.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of arelle-release might be problematic. Click here for more details.

Files changed (54) hide show
  1. arelle/CntlrWinMain.py +4 -1
  2. arelle/ModelValue.py +1 -0
  3. arelle/PythonUtil.py +132 -24
  4. arelle/ViewWinTree.py +15 -9
  5. arelle/_version.py +2 -2
  6. arelle/plugin/OimTaxonomy/ModelValueMore.py +15 -0
  7. arelle/plugin/OimTaxonomy/ValidateDTS.py +484 -0
  8. arelle/plugin/OimTaxonomy/ViewXbrlTxmyObj.py +240 -0
  9. arelle/plugin/OimTaxonomy/XbrlAbstract.py +16 -0
  10. arelle/plugin/OimTaxonomy/XbrlConcept.py +67 -0
  11. arelle/plugin/OimTaxonomy/XbrlConst.py +261 -0
  12. arelle/plugin/OimTaxonomy/XbrlCube.py +91 -0
  13. arelle/plugin/OimTaxonomy/XbrlDimension.py +38 -0
  14. arelle/plugin/OimTaxonomy/XbrlDts.py +152 -0
  15. arelle/plugin/OimTaxonomy/XbrlEntity.py +16 -0
  16. arelle/plugin/OimTaxonomy/XbrlGroup.py +22 -0
  17. arelle/plugin/OimTaxonomy/XbrlImportedTaxonomy.py +22 -0
  18. arelle/plugin/OimTaxonomy/XbrlLabel.py +31 -0
  19. arelle/plugin/OimTaxonomy/XbrlNetwork.py +100 -0
  20. arelle/plugin/OimTaxonomy/XbrlProperty.py +28 -0
  21. arelle/plugin/OimTaxonomy/XbrlReference.py +33 -0
  22. arelle/plugin/OimTaxonomy/XbrlReport.py +24 -0
  23. arelle/plugin/OimTaxonomy/XbrlTableTemplate.py +35 -0
  24. arelle/plugin/OimTaxonomy/XbrlTaxonomy.py +93 -0
  25. arelle/plugin/OimTaxonomy/XbrlTaxonomyObject.py +154 -0
  26. arelle/plugin/OimTaxonomy/XbrlTransform.py +17 -0
  27. arelle/plugin/OimTaxonomy/XbrlTypes.py +23 -0
  28. arelle/plugin/OimTaxonomy/XbrlUnit.py +17 -0
  29. arelle/plugin/OimTaxonomy/__init__.py +1038 -0
  30. arelle/plugin/OimTaxonomy/resources/iso4217.json +4479 -0
  31. arelle/plugin/OimTaxonomy/resources/oim-taxonomy-schema.json +935 -0
  32. arelle/plugin/OimTaxonomy/resources/ref.json +333 -0
  33. arelle/plugin/OimTaxonomy/resources/transform-types.json +2481 -0
  34. arelle/plugin/OimTaxonomy/resources/types.json +727 -0
  35. arelle/plugin/OimTaxonomy/resources/utr.json +3046 -0
  36. arelle/plugin/OimTaxonomy/resources/xbrlSpec.json +1082 -0
  37. arelle/plugin/saveOIMTaxonomy.py +311 -0
  38. arelle/plugin/validate/NL/PluginValidationDataExtension.py +36 -2
  39. arelle/plugin/validate/NL/__init__.py +3 -0
  40. arelle/plugin/validate/NL/rules/nl_kvk.py +84 -2
  41. {arelle_release-2.37.17.dist-info → arelle_release-2.37.19.dist-info}/METADATA +2 -1
  42. {arelle_release-2.37.17.dist-info → arelle_release-2.37.19.dist-info}/RECORD +54 -19
  43. tests/integration_tests/validation/README.md +2 -0
  44. tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py +15 -4
  45. tests/integration_tests/validation/run_conformance_suites.py +10 -1
  46. tests/integration_tests/validation/validation_util.py +10 -5
  47. tests/unit_tests/arelle/test_frozen_dict.py +176 -0
  48. tests/unit_tests/arelle/test_frozen_ordered_set.py +315 -0
  49. tests/unit_tests/arelle/test_import.py +31 -0
  50. tests/unit_tests/arelle/test_ordered_set.py +272 -0
  51. {arelle_release-2.37.17.dist-info → arelle_release-2.37.19.dist-info}/WHEEL +0 -0
  52. {arelle_release-2.37.17.dist-info → arelle_release-2.37.19.dist-info}/entry_points.txt +0 -0
  53. {arelle_release-2.37.17.dist-info → arelle_release-2.37.19.dist-info}/licenses/LICENSE.md +0 -0
  54. {arelle_release-2.37.17.dist-info → arelle_release-2.37.19.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,935 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "XBRL Taxonomy Model",
4
+ "type": "object",
5
+ "properties": {
6
+ "documentInfo": {
7
+ "type": "object",
8
+ "properties": {
9
+ "documentType": {
10
+ "type": "string",
11
+ "enum": ["https://xbrl.org/2025/taxonomy"]
12
+ },
13
+ "namespaces": {
14
+ "type": "object",
15
+ "additionalProperties": {
16
+ "type": "string",
17
+ "format": "uri"
18
+ }
19
+ },
20
+ "documentNamespace": {
21
+ "type": "string"
22
+ },
23
+ "urlMapping": {
24
+ "type": "object",
25
+ "additionalProperties": {
26
+ "type": "string"
27
+ }
28
+ }
29
+ },
30
+ "required": ["documentType", "namespaces"]
31
+ },
32
+ "taxonomy": {
33
+ "type": "object",
34
+ "properties": {
35
+ "name": { "$ref": "#/definitions/QName" },
36
+ "resolved": {
37
+ "type": "boolean"
38
+ },
39
+ "frameworkName": {
40
+ "type": "string"
41
+ },
42
+ "version": {
43
+ "type": "string"
44
+ },
45
+ "importedTaxonomies": {
46
+ "type": "array",
47
+ "items": {
48
+ "type": "object",
49
+ "properties": {
50
+ "taxonomyName": { "$ref": "#/definitions/QName" },
51
+ "includeObjects": {
52
+ "type": "array",
53
+ "items": { "$ref": "#/definitions/QName" }
54
+ },
55
+ "includeObjectTypes": {
56
+ "type": "array",
57
+ "items": { "$ref": "#/definitions/QName" }
58
+ },
59
+ "excludeLabels": {
60
+ "type": "boolean"
61
+ },
62
+ "followImport": {
63
+ "type": "boolean"
64
+ }
65
+ },
66
+ "required": ["taxonomyName"],
67
+ "additionalProperties": false
68
+ }
69
+ },
70
+ "propertyTypes": {
71
+ "type": "array",
72
+ "items": {
73
+ "type": "object",
74
+ "properties": {
75
+ "name": { "$ref": "#/definitions/QName" },
76
+ "dataType": { "$ref": "#/definitions/QName" },
77
+ "definitional": {
78
+ "type": "boolean"
79
+ },
80
+ "allowedObjects": {
81
+ "type": "array",
82
+ "items":{ "$ref": "#/definitions/QName" }
83
+ },
84
+ "allowedAsLinkProperty": {
85
+ "type": "boolean"
86
+ }
87
+ },
88
+ "required": ["name", "dataType"],
89
+ "additionalProperties": false
90
+ }
91
+ },
92
+ "abstracts": {
93
+ "type": "array",
94
+ "items": {
95
+ "type": "object",
96
+ "properties": {
97
+ "name": { "$ref": "#/definitions/QName" },
98
+ "properties": {
99
+ "type": "array",
100
+ "items": { "$ref": "#/definitions/propertyObject"},
101
+ "description": "Additional properties associated with the abstract."
102
+ }
103
+ },
104
+ "required": ["name"],
105
+ "additionalProperties": false
106
+ }
107
+ },
108
+ "members": {
109
+ "type": "array",
110
+ "items": {
111
+ "type": "object",
112
+ "properties": {
113
+ "name": { "$ref": "#/definitions/QName" },
114
+ "properties": {
115
+ "type": "array",
116
+ "items": { "$ref": "#/definitions/propertyObject"},
117
+ "description": "Additional properties associated with the member."
118
+ }
119
+ },
120
+ "required": ["name"],
121
+ "additionalProperties": false
122
+ }
123
+ },
124
+ "concepts": {
125
+ "type": "array",
126
+ "items": {
127
+ "type": "object",
128
+ "properties": {
129
+ "name": { "$ref": "#/definitions/QName" },
130
+ "dataType": { "$ref": "#/definitions/QName" },
131
+ "periodType": {
132
+ "type": "string",
133
+ "enum": ["instant", "duration", "none"]
134
+ },
135
+ "enumerationDomain": { "$ref": "#/definitions/QName" },
136
+ "nillable": {
137
+ "type": "boolean"
138
+ },
139
+ "properties": {
140
+ "type": "array",
141
+ "items": { "$ref": "#/definitions/propertyObject"},
142
+ "description": "Additional properties associated with the concept."
143
+ }
144
+ },
145
+ "required": ["name", "dataType", "periodType"],
146
+ "additionalProperties": false
147
+ }
148
+ },
149
+ "cubes": {
150
+ "type": "array",
151
+ "items": {
152
+ "type": "object",
153
+ "properties": {
154
+ "name": { "$ref": "#/definitions/QName" },
155
+ "cubeType": { "$ref": "#/definitions/QName" },
156
+ "cubeDimensions": {
157
+ "type": "array",
158
+ "description": "Ordered set of cubeDimension objects used on the cube.",
159
+ "items": {
160
+ "type": "object",
161
+ "properties": {
162
+ "dimensionName": { "$ref": "#/definitions/QName" },
163
+ "domainName": { "$ref": "#/definitions/QName" },
164
+ "typedSort": {
165
+ "type": "string",
166
+ "enum": ["asc", "desc"],
167
+ "description": "Sort order for typed dimension (asc or desc)."
168
+ },
169
+ "allowDomainFacts": {
170
+ "type": "boolean",
171
+ "description": "If facts not identified with the dimension are included in the cube."
172
+ },
173
+ "periodConstraints": {
174
+ "type": "array",
175
+ "description": "Ordered set of periodConstraint objects (only for xbrl:period core dimension).",
176
+ "items": {
177
+ "type": "object",
178
+ "properties": {
179
+ "periodType": {
180
+ "type": "string",
181
+ "enum": ["instant", "duration", "none"],
182
+ "description": "Indicates if the period is instant or duration."
183
+ },
184
+ "timeSpan": {
185
+ "type": "string",
186
+ "pattern": "^P(?!$)(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$",
187
+ "description": "Duration of time using XML duration type."
188
+ },
189
+ "periodFormat": {
190
+ "type": "string",
191
+ "description": "Duration of time with an end date."
192
+ },
193
+ "monthDay": { "$ref": "#/definitions/dateResolutionObject" },
194
+ "endDate": { "$ref": "#/definitions/dateResolutionObject" },
195
+ "startDate": { "$ref": "#/definitions/dateResolutionObject" },
196
+ "onOrAfter": { "$ref": "#/definitions/dateResolutionObject" },
197
+ "onOrBefore": { "$ref": "#/definitions/dateResolutionObject" }
198
+ },
199
+ "required": ["periodType"],
200
+ "additionalProperties": false
201
+ }
202
+ }
203
+ },
204
+ "required": ["dimensionName"],
205
+ "additionalProperties": false
206
+ },
207
+ "minItems": 1
208
+ },
209
+ "cubeNetworks": {
210
+ "type": "array",
211
+ "description": "Ordered set of network object QNames related to the cube.",
212
+ "items": { "$ref": "#/definitions/QName" }
213
+ },
214
+ "excludeCubes": {
215
+ "type": "array",
216
+ "description": "Ordered set of cube object QNames to be excluded from the cube.",
217
+ "items": { "$ref": "#/definitions/QName" }
218
+ },
219
+ "cubeComplete": {
220
+ "type": "boolean",
221
+ "description": "Indicates if all cells in the cube are required to have a value."
222
+ },
223
+ "properties": {
224
+ "type": "array",
225
+ "items": { "$ref": "#/definitions/propertyObject"},
226
+ "description": "Additional properties associated with the cube."
227
+ }
228
+ },
229
+ "required": ["name", "cubeDimensions"],
230
+ "additionalProperties": false
231
+ }
232
+ },
233
+ "dimensions": {
234
+ "type": "array",
235
+ "items": {
236
+ "type": "object",
237
+ "properties": {
238
+ "name": { "$ref": "#/definitions/QName" },
239
+ "domainDataType": { "$ref": "#/definitions/QName" },
240
+ "domainRoot": { "$ref": "#/definitions/QName" },
241
+ "cubeTypes": {
242
+ "type": "array",
243
+ "items": { "$ref": "#/definitions/QName" }
244
+ },
245
+ "properties": {
246
+ "type": "array",
247
+ "items": { "$ref": "#/definitions/propertyObject"},
248
+ "description": "Additional properties associated with the dimension."
249
+ }
250
+ },
251
+ "required": ["name"],
252
+ "oneOf": [
253
+ { "required": ["domainDataType"] },
254
+ { "required": ["domainRoot"] }
255
+ ],
256
+ "additionalProperties": false
257
+ }
258
+ },
259
+ "domains": {
260
+ "type": "array",
261
+ "items": {
262
+ "type": "object",
263
+ "properties": {
264
+ "name": { "$ref": "#/definitions/QName" },
265
+ "root": { "$ref": "#/definitions/QName" },
266
+ "relationships": {
267
+ "type": "array",
268
+ "items": {
269
+ "type": "object",
270
+ "properties": {
271
+ "source": { "$ref": "#/definitions/QName" },
272
+ "target": { "$ref": "#/definitions/QName" },
273
+ "order": {
274
+ "type": "number"
275
+ },
276
+ "weight": {
277
+ "type": "number"
278
+ },
279
+ "preferredlabel": { "$ref": "#/definitions/QName" },
280
+ "usable": {
281
+ "type": "boolean"
282
+ },
283
+ "properties": {
284
+ "type": "array",
285
+ "items": { "$ref": "#/definitions/propertyObject" },
286
+ "description": "Additional properties associated with the relationship."
287
+ }
288
+ },
289
+ "required": ["source", "target"],
290
+ "additionalProperties": false
291
+ }
292
+ },
293
+ "extendTargetName": { "$ref": "#/definitions/QName" },
294
+ "properties": {
295
+ "type": "array",
296
+ "items": { "$ref": "#/definitions/propertyObject"},
297
+ "description": "Additional properties associated with the relationship."
298
+ }
299
+ },
300
+ "oneOf": [
301
+ { "required": ["name", "root"] },
302
+ { "required": ["extendTargetName"] }
303
+ ],
304
+ "not": {
305
+ "anyOf": [
306
+ { "required": ["extendTargetName", "root"] },
307
+ { "required": ["extendTargetName", "name"] }
308
+ ]
309
+ },
310
+ "additionalProperties": false
311
+ }
312
+ },
313
+ "domainRoots": {
314
+ "type": "array",
315
+ "items": {
316
+ "type": "object",
317
+ "properties": {
318
+ "name": { "$ref": "#/definitions/QName" },
319
+ "properties": {
320
+ "type": "array",
321
+ "items": { "$ref": "#/definitions/propertyObject" },
322
+ "description": "Additional properties associated with the label."
323
+ }
324
+ },
325
+ "required": ["name"],
326
+ "additionalProperties": false
327
+ }
328
+ },
329
+ "networks": {
330
+ "type": "array",
331
+ "items": {
332
+ "type": "object",
333
+ "properties": {
334
+ "name": { "$ref": "#/definitions/QName" },
335
+ "relationshipTypeName": { "$ref": "#/definitions/QName" },
336
+ "roots": {
337
+ "type": "array",
338
+ "items": { "$ref": "#/definitions/QName" }
339
+ },
340
+ "relationships": {
341
+ "type": "array",
342
+ "items": {
343
+ "type": "object",
344
+ "properties": {
345
+ "source": { "$ref": "#/definitions/QName" },
346
+ "target": { "$ref": "#/definitions/QName" },
347
+ "order": {
348
+ "type": "number"
349
+ },
350
+ "weight": {
351
+ "type": "number"
352
+ },
353
+ "preferredLabel": { "$ref": "#/definitions/QName" },
354
+ "useable": {
355
+ "type": "boolean"
356
+ },
357
+ "properties": {
358
+ "type": "array",
359
+ "items": { "$ref": "#/definitions/propertyObject" },
360
+ "description": "Additional properties associated with the label."
361
+ }
362
+ },
363
+ "required": ["source", "target"],
364
+ "additionalProperties": false
365
+ }
366
+ },
367
+ "extendTargetName": { "$ref": "#/definitions/QName" },
368
+ "properties": {
369
+ "type": "array",
370
+ "items": { "$ref": "#/definitions/propertyObject" },
371
+ "description": "Additional properties associated with the label."
372
+ }
373
+ },
374
+ "oneOf": [
375
+ { "required": ["name", "relationshipTypeName"] },
376
+ { "required": ["extendTargetName"] }
377
+ ],
378
+ "not": {
379
+ "anyOf": [
380
+ { "required": ["extendTargetName", "relationshipTypeName"] },
381
+ { "required": ["extendTargetName", "name"] }
382
+ ]
383
+ },
384
+ "additionalProperties": false
385
+ }
386
+ },
387
+ "entities": {
388
+ "type": "array",
389
+ "items": {
390
+ "type": "object",
391
+ "properties": {
392
+ "name": { "$ref": "#/definitions/SQName" },
393
+ "properties": {
394
+ "type": "array",
395
+ "items": { "$ref": "#/definitions/propertyObject" },
396
+ "description": "Additional properties associated with the label."
397
+ }
398
+ },
399
+ "required": ["name"],
400
+ "additionalProperties": false
401
+ }
402
+ },
403
+ "properties": {
404
+ "type": "array",
405
+ "items": { "$ref": "#/definitions/propertyObject" },
406
+ "description": "Additional properties associated with the label."
407
+ },
408
+ "units": {
409
+ "type": "array",
410
+ "items": {
411
+ "type": "object",
412
+ "properties": {
413
+ "name": { "$ref": "#/definitions/QName" },
414
+ "dataType": { "$ref": "#/definitions/QName" },
415
+ "dataTypeNumerator": { "$ref": "#/definitions/QName" },
416
+ "dataTypeDenominator": { "$ref": "#/definitions/QName" }
417
+ },
418
+ "required": ["name", "dataType"],
419
+ "additionalProperties": false
420
+ }
421
+ },
422
+ "groups": {
423
+ "type": "array",
424
+ "items": {
425
+ "type": "object",
426
+ "properties": {
427
+ "name": { "$ref": "#/definitions/QName" },
428
+ "groupURI": {
429
+ "type": "string",
430
+ "format": "uri"
431
+ },
432
+ "properties": {
433
+ "type": "array",
434
+ "items": { "$ref": "#/definitions/propertyObject" },
435
+ "description": "Additional properties associated with the label."
436
+ }
437
+ },
438
+ "required": ["name"],
439
+ "additionalProperties": false
440
+ }
441
+ },
442
+ "groupContents": {
443
+ "type": "array",
444
+ "items": {
445
+ "type": "object",
446
+ "properties": {
447
+ "groupName": { "$ref": "#/definitions/QName" },
448
+ "relatedNames": {
449
+ "type": "array",
450
+ "items": { "$ref": "#/definitions/QName" }
451
+ }
452
+ },
453
+ "required": ["groupName", "relatedNames"],
454
+ "additionalProperties": false
455
+ }
456
+ },
457
+ "relationshipTypes": {
458
+ "type": "array",
459
+ "items": {
460
+ "type": "object",
461
+ "properties": {
462
+ "name": { "$ref": "#/definitions/QName" },
463
+ "uri": {
464
+ "type": "string",
465
+ "format": "uri"
466
+ },
467
+ "cycles": {
468
+ "type": "string",
469
+ "enum": ["any", "none", "undirected"]
470
+ },
471
+ "allowedLinkProperties": {
472
+ "type": "array",
473
+ "items": { "$ref": "#/definitions/QName" }
474
+ },
475
+ "requiredLinkProperties": {
476
+ "type": "array",
477
+ "items": { "$ref": "#/definitions/QName" }
478
+ },
479
+ "sourceObjects": {
480
+ "type": "array",
481
+ "items": { "$ref": "#/definitions/QName" }
482
+ },
483
+ "targetObjects": {
484
+ "type": "array",
485
+ "items": { "$ref": "#/definitions/QName" }
486
+ }
487
+ },
488
+ "required": ["name", "cycles"],
489
+ "additionalProperties": false
490
+ }
491
+ },
492
+ "labels": {
493
+ "type": "array",
494
+ "items": {
495
+ "type": "object",
496
+ "properties": {
497
+ "relatedName": { "$ref": "#/definitions/QName" },
498
+ "labelType": { "$ref": "#/definitions/QName" },
499
+ "language": {
500
+ "type": "string",
501
+ "description": "Language code (BCP 47)."
502
+ },
503
+ "value": {
504
+ "type": "string",
505
+ "description": "Text of the label."
506
+ },
507
+ "properties": {
508
+ "type": "array",
509
+ "items": { "$ref": "#/definitions/propertyObject" },
510
+ "description": "Additional properties associated with the label."
511
+ }
512
+ },
513
+ "required": ["relatedName", "labelType", "language", "value"],
514
+ "additionalProperties": false
515
+ }
516
+ },
517
+ "references": {
518
+ "type": "array",
519
+ "items": {
520
+ "type": "object",
521
+ "properties": {
522
+ "name": { "$ref": "#/definitions/QName" },
523
+ "extendTargetName": { "$ref": "#/definitions/QName" },
524
+ "relatedNames": {
525
+ "type": "array",
526
+ "items": { "$ref": "#/definitions/QName" },
527
+ "description": "Ordered QNames the reference is associated with."
528
+ },
529
+ "referenceType": { "$ref": "#/definitions/QName" },
530
+ "language": {
531
+ "type": "string",
532
+ "description": "Language code (BCP 47)."
533
+ },
534
+ "properties": {
535
+ "type": "array",
536
+ "items": { "$ref": "#/definitions/propertyObject" },
537
+ "description": "Additional properties associated with the reference."
538
+ }
539
+ },
540
+ "oneOf": [
541
+ { "required": ["name", "referenceType"] },
542
+ { "required": ["extendTargetName", "referenceType"] }
543
+ ],
544
+
545
+ "additionalProperties": false
546
+ }
547
+ },
548
+ "labelTypes": {
549
+ "type": "array",
550
+ "items": {
551
+ "type": "object",
552
+ "properties": {
553
+ "name": { "$ref": "#/definitions/QName" },
554
+ "uri": {
555
+ "type": "string",
556
+ "format": "uri",
557
+ "description": "URI for backward compatibility with XBRL 2.1 taxonomies."
558
+ },
559
+ "dataType": { "$ref": "#/definitions/QName" },
560
+ "allowedObjects": {
561
+ "type": "array",
562
+ "items": { "$ref": "#/definitions/QName" },
563
+ "description": "Ordered set of object types that can use the labelType."
564
+ }
565
+ },
566
+ "required": ["name"],
567
+ "additionalProperties": false
568
+ }
569
+ },
570
+ "referenceTypes": {
571
+ "type": "array",
572
+ "items": {
573
+ "type": "object",
574
+ "properties": {
575
+ "name": { "$ref": "#/definitions/QName" },
576
+ "uri": {
577
+ "type": "string",
578
+ "format": "uri",
579
+ "description": "URI for backward compatibility with XBRL 2.1 taxonomies."
580
+ },
581
+ "allowedObjects": {
582
+ "type": "array",
583
+ "items": { "$ref": "#/definitions/QName" },
584
+ "description": "Ordered set of object types that can use the referenceType."
585
+ },
586
+ "orderedProperties": {
587
+ "type": "array",
588
+ "items": { "$ref": "#/definitions/QName" },
589
+ "description": "Ordered set of property QNames that can be used with the reference."
590
+ },
591
+ "requiredProperties": {
592
+ "type": "array",
593
+ "items": { "$ref": "#/definitions/QName" },
594
+ "description": "Ordered set of property QNames that must be included within a defined reference type."
595
+ }
596
+ },
597
+ "required": ["name"],
598
+ "additionalProperties": false
599
+ }
600
+ },
601
+ "cubeTypes": {
602
+ "type": "array",
603
+ "items": {
604
+ "type": "object",
605
+ "properties": {
606
+ "name": { "$ref": "#/definitions/QName" },
607
+ "baseCubeType": { "$ref": "#/definitions/QName" },
608
+ "periodDimension": {
609
+ "type": "boolean",
610
+ "description": "Indicates if the period core dimension is included in the cube. Defaults to true."
611
+ },
612
+ "entityDimension": {
613
+ "type": "boolean",
614
+ "description": "Indicates if the entity core dimension is included in the cube. Defaults to true."
615
+ },
616
+ "unitDimension": {
617
+ "type": "boolean",
618
+ "description": "Indicates if the unit core dimension is included in the cube. Defaults to true."
619
+ },
620
+ "taxonomyDefinedDimension": {
621
+ "type": "boolean",
622
+ "description": "Indicates if taxonomy defined dimensions are included in the cube. Defaults to true."
623
+ },
624
+ "allowedCubeDimensions": {
625
+ "type": "array",
626
+ "description": "Ordered set of allowedCubeDimension objects permitted to be used on the cube.",
627
+ "items": {
628
+ "type": "object",
629
+ "properties": {
630
+ "dimensionName": { "$ref": "#/definitions/QName" },
631
+ "dimensionType": {
632
+ "type": "string",
633
+ "enum": ["typed", "explicit"],
634
+ "description": "Indicates that the cube must have a typed or explicit dimension."
635
+ },
636
+ "dimensionDataType": { "$ref": "#/definitions/QName" },
637
+ "required": {
638
+ "type": "boolean",
639
+ "description": "True if the defined dimension is required on the cube. Defaults to false."
640
+ }
641
+ },
642
+ "additionalProperties": false
643
+ }
644
+ },
645
+ "requiredCubeRelationships": {
646
+ "type": "array",
647
+ "description": "Ordered set of requiredCubeRelationship objects that must be associated with the cube.",
648
+ "items": {
649
+ "type": "object",
650
+ "properties": {
651
+ "relationshipTypeName": { "$ref": "#/definitions/QName" },
652
+ "source": { "$ref": "#/definitions/QName" },
653
+ "target": { "$ref": "#/definitions/QName" }
654
+ },
655
+ "required": ["relationshipTypeName"],
656
+ "additionalProperties": false
657
+ }
658
+ }
659
+ },
660
+ "required": ["name"],
661
+ "additionalProperties": false
662
+ }
663
+ },
664
+ "dataTypes": {
665
+ "type": "array",
666
+ "items": {
667
+ "type": "object",
668
+ "properties": {
669
+ "name": { "$ref": "#/definitions/QName" },
670
+ "baseType": { "$ref": "#/definitions/QName" },
671
+ "enumeration": {
672
+ "type": "array",
673
+ "description": "Ordered set of enumerated values of the datatype if applicable.",
674
+ "items": { "type": ["string", "number", "boolean"] }
675
+ },
676
+ "minInclusive": {
677
+ "type": "number",
678
+ "description": "Decimal value for minimum inclusive cardinal value (applies to float, double, decimal)."
679
+ },
680
+ "maxInclusive": {
681
+ "type": "number",
682
+ "description": "Decimal value for maximum inclusive cardinal value (applies to float, double, decimal)."
683
+ },
684
+ "minExclusive": {
685
+ "type": "number",
686
+ "description": "Decimal value for minimum exclusive cardinal value (applies to float, double, decimal)."
687
+ },
688
+ "maxExclusive": {
689
+ "type": "number",
690
+ "description": "Decimal value for maximum exclusive cardinal value (applies to float, double, decimal)."
691
+ },
692
+ "totalDigits": {
693
+ "type": "integer",
694
+ "description": "Total digits of a value (applies to float, double, decimal)."
695
+ },
696
+ "fractionDigits": {
697
+ "type": "integer",
698
+ "description": "Digits to the right of the decimal place (applies to float, double, decimal)."
699
+ },
700
+ "length": {
701
+ "type": "integer",
702
+ "description": "Length of a string value."
703
+ },
704
+ "minLength": {
705
+ "type": "integer",
706
+ "description": "Minimum length of a string value."
707
+ },
708
+ "maxLength": {
709
+ "type": "integer",
710
+ "description": "Maximum length of a string value."
711
+ },
712
+ "whiteSpace": {
713
+ "type": "string",
714
+ "enum": ["preserve", "replace", "collapse"],
715
+ "description": "Whitespace handling: preserve, replace, or collapse."
716
+ },
717
+ "patterns": {
718
+ "type": "array",
719
+ "description": "Array of regex patterns (XML regex). At least one must match.",
720
+ "items": { "type": "string" }
721
+ },
722
+ "unitTypes": {
723
+ "type": "object",
724
+ "description": "UnitType object defining numerator, denominator, and multiplier datatypes.",
725
+ "properties": {
726
+ "dataTypeNumerator": { "$ref": "#/definitions/QName" },
727
+ "dataTypeDenominator": { "$ref": "#/definitions/QName" },
728
+ "dataTypeMutiplier": { "$ref": "#/definitions/QName" }
729
+ },
730
+ "additionalProperties": false
731
+ }
732
+ },
733
+ "required": ["name", "baseType"],
734
+ "additionalProperties": false
735
+ }
736
+ },
737
+ "tableTemplates": {
738
+ "type": "array",
739
+ "items": {
740
+ "type": "object",
741
+ "properties": {
742
+ "name": { "$ref": "#/definitions/QName" },
743
+ "columns": {
744
+ "type": "object",
745
+ "additionalProperties": {
746
+ "type": "object",
747
+ "properties": {
748
+ "dimensions": {
749
+ "type": "object",
750
+ "additionalProperties": {
751
+ "type": "string"
752
+ }
753
+ }
754
+ },
755
+ "additionalProperties": false
756
+ }
757
+ },
758
+ "rowIdColumn": { "type": "string" },
759
+ "dimensions": {
760
+ "type": "object",
761
+ "additionalProperties": {
762
+ "type": "string"
763
+ }
764
+ }
765
+ },
766
+ "required": ["name", "columns"],
767
+ "additionalProperties": false
768
+ }
769
+ },
770
+ "dataTables": {
771
+ "type": "array",
772
+ "items": {
773
+ "type": "object",
774
+ "properties": {
775
+ "name": { "$ref": "#/definitions/QName" },
776
+ "cubeName": { "$ref": "#/definitions/QName" },
777
+ "xAxis": {
778
+ "$ref": "#/definitions/axisObject"
779
+ },
780
+ "yAxis": {
781
+ "$ref": "#/definitions/axisObject"
782
+ },
783
+ "zAxis": {
784
+ "$ref": "#/definitions/axisObject"
785
+ },
786
+ "showRefs": {
787
+ "type": "boolean",
788
+ "description": "Indicates if column and row references are shown on the table."
789
+ }
790
+ },
791
+ "required": ["name", "cubeName", "xAxis", "yAxis"],
792
+ "additionalProperties": false
793
+ }
794
+ },
795
+ "transforms": {
796
+ "type": "array",
797
+ "items": {
798
+ "type": "object",
799
+ "properties": {
800
+ "name": { "$ref": "#/definitions/QName" },
801
+ "inputDataType": { "$ref": "#/definitions/QName" },
802
+ "outputDataType": { "$ref": "#/definitions/QName" }
803
+ },
804
+ "required": ["name", "inputDataType", "outputDataType"],
805
+ "additionalProperties": false
806
+ }
807
+ }
808
+ },
809
+ "required": ["name", "resolved"],
810
+ "additionalProperties": false
811
+ }
812
+ },
813
+ "definitions": {
814
+ "propertyObject": {
815
+ "type": "object",
816
+ "properties": {
817
+ "property": { "$ref": "#/definitions/QName" },
818
+ "value": {}
819
+ },
820
+ "required": ["property", "value"],
821
+ "additionalProperties": false
822
+ },
823
+ "axisObject": {
824
+ "type": "object",
825
+ "properties": {
826
+ "dimensionNames": {
827
+ "type": "array",
828
+ "description": "Axis dimension objects that define the dimensions associated with the axis.",
829
+ "items": { "$ref": "#/definitions/axisDimensionObject" },
830
+ "minItems": 1
831
+ },
832
+ "axisLabels": {
833
+ "type": "array",
834
+ "description": "Set of strings used as axis labels. Cannot be used with presentationNetwork.",
835
+ "items": { "type": "string" }
836
+ },
837
+ "language": {
838
+ "type": "string",
839
+ "description": "Defines the language of the axisLabels using a valid BCP 47 [BCP47] language code."
840
+ },
841
+ "presentationNetwork": {
842
+ "type": "string",
843
+ "description": "QName identifying a parentChild network for order and labels. Only allowed if a single dimension is used."
844
+ }
845
+ },
846
+ "required": ["dimensionNames"],
847
+ "additionalProperties": false,
848
+ "allOf": [
849
+ {
850
+ "not": {
851
+ "required": ["axisLabels", "presentationNetwork"],
852
+ "additionalProperties": false
853
+ }
854
+ }
855
+ ]
856
+ },
857
+ "axisDimensionObject": {
858
+ "type": "object",
859
+ "properties": {
860
+ "dimensionName": {
861
+ "type": "string",
862
+ "pattern": "^[A-Za-z_][A-Za-z0-9_.-]*:[A-Za-z_][A-Za-z0-9_.-]*$",
863
+ "description": "QName of a dimension defined by the cubeName property."
864
+ },
865
+ "showTotal": {
866
+ "type": "boolean",
867
+ "description": "Indicates if the total of the dimension is shown in the axis."
868
+ },
869
+ "showAncestorColumns": {
870
+ "type": "array",
871
+ "description": "Members on an explicit dimension that are not leaf values included on the axis.",
872
+ "items": { "type": "string" }
873
+ },
874
+ "totalLocation": {
875
+ "type": "string",
876
+ "enum": ["start", "end"],
877
+ "description": "Indicates if the total is at the start or end when shown on the axis."
878
+ },
879
+ "periodAlign": {
880
+ "type": "array",
881
+ "description": "Used with the period dimension to align time values. Values: '@start', '@end'.",
882
+ "items": {
883
+ "type": "string",
884
+ "enum": ["@start", "@end"]
885
+ }
886
+ }
887
+ },
888
+ "required": ["dimensionName"],
889
+ "additionalProperties": false
890
+ },
891
+ "QName": {
892
+ "type": "string",
893
+ "pattern": "^[A-Za-z_][A-Za-z0-9_.-]*:[A-Za-z_][A-Za-z0-9_.-]*$",
894
+ "description": "QName that uniquely identifies the object."
895
+ },
896
+ "SQName": {
897
+ "type": "string",
898
+ "pattern": "^[A-Za-z_][A-Za-z0-9_.-]*:[A-Za-z0-9_.-]+$",
899
+ "description": "QName that uniquely identifies the object."
900
+ },
901
+ "dateResolutionObject": {
902
+ "type": "object",
903
+ "description": "Gregorian date that recurs (dateResolution object).",
904
+ "properties": {
905
+ "conceptName": {
906
+ "type": "string",
907
+ "pattern": "^[A-Za-z_][A-Za-z0-9_.-]*:[A-Za-z_][A-Za-z0-9_.-]*$",
908
+ "description": "QName of a concept object that has a date fact value."
909
+ },
910
+ "context": {
911
+ "type": "string",
912
+ "pattern": "^[A-Za-z_][A-Za-z0-9_.-]*:[A-Za-z_][A-Za-z0-9_.-]*(?:@(end|start))?$",
913
+ "description": "QName of a concept object, with optional @end or @start suffix to indicate which date from the context is used."
914
+ },
915
+ "value": {
916
+ "type": "string",
917
+ "format": "date",
918
+ "description": "A literal date value representing the end date."
919
+ },
920
+ "timeShift": {
921
+ "type": "string",
922
+ "pattern": "^-?P(?!$)(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$",
923
+ "description": "A duration (ISO 8601) string to shift the resolved date."
924
+ }
925
+ },
926
+ "oneOf": [
927
+ { "required": ["conceptName"] },
928
+ { "required": ["context"] },
929
+ { "required": ["value"] }
930
+ ],
931
+ "additionalProperties": false
932
+ }
933
+ },
934
+ "required": ["documentInfo", "taxonomy"]
935
+ }