@documentation-robotics/cli 0.1.0

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.
Files changed (169) hide show
  1. package/PYTHON_CLI_PARITY.md +265 -0
  2. package/PYTHON_CLI_STRUCTURE_UPDATE.md +246 -0
  3. package/README.md +926 -0
  4. package/biome.json +42 -0
  5. package/bunfig.toml +3 -0
  6. package/dist/ai/claude-client.js +71 -0
  7. package/dist/ai/claude-client.js.map +7 -0
  8. package/dist/ai/context-provider.js +129 -0
  9. package/dist/ai/context-provider.js.map +7 -0
  10. package/dist/ai/tools.js +231 -0
  11. package/dist/ai/tools.js.map +7 -0
  12. package/dist/cli.js +224 -0
  13. package/dist/cli.js.map +7 -0
  14. package/dist/commands/add.js +51 -0
  15. package/dist/commands/add.js.map +7 -0
  16. package/dist/commands/changeset.js +174 -0
  17. package/dist/commands/changeset.js.map +7 -0
  18. package/dist/commands/chat.js +111 -0
  19. package/dist/commands/chat.js.map +7 -0
  20. package/dist/commands/conformance.js +132 -0
  21. package/dist/commands/conformance.js.map +7 -0
  22. package/dist/commands/delete.js +31 -0
  23. package/dist/commands/delete.js.map +7 -0
  24. package/dist/commands/element.js +28 -0
  25. package/dist/commands/element.js.map +7 -0
  26. package/dist/commands/export.js +65 -0
  27. package/dist/commands/export.js.map +7 -0
  28. package/dist/commands/info.js +40 -0
  29. package/dist/commands/info.js.map +7 -0
  30. package/dist/commands/init.js +45 -0
  31. package/dist/commands/init.js.map +7 -0
  32. package/dist/commands/list.js +32 -0
  33. package/dist/commands/list.js.map +7 -0
  34. package/dist/commands/migrate.js +36 -0
  35. package/dist/commands/migrate.js.map +7 -0
  36. package/dist/commands/project.js +74 -0
  37. package/dist/commands/project.js.map +7 -0
  38. package/dist/commands/relationship.js +118 -0
  39. package/dist/commands/relationship.js.map +7 -0
  40. package/dist/commands/search.js +48 -0
  41. package/dist/commands/search.js.map +7 -0
  42. package/dist/commands/show.js +38 -0
  43. package/dist/commands/show.js.map +7 -0
  44. package/dist/commands/trace.js +60 -0
  45. package/dist/commands/trace.js.map +7 -0
  46. package/dist/commands/update.js +37 -0
  47. package/dist/commands/update.js.map +7 -0
  48. package/dist/commands/upgrade.js +152 -0
  49. package/dist/commands/upgrade.js.map +7 -0
  50. package/dist/commands/validate.js +71 -0
  51. package/dist/commands/validate.js.map +7 -0
  52. package/dist/commands/version.js +20 -0
  53. package/dist/commands/version.js.map +7 -0
  54. package/dist/commands/visualize.js +51 -0
  55. package/dist/commands/visualize.js.map +7 -0
  56. package/dist/core/active-changeset.js +52 -0
  57. package/dist/core/active-changeset.js.map +7 -0
  58. package/dist/core/changeset.js +244 -0
  59. package/dist/core/changeset.js.map +7 -0
  60. package/dist/core/dependency-tracker.js +322 -0
  61. package/dist/core/dependency-tracker.js.map +7 -0
  62. package/dist/core/element.js +65 -0
  63. package/dist/core/element.js.map +7 -0
  64. package/dist/core/layer.js +75 -0
  65. package/dist/core/layer.js.map +7 -0
  66. package/dist/core/manifest.js +57 -0
  67. package/dist/core/manifest.js.map +7 -0
  68. package/dist/core/migration-registry.js +131 -0
  69. package/dist/core/migration-registry.js.map +7 -0
  70. package/dist/core/model.js +455 -0
  71. package/dist/core/model.js.map +7 -0
  72. package/dist/core/projection-engine.js +288 -0
  73. package/dist/core/projection-engine.js.map +7 -0
  74. package/dist/core/reference-registry.js +188 -0
  75. package/dist/core/reference-registry.js.map +7 -0
  76. package/dist/core/relationship-registry.js +114 -0
  77. package/dist/core/relationship-registry.js.map +7 -0
  78. package/dist/core/relationships.js +78 -0
  79. package/dist/core/relationships.js.map +7 -0
  80. package/dist/export/archimate-exporter.js +111 -0
  81. package/dist/export/archimate-exporter.js.map +7 -0
  82. package/dist/export/export-manager.js +63 -0
  83. package/dist/export/export-manager.js.map +7 -0
  84. package/dist/export/graphml-exporter.js +39 -0
  85. package/dist/export/graphml-exporter.js.map +7 -0
  86. package/dist/export/index.js +17 -0
  87. package/dist/export/index.js.map +7 -0
  88. package/dist/export/json-schema-exporter.js +60 -0
  89. package/dist/export/json-schema-exporter.js.map +7 -0
  90. package/dist/export/markdown-exporter.js +99 -0
  91. package/dist/export/markdown-exporter.js.map +7 -0
  92. package/dist/export/openapi-exporter.js +85 -0
  93. package/dist/export/openapi-exporter.js.map +7 -0
  94. package/dist/export/plantuml-exporter.js +60 -0
  95. package/dist/export/plantuml-exporter.js.map +7 -0
  96. package/dist/export/types.js +36 -0
  97. package/dist/export/types.js.map +7 -0
  98. package/dist/schemas/bundled/01-motivation-layer.schema.json +942 -0
  99. package/dist/schemas/bundled/02-business-layer.schema.json +1293 -0
  100. package/dist/schemas/bundled/03-security-layer.schema.json +2177 -0
  101. package/dist/schemas/bundled/04-application-layer.schema.json +1328 -0
  102. package/dist/schemas/bundled/05-technology-layer.schema.json +1465 -0
  103. package/dist/schemas/bundled/06-api-layer.schema.json +1743 -0
  104. package/dist/schemas/bundled/07-data-model-layer.schema.json +1253 -0
  105. package/dist/schemas/bundled/08-datastore-layer.schema.json +892 -0
  106. package/dist/schemas/bundled/09-ux-layer.schema.json +1506 -0
  107. package/dist/schemas/bundled/10-navigation-layer.schema.json +843 -0
  108. package/dist/schemas/bundled/11-apm-observability-layer.schema.json +1430 -0
  109. package/dist/schemas/bundled/12-testing-layer.schema.json +1091 -0
  110. package/dist/schemas/bundled/common/layer-extensions.schema.json +266 -0
  111. package/dist/schemas/bundled/common/predicates.schema.json +493 -0
  112. package/dist/schemas/bundled/common/relationships.schema.json +791 -0
  113. package/dist/schemas/bundled/common/source-references.schema.json +71 -0
  114. package/dist/schemas/bundled/link-registry.json +1839 -0
  115. package/dist/schemas/bundled/link-registry.schema.json +339 -0
  116. package/dist/schemas/bundled/relationship-catalog.json +1302 -0
  117. package/dist/schemas/bundled/relationship-type.schema.json +221 -0
  118. package/dist/server/server.js +1207 -0
  119. package/dist/server/server.js.map +7 -0
  120. package/dist/server/telemetry-middleware.js +24 -0
  121. package/dist/server/telemetry-middleware.js.map +7 -0
  122. package/dist/telemetry/console-interceptor.js +34 -0
  123. package/dist/telemetry/console-interceptor.js.map +7 -0
  124. package/dist/telemetry/index.js +54 -0
  125. package/dist/telemetry/index.js.map +7 -0
  126. package/dist/telemetry/resilient-exporter.js +41 -0
  127. package/dist/telemetry/resilient-exporter.js.map +7 -0
  128. package/dist/telemetry/resilient-log-exporter.js +41 -0
  129. package/dist/telemetry/resilient-log-exporter.js.map +7 -0
  130. package/dist/telemetry/test-instrumentation.js +32 -0
  131. package/dist/telemetry/test-instrumentation.js.map +7 -0
  132. package/dist/types/index.js +1 -0
  133. package/dist/types/index.js.map +7 -0
  134. package/dist/utils/element-utils.js +11 -0
  135. package/dist/utils/element-utils.js.map +7 -0
  136. package/dist/utils/errors.js +105 -0
  137. package/dist/utils/errors.js.map +7 -0
  138. package/dist/utils/file-io.js +69 -0
  139. package/dist/utils/file-io.js.map +7 -0
  140. package/dist/utils/globals.js +28 -0
  141. package/dist/utils/globals.js.map +7 -0
  142. package/dist/utils/model-path.js +22 -0
  143. package/dist/utils/model-path.js.map +7 -0
  144. package/dist/utils/project-paths.js +45 -0
  145. package/dist/utils/project-paths.js.map +7 -0
  146. package/dist/utils/spec-installer.js +85 -0
  147. package/dist/utils/spec-installer.js.map +7 -0
  148. package/dist/utils/spec-version.js +33 -0
  149. package/dist/utils/spec-version.js.map +7 -0
  150. package/dist/validators/index.js +15 -0
  151. package/dist/validators/index.js.map +7 -0
  152. package/dist/validators/naming-validator.js +82 -0
  153. package/dist/validators/naming-validator.js.map +7 -0
  154. package/dist/validators/reference-validator.js +106 -0
  155. package/dist/validators/reference-validator.js.map +7 -0
  156. package/dist/validators/schema-validator.js +148 -0
  157. package/dist/validators/schema-validator.js.map +7 -0
  158. package/dist/validators/semantic-validator.js +80 -0
  159. package/dist/validators/semantic-validator.js.map +7 -0
  160. package/dist/validators/types.js +48 -0
  161. package/dist/validators/types.js.map +7 -0
  162. package/dist/validators/validator.js +67 -0
  163. package/dist/validators/validator.js.map +7 -0
  164. package/docs/TEST-INSTRUMENTATION.md +405 -0
  165. package/docs/telemetry.md +427 -0
  166. package/package.json +70 -0
  167. package/test-debug.js +33 -0
  168. package/test-special.mjs +46 -0
  169. package/test_runner.ts +7 -0
@@ -0,0 +1,1253 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://example.com/schemas/07-data-model-layer.schema.json",
4
+ "title": "Data Model Layer Layer Schema",
5
+ "description": "Defines data structures, types, and validation rules using JSON Schema Draft 7 for consistent data modeling across the application.",
6
+ "layerMetadata": {
7
+ "layerId": "07-data-model-layer",
8
+ "layerName": "Data Model Layer",
9
+ "intraLayerRelationshipSupport": true,
10
+ "crossLayerRelationshipSupport": true,
11
+ "relationshipCatalogVersion": "2.1.0"
12
+ },
13
+ "intraLayerRelationships": {
14
+ "$comment": "Relationships between entities within this layer. References relationship-catalog.json by ID.",
15
+ "allowed": [
16
+ {
17
+ "relationshipTypeId": "composition",
18
+ "sourceTypes": ["JSONSchema", "SchemaDefinition"],
19
+ "targetTypes": ["SchemaDefinition", "SchemaProperty"],
20
+ "examples": [
21
+ {
22
+ "source": "JSONSchema",
23
+ "target": "SchemaDefinition",
24
+ "description": "Schema document composes reusable definitions",
25
+ "layer": "07-data-model"
26
+ },
27
+ {
28
+ "source": "SchemaDefinition",
29
+ "target": "SchemaProperty",
30
+ "description": "Schema definition composes its properties",
31
+ "layer": "07-data-model"
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "relationshipTypeId": "aggregation",
37
+ "sourceTypes": ["JSONSchema"],
38
+ "targetTypes": ["DataGovernance", "DataQualityMetrics"],
39
+ "examples": [
40
+ {
41
+ "source": "JSONSchema",
42
+ "target": "DataGovernance",
43
+ "description": "Schema aggregates governance metadata",
44
+ "layer": "07-data-model"
45
+ },
46
+ {
47
+ "source": "JSONSchema",
48
+ "target": "DataQualityMetrics",
49
+ "description": "Schema aggregates quality metrics configuration",
50
+ "layer": "07-data-model"
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "relationshipTypeId": "specialization",
56
+ "sourceTypes": ["PremiumAccount", "Schema"],
57
+ "targetTypes": ["Account", "Schema"],
58
+ "examples": [
59
+ {
60
+ "source": "PremiumAccount",
61
+ "target": "Account",
62
+ "description": "Premium account specializes the general account concept"
63
+ },
64
+ {
65
+ "source": "Schema",
66
+ "target": "Schema",
67
+ "description": "API schema specializes another via allOf/oneOf/anyOf composition",
68
+ "layer": "06-api"
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "relationshipTypeId": "realization",
74
+ "sourceTypes": ["ApplicationService", "Goal", "Outcome"],
75
+ "targetTypes": ["BusinessService", "Goal", "Value"],
76
+ "examples": [
77
+ {
78
+ "source": "Goal",
79
+ "target": "Value",
80
+ "description": "Goal realizes value for stakeholders",
81
+ "layer": "01-motivation"
82
+ },
83
+ {
84
+ "source": "Outcome",
85
+ "target": "Goal",
86
+ "description": "Outcome realizes achievement of goal",
87
+ "layer": "01-motivation"
88
+ },
89
+ {
90
+ "source": "ApplicationService",
91
+ "target": "BusinessService",
92
+ "description": "Application service realizes business service capability"
93
+ }
94
+ ]
95
+ },
96
+ {
97
+ "relationshipTypeId": "access",
98
+ "sourceTypes": ["BusinessProcess", "CoverageRequirement", "TestCaseSketch"],
99
+ "targetTypes": ["BusinessObject", "InputPartitionSelection", "InputSelection"],
100
+ "examples": [
101
+ {
102
+ "source": "BusinessProcess",
103
+ "target": "BusinessObject",
104
+ "description": "Business process accesses business object data"
105
+ },
106
+ {
107
+ "source": "TestCaseSketch",
108
+ "target": "InputSelection",
109
+ "description": "Test sketch accesses input selections for test execution",
110
+ "layer": "12-testing"
111
+ },
112
+ {
113
+ "source": "CoverageRequirement",
114
+ "target": "InputPartitionSelection",
115
+ "description": "Requirement accesses partition selections for coverage",
116
+ "layer": "12-testing"
117
+ }
118
+ ]
119
+ },
120
+ {
121
+ "relationshipTypeId": "reference",
122
+ "sourceTypes": ["CoverageRequirement", "DataObject", "TestCaseSketch"],
123
+ "targetTypes": ["CoverageRequirement", "Schema", "TestCoverageTarget"],
124
+ "examples": [
125
+ {
126
+ "source": "DataObject",
127
+ "target": "Schema",
128
+ "description": "Data object references JSON schema"
129
+ },
130
+ {
131
+ "source": "TestCaseSketch",
132
+ "target": "CoverageRequirement",
133
+ "description": "Test case sketch references coverage requirement it satisfies",
134
+ "layer": "12-testing"
135
+ },
136
+ {
137
+ "source": "CoverageRequirement",
138
+ "target": "TestCoverageTarget",
139
+ "description": "Coverage requirement references target it covers",
140
+ "layer": "12-testing"
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "relationshipTypeId": "governed-by-principles",
146
+ "sourceTypes": ["APIOperation"],
147
+ "targetTypes": ["Principle"],
148
+ "examples": [
149
+ {
150
+ "source": "APIOperation",
151
+ "target": "Principle",
152
+ "description": "REST API governed by RESTful design principles"
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ "relationshipTypeId": "constrainedby",
158
+ "sourceTypes": ["APIOperation"],
159
+ "targetTypes": ["Constraint"],
160
+ "examples": [
161
+ {
162
+ "source": "APIOperation",
163
+ "target": "Constraint",
164
+ "description": "API operation constrained by rate limit"
165
+ }
166
+ ]
167
+ },
168
+ {
169
+ "relationshipTypeId": "maps-to",
170
+ "sourceTypes": ["DataObject"],
171
+ "targetTypes": ["DatabaseTable"],
172
+ "examples": [
173
+ {
174
+ "source": "DataObject",
175
+ "target": "DatabaseTable",
176
+ "description": "User data object maps to users table"
177
+ }
178
+ ]
179
+ },
180
+ {
181
+ "relationshipTypeId": "derivedfrom",
182
+ "sourceTypes": ["TotalPrice"],
183
+ "targetTypes": ["Quantity, UnitPrice"],
184
+ "examples": [
185
+ {
186
+ "source": "TotalPrice",
187
+ "target": "Quantity, UnitPrice",
188
+ "description": "Total price derives from quantity times unit price"
189
+ }
190
+ ]
191
+ }
192
+ ]
193
+ },
194
+ "crossLayerRelationships": {
195
+ "$comment": "Relationships to/from entities in other layers",
196
+ "outgoing": [
197
+ {
198
+ "id": "archimate-ref",
199
+ "predicate": "archimate-ref",
200
+ "inversePredicate": "referenced-by",
201
+ "targetLayer": "04-application",
202
+ "targetTypes": ["Element"],
203
+ "sourceTypes": ["JSONSchema", "x-security Extension"],
204
+ "fieldPath": "x-archimate-ref",
205
+ "cardinality": "single",
206
+ "format": "duration",
207
+ "strength": "medium",
208
+ "required": false,
209
+ "description": "string (Element.id reference to ApplicationService)",
210
+ "examples": []
211
+ },
212
+ {
213
+ "id": "business-object-ref",
214
+ "predicate": "business-object-ref",
215
+ "inversePredicate": "referenced-by",
216
+ "targetLayer": "02-business",
217
+ "targetTypes": ["BusinessObject"],
218
+ "sourceTypes": ["JSONSchema", "x-business-object-ref Extension", "x-security Extension"],
219
+ "fieldPath": "x-business-object-ref",
220
+ "cardinality": "single",
221
+ "format": "duration",
222
+ "strength": "medium",
223
+ "required": false,
224
+ "description": "string (BusinessObject.id reference, optional)",
225
+ "examples": []
226
+ },
227
+ {
228
+ "id": "data-apm-data-quality-metrics",
229
+ "predicate": "apm-data-quality-metrics",
230
+ "inversePredicate": "referenced-by",
231
+ "targetLayer": "07-data-model",
232
+ "targetTypes": ["DataQualityMetric"],
233
+ "sourceTypes": [
234
+ "JSONSchema",
235
+ "x-apm-data-quality-metrics Extension",
236
+ "x-security Extension"
237
+ ],
238
+ "fieldPath": "x-apm-data-quality-metrics",
239
+ "cardinality": "single",
240
+ "format": "duration",
241
+ "strength": "medium",
242
+ "required": false,
243
+ "description": "DataQualityMetrics (optional)",
244
+ "examples": []
245
+ },
246
+ {
247
+ "id": "data-governance",
248
+ "predicate": "data-governance",
249
+ "inversePredicate": "referenced-by",
250
+ "targetLayer": "07-data-model",
251
+ "targetTypes": ["Governance"],
252
+ "sourceTypes": ["JSONSchema", "x-data-governance Extension", "x-security Extension"],
253
+ "fieldPath": "x-data-governance",
254
+ "cardinality": "single",
255
+ "format": "string",
256
+ "strength": "medium",
257
+ "required": false,
258
+ "description": "DataGovernance (optional)",
259
+ "examples": []
260
+ },
261
+ {
262
+ "id": "database",
263
+ "predicate": "database",
264
+ "inversePredicate": "referenced-by",
265
+ "targetLayer": "07-data-model",
266
+ "targetTypes": ["Database"],
267
+ "sourceTypes": [
268
+ "JSONSchema",
269
+ "SchemaProperty",
270
+ "x-database Extension",
271
+ "x-security Extension"
272
+ ],
273
+ "fieldPath": "x-database",
274
+ "cardinality": "single",
275
+ "format": "duration",
276
+ "strength": "medium",
277
+ "required": false,
278
+ "description": "DatabaseMapping (optional)",
279
+ "examples": []
280
+ },
281
+ {
282
+ "id": "motivation-governed-by-principles",
283
+ "predicate": "governed-by-principles",
284
+ "inversePredicate": "governs",
285
+ "targetLayer": "01-motivation",
286
+ "targetTypes": ["GovernedByPrinciple"],
287
+ "sourceTypes": ["BusinessService"],
288
+ "fieldPath": "motivation.governed-by-principles",
289
+ "cardinality": "array",
290
+ "format": "reference",
291
+ "strength": "high",
292
+ "required": false,
293
+ "description": "BusinessService governed by Principles",
294
+ "examples": [
295
+ {
296
+ "elementType": "BusinessService",
297
+ "elementId": "order-service",
298
+ "elementName": "Order Processing Service",
299
+ "fieldPath": "motivation.governed-by-principles",
300
+ "value": "principle-customer-first,principle-automation",
301
+ "layer": "02-business"
302
+ },
303
+ {
304
+ "elementType": "ApplicationService",
305
+ "elementId": "product-service",
306
+ "elementName": "product-service",
307
+ "fieldPath": "motivation.governed-by-principles",
308
+ "value": "principle-api-first,principle-cloud-native",
309
+ "layer": "04-application"
310
+ }
311
+ ]
312
+ },
313
+ {
314
+ "id": "motivation-supports-goals",
315
+ "predicate": "supports-goals",
316
+ "inversePredicate": "supported-by",
317
+ "targetLayer": "01-motivation",
318
+ "targetTypes": ["SupportsGoal"],
319
+ "sourceTypes": ["BusinessService"],
320
+ "fieldPath": "motivation.supports-goals",
321
+ "cardinality": "array",
322
+ "format": "reference",
323
+ "strength": "high",
324
+ "required": false,
325
+ "description": "BusinessService supports Goals",
326
+ "examples": [
327
+ {
328
+ "elementType": "BusinessService",
329
+ "elementId": "order-service",
330
+ "elementName": "Order Processing Service",
331
+ "fieldPath": "motivation.supports-goals",
332
+ "value": "goal-customer-satisfaction,goal-revenue-growth",
333
+ "layer": "02-business"
334
+ },
335
+ {
336
+ "elementType": "ApplicationService",
337
+ "elementId": "product-service",
338
+ "elementName": "product-service",
339
+ "fieldPath": "motivation.supports-goals",
340
+ "value": "goal-product-catalog-accuracy,goal-customer-satisfaction",
341
+ "layer": "04-application"
342
+ }
343
+ ]
344
+ },
345
+ {
346
+ "id": "security-classification",
347
+ "predicate": "classification",
348
+ "inversePredicate": "referenced-by",
349
+ "targetLayer": "03-security",
350
+ "targetTypes": ["Classification"],
351
+ "sourceTypes": ["Artifact"],
352
+ "fieldPath": "security.classification",
353
+ "cardinality": "single",
354
+ "format": "string",
355
+ "strength": "low",
356
+ "required": false,
357
+ "description": "Links to Classification in target layer",
358
+ "examples": [
359
+ {
360
+ "elementType": "Artifact",
361
+ "elementId": "product-db",
362
+ "elementName": "product-db",
363
+ "fieldPath": "security.classification",
364
+ "value": "internal",
365
+ "layer": "05-technology"
366
+ },
367
+ {
368
+ "elementType": "Artifact",
369
+ "elementId": "customer-db",
370
+ "elementName": "customer-db",
371
+ "fieldPath": "security.classification",
372
+ "value": "restricted",
373
+ "layer": "05-technology"
374
+ }
375
+ ]
376
+ }
377
+ ],
378
+ "incoming": [
379
+ {
380
+ "id": "data-apm-data-quality-metrics",
381
+ "predicate": "referenced-by",
382
+ "inversePredicate": "apm-data-quality-metrics",
383
+ "sourceLayer": "07-data-model",
384
+ "sourceTypes": [
385
+ "JSONSchema",
386
+ "x-apm-data-quality-metrics Extension",
387
+ "x-security Extension"
388
+ ],
389
+ "targetTypes": ["DataQualityMetric"],
390
+ "fieldPath": "x-apm-data-quality-metrics",
391
+ "cardinality": "single",
392
+ "description": "Inverse of: DataQualityMetrics (optional)"
393
+ },
394
+ {
395
+ "id": "data-governance",
396
+ "predicate": "referenced-by",
397
+ "inversePredicate": "data-governance",
398
+ "sourceLayer": "07-data-model",
399
+ "sourceTypes": ["JSONSchema", "x-data-governance Extension", "x-security Extension"],
400
+ "targetTypes": ["Governance"],
401
+ "fieldPath": "x-data-governance",
402
+ "cardinality": "single",
403
+ "description": "Inverse of: DataGovernance (optional)"
404
+ },
405
+ {
406
+ "id": "data-governance-owner",
407
+ "predicate": "referenced-by",
408
+ "inversePredicate": "governance-owner",
409
+ "sourceLayer": "02-business",
410
+ "sourceTypes": ["BusinessObject"],
411
+ "targetTypes": ["GovernanceOwner"],
412
+ "fieldPath": "data.governance-owner",
413
+ "cardinality": "single",
414
+ "description": "Inverse of: BusinessObject ownership by BusinessActor"
415
+ },
416
+ {
417
+ "id": "data-retention",
418
+ "predicate": "referenced-by",
419
+ "inversePredicate": "retention",
420
+ "sourceLayer": "04-application",
421
+ "sourceTypes": ["Data Properties", "DataObject"],
422
+ "targetTypes": ["Retention"],
423
+ "fieldPath": "data.retention",
424
+ "cardinality": "single",
425
+ "description": "Inverse of: Links to Retention in target layer"
426
+ },
427
+ {
428
+ "id": "database",
429
+ "predicate": "referenced-by",
430
+ "inversePredicate": "database",
431
+ "sourceLayer": "07-data-model",
432
+ "sourceTypes": [
433
+ "JSONSchema",
434
+ "SchemaProperty",
435
+ "x-database Extension",
436
+ "x-security Extension"
437
+ ],
438
+ "targetTypes": ["Database"],
439
+ "fieldPath": "x-database",
440
+ "cardinality": "single",
441
+ "description": "Inverse of: DatabaseMapping (optional)"
442
+ },
443
+ {
444
+ "id": "database-column",
445
+ "predicate": "referenced-by",
446
+ "inversePredicate": "database-column",
447
+ "sourceLayer": "06-api",
448
+ "sourceTypes": ["Schema"],
449
+ "targetTypes": ["Column"],
450
+ "fieldPath": "x-database-column",
451
+ "cardinality": "single",
452
+ "description": "Inverse of: string"
453
+ },
454
+ {
455
+ "id": "database-table",
456
+ "predicate": "referenced-by",
457
+ "inversePredicate": "database-table",
458
+ "sourceLayer": "06-api",
459
+ "sourceTypes": ["Schema", "SecurityScheme"],
460
+ "targetTypes": ["Table"],
461
+ "fieldPath": "x-database-table",
462
+ "cardinality": "single",
463
+ "description": "Inverse of: string"
464
+ }
465
+ ]
466
+ },
467
+ "type": "object",
468
+ "properties": {
469
+ "json-schemas": {
470
+ "type": "array",
471
+ "description": "Collection of JSONSchema entities",
472
+ "items": {
473
+ "$ref": "#/definitions/JSONSchema"
474
+ }
475
+ },
476
+ "json-types": {
477
+ "type": "array",
478
+ "description": "Collection of JSONType entities",
479
+ "items": {
480
+ "$ref": "#/definitions/JSONType"
481
+ }
482
+ },
483
+ "string-schemas": {
484
+ "type": "array",
485
+ "description": "Collection of StringSchema entities",
486
+ "items": {
487
+ "$ref": "#/definitions/StringSchema"
488
+ }
489
+ },
490
+ "numeric-schemas": {
491
+ "type": "array",
492
+ "description": "Collection of NumericSchema entities",
493
+ "items": {
494
+ "$ref": "#/definitions/NumericSchema"
495
+ }
496
+ },
497
+ "array-schemas": {
498
+ "type": "array",
499
+ "description": "Collection of ArraySchema entities",
500
+ "items": {
501
+ "$ref": "#/definitions/ArraySchema"
502
+ }
503
+ },
504
+ "object-schemas": {
505
+ "type": "array",
506
+ "description": "Collection of ObjectSchema entities",
507
+ "items": {
508
+ "$ref": "#/definitions/ObjectSchema"
509
+ }
510
+ },
511
+ "schema-compositions": {
512
+ "type": "array",
513
+ "description": "Collection of SchemaComposition entities",
514
+ "items": {
515
+ "$ref": "#/definitions/SchemaComposition"
516
+ }
517
+ },
518
+ "references": {
519
+ "type": "array",
520
+ "description": "Collection of Reference entities",
521
+ "items": {
522
+ "$ref": "#/definitions/Reference"
523
+ }
524
+ },
525
+ "schema-definitions": {
526
+ "type": "array",
527
+ "description": "Collection of SchemaDefinition entities",
528
+ "items": {
529
+ "$ref": "#/definitions/SchemaDefinition"
530
+ }
531
+ },
532
+ "schema-properties": {
533
+ "type": "array",
534
+ "description": "Collection of SchemaProperty entities",
535
+ "items": {
536
+ "$ref": "#/definitions/SchemaProperty"
537
+ }
538
+ },
539
+ "data-governances": {
540
+ "type": "array",
541
+ "description": "Collection of DataGovernance entities",
542
+ "items": {
543
+ "$ref": "#/definitions/DataGovernance"
544
+ }
545
+ },
546
+ "data-quality-metricses": {
547
+ "type": "array",
548
+ "description": "Collection of DataQualityMetrics entities",
549
+ "items": {
550
+ "$ref": "#/definitions/DataQualityMetrics"
551
+ }
552
+ },
553
+ "database-mappings": {
554
+ "type": "array",
555
+ "description": "Collection of DatabaseMapping entities",
556
+ "items": {
557
+ "$ref": "#/definitions/DatabaseMapping"
558
+ }
559
+ }
560
+ },
561
+ "definitions": {
562
+ "string": {
563
+ "type": "string",
564
+ "enum": ["string", "number", "integer", "boolean", "object", "array", "null"]
565
+ },
566
+ "StringFormat": {
567
+ "type": "string",
568
+ "enum": [
569
+ "date-time",
570
+ "date",
571
+ "time",
572
+ "email",
573
+ "idn-email",
574
+ "hostname",
575
+ "idn-hostname",
576
+ "ipv4",
577
+ "ipv6",
578
+ "uri",
579
+ "uri-reference",
580
+ "iri",
581
+ "iri-reference",
582
+ "json-pointer",
583
+ "relative-json-pointer",
584
+ "regex",
585
+ "uuid",
586
+ "phone",
587
+ "credit-card"
588
+ ]
589
+ },
590
+ "DataClassificationLevel": {
591
+ "type": "string",
592
+ "enum": ["public", "internal", "confidential", "restricted", "secret"]
593
+ },
594
+ "SQLType": {
595
+ "type": "string",
596
+ "enum": [
597
+ "VARCHAR",
598
+ "CHAR",
599
+ "TEXT",
600
+ "CLOB",
601
+ "INTEGER",
602
+ "SMALLINT",
603
+ "BIGINT",
604
+ "SERIAL",
605
+ "BIGSERIAL",
606
+ "DECIMAL",
607
+ "NUMERIC",
608
+ "FLOAT",
609
+ "DOUBLE",
610
+ "BOOLEAN",
611
+ "DATE",
612
+ "TIME",
613
+ "TIMESTAMP",
614
+ "TIMESTAMPTZ",
615
+ "INTERVAL",
616
+ "JSON",
617
+ "JSONB",
618
+ "UUID",
619
+ "BYTEA",
620
+ "BLOB",
621
+ "ARRAY"
622
+ ]
623
+ },
624
+ "ReferentialAction": {
625
+ "type": "string",
626
+ "enum": ["CASCADE", "SET_NULL", "SET_DEFAULT", "RESTRICT", "NO_ACTION"]
627
+ },
628
+ "IndexType": {
629
+ "type": "string",
630
+ "enum": ["BTREE", "HASH", "GIN", "GIST", "BRIN"]
631
+ },
632
+ "ConstraintType": {
633
+ "type": "string",
634
+ "enum": ["PRIMARY_KEY", "UNIQUE", "FOREIGN_KEY", "CHECK", "NOT_NULL", "EXCLUSION"]
635
+ },
636
+ "PartitionStrategy": {
637
+ "type": "string",
638
+ "enum": ["RANGE", "LIST", "HASH"]
639
+ },
640
+ "UIComponent": {
641
+ "type": "string",
642
+ "enum": [
643
+ "text-input",
644
+ "textarea",
645
+ "number-input",
646
+ "email-input",
647
+ "password-input",
648
+ "date-picker",
649
+ "datetime-picker",
650
+ "select",
651
+ "multi-select",
652
+ "autocomplete",
653
+ "checkbox",
654
+ "radio-group",
655
+ "toggle",
656
+ "slider",
657
+ "file-upload",
658
+ "rich-text-editor",
659
+ "color-picker"
660
+ ]
661
+ },
662
+ "SecurityClassification": {
663
+ "type": "string",
664
+ "enum": ["public", "internal", "confidential", "restricted"]
665
+ },
666
+ "MaskingStrategy": {
667
+ "type": "string",
668
+ "enum": ["none", "partial", "full", "hash"]
669
+ },
670
+ "JSONSchema": {
671
+ "type": "object",
672
+ "description": "Root schema document",
673
+ "required": ["id", "name", "$schema", "$id", "type"],
674
+ "properties": {
675
+ "id": {
676
+ "type": "string",
677
+ "format": "uuid",
678
+ "minLength": 1
679
+ },
680
+ "name": {
681
+ "type": "string",
682
+ "minLength": 1
683
+ },
684
+ "$schema": {
685
+ "type": "string",
686
+ "minLength": 1
687
+ },
688
+ "$id": {
689
+ "type": "string",
690
+ "minLength": 1
691
+ },
692
+ "title": {
693
+ "type": "string",
694
+ "minLength": 1
695
+ },
696
+ "description": {
697
+ "type": "string",
698
+ "minLength": 1
699
+ },
700
+ "type": {
701
+ "type": "string",
702
+ "minLength": 1
703
+ },
704
+ "definitions": {
705
+ "type": "array",
706
+ "description": "Contains relationship",
707
+ "items": {
708
+ "type": "string"
709
+ }
710
+ },
711
+ "properties": {
712
+ "type": "array",
713
+ "description": "Contains relationship",
714
+ "items": {
715
+ "type": "string"
716
+ }
717
+ },
718
+ "x-source-reference": {
719
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference",
720
+ "description": "Source code reference using OpenAPI x- extension pattern. This pattern is used for OpenAPI-style layers (API, Data Model, Datastore) to maintain compatibility with OpenAPI tooling, as opposed to the nested properties.source.reference pattern used in ArchiMate-style layers (Application, Technology)."
721
+ }
722
+ }
723
+ },
724
+ "JSONType": {
725
+ "type": "object",
726
+ "description": "Core JSON data types",
727
+ "required": ["value"],
728
+ "properties": {
729
+ "value": {
730
+ "$ref": "#/definitions/string"
731
+ }
732
+ }
733
+ },
734
+ "StringSchema": {
735
+ "type": "object",
736
+ "description": "StringSchema validation rules",
737
+ "required": ["type"],
738
+ "properties": {
739
+ "type": {
740
+ "type": "string",
741
+ "minLength": 1
742
+ },
743
+ "minLength": {
744
+ "type": "integer"
745
+ },
746
+ "maxLength": {
747
+ "type": "integer"
748
+ },
749
+ "pattern": {
750
+ "type": "string",
751
+ "minLength": 1
752
+ },
753
+ "format": {
754
+ "$ref": "#/definitions/StringFormat"
755
+ }
756
+ }
757
+ },
758
+ "NumericSchema": {
759
+ "type": "object",
760
+ "description": "NumericSchema validation rules",
761
+ "required": ["type"],
762
+ "properties": {
763
+ "type": {
764
+ "type": "string",
765
+ "minLength": 1
766
+ },
767
+ "minimum": {
768
+ "type": "number"
769
+ },
770
+ "maximum": {
771
+ "type": "number"
772
+ },
773
+ "exclusiveMinimum": {
774
+ "type": "number"
775
+ },
776
+ "exclusiveMaximum": {
777
+ "type": "number"
778
+ },
779
+ "multipleOf": {
780
+ "type": "number"
781
+ }
782
+ }
783
+ },
784
+ "ArraySchema": {
785
+ "type": "object",
786
+ "description": "ArraySchema validation rules",
787
+ "required": ["type"],
788
+ "properties": {
789
+ "type": {
790
+ "type": "string",
791
+ "minLength": 1
792
+ },
793
+ "items": {
794
+ "type": "string",
795
+ "minLength": 1
796
+ },
797
+ "minItems": {
798
+ "type": "integer"
799
+ },
800
+ "maxItems": {
801
+ "type": "integer"
802
+ },
803
+ "uniqueItems": {
804
+ "type": "boolean"
805
+ },
806
+ "contains": {
807
+ "type": "string",
808
+ "minLength": 1
809
+ }
810
+ }
811
+ },
812
+ "ObjectSchema": {
813
+ "type": "object",
814
+ "description": "ObjectSchema validation rules",
815
+ "required": ["type"],
816
+ "properties": {
817
+ "type": {
818
+ "type": "string",
819
+ "minLength": 1
820
+ },
821
+ "required": {
822
+ "type": "string",
823
+ "minLength": 1
824
+ },
825
+ "additionalProperties": {
826
+ "type": "string",
827
+ "minLength": 1
828
+ },
829
+ "minProperties": {
830
+ "type": "integer"
831
+ },
832
+ "maxProperties": {
833
+ "type": "integer"
834
+ },
835
+ "properties": {
836
+ "type": "array",
837
+ "description": "Contains relationship",
838
+ "items": {
839
+ "type": "string"
840
+ }
841
+ }
842
+ }
843
+ },
844
+ "SchemaComposition": {
845
+ "type": "object",
846
+ "description": "Combining multiple schemas",
847
+ "required": ["id", "name"],
848
+ "properties": {
849
+ "id": {
850
+ "type": "string",
851
+ "format": "uuid",
852
+ "minLength": 1
853
+ },
854
+ "name": {
855
+ "type": "string",
856
+ "minLength": 1
857
+ }
858
+ }
859
+ },
860
+ "Reference": {
861
+ "type": "object",
862
+ "description": "Reference to another schema",
863
+ "required": ["id", "name"],
864
+ "properties": {
865
+ "id": {
866
+ "type": "string",
867
+ "format": "uuid",
868
+ "minLength": 1
869
+ },
870
+ "name": {
871
+ "type": "string",
872
+ "minLength": 1
873
+ }
874
+ }
875
+ },
876
+ "SchemaDefinition": {
877
+ "type": "object",
878
+ "description": "A reusable JSON Schema definition that can be referenced throughout the data model. Enables DRY schema design and consistent type definitions across entities.",
879
+ "required": ["id", "name", "title", "type"],
880
+ "properties": {
881
+ "id": {
882
+ "type": "string",
883
+ "format": "uuid",
884
+ "minLength": 1
885
+ },
886
+ "name": {
887
+ "type": "string",
888
+ "minLength": 1
889
+ },
890
+ "title": {
891
+ "type": "string",
892
+ "minLength": 1
893
+ },
894
+ "description": {
895
+ "type": "string",
896
+ "minLength": 1
897
+ },
898
+ "type": {
899
+ "type": "string",
900
+ "minLength": 1
901
+ },
902
+ "properties": {
903
+ "type": "array",
904
+ "description": "Contains relationship",
905
+ "items": {
906
+ "type": "string"
907
+ }
908
+ },
909
+ "items": {
910
+ "type": "array",
911
+ "description": "Contains relationship",
912
+ "items": {
913
+ "type": "string"
914
+ }
915
+ }
916
+ }
917
+ },
918
+ "SchemaProperty": {
919
+ "type": "object",
920
+ "description": "Defines a single property within a schema, including its type, constraints, validation rules, and documentation. The fundamental building block of data model structure.",
921
+ "required": ["id", "name", "type", "title", "format", "default", "enum", "const", "examples"],
922
+ "properties": {
923
+ "id": {
924
+ "type": "string",
925
+ "format": "uuid",
926
+ "minLength": 1
927
+ },
928
+ "name": {
929
+ "type": "string",
930
+ "minLength": 1
931
+ },
932
+ "type": {
933
+ "type": "string",
934
+ "minLength": 1
935
+ },
936
+ "title": {
937
+ "type": "string",
938
+ "minLength": 1
939
+ },
940
+ "description": {
941
+ "type": "string",
942
+ "minLength": 1
943
+ },
944
+ "format": {
945
+ "type": "string",
946
+ "minLength": 1
947
+ },
948
+ "default": {
949
+ "type": "string",
950
+ "minLength": 1
951
+ },
952
+ "enum": {
953
+ "type": "string",
954
+ "minLength": 1
955
+ },
956
+ "const": {
957
+ "type": "string",
958
+ "minLength": 1
959
+ },
960
+ "readOnly": {
961
+ "type": "boolean"
962
+ },
963
+ "writeOnly": {
964
+ "type": "boolean"
965
+ },
966
+ "deprecated": {
967
+ "type": "boolean"
968
+ },
969
+ "examples": {
970
+ "type": "string",
971
+ "minLength": 1
972
+ }
973
+ }
974
+ },
975
+ "DataGovernance": {
976
+ "type": "object",
977
+ "description": "Metadata about data ownership, classification, sensitivity level, and handling requirements. Ensures data is managed according to organizational policies and regulations.",
978
+ "required": ["id", "name"],
979
+ "properties": {
980
+ "id": {
981
+ "type": "string",
982
+ "format": "uuid",
983
+ "minLength": 1
984
+ },
985
+ "name": {
986
+ "type": "string",
987
+ "minLength": 1
988
+ }
989
+ }
990
+ },
991
+ "DataQualityMetrics": {
992
+ "type": "object",
993
+ "description": "Defines measurable quality attributes for data elements such as completeness, accuracy, consistency, and timeliness. Enables data quality monitoring and SLA enforcement.",
994
+ "required": ["id", "name", "schemaRef"],
995
+ "properties": {
996
+ "id": {
997
+ "type": "string",
998
+ "format": "uuid",
999
+ "minLength": 1
1000
+ },
1001
+ "name": {
1002
+ "type": "string",
1003
+ "minLength": 1
1004
+ },
1005
+ "schemaRef": {
1006
+ "type": "string",
1007
+ "minLength": 1
1008
+ },
1009
+ "monitoringEnabled": {
1010
+ "type": "boolean"
1011
+ }
1012
+ }
1013
+ },
1014
+ "DatabaseMapping": {
1015
+ "type": "object",
1016
+ "description": "Specifies how a logical data model entity maps to physical database storage, including table names, column mappings, and storage optimizations. Bridges logical and physical data layers.",
1017
+ "required": ["id", "name", "table", "schema", "catalog", "engine"],
1018
+ "properties": {
1019
+ "id": {
1020
+ "type": "string",
1021
+ "format": "uuid",
1022
+ "minLength": 1
1023
+ },
1024
+ "name": {
1025
+ "type": "string",
1026
+ "minLength": 1
1027
+ },
1028
+ "table": {
1029
+ "type": "string",
1030
+ "minLength": 1
1031
+ },
1032
+ "schema": {
1033
+ "type": "string",
1034
+ "minLength": 1
1035
+ },
1036
+ "catalog": {
1037
+ "type": "string",
1038
+ "minLength": 1
1039
+ },
1040
+ "engine": {
1041
+ "type": "string",
1042
+ "minLength": 1
1043
+ }
1044
+ }
1045
+ },
1046
+ "x-business-object-ref": {
1047
+ "type": "object",
1048
+ "description": "Reference to BusinessObject this schema implements",
1049
+ "required": ["value"],
1050
+ "properties": {
1051
+ "value": {
1052
+ "type": "string",
1053
+ "minLength": 1
1054
+ }
1055
+ }
1056
+ },
1057
+ "x-data-governance": {
1058
+ "type": "object",
1059
+ "description": "Data model governance metadata (root-level)",
1060
+ "required": ["id", "name"],
1061
+ "properties": {
1062
+ "id": {
1063
+ "type": "string",
1064
+ "format": "uuid",
1065
+ "minLength": 1
1066
+ },
1067
+ "name": {
1068
+ "type": "string",
1069
+ "minLength": 1
1070
+ },
1071
+ "governedBy": {
1072
+ "type": "object"
1073
+ }
1074
+ }
1075
+ },
1076
+ "x-apm-data-quality-metrics": {
1077
+ "type": "object",
1078
+ "description": "Links schema to data quality metrics in APM/Observability Layer",
1079
+ "required": [
1080
+ "id",
1081
+ "name",
1082
+ "completenessMetrics",
1083
+ "accuracyMetrics",
1084
+ "consistencyMetrics",
1085
+ "freshnessMetrics",
1086
+ "uniquenessMetrics",
1087
+ "integrityMetrics"
1088
+ ],
1089
+ "properties": {
1090
+ "id": {
1091
+ "type": "string",
1092
+ "format": "uuid",
1093
+ "minLength": 1
1094
+ },
1095
+ "name": {
1096
+ "type": "string",
1097
+ "minLength": 1
1098
+ },
1099
+ "completenessMetrics": {
1100
+ "type": "string",
1101
+ "minLength": 1
1102
+ },
1103
+ "accuracyMetrics": {
1104
+ "type": "string",
1105
+ "minLength": 1
1106
+ },
1107
+ "consistencyMetrics": {
1108
+ "type": "string",
1109
+ "minLength": 1
1110
+ },
1111
+ "freshnessMetrics": {
1112
+ "type": "string",
1113
+ "minLength": 1
1114
+ },
1115
+ "uniquenessMetrics": {
1116
+ "type": "string",
1117
+ "minLength": 1
1118
+ },
1119
+ "integrityMetrics": {
1120
+ "type": "string",
1121
+ "minLength": 1
1122
+ }
1123
+ }
1124
+ },
1125
+ "x-database": {
1126
+ "type": "object",
1127
+ "description": "Database mapping information",
1128
+ "required": ["id", "name", "table", "schema", "engine"],
1129
+ "properties": {
1130
+ "id": {
1131
+ "type": "string",
1132
+ "format": "uuid",
1133
+ "minLength": 1
1134
+ },
1135
+ "name": {
1136
+ "type": "string",
1137
+ "minLength": 1
1138
+ },
1139
+ "table": {
1140
+ "type": "string",
1141
+ "minLength": 1
1142
+ },
1143
+ "schema": {
1144
+ "type": "string",
1145
+ "minLength": 1
1146
+ },
1147
+ "engine": {
1148
+ "type": "string",
1149
+ "minLength": 1
1150
+ }
1151
+ }
1152
+ },
1153
+ "x-ui": {
1154
+ "type": "object",
1155
+ "description": "UI rendering hints",
1156
+ "required": [
1157
+ "id",
1158
+ "name",
1159
+ "component",
1160
+ "label",
1161
+ "placeholder",
1162
+ "helpText",
1163
+ "order",
1164
+ "readOnly",
1165
+ "hidden",
1166
+ "group"
1167
+ ],
1168
+ "properties": {
1169
+ "id": {
1170
+ "type": "string",
1171
+ "format": "uuid",
1172
+ "minLength": 1
1173
+ },
1174
+ "name": {
1175
+ "type": "string",
1176
+ "minLength": 1
1177
+ },
1178
+ "component": {
1179
+ "$ref": "#/definitions/UIComponent"
1180
+ },
1181
+ "label": {
1182
+ "type": "string",
1183
+ "minLength": 1
1184
+ },
1185
+ "placeholder": {
1186
+ "type": "string",
1187
+ "minLength": 1
1188
+ },
1189
+ "helpText": {
1190
+ "type": "string",
1191
+ "minLength": 1
1192
+ },
1193
+ "order": {
1194
+ "type": "integer"
1195
+ },
1196
+ "readOnly": {
1197
+ "type": "boolean"
1198
+ },
1199
+ "hidden": {
1200
+ "type": "boolean"
1201
+ },
1202
+ "group": {
1203
+ "type": "string",
1204
+ "minLength": 1
1205
+ }
1206
+ }
1207
+ },
1208
+ "x-security": {
1209
+ "type": "object",
1210
+ "description": "Security and privacy metadata",
1211
+ "required": [
1212
+ "id",
1213
+ "name",
1214
+ "pii",
1215
+ "encrypted",
1216
+ "classification",
1217
+ "retention",
1218
+ "masking",
1219
+ "redaction"
1220
+ ],
1221
+ "properties": {
1222
+ "id": {
1223
+ "type": "string",
1224
+ "format": "uuid",
1225
+ "minLength": 1
1226
+ },
1227
+ "name": {
1228
+ "type": "string",
1229
+ "minLength": 1
1230
+ },
1231
+ "pii": {
1232
+ "type": "boolean"
1233
+ },
1234
+ "encrypted": {
1235
+ "type": "boolean"
1236
+ },
1237
+ "classification": {
1238
+ "$ref": "#/definitions/SecurityClassification"
1239
+ },
1240
+ "retention": {
1241
+ "type": "string",
1242
+ "minLength": 1
1243
+ },
1244
+ "masking": {
1245
+ "$ref": "#/definitions/MaskingStrategy"
1246
+ },
1247
+ "redaction": {
1248
+ "type": "boolean"
1249
+ }
1250
+ }
1251
+ }
1252
+ }
1253
+ }