@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,1743 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://example.com/schemas/06-api-layer.schema.json",
4
+ "title": "API Layer Layer Schema",
5
+ "description": "Defines REST API contracts using OpenAPI 3.0, specifying endpoints, operations, request/response schemas, and security requirements.",
6
+ "layerMetadata": {
7
+ "layerId": "06-api-layer",
8
+ "layerName": "API 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": ["Components", "OpenAPIDocument", "Operation"],
19
+ "targetTypes": ["Paths", "Responses", "Schema"],
20
+ "examples": [
21
+ {
22
+ "source": "OpenAPIDocument",
23
+ "target": "Paths",
24
+ "description": "API document composes paths object defining all endpoints",
25
+ "layer": "06-api"
26
+ },
27
+ {
28
+ "source": "Operation",
29
+ "target": "Responses",
30
+ "description": "API operation composes its responses object",
31
+ "layer": "06-api"
32
+ },
33
+ {
34
+ "source": "Components",
35
+ "target": "Schema",
36
+ "description": "Components object composes reusable schema definitions",
37
+ "layer": "06-api"
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "relationshipTypeId": "aggregation",
43
+ "sourceTypes": ["OpenAPIDocument", "Operation"],
44
+ "targetTypes": ["SecurityRequirement", "Server", "Tag"],
45
+ "examples": [
46
+ {
47
+ "source": "OpenAPIDocument",
48
+ "target": "Server",
49
+ "description": "API document aggregates server definitions",
50
+ "layer": "06-api"
51
+ },
52
+ {
53
+ "source": "OpenAPIDocument",
54
+ "target": "Tag",
55
+ "description": "API document aggregates tag definitions for operation grouping",
56
+ "layer": "06-api"
57
+ },
58
+ {
59
+ "source": "Operation",
60
+ "target": "SecurityRequirement",
61
+ "description": "Operation aggregates its security requirements",
62
+ "layer": "06-api"
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "relationshipTypeId": "specialization",
68
+ "sourceTypes": ["Schema"],
69
+ "targetTypes": ["Schema"],
70
+ "examples": [
71
+ {
72
+ "source": "Schema",
73
+ "target": "Schema",
74
+ "description": "API schema specializes another via allOf/oneOf/anyOf composition",
75
+ "layer": "06-api"
76
+ }
77
+ ]
78
+ },
79
+ {
80
+ "relationshipTypeId": "realization",
81
+ "sourceTypes": ["ApplicationService", "Goal", "Outcome"],
82
+ "targetTypes": ["BusinessService", "Goal", "Value"],
83
+ "examples": [
84
+ {
85
+ "source": "Goal",
86
+ "target": "Value",
87
+ "description": "Goal realizes value for stakeholders",
88
+ "layer": "01-motivation"
89
+ },
90
+ {
91
+ "source": "Outcome",
92
+ "target": "Goal",
93
+ "description": "Outcome realizes achievement of goal",
94
+ "layer": "01-motivation"
95
+ },
96
+ {
97
+ "source": "ApplicationService",
98
+ "target": "BusinessService",
99
+ "description": "Application service realizes business service capability"
100
+ }
101
+ ]
102
+ },
103
+ {
104
+ "relationshipTypeId": "association",
105
+ "sourceTypes": ["Contact", "License"],
106
+ "targetTypes": ["OpenAPIDocument"],
107
+ "examples": [
108
+ {
109
+ "source": "Contact",
110
+ "target": "OpenAPIDocument",
111
+ "description": "Contact is associated with API document for support",
112
+ "layer": "06-api"
113
+ },
114
+ {
115
+ "source": "License",
116
+ "target": "OpenAPIDocument",
117
+ "description": "License is associated with API document for legal terms",
118
+ "layer": "06-api"
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "relationshipTypeId": "triggering",
124
+ "sourceTypes": ["Operation"],
125
+ "targetTypes": ["Callback"],
126
+ "examples": [
127
+ {
128
+ "source": "Operation",
129
+ "target": "Callback",
130
+ "description": "API operation triggers callback webhooks on events",
131
+ "layer": "06-api"
132
+ }
133
+ ]
134
+ },
135
+ {
136
+ "relationshipTypeId": "serving",
137
+ "sourceTypes": ["SecurityScheme"],
138
+ "targetTypes": ["Operation"],
139
+ "examples": [
140
+ {
141
+ "source": "SecurityScheme",
142
+ "target": "Operation",
143
+ "description": "Security scheme serves operations requiring authentication",
144
+ "layer": "06-api"
145
+ }
146
+ ]
147
+ },
148
+ {
149
+ "relationshipTypeId": "access",
150
+ "sourceTypes": ["BusinessProcess", "CoverageRequirement", "TestCaseSketch"],
151
+ "targetTypes": ["BusinessObject", "InputPartitionSelection", "InputSelection"],
152
+ "examples": [
153
+ {
154
+ "source": "BusinessProcess",
155
+ "target": "BusinessObject",
156
+ "description": "Business process accesses business object data"
157
+ },
158
+ {
159
+ "source": "TestCaseSketch",
160
+ "target": "InputSelection",
161
+ "description": "Test sketch accesses input selections for test execution",
162
+ "layer": "12-testing"
163
+ },
164
+ {
165
+ "source": "CoverageRequirement",
166
+ "target": "InputPartitionSelection",
167
+ "description": "Requirement accesses partition selections for coverage",
168
+ "layer": "12-testing"
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ "relationshipTypeId": "reference",
174
+ "sourceTypes": ["Link", "Operation", "Parameter", "Schema"],
175
+ "targetTypes": ["Operation", "Schema", "Tag"],
176
+ "examples": [
177
+ {
178
+ "source": "Schema",
179
+ "target": "Schema",
180
+ "description": "API schema references another schema via $ref",
181
+ "layer": "06-api"
182
+ },
183
+ {
184
+ "source": "Parameter",
185
+ "target": "Schema",
186
+ "description": "Parameter references a schema for its data type",
187
+ "layer": "06-api"
188
+ },
189
+ {
190
+ "source": "Link",
191
+ "target": "Operation",
192
+ "description": "Link references target operation via operationId for HATEOAS",
193
+ "layer": "06-api"
194
+ }
195
+ ]
196
+ },
197
+ {
198
+ "relationshipTypeId": "depends-on",
199
+ "sourceTypes": ["ApplicationService", "TestCaseSketch"],
200
+ "targetTypes": ["ContextVariation", "DataObject", "OutcomeCategory"],
201
+ "examples": [
202
+ {
203
+ "source": "ApplicationService",
204
+ "target": "DataObject",
205
+ "description": "Application service depends on data object"
206
+ },
207
+ {
208
+ "source": "TestCaseSketch",
209
+ "target": "ContextVariation",
210
+ "description": "Test sketch depends on context for execution environment",
211
+ "layer": "12-testing"
212
+ },
213
+ {
214
+ "source": "TestCaseSketch",
215
+ "target": "OutcomeCategory",
216
+ "description": "Test sketch depends on expected outcome category",
217
+ "layer": "12-testing"
218
+ }
219
+ ]
220
+ },
221
+ {
222
+ "relationshipTypeId": "supports-goals",
223
+ "sourceTypes": ["BusinessService", "Operation"],
224
+ "targetTypes": ["Goal"],
225
+ "examples": [
226
+ {
227
+ "source": "BusinessService",
228
+ "sourceLayer": "02-business",
229
+ "target": "Goal",
230
+ "targetLayer": "01-motivation",
231
+ "value": "goal-revenue-growth",
232
+ "description": "Payment service supports revenue growth goal"
233
+ },
234
+ {
235
+ "source": "Operation",
236
+ "sourceLayer": "06-api",
237
+ "target": "Goal",
238
+ "targetLayer": "01-motivation",
239
+ "value": "goal-customer-satisfaction",
240
+ "description": "GET /products operation supports customer satisfaction goal"
241
+ }
242
+ ]
243
+ },
244
+ {
245
+ "relationshipTypeId": "fulfills-requirements",
246
+ "sourceTypes": ["ApplicationService", "Operation"],
247
+ "targetTypes": ["Requirement"],
248
+ "examples": [
249
+ {
250
+ "source": "ApplicationService",
251
+ "target": "Requirement",
252
+ "description": "OAuth service fulfills authentication requirement"
253
+ },
254
+ {
255
+ "source": "Operation",
256
+ "sourceLayer": "06-api",
257
+ "target": "Requirement",
258
+ "targetLayer": "01-motivation",
259
+ "value": "req-product-creation-capability",
260
+ "description": "POST /products operation fulfills product creation requirement"
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "relationshipTypeId": "governed-by-principles",
266
+ "sourceTypes": ["APIOperation"],
267
+ "targetTypes": ["Principle"],
268
+ "examples": [
269
+ {
270
+ "source": "APIOperation",
271
+ "target": "Principle",
272
+ "description": "REST API governed by RESTful design principles"
273
+ }
274
+ ]
275
+ },
276
+ {
277
+ "relationshipTypeId": "constrainedby",
278
+ "sourceTypes": ["APIOperation"],
279
+ "targetTypes": ["Constraint"],
280
+ "examples": [
281
+ {
282
+ "source": "APIOperation",
283
+ "target": "Constraint",
284
+ "description": "API operation constrained by rate limit"
285
+ }
286
+ ]
287
+ },
288
+ {
289
+ "relationshipTypeId": "traces",
290
+ "sourceTypes": ["APIOperation"],
291
+ "targetTypes": ["DistributedTrace"],
292
+ "examples": [
293
+ {
294
+ "source": "APIOperation",
295
+ "target": "DistributedTrace",
296
+ "description": "API operation participates in distributed trace"
297
+ }
298
+ ]
299
+ }
300
+ ]
301
+ },
302
+ "crossLayerRelationships": {
303
+ "$comment": "Relationships to/from entities in other layers",
304
+ "outgoing": [
305
+ {
306
+ "id": "apm-criticality",
307
+ "predicate": "apm-criticality",
308
+ "inversePredicate": "referenced-by",
309
+ "targetLayer": "11-apm",
310
+ "targetTypes": ["Criticality"],
311
+ "sourceTypes": ["Operation", "SecurityScheme"],
312
+ "fieldPath": "x-apm-criticality",
313
+ "cardinality": "single",
314
+ "format": "duration",
315
+ "strength": "medium",
316
+ "required": false,
317
+ "description": "enum [low, medium, high, critical] (optional)",
318
+ "examples": []
319
+ },
320
+ {
321
+ "id": "apm-sla-target-availability",
322
+ "predicate": "sla-target-availability",
323
+ "inversePredicate": "referenced-by",
324
+ "targetLayer": "11-apm",
325
+ "targetTypes": ["SlaTargetAvailability"],
326
+ "sourceTypes": ["Operation", "SecurityScheme"],
327
+ "fieldPath": "apm.sla-target-availability",
328
+ "cardinality": "single",
329
+ "format": "percentage",
330
+ "strength": "medium",
331
+ "required": false,
332
+ "description": "string (e.g., \"99.95%\", \"99.99%\", optional)",
333
+ "examples": [
334
+ {
335
+ "elementType": "TechnologyService",
336
+ "elementId": "container-platform",
337
+ "elementName": "container-platform",
338
+ "fieldPath": "apm.sla-target-availability",
339
+ "value": "99.95%",
340
+ "layer": "05-technology"
341
+ },
342
+ {
343
+ "elementType": "TechnologyService",
344
+ "elementId": "database-service",
345
+ "elementName": "database-service",
346
+ "fieldPath": "apm.sla-target-availability",
347
+ "value": "99.99%",
348
+ "layer": "05-technology"
349
+ }
350
+ ]
351
+ },
352
+ {
353
+ "id": "apm-sla-target-latency",
354
+ "predicate": "sla-target-latency",
355
+ "inversePredicate": "referenced-by",
356
+ "targetLayer": "11-apm",
357
+ "targetTypes": ["SlaTargetLatency"],
358
+ "sourceTypes": ["Operation", "SecurityScheme"],
359
+ "fieldPath": "apm.sla-target-latency",
360
+ "cardinality": "single",
361
+ "format": "duration",
362
+ "strength": "medium",
363
+ "required": false,
364
+ "description": "string (e.g., \"200ms\", \"500ms\", optional)",
365
+ "examples": [
366
+ {
367
+ "elementType": "TechnologyService",
368
+ "elementId": "database-service",
369
+ "elementName": "database-service",
370
+ "fieldPath": "apm.sla-target-latency",
371
+ "value": "10ms",
372
+ "layer": "05-technology"
373
+ }
374
+ ]
375
+ },
376
+ {
377
+ "id": "apm-trace",
378
+ "predicate": "apm-trace",
379
+ "inversePredicate": "referenced-by",
380
+ "targetLayer": "11-apm",
381
+ "targetTypes": ["Trace"],
382
+ "sourceTypes": ["Operation", "SecurityScheme"],
383
+ "fieldPath": "x-apm-trace",
384
+ "cardinality": "single",
385
+ "format": "string",
386
+ "strength": "medium",
387
+ "required": false,
388
+ "description": "boolean (optional)",
389
+ "examples": []
390
+ },
391
+ {
392
+ "id": "archimate-ref",
393
+ "predicate": "archimate-ref",
394
+ "inversePredicate": "referenced-by",
395
+ "targetLayer": "04-application",
396
+ "targetTypes": ["Element"],
397
+ "sourceTypes": ["OpenAPIDocument", "Operation", "SecurityScheme"],
398
+ "fieldPath": "x-archimate-ref",
399
+ "cardinality": "single",
400
+ "format": "duration",
401
+ "strength": "medium",
402
+ "required": false,
403
+ "description": "string (Element.id reference to ApplicationService)",
404
+ "examples": []
405
+ },
406
+ {
407
+ "id": "business-apm-business-metrics",
408
+ "predicate": "business-metrics",
409
+ "inversePredicate": "referenced-by",
410
+ "targetLayer": "02-business",
411
+ "targetTypes": ["BusinessMetric"],
412
+ "sourceTypes": ["Operation", "SecurityScheme"],
413
+ "fieldPath": "apm.business-metrics",
414
+ "cardinality": "array",
415
+ "format": "reference",
416
+ "strength": "medium",
417
+ "required": false,
418
+ "description": "comma-separated business metric IDs this service tracks",
419
+ "examples": [
420
+ {
421
+ "elementType": "BusinessProcess",
422
+ "elementId": "order-process",
423
+ "elementName": "Order Fulfillment Process",
424
+ "fieldPath": "apm.business-metrics",
425
+ "value": "metric-order-fulfillment-time,metric-order-success-rate",
426
+ "layer": "02-business"
427
+ }
428
+ ]
429
+ },
430
+ {
431
+ "id": "business-interface-ref",
432
+ "predicate": "business-interface-ref",
433
+ "inversePredicate": "referenced-by",
434
+ "targetLayer": "02-business",
435
+ "targetTypes": ["BusinessInterface"],
436
+ "sourceTypes": ["Operation", "SecurityScheme"],
437
+ "fieldPath": "x-business-interface-ref",
438
+ "cardinality": "single",
439
+ "format": "duration",
440
+ "strength": "medium",
441
+ "required": false,
442
+ "description": "string (BusinessInterface.id, optional)",
443
+ "examples": []
444
+ },
445
+ {
446
+ "id": "business-service-ref",
447
+ "predicate": "business-service-ref",
448
+ "inversePredicate": "referenced-by",
449
+ "targetLayer": "02-business",
450
+ "targetTypes": ["BusinessService"],
451
+ "sourceTypes": ["Operation", "SecurityScheme"],
452
+ "fieldPath": "x-business-service-ref",
453
+ "cardinality": "single",
454
+ "format": "duration",
455
+ "strength": "medium",
456
+ "required": false,
457
+ "description": "string (BusinessService.id, optional)",
458
+ "examples": []
459
+ },
460
+ {
461
+ "id": "database-column",
462
+ "predicate": "database-column",
463
+ "inversePredicate": "referenced-by",
464
+ "targetLayer": "07-data-model",
465
+ "targetTypes": ["Column"],
466
+ "sourceTypes": ["Schema"],
467
+ "fieldPath": "x-database-column",
468
+ "cardinality": "single",
469
+ "format": "duration",
470
+ "strength": "medium",
471
+ "required": false,
472
+ "description": "string",
473
+ "examples": []
474
+ },
475
+ {
476
+ "id": "database-table",
477
+ "predicate": "database-table",
478
+ "inversePredicate": "referenced-by",
479
+ "targetLayer": "07-data-model",
480
+ "targetTypes": ["Table"],
481
+ "sourceTypes": ["Schema", "SecurityScheme"],
482
+ "fieldPath": "x-database-table",
483
+ "cardinality": "single",
484
+ "format": "duration",
485
+ "strength": "medium",
486
+ "required": false,
487
+ "description": "string",
488
+ "examples": []
489
+ },
490
+ {
491
+ "id": "motivation-constrained-by",
492
+ "predicate": "constrained-by",
493
+ "inversePredicate": "constrains",
494
+ "targetLayer": "01-motivation",
495
+ "targetTypes": ["ConstrainedBy"],
496
+ "sourceTypes": ["Operation", "SecurityScheme"],
497
+ "fieldPath": "motivation.constrained-by",
498
+ "cardinality": "array",
499
+ "format": "reference",
500
+ "strength": "medium",
501
+ "required": false,
502
+ "description": "string[] (Constraint IDs for regulatory/compliance, optional)",
503
+ "examples": [
504
+ {
505
+ "elementType": "Node",
506
+ "elementId": "k8s-cluster",
507
+ "elementName": "k8s-cluster",
508
+ "fieldPath": "motivation.constrained-by",
509
+ "value": "constraint-aws-infrastructure,constraint-budget-500k",
510
+ "layer": "05-technology"
511
+ },
512
+ {
513
+ "elementType": "Node",
514
+ "elementId": "postgres-cluster",
515
+ "elementName": "postgres-cluster",
516
+ "fieldPath": "motivation.constrained-by",
517
+ "value": "constraint-no-proprietary-databases",
518
+ "layer": "05-technology"
519
+ }
520
+ ]
521
+ },
522
+ {
523
+ "id": "motivation-fulfills-requirements",
524
+ "predicate": "fulfills-requirements",
525
+ "inversePredicate": "fulfilled-by",
526
+ "targetLayer": "01-motivation",
527
+ "targetTypes": ["FulfillsRequirement"],
528
+ "sourceTypes": ["Operation", "SecurityScheme"],
529
+ "fieldPath": "motivation.fulfills-requirements",
530
+ "cardinality": "array",
531
+ "format": "reference",
532
+ "strength": "high",
533
+ "required": false,
534
+ "description": "comma-separated Requirement IDs this function fulfills",
535
+ "examples": [
536
+ {
537
+ "elementType": "Node",
538
+ "elementId": "k8s-cluster",
539
+ "elementName": "k8s-cluster",
540
+ "fieldPath": "motivation.fulfills-requirements",
541
+ "value": "req-horizontal-scaling,req-99-95-availability",
542
+ "layer": "05-technology"
543
+ },
544
+ {
545
+ "elementType": "Node",
546
+ "elementId": "postgres-cluster",
547
+ "elementName": "postgres-cluster",
548
+ "fieldPath": "motivation.fulfills-requirements",
549
+ "value": "req-acid-compliance,req-replication",
550
+ "layer": "05-technology"
551
+ }
552
+ ]
553
+ },
554
+ {
555
+ "id": "motivation-governed-by-principles",
556
+ "predicate": "governed-by-principles",
557
+ "inversePredicate": "governs",
558
+ "targetLayer": "01-motivation",
559
+ "targetTypes": ["GovernedByPrinciple"],
560
+ "sourceTypes": ["OpenAPIDocument", "Operation", "SecurityScheme"],
561
+ "fieldPath": "motivation.governed-by-principles",
562
+ "cardinality": "array",
563
+ "format": "reference",
564
+ "strength": "high",
565
+ "required": false,
566
+ "description": "BusinessService governed by Principles",
567
+ "examples": [
568
+ {
569
+ "elementType": "BusinessService",
570
+ "elementId": "order-service",
571
+ "elementName": "Order Processing Service",
572
+ "fieldPath": "motivation.governed-by-principles",
573
+ "value": "principle-customer-first,principle-automation",
574
+ "layer": "02-business"
575
+ },
576
+ {
577
+ "elementType": "ApplicationService",
578
+ "elementId": "product-service",
579
+ "elementName": "product-service",
580
+ "fieldPath": "motivation.governed-by-principles",
581
+ "value": "principle-api-first,principle-cloud-native",
582
+ "layer": "04-application"
583
+ }
584
+ ]
585
+ },
586
+ {
587
+ "id": "motivation-supports-goals",
588
+ "predicate": "supports-goals",
589
+ "inversePredicate": "supported-by",
590
+ "targetLayer": "01-motivation",
591
+ "targetTypes": ["SupportsGoal"],
592
+ "sourceTypes": ["Operation", "SecurityScheme"],
593
+ "fieldPath": "motivation.supports-goals",
594
+ "cardinality": "array",
595
+ "format": "reference",
596
+ "strength": "high",
597
+ "required": false,
598
+ "description": "BusinessService supports Goals",
599
+ "examples": [
600
+ {
601
+ "elementType": "BusinessService",
602
+ "elementId": "order-service",
603
+ "elementName": "Order Processing Service",
604
+ "fieldPath": "motivation.supports-goals",
605
+ "value": "goal-customer-satisfaction,goal-revenue-growth",
606
+ "layer": "02-business"
607
+ },
608
+ {
609
+ "elementType": "ApplicationService",
610
+ "elementId": "product-service",
611
+ "elementName": "product-service",
612
+ "fieldPath": "motivation.supports-goals",
613
+ "value": "goal-product-catalog-accuracy,goal-customer-satisfaction",
614
+ "layer": "04-application"
615
+ }
616
+ ]
617
+ },
618
+ {
619
+ "id": "security-classification",
620
+ "predicate": "classification",
621
+ "inversePredicate": "referenced-by",
622
+ "targetLayer": "03-security",
623
+ "targetTypes": ["Classification"],
624
+ "sourceTypes": ["Artifact"],
625
+ "fieldPath": "security.classification",
626
+ "cardinality": "single",
627
+ "format": "string",
628
+ "strength": "low",
629
+ "required": false,
630
+ "description": "Links to Classification in target layer",
631
+ "examples": [
632
+ {
633
+ "elementType": "Artifact",
634
+ "elementId": "product-db",
635
+ "elementName": "product-db",
636
+ "fieldPath": "security.classification",
637
+ "value": "internal",
638
+ "layer": "05-technology"
639
+ },
640
+ {
641
+ "elementType": "Artifact",
642
+ "elementId": "customer-db",
643
+ "elementName": "customer-db",
644
+ "fieldPath": "security.classification",
645
+ "value": "restricted",
646
+ "layer": "05-technology"
647
+ }
648
+ ]
649
+ },
650
+ {
651
+ "id": "security-encrypted",
652
+ "predicate": "encrypted",
653
+ "inversePredicate": "referenced-by",
654
+ "targetLayer": "03-security",
655
+ "targetTypes": ["Encrypted"],
656
+ "sourceTypes": ["Schema"],
657
+ "fieldPath": "x-encrypted",
658
+ "cardinality": "single",
659
+ "format": "string",
660
+ "strength": "medium",
661
+ "required": false,
662
+ "description": "boolean",
663
+ "examples": []
664
+ },
665
+ {
666
+ "id": "security-pii",
667
+ "predicate": "pii",
668
+ "inversePredicate": "referenced-by",
669
+ "targetLayer": "03-security",
670
+ "targetTypes": ["Pii"],
671
+ "sourceTypes": ["Schema"],
672
+ "fieldPath": "security.pii",
673
+ "cardinality": "single",
674
+ "format": "boolean",
675
+ "strength": "medium",
676
+ "required": false,
677
+ "description": "contains personally identifiable information",
678
+ "examples": [
679
+ {
680
+ "elementType": "Artifact",
681
+ "elementId": "customer-db",
682
+ "elementName": "customer-db",
683
+ "fieldPath": "security.pii",
684
+ "value": "true",
685
+ "layer": "05-technology"
686
+ }
687
+ ]
688
+ },
689
+ {
690
+ "id": "security-required-permissions",
691
+ "predicate": "required-permissions",
692
+ "inversePredicate": "referenced-by",
693
+ "targetLayer": "03-security",
694
+ "targetTypes": ["Permission"],
695
+ "sourceTypes": ["Operation", "SecurityScheme"],
696
+ "fieldPath": "x-required-permissions",
697
+ "cardinality": "array",
698
+ "format": "duration",
699
+ "strength": "critical",
700
+ "required": false,
701
+ "description": "string[] (Permission.name[], optional)",
702
+ "examples": []
703
+ },
704
+ {
705
+ "id": "security-resource",
706
+ "predicate": "security-resource",
707
+ "inversePredicate": "referenced-by",
708
+ "targetLayer": "03-security",
709
+ "targetTypes": ["SecureResource"],
710
+ "sourceTypes": ["Operation", "SecurityScheme"],
711
+ "fieldPath": "x-security-resource",
712
+ "cardinality": "single",
713
+ "format": "duration",
714
+ "strength": "critical",
715
+ "required": false,
716
+ "description": "string (SecureResource.resource, optional)",
717
+ "examples": []
718
+ }
719
+ ],
720
+ "incoming": []
721
+ },
722
+ "type": "object",
723
+ "properties": {
724
+ "open-api-documents": {
725
+ "type": "array",
726
+ "description": "Collection of OpenAPIDocument entities",
727
+ "items": {
728
+ "$ref": "#/definitions/OpenAPIDocument"
729
+ }
730
+ },
731
+ "infos": {
732
+ "type": "array",
733
+ "description": "Collection of Info entities",
734
+ "items": {
735
+ "$ref": "#/definitions/Info"
736
+ }
737
+ },
738
+ "servers": {
739
+ "type": "array",
740
+ "description": "Collection of Server entities",
741
+ "items": {
742
+ "$ref": "#/definitions/Server"
743
+ }
744
+ },
745
+ "pathses": {
746
+ "type": "array",
747
+ "description": "Collection of Paths entities",
748
+ "items": {
749
+ "$ref": "#/definitions/Paths"
750
+ }
751
+ },
752
+ "path-items": {
753
+ "type": "array",
754
+ "description": "Collection of PathItem entities",
755
+ "items": {
756
+ "$ref": "#/definitions/PathItem"
757
+ }
758
+ },
759
+ "operations": {
760
+ "type": "array",
761
+ "description": "Collection of Operation entities",
762
+ "items": {
763
+ "$ref": "#/definitions/Operation"
764
+ }
765
+ },
766
+ "parameters": {
767
+ "type": "array",
768
+ "description": "Collection of Parameter entities",
769
+ "items": {
770
+ "$ref": "#/definitions/Parameter"
771
+ }
772
+ },
773
+ "request-bodies": {
774
+ "type": "array",
775
+ "description": "Collection of RequestBody entities",
776
+ "items": {
777
+ "$ref": "#/definitions/RequestBody"
778
+ }
779
+ },
780
+ "responseses": {
781
+ "type": "array",
782
+ "description": "Collection of Responses entities",
783
+ "items": {
784
+ "$ref": "#/definitions/Responses"
785
+ }
786
+ },
787
+ "responses": {
788
+ "type": "array",
789
+ "description": "Collection of Response entities",
790
+ "items": {
791
+ "$ref": "#/definitions/Response"
792
+ }
793
+ },
794
+ "media-types": {
795
+ "type": "array",
796
+ "description": "Collection of MediaType entities",
797
+ "items": {
798
+ "$ref": "#/definitions/MediaType"
799
+ }
800
+ },
801
+ "componentses": {
802
+ "type": "array",
803
+ "description": "Collection of Components entities",
804
+ "items": {
805
+ "$ref": "#/definitions/Components"
806
+ }
807
+ },
808
+ "schemas": {
809
+ "type": "array",
810
+ "description": "Collection of Schema entities",
811
+ "items": {
812
+ "$ref": "#/definitions/Schema"
813
+ }
814
+ },
815
+ "tags": {
816
+ "type": "array",
817
+ "description": "Collection of Tag entities",
818
+ "items": {
819
+ "$ref": "#/definitions/Tag"
820
+ }
821
+ },
822
+ "external-documentations": {
823
+ "type": "array",
824
+ "description": "Collection of ExternalDocumentation entities",
825
+ "items": {
826
+ "$ref": "#/definitions/ExternalDocumentation"
827
+ }
828
+ },
829
+ "contacts": {
830
+ "type": "array",
831
+ "description": "Collection of Contact entities",
832
+ "items": {
833
+ "$ref": "#/definitions/Contact"
834
+ }
835
+ },
836
+ "licenses": {
837
+ "type": "array",
838
+ "description": "Collection of License entities",
839
+ "items": {
840
+ "$ref": "#/definitions/License"
841
+ }
842
+ },
843
+ "server-variables": {
844
+ "type": "array",
845
+ "description": "Collection of ServerVariable entities",
846
+ "items": {
847
+ "$ref": "#/definitions/ServerVariable"
848
+ }
849
+ },
850
+ "headers": {
851
+ "type": "array",
852
+ "description": "Collection of Header entities",
853
+ "items": {
854
+ "$ref": "#/definitions/Header"
855
+ }
856
+ },
857
+ "links": {
858
+ "type": "array",
859
+ "description": "Collection of Link entities",
860
+ "items": {
861
+ "$ref": "#/definitions/Link"
862
+ }
863
+ },
864
+ "callbacks": {
865
+ "type": "array",
866
+ "description": "Collection of Callback entities",
867
+ "items": {
868
+ "$ref": "#/definitions/Callback"
869
+ }
870
+ },
871
+ "examples": {
872
+ "type": "array",
873
+ "description": "Collection of Example entities",
874
+ "items": {
875
+ "$ref": "#/definitions/Example"
876
+ }
877
+ },
878
+ "encodings": {
879
+ "type": "array",
880
+ "description": "Collection of Encoding entities",
881
+ "items": {
882
+ "$ref": "#/definitions/Encoding"
883
+ }
884
+ },
885
+ "o-auth-flowses": {
886
+ "type": "array",
887
+ "description": "Collection of OAuthFlows entities",
888
+ "items": {
889
+ "$ref": "#/definitions/OAuthFlows"
890
+ }
891
+ },
892
+ "o-auth-flows": {
893
+ "type": "array",
894
+ "description": "Collection of OAuthFlow entities",
895
+ "items": {
896
+ "$ref": "#/definitions/OAuthFlow"
897
+ }
898
+ },
899
+ "security-schemes": {
900
+ "type": "array",
901
+ "description": "Collection of SecurityScheme entities",
902
+ "items": {
903
+ "$ref": "#/definitions/SecurityScheme"
904
+ }
905
+ }
906
+ },
907
+ "definitions": {
908
+ "ParameterLocation": {
909
+ "type": "string",
910
+ "enum": ["query", "header", "path", "cookie"]
911
+ },
912
+ "ParameterStyle": {
913
+ "type": "string",
914
+ "enum": ["matrix", "label", "form", "simple", "spaceDelimited", "pipeDelimited", "deepObject"]
915
+ },
916
+ "SecurityType": {
917
+ "type": "string",
918
+ "enum": ["apiKey", "http", "oauth2", "openIdConnect"]
919
+ },
920
+ "OpenAPIDocument": {
921
+ "type": "object",
922
+ "description": "Root of an OpenAPI specification file",
923
+ "required": ["id", "name", "openapi", "info", "servers", "paths", "security", "tags"],
924
+ "properties": {
925
+ "id": {
926
+ "type": "string",
927
+ "format": "uuid",
928
+ "minLength": 1
929
+ },
930
+ "name": {
931
+ "type": "string",
932
+ "minLength": 1
933
+ },
934
+ "openapi": {
935
+ "type": "string",
936
+ "minLength": 1
937
+ },
938
+ "info": {
939
+ "type": "string",
940
+ "minLength": 1
941
+ },
942
+ "servers": {
943
+ "type": "string",
944
+ "minLength": 1
945
+ },
946
+ "paths": {
947
+ "type": "string",
948
+ "minLength": 1
949
+ },
950
+ "components": {
951
+ "type": "string",
952
+ "minLength": 1
953
+ },
954
+ "security": {
955
+ "type": "string",
956
+ "minLength": 1
957
+ },
958
+ "tags": {
959
+ "type": "string",
960
+ "minLength": 1
961
+ },
962
+ "externalDocs": {
963
+ "type": "string",
964
+ "minLength": 1
965
+ }
966
+ }
967
+ },
968
+ "Info": {
969
+ "type": "object",
970
+ "description": "Metadata about the API",
971
+ "required": ["id", "name", "title", "version", "termsOfService"],
972
+ "properties": {
973
+ "id": {
974
+ "type": "string",
975
+ "format": "uuid",
976
+ "minLength": 1
977
+ },
978
+ "name": {
979
+ "type": "string",
980
+ "minLength": 1
981
+ },
982
+ "title": {
983
+ "type": "string",
984
+ "minLength": 1
985
+ },
986
+ "description": {
987
+ "type": "string",
988
+ "minLength": 1
989
+ },
990
+ "version": {
991
+ "type": "string",
992
+ "minLength": 1
993
+ },
994
+ "termsOfService": {
995
+ "type": "string",
996
+ "minLength": 1
997
+ },
998
+ "contact": {
999
+ "type": "string",
1000
+ "minLength": 1
1001
+ },
1002
+ "license": {
1003
+ "type": "string",
1004
+ "minLength": 1
1005
+ }
1006
+ }
1007
+ },
1008
+ "Server": {
1009
+ "type": "object",
1010
+ "description": "Server where the API is available",
1011
+ "required": ["id", "name", "url", "variables"],
1012
+ "properties": {
1013
+ "id": {
1014
+ "type": "string",
1015
+ "format": "uuid",
1016
+ "minLength": 1
1017
+ },
1018
+ "name": {
1019
+ "type": "string",
1020
+ "minLength": 1
1021
+ },
1022
+ "url": {
1023
+ "type": "string",
1024
+ "minLength": 1
1025
+ },
1026
+ "description": {
1027
+ "type": "string",
1028
+ "minLength": 1
1029
+ },
1030
+ "variables": {
1031
+ "type": "string",
1032
+ "minLength": 1
1033
+ }
1034
+ }
1035
+ },
1036
+ "Paths": {
1037
+ "type": "object",
1038
+ "description": "Available API endpoints and operations",
1039
+ "required": ["id", "name"],
1040
+ "properties": {
1041
+ "id": {
1042
+ "type": "string",
1043
+ "format": "uuid",
1044
+ "minLength": 1
1045
+ },
1046
+ "name": {
1047
+ "type": "string",
1048
+ "minLength": 1
1049
+ }
1050
+ }
1051
+ },
1052
+ "PathItem": {
1053
+ "type": "object",
1054
+ "description": "Operations available on a path",
1055
+ "required": ["id", "name", "servers", "parameters"],
1056
+ "properties": {
1057
+ "id": {
1058
+ "type": "string",
1059
+ "format": "uuid",
1060
+ "minLength": 1
1061
+ },
1062
+ "name": {
1063
+ "type": "string",
1064
+ "minLength": 1
1065
+ },
1066
+ "summary": {
1067
+ "type": "string",
1068
+ "minLength": 1
1069
+ },
1070
+ "description": {
1071
+ "type": "string",
1072
+ "minLength": 1
1073
+ },
1074
+ "servers": {
1075
+ "type": "string",
1076
+ "minLength": 1
1077
+ },
1078
+ "parameters": {
1079
+ "type": "string",
1080
+ "minLength": 1
1081
+ },
1082
+ "x-source-reference": {
1083
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference",
1084
+ "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)."
1085
+ }
1086
+ }
1087
+ },
1088
+ "Operation": {
1089
+ "type": "object",
1090
+ "description": "Single API operation (HTTP method on a path)",
1091
+ "required": ["id", "name", "operationId", "summary", "description", "tags"],
1092
+ "properties": {
1093
+ "id": {
1094
+ "type": "string",
1095
+ "format": "uuid",
1096
+ "minLength": 1
1097
+ },
1098
+ "name": {
1099
+ "type": "string",
1100
+ "minLength": 1
1101
+ },
1102
+ "operationId": {
1103
+ "type": "string",
1104
+ "minLength": 1
1105
+ },
1106
+ "summary": {
1107
+ "type": "string",
1108
+ "minLength": 1
1109
+ },
1110
+ "description": {
1111
+ "type": "string",
1112
+ "minLength": 1
1113
+ },
1114
+ "tags": {
1115
+ "type": "string",
1116
+ "minLength": 1
1117
+ },
1118
+ "deprecated": {
1119
+ "type": "boolean"
1120
+ },
1121
+ "parameters": {
1122
+ "type": "array",
1123
+ "description": "Contains relationship",
1124
+ "items": {
1125
+ "type": "string"
1126
+ }
1127
+ },
1128
+ "requestBody": {
1129
+ "type": "array",
1130
+ "description": "Contains relationship",
1131
+ "items": {
1132
+ "type": "string"
1133
+ }
1134
+ },
1135
+ "responses": {
1136
+ "type": "array",
1137
+ "description": "Contains relationship",
1138
+ "items": {
1139
+ "type": "string"
1140
+ }
1141
+ },
1142
+ "callbacks": {
1143
+ "type": "array",
1144
+ "description": "Contains relationship",
1145
+ "items": {
1146
+ "type": "string"
1147
+ }
1148
+ },
1149
+ "security": {
1150
+ "type": "array",
1151
+ "description": "Contains relationship",
1152
+ "items": {
1153
+ "type": "string"
1154
+ }
1155
+ },
1156
+ "x-source-reference": {
1157
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference",
1158
+ "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)."
1159
+ }
1160
+ }
1161
+ },
1162
+ "Parameter": {
1163
+ "type": "object",
1164
+ "description": "Parameter for an operation",
1165
+ "required": ["id", "name", "in", "required"],
1166
+ "properties": {
1167
+ "id": {
1168
+ "type": "string",
1169
+ "format": "uuid",
1170
+ "minLength": 1
1171
+ },
1172
+ "name": {
1173
+ "type": "string",
1174
+ "minLength": 1
1175
+ },
1176
+ "in": {
1177
+ "type": "string",
1178
+ "minLength": 1
1179
+ },
1180
+ "description": {
1181
+ "type": "string",
1182
+ "minLength": 1
1183
+ },
1184
+ "required": {
1185
+ "type": "boolean"
1186
+ },
1187
+ "deprecated": {
1188
+ "type": "boolean"
1189
+ },
1190
+ "allowEmptyValue": {
1191
+ "type": "boolean"
1192
+ }
1193
+ }
1194
+ },
1195
+ "RequestBody": {
1196
+ "type": "object",
1197
+ "description": "Request payload for an operation",
1198
+ "required": ["id", "name"],
1199
+ "properties": {
1200
+ "id": {
1201
+ "type": "string",
1202
+ "format": "uuid",
1203
+ "minLength": 1
1204
+ },
1205
+ "name": {
1206
+ "type": "string",
1207
+ "minLength": 1
1208
+ },
1209
+ "description": {
1210
+ "type": "string",
1211
+ "minLength": 1
1212
+ },
1213
+ "required": {
1214
+ "type": "boolean"
1215
+ }
1216
+ }
1217
+ },
1218
+ "Responses": {
1219
+ "type": "object",
1220
+ "description": "Possible responses from an operation",
1221
+ "required": ["id", "name"],
1222
+ "properties": {
1223
+ "id": {
1224
+ "type": "string",
1225
+ "format": "uuid",
1226
+ "minLength": 1
1227
+ },
1228
+ "name": {
1229
+ "type": "string",
1230
+ "minLength": 1
1231
+ }
1232
+ }
1233
+ },
1234
+ "Response": {
1235
+ "type": "object",
1236
+ "description": "Single response definition",
1237
+ "required": ["id", "name", "description"],
1238
+ "properties": {
1239
+ "id": {
1240
+ "type": "string",
1241
+ "format": "uuid",
1242
+ "minLength": 1
1243
+ },
1244
+ "name": {
1245
+ "type": "string",
1246
+ "minLength": 1
1247
+ },
1248
+ "description": {
1249
+ "type": "string",
1250
+ "minLength": 1
1251
+ }
1252
+ }
1253
+ },
1254
+ "MediaType": {
1255
+ "type": "object",
1256
+ "description": "Media type and schema for request/response body",
1257
+ "required": ["id", "name", "contentType"],
1258
+ "properties": {
1259
+ "id": {
1260
+ "type": "string",
1261
+ "format": "uuid",
1262
+ "minLength": 1
1263
+ },
1264
+ "name": {
1265
+ "type": "string",
1266
+ "minLength": 1
1267
+ },
1268
+ "contentType": {
1269
+ "type": "string",
1270
+ "minLength": 1
1271
+ },
1272
+ "example": {
1273
+ "type": "string",
1274
+ "minLength": 1
1275
+ },
1276
+ "schema": {
1277
+ "type": "array",
1278
+ "description": "Contains relationship",
1279
+ "items": {
1280
+ "type": "string"
1281
+ }
1282
+ },
1283
+ "examples": {
1284
+ "type": "array",
1285
+ "description": "Contains relationship",
1286
+ "items": {
1287
+ "type": "string"
1288
+ }
1289
+ },
1290
+ "encoding": {
1291
+ "type": "array",
1292
+ "description": "Contains relationship",
1293
+ "items": {
1294
+ "type": "string"
1295
+ }
1296
+ }
1297
+ }
1298
+ },
1299
+ "Components": {
1300
+ "type": "object",
1301
+ "description": "Reusable component definitions",
1302
+ "required": ["id", "name"],
1303
+ "properties": {
1304
+ "id": {
1305
+ "type": "string",
1306
+ "format": "uuid",
1307
+ "minLength": 1
1308
+ },
1309
+ "name": {
1310
+ "type": "string",
1311
+ "minLength": 1
1312
+ },
1313
+ "schemas": {
1314
+ "type": "array",
1315
+ "description": "Contains relationship",
1316
+ "items": {
1317
+ "type": "string"
1318
+ }
1319
+ },
1320
+ "responses": {
1321
+ "type": "array",
1322
+ "description": "Contains relationship",
1323
+ "items": {
1324
+ "type": "string"
1325
+ }
1326
+ },
1327
+ "parameters": {
1328
+ "type": "array",
1329
+ "description": "Contains relationship",
1330
+ "items": {
1331
+ "type": "string"
1332
+ }
1333
+ },
1334
+ "examples": {
1335
+ "type": "array",
1336
+ "description": "Contains relationship",
1337
+ "items": {
1338
+ "type": "string"
1339
+ }
1340
+ },
1341
+ "requestBodies": {
1342
+ "type": "array",
1343
+ "description": "Contains relationship",
1344
+ "items": {
1345
+ "type": "string"
1346
+ }
1347
+ },
1348
+ "headers": {
1349
+ "type": "array",
1350
+ "description": "Contains relationship",
1351
+ "items": {
1352
+ "type": "string"
1353
+ }
1354
+ },
1355
+ "securitySchemes": {
1356
+ "type": "array",
1357
+ "description": "Contains relationship",
1358
+ "items": {
1359
+ "type": "string"
1360
+ }
1361
+ },
1362
+ "links": {
1363
+ "type": "array",
1364
+ "description": "Contains relationship",
1365
+ "items": {
1366
+ "type": "string"
1367
+ }
1368
+ },
1369
+ "callbacks": {
1370
+ "type": "array",
1371
+ "description": "Contains relationship",
1372
+ "items": {
1373
+ "type": "string"
1374
+ }
1375
+ }
1376
+ }
1377
+ },
1378
+ "Schema": {
1379
+ "type": "object",
1380
+ "description": "Data type definition (JSON Schema subset)",
1381
+ "required": ["id", "name", "type", "format"],
1382
+ "properties": {
1383
+ "id": {
1384
+ "type": "string",
1385
+ "format": "uuid",
1386
+ "minLength": 1
1387
+ },
1388
+ "name": {
1389
+ "type": "string",
1390
+ "minLength": 1
1391
+ },
1392
+ "type": {
1393
+ "type": "string",
1394
+ "minLength": 1
1395
+ },
1396
+ "title": {
1397
+ "type": "string",
1398
+ "minLength": 1
1399
+ },
1400
+ "description": {
1401
+ "type": "string",
1402
+ "minLength": 1
1403
+ },
1404
+ "format": {
1405
+ "type": "string",
1406
+ "minLength": 1
1407
+ },
1408
+ "default": {
1409
+ "type": "string",
1410
+ "minLength": 1
1411
+ },
1412
+ "enum": {
1413
+ "type": "string",
1414
+ "minLength": 1
1415
+ },
1416
+ "nullable": {
1417
+ "type": "boolean"
1418
+ }
1419
+ }
1420
+ },
1421
+ "Tag": {
1422
+ "type": "object",
1423
+ "description": "A metadata label used to group and categorize API operations for documentation organization. Enables logical grouping of endpoints in generated API documentation.",
1424
+ "required": ["id", "name"],
1425
+ "properties": {
1426
+ "id": {
1427
+ "type": "string",
1428
+ "format": "uuid",
1429
+ "minLength": 1
1430
+ },
1431
+ "name": {
1432
+ "type": "string",
1433
+ "minLength": 1
1434
+ },
1435
+ "description": {
1436
+ "type": "string",
1437
+ "minLength": 1
1438
+ }
1439
+ }
1440
+ },
1441
+ "ExternalDocumentation": {
1442
+ "type": "object",
1443
+ "description": "A reference to external documentation resources (URLs, wikis, guides) that provide additional context beyond the inline API specification. Links API elements to comprehensive documentation.",
1444
+ "required": ["id", "url"],
1445
+ "properties": {
1446
+ "id": {
1447
+ "type": "string",
1448
+ "format": "uuid",
1449
+ "minLength": 1
1450
+ },
1451
+ "description": {
1452
+ "type": "string",
1453
+ "minLength": 1
1454
+ },
1455
+ "url": {
1456
+ "type": "string",
1457
+ "minLength": 1
1458
+ }
1459
+ }
1460
+ },
1461
+ "Contact": {
1462
+ "type": "object",
1463
+ "description": "Contact information for the API owner or maintainer, including name, email, and URL. Enables consumers to reach out for support or collaboration.",
1464
+ "required": ["id", "url", "email", "name"],
1465
+ "properties": {
1466
+ "id": {
1467
+ "type": "string",
1468
+ "format": "uuid",
1469
+ "minLength": 1
1470
+ },
1471
+ "name": {
1472
+ "type": "string",
1473
+ "minLength": 1
1474
+ },
1475
+ "url": {
1476
+ "type": "string",
1477
+ "minLength": 1
1478
+ },
1479
+ "email": {
1480
+ "type": "string",
1481
+ "minLength": 1
1482
+ }
1483
+ }
1484
+ },
1485
+ "License": {
1486
+ "type": "object",
1487
+ "description": "Specifies the legal license under which the API is provided, including license name and URL to full terms. Clarifies usage rights for API consumers.",
1488
+ "required": ["id", "name", "url"],
1489
+ "properties": {
1490
+ "id": {
1491
+ "type": "string",
1492
+ "format": "uuid",
1493
+ "minLength": 1
1494
+ },
1495
+ "name": {
1496
+ "type": "string",
1497
+ "minLength": 1
1498
+ },
1499
+ "url": {
1500
+ "type": "string",
1501
+ "minLength": 1
1502
+ }
1503
+ }
1504
+ },
1505
+ "ServerVariable": {
1506
+ "type": "object",
1507
+ "description": "A variable placeholder in server URL templates that can be substituted at runtime. Enables dynamic server addressing for different environments or tenants.",
1508
+ "required": ["id", "name", "default", "enum"],
1509
+ "properties": {
1510
+ "id": {
1511
+ "type": "string",
1512
+ "format": "uuid",
1513
+ "minLength": 1
1514
+ },
1515
+ "name": {
1516
+ "type": "string",
1517
+ "minLength": 1
1518
+ },
1519
+ "default": {
1520
+ "type": "string",
1521
+ "minLength": 1
1522
+ },
1523
+ "enum": {
1524
+ "type": "string",
1525
+ "minLength": 1
1526
+ },
1527
+ "description": {
1528
+ "type": "string",
1529
+ "minLength": 1
1530
+ }
1531
+ }
1532
+ },
1533
+ "Header": {
1534
+ "type": "object",
1535
+ "description": "Defines HTTP header parameters for requests or responses, specifying name, schema, required status, and description. Documents header-based communication requirements.",
1536
+ "required": ["id", "name"],
1537
+ "properties": {
1538
+ "id": {
1539
+ "type": "string",
1540
+ "format": "uuid",
1541
+ "minLength": 1
1542
+ },
1543
+ "name": {
1544
+ "type": "string",
1545
+ "minLength": 1
1546
+ },
1547
+ "description": {
1548
+ "type": "string",
1549
+ "minLength": 1
1550
+ },
1551
+ "required": {
1552
+ "type": "boolean"
1553
+ },
1554
+ "deprecated": {
1555
+ "type": "boolean"
1556
+ },
1557
+ "allowEmptyValue": {
1558
+ "type": "boolean"
1559
+ }
1560
+ }
1561
+ },
1562
+ "Link": {
1563
+ "type": "object",
1564
+ "description": "Describes a relationship between API responses and subsequent operations, enabling hypermedia-driven API navigation. Supports HATEOAS design patterns.",
1565
+ "required": ["id", "name", "operationId", "operationRef"],
1566
+ "properties": {
1567
+ "id": {
1568
+ "type": "string",
1569
+ "format": "uuid",
1570
+ "minLength": 1
1571
+ },
1572
+ "name": {
1573
+ "type": "string",
1574
+ "minLength": 1
1575
+ },
1576
+ "operationId": {
1577
+ "type": "string",
1578
+ "minLength": 1
1579
+ },
1580
+ "operationRef": {
1581
+ "type": "string",
1582
+ "minLength": 1
1583
+ },
1584
+ "description": {
1585
+ "type": "string",
1586
+ "minLength": 1
1587
+ }
1588
+ }
1589
+ },
1590
+ "Callback": {
1591
+ "type": "object",
1592
+ "description": "Defines a webhook or callback URL pattern where the API will send asynchronous notifications. Enables event-driven integrations and async workflows.",
1593
+ "required": ["id", "name"],
1594
+ "properties": {
1595
+ "id": {
1596
+ "type": "string",
1597
+ "format": "uuid",
1598
+ "minLength": 1
1599
+ },
1600
+ "name": {
1601
+ "type": "string",
1602
+ "minLength": 1
1603
+ }
1604
+ }
1605
+ },
1606
+ "Example": {
1607
+ "type": "object",
1608
+ "description": "Provides sample values for request bodies, responses, or parameters. Improves documentation clarity and enables automated testing or mocking.",
1609
+ "required": ["id", "name", "summary", "description", "value", "externalValue"],
1610
+ "properties": {
1611
+ "id": {
1612
+ "type": "string",
1613
+ "format": "uuid",
1614
+ "minLength": 1
1615
+ },
1616
+ "name": {
1617
+ "type": "string",
1618
+ "minLength": 1
1619
+ },
1620
+ "summary": {
1621
+ "type": "string",
1622
+ "minLength": 1
1623
+ },
1624
+ "description": {
1625
+ "type": "string",
1626
+ "minLength": 1
1627
+ },
1628
+ "value": {
1629
+ "type": "string",
1630
+ "minLength": 1
1631
+ },
1632
+ "externalValue": {
1633
+ "type": "string",
1634
+ "minLength": 1
1635
+ }
1636
+ }
1637
+ },
1638
+ "Encoding": {
1639
+ "type": "object",
1640
+ "description": "Specifies serialization details for multipart request body properties, including content-type, headers, and encoding style. Handles complex content negotiation.",
1641
+ "required": ["id", "propertyName", "contentType", "style"],
1642
+ "properties": {
1643
+ "id": {
1644
+ "type": "string",
1645
+ "format": "uuid",
1646
+ "minLength": 1
1647
+ },
1648
+ "propertyName": {
1649
+ "type": "string",
1650
+ "minLength": 1
1651
+ },
1652
+ "contentType": {
1653
+ "type": "string",
1654
+ "minLength": 1
1655
+ },
1656
+ "style": {
1657
+ "type": "string",
1658
+ "minLength": 1
1659
+ },
1660
+ "explode": {
1661
+ "type": "boolean"
1662
+ },
1663
+ "allowReserved": {
1664
+ "type": "boolean"
1665
+ }
1666
+ }
1667
+ },
1668
+ "OAuthFlows": {
1669
+ "type": "object",
1670
+ "description": "Configuration for OAuth 2.0 authentication flows (implicit, password, clientCredentials, authorizationCode), specifying authorization URLs, token URLs, and scopes. Defines OAuth security implementation.",
1671
+ "required": ["id", "name"],
1672
+ "properties": {
1673
+ "id": {
1674
+ "type": "string",
1675
+ "format": "uuid",
1676
+ "minLength": 1
1677
+ },
1678
+ "name": {
1679
+ "type": "string",
1680
+ "minLength": 1
1681
+ }
1682
+ }
1683
+ },
1684
+ "OAuthFlow": {
1685
+ "type": "object",
1686
+ "description": "Individual OAuth 2.0 flow configuration",
1687
+ "required": ["authorizationUrl", "tokenUrl", "scopes"],
1688
+ "properties": {
1689
+ "authorizationUrl": {
1690
+ "type": "string",
1691
+ "minLength": 1
1692
+ },
1693
+ "tokenUrl": {
1694
+ "type": "string",
1695
+ "minLength": 1
1696
+ },
1697
+ "refreshUrl": {
1698
+ "type": "string",
1699
+ "minLength": 1
1700
+ },
1701
+ "scopes": {
1702
+ "type": "object"
1703
+ }
1704
+ }
1705
+ },
1706
+ "SecurityScheme": {
1707
+ "type": "object",
1708
+ "description": "Security mechanism for the API",
1709
+ "required": ["id", "type", "name", "in", "scheme", "bearerFormat"],
1710
+ "properties": {
1711
+ "id": {
1712
+ "type": "string",
1713
+ "format": "uuid",
1714
+ "minLength": 1
1715
+ },
1716
+ "type": {
1717
+ "type": "string",
1718
+ "minLength": 1
1719
+ },
1720
+ "description": {
1721
+ "type": "string",
1722
+ "minLength": 1
1723
+ },
1724
+ "name": {
1725
+ "type": "string",
1726
+ "minLength": 1
1727
+ },
1728
+ "in": {
1729
+ "type": "string",
1730
+ "minLength": 1
1731
+ },
1732
+ "scheme": {
1733
+ "type": "string",
1734
+ "minLength": 1
1735
+ },
1736
+ "bearerFormat": {
1737
+ "type": "string",
1738
+ "minLength": 1
1739
+ }
1740
+ }
1741
+ }
1742
+ }
1743
+ }