@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,1328 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://example.com/schemas/04-application-layer.schema.json",
4
+ "title": "Application Layer Layer Schema",
5
+ "description": "Describes application services, components, and interfaces that support business processes and bridge requirements with technical implementation.",
6
+ "layerMetadata": {
7
+ "layerId": "04-application-layer",
8
+ "layerName": "Application 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": ["BusinessCollaboration", "TestCoverageModel", "TestCoverageTarget"],
19
+ "targetTypes": ["BusinessRole", "OutcomeCategory", "TestCoverageTarget"],
20
+ "examples": [
21
+ {
22
+ "source": "BusinessCollaboration",
23
+ "target": "BusinessRole",
24
+ "description": "Business collaboration composes business roles that participate in it"
25
+ },
26
+ {
27
+ "source": "TestCoverageModel",
28
+ "target": "TestCoverageTarget",
29
+ "description": "Coverage model composes targets defining what needs testing",
30
+ "layer": "12-testing"
31
+ },
32
+ {
33
+ "source": "TestCoverageTarget",
34
+ "target": "OutcomeCategory",
35
+ "description": "Coverage target composes expected outcome categories",
36
+ "layer": "12-testing"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "relationshipTypeId": "aggregation",
42
+ "sourceTypes": ["CoverageRequirement", "Goal", "InputPartitionSelection"],
43
+ "targetTypes": ["ContextVariation", "Goal", "PartitionValue"],
44
+ "examples": [
45
+ {
46
+ "source": "Goal",
47
+ "target": "Goal",
48
+ "description": "High-level goal aggregates sub-goals",
49
+ "layer": "01-motivation"
50
+ },
51
+ {
52
+ "source": "InputPartitionSelection",
53
+ "target": "PartitionValue",
54
+ "description": "Partition selection aggregates multiple partition values to cover",
55
+ "layer": "12-testing"
56
+ },
57
+ {
58
+ "source": "CoverageRequirement",
59
+ "target": "ContextVariation",
60
+ "description": "Requirement aggregates selected contexts for testing",
61
+ "layer": "12-testing"
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ "relationshipTypeId": "specialization",
67
+ "sourceTypes": ["PremiumAccount", "Schema"],
68
+ "targetTypes": ["Account", "Schema"],
69
+ "examples": [
70
+ {
71
+ "source": "PremiumAccount",
72
+ "target": "Account",
73
+ "description": "Premium account specializes the general account concept"
74
+ },
75
+ {
76
+ "source": "Schema",
77
+ "target": "Schema",
78
+ "description": "API schema specializes another via allOf/oneOf/anyOf composition",
79
+ "layer": "06-api"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "relationshipTypeId": "realization",
85
+ "sourceTypes": ["ApplicationService", "Goal", "Outcome"],
86
+ "targetTypes": ["BusinessService", "Goal", "Value"],
87
+ "examples": [
88
+ {
89
+ "source": "Goal",
90
+ "target": "Value",
91
+ "description": "Goal realizes value for stakeholders",
92
+ "layer": "01-motivation"
93
+ },
94
+ {
95
+ "source": "Outcome",
96
+ "target": "Goal",
97
+ "description": "Outcome realizes achievement of goal",
98
+ "layer": "01-motivation"
99
+ },
100
+ {
101
+ "source": "ApplicationService",
102
+ "target": "BusinessService",
103
+ "description": "Application service realizes business service capability"
104
+ }
105
+ ]
106
+ },
107
+ {
108
+ "relationshipTypeId": "assignment",
109
+ "sourceTypes": ["BusinessActor"],
110
+ "targetTypes": ["BusinessRole"],
111
+ "examples": [
112
+ {
113
+ "source": "BusinessActor",
114
+ "target": "BusinessRole",
115
+ "description": "Business actor assigned to business role"
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "relationshipTypeId": "association",
121
+ "sourceTypes": ["Requirement", "Stakeholder"],
122
+ "targetTypes": ["Constraint", "Driver", "Goal"],
123
+ "examples": [
124
+ {
125
+ "source": "Stakeholder",
126
+ "target": "Driver",
127
+ "description": "Stakeholder has concern represented by driver",
128
+ "layer": "01-motivation"
129
+ },
130
+ {
131
+ "source": "Stakeholder",
132
+ "target": "Goal",
133
+ "description": "Stakeholder has interest in goal",
134
+ "layer": "01-motivation"
135
+ },
136
+ {
137
+ "source": "Requirement",
138
+ "target": "Constraint",
139
+ "description": "Requirement is limited by constraint",
140
+ "layer": "01-motivation"
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "relationshipTypeId": "influence",
146
+ "sourceTypes": ["Assessment", "Driver"],
147
+ "targetTypes": ["Assessment", "Goal"],
148
+ "examples": [
149
+ {
150
+ "source": "Driver",
151
+ "target": "Assessment",
152
+ "description": "Driver creates need for assessment",
153
+ "layer": "01-motivation"
154
+ },
155
+ {
156
+ "source": "Driver",
157
+ "target": "Goal",
158
+ "description": "Driver motivates goal definition",
159
+ "layer": "01-motivation"
160
+ },
161
+ {
162
+ "source": "Assessment",
163
+ "target": "Goal",
164
+ "description": "Assessment informs goal setting",
165
+ "layer": "01-motivation"
166
+ }
167
+ ]
168
+ },
169
+ {
170
+ "relationshipTypeId": "triggering",
171
+ "sourceTypes": ["BusinessEvent", "CoverageGap", "PartitionDependency"],
172
+ "targetTypes": ["BusinessProcess", "CoverageRequirement", "PartitionValue"],
173
+ "examples": [
174
+ {
175
+ "source": "BusinessEvent",
176
+ "target": "BusinessProcess",
177
+ "description": "Business event triggers business process execution"
178
+ },
179
+ {
180
+ "source": "PartitionDependency",
181
+ "target": "PartitionValue",
182
+ "description": "Dependency condition triggers inclusion/exclusion of partition values",
183
+ "layer": "12-testing"
184
+ },
185
+ {
186
+ "source": "CoverageGap",
187
+ "target": "CoverageRequirement",
188
+ "description": "Identified gap triggers need for additional coverage",
189
+ "layer": "12-testing"
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ "relationshipTypeId": "flow",
195
+ "sourceTypes": ["BusinessProcess", "CoverageRequirement", "TestCoverageTarget"],
196
+ "targetTypes": ["BusinessProcess", "CoverageRequirement", "TestCaseSketch"],
197
+ "examples": [
198
+ {
199
+ "source": "BusinessProcess",
200
+ "target": "BusinessProcess",
201
+ "description": "One business process flows to the next in sequence"
202
+ },
203
+ {
204
+ "source": "TestCoverageTarget",
205
+ "target": "CoverageRequirement",
206
+ "description": "Target flows to requirements that specify its coverage",
207
+ "layer": "12-testing"
208
+ },
209
+ {
210
+ "source": "CoverageRequirement",
211
+ "target": "TestCaseSketch",
212
+ "description": "Requirement flows to sketches that implement it",
213
+ "layer": "12-testing"
214
+ }
215
+ ]
216
+ },
217
+ {
218
+ "relationshipTypeId": "serving",
219
+ "sourceTypes": ["BusinessService", "ContextVariation", "InputSpacePartition"],
220
+ "targetTypes": ["BusinessActor", "TestCoverageTarget"],
221
+ "examples": [
222
+ {
223
+ "source": "BusinessService",
224
+ "target": "BusinessActor",
225
+ "description": "Business service serves business actor"
226
+ },
227
+ {
228
+ "source": "InputSpacePartition",
229
+ "target": "TestCoverageTarget",
230
+ "description": "Partition serves target by defining testable input space",
231
+ "layer": "12-testing"
232
+ },
233
+ {
234
+ "source": "ContextVariation",
235
+ "target": "TestCoverageTarget",
236
+ "description": "Context serves target by defining execution environments",
237
+ "layer": "12-testing"
238
+ }
239
+ ]
240
+ },
241
+ {
242
+ "relationshipTypeId": "access",
243
+ "sourceTypes": ["BusinessProcess", "CoverageRequirement", "TestCaseSketch"],
244
+ "targetTypes": ["BusinessObject", "InputPartitionSelection", "InputSelection"],
245
+ "examples": [
246
+ {
247
+ "source": "BusinessProcess",
248
+ "target": "BusinessObject",
249
+ "description": "Business process accesses business object data"
250
+ },
251
+ {
252
+ "source": "TestCaseSketch",
253
+ "target": "InputSelection",
254
+ "description": "Test sketch accesses input selections for test execution",
255
+ "layer": "12-testing"
256
+ },
257
+ {
258
+ "source": "CoverageRequirement",
259
+ "target": "InputPartitionSelection",
260
+ "description": "Requirement accesses partition selections for coverage",
261
+ "layer": "12-testing"
262
+ }
263
+ ]
264
+ },
265
+ {
266
+ "relationshipTypeId": "uses",
267
+ "sourceTypes": ["ApplicationComponent"],
268
+ "targetTypes": ["TechnologyService"],
269
+ "examples": [
270
+ {
271
+ "source": "ApplicationComponent",
272
+ "target": "TechnologyService",
273
+ "description": "Application component uses technology service"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "relationshipTypeId": "reference",
279
+ "sourceTypes": ["CoverageRequirement", "DataObject", "TestCaseSketch"],
280
+ "targetTypes": ["CoverageRequirement", "Schema", "TestCoverageTarget"],
281
+ "examples": [
282
+ {
283
+ "source": "DataObject",
284
+ "target": "Schema",
285
+ "description": "Data object references JSON schema"
286
+ },
287
+ {
288
+ "source": "TestCaseSketch",
289
+ "target": "CoverageRequirement",
290
+ "description": "Test case sketch references coverage requirement it satisfies",
291
+ "layer": "12-testing"
292
+ },
293
+ {
294
+ "source": "CoverageRequirement",
295
+ "target": "TestCoverageTarget",
296
+ "description": "Coverage requirement references target it covers",
297
+ "layer": "12-testing"
298
+ }
299
+ ]
300
+ },
301
+ {
302
+ "relationshipTypeId": "depends-on",
303
+ "sourceTypes": ["ApplicationService", "TestCaseSketch"],
304
+ "targetTypes": ["ContextVariation", "DataObject", "OutcomeCategory"],
305
+ "examples": [
306
+ {
307
+ "source": "ApplicationService",
308
+ "target": "DataObject",
309
+ "description": "Application service depends on data object"
310
+ },
311
+ {
312
+ "source": "TestCaseSketch",
313
+ "target": "ContextVariation",
314
+ "description": "Test sketch depends on context for execution environment",
315
+ "layer": "12-testing"
316
+ },
317
+ {
318
+ "source": "TestCaseSketch",
319
+ "target": "OutcomeCategory",
320
+ "description": "Test sketch depends on expected outcome category",
321
+ "layer": "12-testing"
322
+ }
323
+ ]
324
+ },
325
+ {
326
+ "relationshipTypeId": "supports-goals",
327
+ "sourceTypes": ["BusinessService", "Operation"],
328
+ "targetTypes": ["Goal"],
329
+ "examples": [
330
+ {
331
+ "source": "BusinessService",
332
+ "sourceLayer": "02-business",
333
+ "target": "Goal",
334
+ "targetLayer": "01-motivation",
335
+ "value": "goal-revenue-growth",
336
+ "description": "Payment service supports revenue growth goal"
337
+ },
338
+ {
339
+ "source": "Operation",
340
+ "sourceLayer": "06-api",
341
+ "target": "Goal",
342
+ "targetLayer": "01-motivation",
343
+ "value": "goal-customer-satisfaction",
344
+ "description": "GET /products operation supports customer satisfaction goal"
345
+ }
346
+ ]
347
+ },
348
+ {
349
+ "relationshipTypeId": "fulfills-requirements",
350
+ "sourceTypes": ["ApplicationService", "Operation"],
351
+ "targetTypes": ["Requirement"],
352
+ "examples": [
353
+ {
354
+ "source": "ApplicationService",
355
+ "target": "Requirement",
356
+ "description": "OAuth service fulfills authentication requirement"
357
+ },
358
+ {
359
+ "source": "Operation",
360
+ "sourceLayer": "06-api",
361
+ "target": "Requirement",
362
+ "targetLayer": "01-motivation",
363
+ "value": "req-product-creation-capability",
364
+ "description": "POST /products operation fulfills product creation requirement"
365
+ }
366
+ ]
367
+ },
368
+ {
369
+ "relationshipTypeId": "governed-by-principles",
370
+ "sourceTypes": ["APIOperation"],
371
+ "targetTypes": ["Principle"],
372
+ "examples": [
373
+ {
374
+ "source": "APIOperation",
375
+ "target": "Principle",
376
+ "description": "REST API governed by RESTful design principles"
377
+ }
378
+ ]
379
+ },
380
+ {
381
+ "relationshipTypeId": "constrainedby",
382
+ "sourceTypes": ["APIOperation"],
383
+ "targetTypes": ["Constraint"],
384
+ "examples": [
385
+ {
386
+ "source": "APIOperation",
387
+ "target": "Constraint",
388
+ "description": "API operation constrained by rate limit"
389
+ }
390
+ ]
391
+ },
392
+ {
393
+ "relationshipTypeId": "traces",
394
+ "sourceTypes": ["APIOperation"],
395
+ "targetTypes": ["DistributedTrace"],
396
+ "examples": [
397
+ {
398
+ "source": "APIOperation",
399
+ "target": "DistributedTrace",
400
+ "description": "API operation participates in distributed trace"
401
+ }
402
+ ]
403
+ }
404
+ ]
405
+ },
406
+ "crossLayerRelationships": {
407
+ "$comment": "Relationships to/from entities in other layers",
408
+ "outgoing": [
409
+ {
410
+ "id": "apm-sla-target-availability",
411
+ "predicate": "sla-target-availability",
412
+ "inversePredicate": "referenced-by",
413
+ "targetLayer": "11-apm",
414
+ "targetTypes": ["SlaTargetAvailability"],
415
+ "sourceTypes": ["ApplicationService"],
416
+ "fieldPath": "apm.sla-target-availability",
417
+ "cardinality": "single",
418
+ "format": "percentage",
419
+ "strength": "medium",
420
+ "required": false,
421
+ "description": "string (e.g., \"99.95%\", \"99.99%\", optional)",
422
+ "examples": [
423
+ {
424
+ "elementType": "TechnologyService",
425
+ "elementId": "container-platform",
426
+ "elementName": "container-platform",
427
+ "fieldPath": "apm.sla-target-availability",
428
+ "value": "99.95%",
429
+ "layer": "05-technology"
430
+ },
431
+ {
432
+ "elementType": "TechnologyService",
433
+ "elementId": "database-service",
434
+ "elementName": "database-service",
435
+ "fieldPath": "apm.sla-target-availability",
436
+ "value": "99.99%",
437
+ "layer": "05-technology"
438
+ }
439
+ ]
440
+ },
441
+ {
442
+ "id": "apm-sla-target-latency",
443
+ "predicate": "sla-target-latency",
444
+ "inversePredicate": "referenced-by",
445
+ "targetLayer": "11-apm",
446
+ "targetTypes": ["SlaTargetLatency"],
447
+ "sourceTypes": ["ApplicationService"],
448
+ "fieldPath": "apm.sla-target-latency",
449
+ "cardinality": "single",
450
+ "format": "duration",
451
+ "strength": "medium",
452
+ "required": false,
453
+ "description": "string (e.g., \"200ms\", \"500ms\", optional)",
454
+ "examples": [
455
+ {
456
+ "elementType": "TechnologyService",
457
+ "elementId": "database-service",
458
+ "elementName": "database-service",
459
+ "fieldPath": "apm.sla-target-latency",
460
+ "value": "10ms",
461
+ "layer": "05-technology"
462
+ }
463
+ ]
464
+ },
465
+ {
466
+ "id": "apm-traced",
467
+ "predicate": "traced",
468
+ "inversePredicate": "referenced-by",
469
+ "targetLayer": "11-apm",
470
+ "targetTypes": ["Traced"],
471
+ "sourceTypes": ["ApplicationService", "Data Properties"],
472
+ "fieldPath": "apm.traced",
473
+ "cardinality": "single",
474
+ "format": "boolean",
475
+ "strength": "medium",
476
+ "required": false,
477
+ "description": "Links to Traced in target layer",
478
+ "examples": [
479
+ {
480
+ "elementType": "ApplicationService",
481
+ "elementId": "product-service",
482
+ "elementName": "product-service",
483
+ "fieldPath": "apm.traced",
484
+ "value": "true",
485
+ "layer": "04-application"
486
+ }
487
+ ]
488
+ },
489
+ {
490
+ "id": "business-apm-business-metrics",
491
+ "predicate": "business-metrics",
492
+ "inversePredicate": "referenced-by",
493
+ "targetLayer": "02-business",
494
+ "targetTypes": ["BusinessMetric"],
495
+ "sourceTypes": ["ApplicationService"],
496
+ "fieldPath": "apm.business-metrics",
497
+ "cardinality": "array",
498
+ "format": "reference",
499
+ "strength": "medium",
500
+ "required": false,
501
+ "description": "comma-separated business metric IDs this service tracks",
502
+ "examples": [
503
+ {
504
+ "elementType": "BusinessProcess",
505
+ "elementId": "order-process",
506
+ "elementName": "Order Fulfillment Process",
507
+ "fieldPath": "apm.business-metrics",
508
+ "value": "metric-order-fulfillment-time,metric-order-success-rate",
509
+ "layer": "02-business"
510
+ }
511
+ ]
512
+ },
513
+ {
514
+ "id": "data-retention",
515
+ "predicate": "retention",
516
+ "inversePredicate": "referenced-by",
517
+ "targetLayer": "07-data-model",
518
+ "targetTypes": ["Retention"],
519
+ "sourceTypes": ["Data Properties", "DataObject"],
520
+ "fieldPath": "data.retention",
521
+ "cardinality": "single",
522
+ "format": "duration",
523
+ "strength": "medium",
524
+ "required": false,
525
+ "description": "Links to Retention in target layer",
526
+ "examples": [
527
+ {
528
+ "elementType": "DataObject",
529
+ "elementId": "product-data",
530
+ "elementName": "product-data",
531
+ "fieldPath": "data.retention",
532
+ "value": "7years",
533
+ "layer": "04-application"
534
+ }
535
+ ]
536
+ },
537
+ {
538
+ "id": "motivation-delivers-value",
539
+ "predicate": "delivers-value",
540
+ "inversePredicate": "delivered-by",
541
+ "targetLayer": "01-motivation",
542
+ "targetTypes": ["DeliversValue"],
543
+ "sourceTypes": ["ApplicationService"],
544
+ "fieldPath": "motivation.delivers-value",
545
+ "cardinality": "array",
546
+ "format": "reference",
547
+ "strength": "medium",
548
+ "required": false,
549
+ "description": "BusinessService delivers Value",
550
+ "examples": [
551
+ {
552
+ "elementType": "BusinessService",
553
+ "elementId": "order-service",
554
+ "elementName": "Order Processing Service",
555
+ "fieldPath": "motivation.delivers-value",
556
+ "value": "value-customer-convenience,value-operational-efficiency",
557
+ "layer": "02-business"
558
+ },
559
+ {
560
+ "elementType": "ApplicationService",
561
+ "elementId": "product-service",
562
+ "elementName": "product-service",
563
+ "fieldPath": "motivation.delivers-value",
564
+ "value": "value-customer-convenience",
565
+ "layer": "04-application"
566
+ }
567
+ ]
568
+ },
569
+ {
570
+ "id": "motivation-fulfills-requirements",
571
+ "predicate": "fulfills-requirements",
572
+ "inversePredicate": "fulfilled-by",
573
+ "targetLayer": "01-motivation",
574
+ "targetTypes": ["FulfillsRequirement"],
575
+ "sourceTypes": ["ApplicationFunction"],
576
+ "fieldPath": "motivation.fulfills-requirements",
577
+ "cardinality": "array",
578
+ "format": "reference",
579
+ "strength": "high",
580
+ "required": false,
581
+ "description": "comma-separated Requirement IDs this function fulfills",
582
+ "examples": [
583
+ {
584
+ "elementType": "Node",
585
+ "elementId": "k8s-cluster",
586
+ "elementName": "k8s-cluster",
587
+ "fieldPath": "motivation.fulfills-requirements",
588
+ "value": "req-horizontal-scaling,req-99-95-availability",
589
+ "layer": "05-technology"
590
+ },
591
+ {
592
+ "elementType": "Node",
593
+ "elementId": "postgres-cluster",
594
+ "elementName": "postgres-cluster",
595
+ "fieldPath": "motivation.fulfills-requirements",
596
+ "value": "req-acid-compliance,req-replication",
597
+ "layer": "05-technology"
598
+ }
599
+ ]
600
+ },
601
+ {
602
+ "id": "motivation-governed-by-principles",
603
+ "predicate": "governed-by-principles",
604
+ "inversePredicate": "governs",
605
+ "targetLayer": "01-motivation",
606
+ "targetTypes": ["GovernedByPrinciple"],
607
+ "sourceTypes": ["ApplicationFunction", "ApplicationService"],
608
+ "fieldPath": "motivation.governed-by-principles",
609
+ "cardinality": "array",
610
+ "format": "reference",
611
+ "strength": "high",
612
+ "required": false,
613
+ "description": "BusinessService governed by Principles",
614
+ "examples": [
615
+ {
616
+ "elementType": "BusinessService",
617
+ "elementId": "order-service",
618
+ "elementName": "Order Processing Service",
619
+ "fieldPath": "motivation.governed-by-principles",
620
+ "value": "principle-customer-first,principle-automation",
621
+ "layer": "02-business"
622
+ },
623
+ {
624
+ "elementType": "ApplicationService",
625
+ "elementId": "product-service",
626
+ "elementName": "product-service",
627
+ "fieldPath": "motivation.governed-by-principles",
628
+ "value": "principle-api-first,principle-cloud-native",
629
+ "layer": "04-application"
630
+ }
631
+ ]
632
+ },
633
+ {
634
+ "id": "motivation-supports-goals",
635
+ "predicate": "supports-goals",
636
+ "inversePredicate": "supported-by",
637
+ "targetLayer": "01-motivation",
638
+ "targetTypes": ["SupportsGoal"],
639
+ "sourceTypes": ["ApplicationService"],
640
+ "fieldPath": "motivation.supports-goals",
641
+ "cardinality": "array",
642
+ "format": "reference",
643
+ "strength": "high",
644
+ "required": false,
645
+ "description": "BusinessService supports Goals",
646
+ "examples": [
647
+ {
648
+ "elementType": "BusinessService",
649
+ "elementId": "order-service",
650
+ "elementName": "Order Processing Service",
651
+ "fieldPath": "motivation.supports-goals",
652
+ "value": "goal-customer-satisfaction,goal-revenue-growth",
653
+ "layer": "02-business"
654
+ },
655
+ {
656
+ "elementType": "ApplicationService",
657
+ "elementId": "product-service",
658
+ "elementName": "product-service",
659
+ "fieldPath": "motivation.supports-goals",
660
+ "value": "goal-product-catalog-accuracy,goal-customer-satisfaction",
661
+ "layer": "04-application"
662
+ }
663
+ ]
664
+ },
665
+ {
666
+ "id": "security-classification",
667
+ "predicate": "classification",
668
+ "inversePredicate": "referenced-by",
669
+ "targetLayer": "03-security",
670
+ "targetTypes": ["Classification"],
671
+ "sourceTypes": ["Artifact"],
672
+ "fieldPath": "security.classification",
673
+ "cardinality": "single",
674
+ "format": "string",
675
+ "strength": "low",
676
+ "required": false,
677
+ "description": "Links to Classification in target layer",
678
+ "examples": [
679
+ {
680
+ "elementType": "Artifact",
681
+ "elementId": "product-db",
682
+ "elementName": "product-db",
683
+ "fieldPath": "security.classification",
684
+ "value": "internal",
685
+ "layer": "05-technology"
686
+ },
687
+ {
688
+ "elementType": "Artifact",
689
+ "elementId": "customer-db",
690
+ "elementName": "customer-db",
691
+ "fieldPath": "security.classification",
692
+ "value": "restricted",
693
+ "layer": "05-technology"
694
+ }
695
+ ]
696
+ },
697
+ {
698
+ "id": "security-data-pii",
699
+ "predicate": "pii",
700
+ "inversePredicate": "referenced-by",
701
+ "targetLayer": "03-security",
702
+ "targetTypes": ["Pii"],
703
+ "sourceTypes": ["Data Properties", "DataObject"],
704
+ "fieldPath": "data.pii",
705
+ "cardinality": "single",
706
+ "format": "boolean",
707
+ "strength": "medium",
708
+ "required": false,
709
+ "description": "Links to Pii in target layer",
710
+ "examples": [
711
+ {
712
+ "elementType": "DataObject",
713
+ "elementId": "product-data",
714
+ "elementName": "product-data",
715
+ "fieldPath": "data.pii",
716
+ "value": "false",
717
+ "layer": "04-application"
718
+ }
719
+ ]
720
+ }
721
+ ],
722
+ "incoming": [
723
+ {
724
+ "id": "archimate-application-master-data-source",
725
+ "predicate": "referenced-by",
726
+ "inversePredicate": "master-data-source",
727
+ "sourceLayer": "02-business",
728
+ "sourceTypes": ["BusinessObject"],
729
+ "targetTypes": ["MasterDataSource"],
730
+ "fieldPath": "application.master-data-source",
731
+ "cardinality": "single",
732
+ "description": "Inverse of: BusinessObject master data source from DataObject"
733
+ },
734
+ {
735
+ "id": "archimate-application-process-steps",
736
+ "predicate": "referenced-by",
737
+ "inversePredicate": "process-steps",
738
+ "sourceLayer": "02-business",
739
+ "sourceTypes": ["BusinessProcess"],
740
+ "targetTypes": ["ProcessStep"],
741
+ "fieldPath": "application.process-steps",
742
+ "cardinality": "array",
743
+ "description": "Inverse of: which specific ApplicationProcess steps realize this business process"
744
+ },
745
+ {
746
+ "id": "archimate-application-realized-by-process",
747
+ "predicate": "referenced-by",
748
+ "inversePredicate": "realized-by-process",
749
+ "sourceLayer": "02-business",
750
+ "sourceTypes": ["BusinessProcess"],
751
+ "targetTypes": ["RealizedByProces"],
752
+ "fieldPath": "application.realized-by-process",
753
+ "cardinality": "single",
754
+ "description": "Inverse of: ApplicationService - **BusinessProcess** automated by ApplicationProcess"
755
+ },
756
+ {
757
+ "id": "archimate-application-represented-by-dataobject",
758
+ "predicate": "referenced-by",
759
+ "inversePredicate": "represented-by-dataobject",
760
+ "sourceLayer": "02-business",
761
+ "sourceTypes": ["BusinessObject"],
762
+ "targetTypes": ["RepresentedByDataobject"],
763
+ "fieldPath": "application.represented-by-dataobject",
764
+ "cardinality": "single",
765
+ "description": "Inverse of: BusinessObject represented in DataObject"
766
+ },
767
+ {
768
+ "id": "archimate-ref",
769
+ "predicate": "referenced-by",
770
+ "inversePredicate": "archimate-ref",
771
+ "sourceLayer": "06-api",
772
+ "sourceTypes": ["OpenAPIDocument", "Operation", "SecurityScheme"],
773
+ "targetTypes": ["Element"],
774
+ "fieldPath": "x-archimate-ref",
775
+ "cardinality": "single",
776
+ "description": "Inverse of: string (Element.id reference to ApplicationService)"
777
+ },
778
+ {
779
+ "id": "archimate-ref",
780
+ "predicate": "referenced-by",
781
+ "inversePredicate": "archimate-ref",
782
+ "sourceLayer": "07-data-model",
783
+ "sourceTypes": ["JSONSchema", "x-security Extension"],
784
+ "targetTypes": ["Element"],
785
+ "fieldPath": "x-archimate-ref",
786
+ "cardinality": "single",
787
+ "description": "Inverse of: string (Element.id reference to ApplicationService)"
788
+ }
789
+ ]
790
+ },
791
+ "type": "object",
792
+ "properties": {
793
+ "application-components": {
794
+ "type": "array",
795
+ "description": "Collection of ApplicationComponent entities",
796
+ "items": {
797
+ "$ref": "#/definitions/ApplicationComponent"
798
+ }
799
+ },
800
+ "application-collaborations": {
801
+ "type": "array",
802
+ "description": "Collection of ApplicationCollaboration entities",
803
+ "items": {
804
+ "$ref": "#/definitions/ApplicationCollaboration"
805
+ }
806
+ },
807
+ "application-interfaces": {
808
+ "type": "array",
809
+ "description": "Collection of ApplicationInterface entities",
810
+ "items": {
811
+ "$ref": "#/definitions/ApplicationInterface"
812
+ }
813
+ },
814
+ "application-functions": {
815
+ "type": "array",
816
+ "description": "Collection of ApplicationFunction entities",
817
+ "items": {
818
+ "$ref": "#/definitions/ApplicationFunction"
819
+ }
820
+ },
821
+ "application-interactions": {
822
+ "type": "array",
823
+ "description": "Collection of ApplicationInteraction entities",
824
+ "items": {
825
+ "$ref": "#/definitions/ApplicationInteraction"
826
+ }
827
+ },
828
+ "application-processes": {
829
+ "type": "array",
830
+ "description": "Collection of ApplicationProcess entities",
831
+ "items": {
832
+ "$ref": "#/definitions/ApplicationProcess"
833
+ }
834
+ },
835
+ "application-events": {
836
+ "type": "array",
837
+ "description": "Collection of ApplicationEvent entities",
838
+ "items": {
839
+ "$ref": "#/definitions/ApplicationEvent"
840
+ }
841
+ },
842
+ "application-services": {
843
+ "type": "array",
844
+ "description": "Collection of ApplicationService entities",
845
+ "items": {
846
+ "$ref": "#/definitions/ApplicationService"
847
+ }
848
+ },
849
+ "data-objects": {
850
+ "type": "array",
851
+ "description": "Collection of DataObject entities",
852
+ "items": {
853
+ "$ref": "#/definitions/DataObject"
854
+ }
855
+ }
856
+ },
857
+ "definitions": {
858
+ "ComponentType": {
859
+ "type": "string",
860
+ "enum": ["frontend", "backend", "mobile", "desktop", "service"]
861
+ },
862
+ "InterfaceProtocol": {
863
+ "type": "string",
864
+ "enum": ["REST", "GraphQL", "SOAP", "gRPC", "WebSocket", "Message Queue"]
865
+ },
866
+ "InteractionPattern": {
867
+ "type": "string",
868
+ "enum": ["request-response", "publish-subscribe", "async-messaging", "streaming"]
869
+ },
870
+ "ApplicationEventType": {
871
+ "type": "string",
872
+ "enum": ["domain-event", "integration-event", "system-event", "audit-event"]
873
+ },
874
+ "ServiceType": {
875
+ "type": "string",
876
+ "enum": ["synchronous", "asynchronous", "batch", "streaming"]
877
+ },
878
+ "ApplicationComponent": {
879
+ "type": "object",
880
+ "description": "Modular, deployable, and replaceable part of a system",
881
+ "required": ["id", "name", "type"],
882
+ "properties": {
883
+ "id": {
884
+ "type": "string",
885
+ "format": "uuid",
886
+ "minLength": 1
887
+ },
888
+ "name": {
889
+ "type": "string",
890
+ "minLength": 1
891
+ },
892
+ "documentation": {
893
+ "type": "string",
894
+ "minLength": 1
895
+ },
896
+ "type": {
897
+ "$ref": "#/definitions/ComponentType"
898
+ },
899
+ "properties": {
900
+ "type": "object",
901
+ "description": "Cross-layer properties",
902
+ "properties": {
903
+ "implementation": {
904
+ "type": "object",
905
+ "properties": {
906
+ "framework": {
907
+ "type": "string",
908
+ "description": "optional"
909
+ }
910
+ }
911
+ },
912
+ "spec": {
913
+ "type": "object",
914
+ "properties": {
915
+ "ux": {
916
+ "type": "string",
917
+ "description": "optional"
918
+ },
919
+ "openapi": {
920
+ "type": "string",
921
+ "description": "optional"
922
+ }
923
+ }
924
+ },
925
+ "source": {
926
+ "type": "object",
927
+ "description": "Source code reference",
928
+ "properties": {
929
+ "reference": {
930
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference"
931
+ }
932
+ }
933
+ }
934
+ }
935
+ }
936
+ }
937
+ },
938
+ "ApplicationCollaboration": {
939
+ "type": "object",
940
+ "description": "Aggregate of application components working together",
941
+ "required": ["id", "name"],
942
+ "properties": {
943
+ "id": {
944
+ "type": "string",
945
+ "format": "uuid",
946
+ "minLength": 1
947
+ },
948
+ "name": {
949
+ "type": "string",
950
+ "minLength": 1
951
+ },
952
+ "documentation": {
953
+ "type": "string",
954
+ "minLength": 1
955
+ },
956
+ "components": {
957
+ "type": "array",
958
+ "description": "Contains relationship",
959
+ "items": {
960
+ "type": "string"
961
+ }
962
+ }
963
+ }
964
+ },
965
+ "ApplicationInterface": {
966
+ "type": "object",
967
+ "description": "Point of access where application service is available",
968
+ "required": ["id", "name", "protocol"],
969
+ "properties": {
970
+ "id": {
971
+ "type": "string",
972
+ "format": "uuid",
973
+ "minLength": 1
974
+ },
975
+ "name": {
976
+ "type": "string",
977
+ "minLength": 1
978
+ },
979
+ "documentation": {
980
+ "type": "string",
981
+ "minLength": 1
982
+ },
983
+ "protocol": {
984
+ "$ref": "#/definitions/InterfaceProtocol"
985
+ },
986
+ "properties": {
987
+ "type": "object",
988
+ "description": "Cross-layer properties",
989
+ "properties": {
990
+ "spec": {
991
+ "type": "object",
992
+ "properties": {
993
+ "openapi": {
994
+ "type": "string",
995
+ "description": "optional"
996
+ }
997
+ }
998
+ },
999
+ "interface": {
1000
+ "type": "object",
1001
+ "properties": {
1002
+ "endpoint": {
1003
+ "type": "string",
1004
+ "description": "optional"
1005
+ }
1006
+ }
1007
+ }
1008
+ }
1009
+ }
1010
+ }
1011
+ },
1012
+ "ApplicationFunction": {
1013
+ "type": "object",
1014
+ "description": "Automated behavior performed by application component",
1015
+ "required": ["id", "name"],
1016
+ "properties": {
1017
+ "id": {
1018
+ "type": "string",
1019
+ "format": "uuid",
1020
+ "minLength": 1
1021
+ },
1022
+ "name": {
1023
+ "type": "string",
1024
+ "minLength": 1
1025
+ },
1026
+ "documentation": {
1027
+ "type": "string",
1028
+ "minLength": 1
1029
+ },
1030
+ "properties": {
1031
+ "type": "object",
1032
+ "description": "Cross-layer properties",
1033
+ "properties": {
1034
+ "function": {
1035
+ "type": "object",
1036
+ "properties": {
1037
+ "async": {
1038
+ "type": "string",
1039
+ "description": "optional"
1040
+ },
1041
+ "idempotent": {
1042
+ "type": "string",
1043
+ "description": "optional"
1044
+ }
1045
+ }
1046
+ },
1047
+ "motivation": {
1048
+ "type": "object",
1049
+ "properties": {
1050
+ "fulfills-requirements": {
1051
+ "type": "string",
1052
+ "description": "optional, comma-separated Requirement IDs this function fulfills"
1053
+ },
1054
+ "governed-by-principles": {
1055
+ "type": "string",
1056
+ "description": "optional, comma-separated Principle IDs"
1057
+ }
1058
+ }
1059
+ }
1060
+ }
1061
+ }
1062
+ }
1063
+ },
1064
+ "ApplicationInteraction": {
1065
+ "type": "object",
1066
+ "description": "Unit of collective application behavior",
1067
+ "required": ["id", "name", "pattern"],
1068
+ "properties": {
1069
+ "id": {
1070
+ "type": "string",
1071
+ "format": "uuid",
1072
+ "minLength": 1
1073
+ },
1074
+ "name": {
1075
+ "type": "string",
1076
+ "minLength": 1
1077
+ },
1078
+ "documentation": {
1079
+ "type": "string",
1080
+ "minLength": 1
1081
+ },
1082
+ "pattern": {
1083
+ "$ref": "#/definitions/InteractionPattern"
1084
+ }
1085
+ }
1086
+ },
1087
+ "ApplicationProcess": {
1088
+ "type": "object",
1089
+ "description": "Sequence of application behaviors",
1090
+ "required": ["id", "name"],
1091
+ "properties": {
1092
+ "id": {
1093
+ "type": "string",
1094
+ "format": "uuid",
1095
+ "minLength": 1
1096
+ },
1097
+ "name": {
1098
+ "type": "string",
1099
+ "minLength": 1
1100
+ },
1101
+ "documentation": {
1102
+ "type": "string",
1103
+ "minLength": 1
1104
+ },
1105
+ "properties": {
1106
+ "type": "object",
1107
+ "description": "Cross-layer properties",
1108
+ "properties": {
1109
+ "process": {
1110
+ "type": "object",
1111
+ "properties": {
1112
+ "orchestration": {
1113
+ "type": "string",
1114
+ "description": "optional"
1115
+ },
1116
+ "saga": {
1117
+ "type": "string",
1118
+ "description": "optional"
1119
+ }
1120
+ }
1121
+ }
1122
+ }
1123
+ }
1124
+ }
1125
+ },
1126
+ "ApplicationEvent": {
1127
+ "type": "object",
1128
+ "description": "Application state change notification",
1129
+ "required": ["id", "name", "eventType"],
1130
+ "properties": {
1131
+ "id": {
1132
+ "type": "string",
1133
+ "format": "uuid",
1134
+ "minLength": 1
1135
+ },
1136
+ "name": {
1137
+ "type": "string",
1138
+ "minLength": 1
1139
+ },
1140
+ "documentation": {
1141
+ "type": "string",
1142
+ "minLength": 1
1143
+ },
1144
+ "eventType": {
1145
+ "$ref": "#/definitions/ApplicationEventType"
1146
+ },
1147
+ "properties": {
1148
+ "type": "object",
1149
+ "description": "Cross-layer properties",
1150
+ "properties": {
1151
+ "event": {
1152
+ "type": "object",
1153
+ "properties": {
1154
+ "schema": {
1155
+ "type": "string",
1156
+ "description": "optional"
1157
+ },
1158
+ "topic": {
1159
+ "type": "string",
1160
+ "description": "optional"
1161
+ }
1162
+ }
1163
+ }
1164
+ }
1165
+ }
1166
+ }
1167
+ },
1168
+ "ApplicationService": {
1169
+ "type": "object",
1170
+ "description": "Service that exposes application functionality",
1171
+ "required": ["id", "name", "serviceType"],
1172
+ "properties": {
1173
+ "id": {
1174
+ "type": "string",
1175
+ "format": "uuid",
1176
+ "minLength": 1
1177
+ },
1178
+ "name": {
1179
+ "type": "string",
1180
+ "minLength": 1
1181
+ },
1182
+ "documentation": {
1183
+ "type": "string",
1184
+ "minLength": 1
1185
+ },
1186
+ "serviceType": {
1187
+ "$ref": "#/definitions/ServiceType"
1188
+ },
1189
+ "properties": {
1190
+ "type": "object",
1191
+ "description": "Cross-layer properties",
1192
+ "properties": {
1193
+ "spec": {
1194
+ "type": "object",
1195
+ "properties": {
1196
+ "openapi": {
1197
+ "type": "string",
1198
+ "description": "optional"
1199
+ }
1200
+ }
1201
+ },
1202
+ "service": {
1203
+ "type": "object",
1204
+ "properties": {
1205
+ "version": {
1206
+ "type": "string",
1207
+ "description": "optional"
1208
+ },
1209
+ "deprecated": {
1210
+ "type": "string",
1211
+ "description": "optional"
1212
+ }
1213
+ }
1214
+ },
1215
+ "apm": {
1216
+ "type": "object",
1217
+ "properties": {
1218
+ "traced": {
1219
+ "type": "string",
1220
+ "description": "optional"
1221
+ },
1222
+ "business-metrics": {
1223
+ "type": "string",
1224
+ "description": "optional, comma-separated business metric IDs this service tracks"
1225
+ },
1226
+ "sla-target-latency": {
1227
+ "type": "string",
1228
+ "description": "optional, target response time"
1229
+ },
1230
+ "sla-target-availability": {
1231
+ "type": "string",
1232
+ "description": "optional, target uptime percentage"
1233
+ }
1234
+ }
1235
+ },
1236
+ "motivation": {
1237
+ "type": "object",
1238
+ "properties": {
1239
+ "supports-goals": {
1240
+ "type": "string",
1241
+ "description": "optional, comma-separated Goal IDs"
1242
+ },
1243
+ "delivers-value": {
1244
+ "type": "string",
1245
+ "description": "optional, comma-separated Value IDs"
1246
+ },
1247
+ "governed-by-principles": {
1248
+ "type": "string",
1249
+ "description": "optional, comma-separated Principle IDs"
1250
+ }
1251
+ }
1252
+ },
1253
+ "source": {
1254
+ "type": "object",
1255
+ "description": "Source code reference",
1256
+ "properties": {
1257
+ "reference": {
1258
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference"
1259
+ }
1260
+ }
1261
+ }
1262
+ }
1263
+ }
1264
+ }
1265
+ },
1266
+ "DataObject": {
1267
+ "type": "object",
1268
+ "description": "Data structured for automated processing",
1269
+ "required": ["id", "name"],
1270
+ "properties": {
1271
+ "id": {
1272
+ "type": "string",
1273
+ "format": "uuid",
1274
+ "minLength": 1
1275
+ },
1276
+ "name": {
1277
+ "type": "string",
1278
+ "minLength": 1
1279
+ },
1280
+ "documentation": {
1281
+ "type": "string",
1282
+ "minLength": 1
1283
+ },
1284
+ "properties": {
1285
+ "type": "object",
1286
+ "description": "Cross-layer properties",
1287
+ "properties": {
1288
+ "spec": {
1289
+ "type": "object",
1290
+ "properties": {
1291
+ "schema": {
1292
+ "type": "string",
1293
+ "description": "optional"
1294
+ },
1295
+ "database": {
1296
+ "type": "string",
1297
+ "description": "optional"
1298
+ }
1299
+ }
1300
+ },
1301
+ "data": {
1302
+ "type": "object",
1303
+ "properties": {
1304
+ "pii": {
1305
+ "type": "string",
1306
+ "description": "optional"
1307
+ },
1308
+ "retention": {
1309
+ "type": "string",
1310
+ "description": "optional"
1311
+ }
1312
+ }
1313
+ },
1314
+ "source": {
1315
+ "type": "object",
1316
+ "description": "Source code reference",
1317
+ "properties": {
1318
+ "reference": {
1319
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference"
1320
+ }
1321
+ }
1322
+ }
1323
+ }
1324
+ }
1325
+ }
1326
+ }
1327
+ }
1328
+ }