@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,1430 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://example.com/schemas/11-apm-observability-layer.schema.json",
4
+ "title": "APM/Observability Layer Layer Schema",
5
+ "description": "Defines distributed tracing, logging, and metrics instrumentation using OpenTelemetry standards for application performance monitoring and observability.",
6
+ "layerMetadata": {
7
+ "layerId": "11-apm-observability-layer",
8
+ "layerName": "APM/Observability 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": ["APMConfiguration", "MeterConfig", "Span"],
19
+ "targetTypes": ["MetricInstrument", "SpanEvent", "TraceConfiguration"],
20
+ "examples": [
21
+ {
22
+ "source": "Span",
23
+ "target": "SpanEvent",
24
+ "description": "Span composes timestamped events occurring during execution",
25
+ "layer": "11-apm-observability"
26
+ },
27
+ {
28
+ "source": "APMConfiguration",
29
+ "target": "TraceConfiguration",
30
+ "description": "APM config composes trace, log, and metric configurations",
31
+ "layer": "11-apm-observability"
32
+ },
33
+ {
34
+ "source": "MeterConfig",
35
+ "target": "MetricInstrument",
36
+ "description": "Meter config composes individual metric instruments",
37
+ "layer": "11-apm-observability"
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "relationshipTypeId": "aggregation",
43
+ "sourceTypes": ["InstrumentationScope", "Resource", "TraceConfiguration"],
44
+ "targetTypes": ["ExporterConfig", "MetricInstrument", "Span"],
45
+ "examples": [
46
+ {
47
+ "source": "Resource",
48
+ "target": "Span",
49
+ "description": "Resource aggregates all spans it produces",
50
+ "layer": "11-apm-observability"
51
+ },
52
+ {
53
+ "source": "InstrumentationScope",
54
+ "target": "MetricInstrument",
55
+ "description": "Instrumentation scope aggregates metrics it records",
56
+ "layer": "11-apm-observability"
57
+ },
58
+ {
59
+ "source": "TraceConfiguration",
60
+ "target": "ExporterConfig",
61
+ "description": "Trace config aggregates trace exporters",
62
+ "layer": "11-apm-observability"
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "relationshipTypeId": "specialization",
68
+ "sourceTypes": ["PremiumAccount", "Schema"],
69
+ "targetTypes": ["Account", "Schema"],
70
+ "examples": [
71
+ {
72
+ "source": "PremiumAccount",
73
+ "target": "Account",
74
+ "description": "Premium account specializes the general account concept"
75
+ },
76
+ {
77
+ "source": "Schema",
78
+ "target": "Schema",
79
+ "description": "API schema specializes another via allOf/oneOf/anyOf composition",
80
+ "layer": "06-api"
81
+ }
82
+ ]
83
+ },
84
+ {
85
+ "relationshipTypeId": "triggering",
86
+ "sourceTypes": ["DataQualityMetric"],
87
+ "targetTypes": ["LogRecord"],
88
+ "examples": [
89
+ {
90
+ "source": "DataQualityMetric",
91
+ "target": "LogRecord",
92
+ "description": "Quality violation triggers alert log record",
93
+ "layer": "11-apm-observability"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "relationshipTypeId": "flow",
99
+ "sourceTypes": ["LogProcessor", "MetricInstrument", "Span"],
100
+ "targetTypes": ["ExporterConfig", "LogProcessor", "Span"],
101
+ "examples": [
102
+ {
103
+ "source": "Span",
104
+ "target": "Span",
105
+ "description": "Span flows to child spans (request propagation)",
106
+ "layer": "11-apm-observability"
107
+ },
108
+ {
109
+ "source": "LogProcessor",
110
+ "target": "LogProcessor",
111
+ "description": "Log records flow through processor pipeline in order",
112
+ "layer": "11-apm-observability"
113
+ },
114
+ {
115
+ "source": "MetricInstrument",
116
+ "target": "ExporterConfig",
117
+ "description": "Collected metrics flow to configured exporters",
118
+ "layer": "11-apm-observability"
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "relationshipTypeId": "serving",
124
+ "sourceTypes": ["ExporterConfig", "InstrumentationConfig"],
125
+ "targetTypes": ["APMConfiguration", "Resource"],
126
+ "examples": [
127
+ {
128
+ "source": "InstrumentationConfig",
129
+ "target": "Resource",
130
+ "description": "Instrumentation config serves resources it instruments",
131
+ "layer": "11-apm-observability"
132
+ },
133
+ {
134
+ "source": "ExporterConfig",
135
+ "target": "APMConfiguration",
136
+ "description": "Exporter serves APM configuration by delivering telemetry",
137
+ "layer": "11-apm-observability"
138
+ }
139
+ ]
140
+ },
141
+ {
142
+ "relationshipTypeId": "access",
143
+ "sourceTypes": ["LogProcessor", "MetricInstrument"],
144
+ "targetTypes": ["Attribute"],
145
+ "examples": [
146
+ {
147
+ "source": "LogProcessor",
148
+ "target": "Attribute",
149
+ "description": "Log processor accesses attributes for filtering/transformation",
150
+ "layer": "11-apm-observability"
151
+ },
152
+ {
153
+ "source": "MetricInstrument",
154
+ "target": "Attribute",
155
+ "description": "Metric instrument accesses attributes for labeling",
156
+ "layer": "11-apm-observability"
157
+ }
158
+ ]
159
+ },
160
+ {
161
+ "relationshipTypeId": "reference",
162
+ "sourceTypes": ["LogRecord", "Span", "SpanLink"],
163
+ "targetTypes": ["Span"],
164
+ "examples": [
165
+ {
166
+ "source": "Span",
167
+ "target": "Span",
168
+ "description": "Span references parent span via parentSpanId (trace hierarchy)",
169
+ "layer": "11-apm-observability"
170
+ },
171
+ {
172
+ "source": "LogRecord",
173
+ "target": "Span",
174
+ "description": "Log record references associated span via traceContext",
175
+ "layer": "11-apm-observability"
176
+ },
177
+ {
178
+ "source": "SpanLink",
179
+ "target": "Span",
180
+ "description": "Span link references target span across traces",
181
+ "layer": "11-apm-observability"
182
+ }
183
+ ]
184
+ },
185
+ {
186
+ "relationshipTypeId": "depends-on",
187
+ "sourceTypes": ["LogRecord", "MetricInstrument", "Span"],
188
+ "targetTypes": ["InstrumentationScope", "Resource"],
189
+ "examples": [
190
+ {
191
+ "source": "Span",
192
+ "target": "Resource",
193
+ "description": "Span depends on resource for identity context",
194
+ "layer": "11-apm-observability"
195
+ },
196
+ {
197
+ "source": "Span",
198
+ "target": "InstrumentationScope",
199
+ "description": "Span depends on instrumentation scope for source context",
200
+ "layer": "11-apm-observability"
201
+ },
202
+ {
203
+ "source": "LogRecord",
204
+ "target": "Resource",
205
+ "description": "Log record depends on resource for identity context",
206
+ "layer": "11-apm-observability"
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ "relationshipTypeId": "fulfills-requirements",
212
+ "sourceTypes": ["ApplicationService", "Operation"],
213
+ "targetTypes": ["Requirement"],
214
+ "examples": [
215
+ {
216
+ "source": "ApplicationService",
217
+ "target": "Requirement",
218
+ "description": "OAuth service fulfills authentication requirement"
219
+ },
220
+ {
221
+ "source": "Operation",
222
+ "sourceLayer": "06-api",
223
+ "target": "Requirement",
224
+ "targetLayer": "01-motivation",
225
+ "value": "req-product-creation-capability",
226
+ "description": "POST /products operation fulfills product creation requirement"
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ "relationshipTypeId": "measures-outcome",
232
+ "sourceTypes": ["Metric"],
233
+ "targetTypes": ["Outcome"],
234
+ "examples": [
235
+ {
236
+ "source": "Metric",
237
+ "target": "Outcome",
238
+ "description": "Response time metric measures performance outcome"
239
+ }
240
+ ]
241
+ },
242
+ {
243
+ "relationshipTypeId": "traces",
244
+ "sourceTypes": ["APIOperation"],
245
+ "targetTypes": ["DistributedTrace"],
246
+ "examples": [
247
+ {
248
+ "source": "APIOperation",
249
+ "target": "DistributedTrace",
250
+ "description": "API operation participates in distributed trace"
251
+ }
252
+ ]
253
+ },
254
+ {
255
+ "relationshipTypeId": "monitors",
256
+ "sourceTypes": ["HealthCheck"],
257
+ "targetTypes": ["ApplicationService"],
258
+ "examples": [
259
+ {
260
+ "source": "HealthCheck",
261
+ "target": "ApplicationService",
262
+ "description": "Health check monitors application service"
263
+ }
264
+ ]
265
+ },
266
+ {
267
+ "relationshipTypeId": "measures",
268
+ "sourceTypes": ["Metric"],
269
+ "targetTypes": ["APIOperation"],
270
+ "examples": [
271
+ {
272
+ "source": "Metric",
273
+ "target": "APIOperation",
274
+ "description": "Response time metric measures API operation"
275
+ }
276
+ ]
277
+ }
278
+ ]
279
+ },
280
+ "crossLayerRelationships": {
281
+ "$comment": "Relationships to/from entities in other layers",
282
+ "outgoing": [
283
+ {
284
+ "id": "motivation-governed-by-principles",
285
+ "predicate": "governed-by-principles",
286
+ "inversePredicate": "governs",
287
+ "targetLayer": "01-motivation",
288
+ "targetTypes": ["GovernedByPrinciple"],
289
+ "sourceTypes": ["BusinessService"],
290
+ "fieldPath": "motivation.governed-by-principles",
291
+ "cardinality": "array",
292
+ "format": "reference",
293
+ "strength": "high",
294
+ "required": false,
295
+ "description": "BusinessService governed by Principles",
296
+ "examples": [
297
+ {
298
+ "elementType": "BusinessService",
299
+ "elementId": "order-service",
300
+ "elementName": "Order Processing Service",
301
+ "fieldPath": "motivation.governed-by-principles",
302
+ "value": "principle-customer-first,principle-automation",
303
+ "layer": "02-business"
304
+ },
305
+ {
306
+ "elementType": "ApplicationService",
307
+ "elementId": "product-service",
308
+ "elementName": "product-service",
309
+ "fieldPath": "motivation.governed-by-principles",
310
+ "value": "principle-api-first,principle-cloud-native",
311
+ "layer": "04-application"
312
+ }
313
+ ]
314
+ },
315
+ {
316
+ "id": "motivation-supports-goals",
317
+ "predicate": "supports-goals",
318
+ "inversePredicate": "supported-by",
319
+ "targetLayer": "01-motivation",
320
+ "targetTypes": ["SupportsGoal"],
321
+ "sourceTypes": ["BusinessService"],
322
+ "fieldPath": "motivation.supports-goals",
323
+ "cardinality": "array",
324
+ "format": "reference",
325
+ "strength": "high",
326
+ "required": false,
327
+ "description": "BusinessService supports Goals",
328
+ "examples": [
329
+ {
330
+ "elementType": "BusinessService",
331
+ "elementId": "order-service",
332
+ "elementName": "Order Processing Service",
333
+ "fieldPath": "motivation.supports-goals",
334
+ "value": "goal-customer-satisfaction,goal-revenue-growth",
335
+ "layer": "02-business"
336
+ },
337
+ {
338
+ "elementType": "ApplicationService",
339
+ "elementId": "product-service",
340
+ "elementName": "product-service",
341
+ "fieldPath": "motivation.supports-goals",
342
+ "value": "goal-product-catalog-accuracy,goal-customer-satisfaction",
343
+ "layer": "04-application"
344
+ }
345
+ ]
346
+ },
347
+ {
348
+ "id": "security-classification",
349
+ "predicate": "classification",
350
+ "inversePredicate": "referenced-by",
351
+ "targetLayer": "03-security",
352
+ "targetTypes": ["Classification"],
353
+ "sourceTypes": ["Artifact"],
354
+ "fieldPath": "security.classification",
355
+ "cardinality": "single",
356
+ "format": "string",
357
+ "strength": "low",
358
+ "required": false,
359
+ "description": "Links to Classification in target layer",
360
+ "examples": [
361
+ {
362
+ "elementType": "Artifact",
363
+ "elementId": "product-db",
364
+ "elementName": "product-db",
365
+ "fieldPath": "security.classification",
366
+ "value": "internal",
367
+ "layer": "05-technology"
368
+ },
369
+ {
370
+ "elementType": "Artifact",
371
+ "elementId": "customer-db",
372
+ "elementName": "customer-db",
373
+ "fieldPath": "security.classification",
374
+ "value": "restricted",
375
+ "layer": "05-technology"
376
+ }
377
+ ]
378
+ }
379
+ ],
380
+ "incoming": [
381
+ {
382
+ "id": "apm-criticality",
383
+ "predicate": "referenced-by",
384
+ "inversePredicate": "apm-criticality",
385
+ "sourceLayer": "06-api",
386
+ "sourceTypes": ["Operation", "SecurityScheme"],
387
+ "targetTypes": ["Criticality"],
388
+ "fieldPath": "x-apm-criticality",
389
+ "cardinality": "single",
390
+ "description": "Inverse of: enum [low, medium, high, critical] (optional)"
391
+ },
392
+ {
393
+ "id": "apm-health-check-endpoint",
394
+ "predicate": "referenced-by",
395
+ "inversePredicate": "health-check-endpoint",
396
+ "sourceLayer": "05-technology",
397
+ "sourceTypes": ["TechnologyService"],
398
+ "targetTypes": ["HealthCheckEndpoint"],
399
+ "fieldPath": "apm.health-check-endpoint",
400
+ "cardinality": "single",
401
+ "description": "Inverse of: health check endpoint"
402
+ },
403
+ {
404
+ "id": "apm-health-monitored",
405
+ "predicate": "referenced-by",
406
+ "inversePredicate": "health-monitored",
407
+ "sourceLayer": "05-technology",
408
+ "sourceTypes": ["TechnologyService"],
409
+ "targetTypes": ["HealthMonitored"],
410
+ "fieldPath": "apm.health-monitored",
411
+ "cardinality": "single",
412
+ "description": "Inverse of: whether health is actively monitored"
413
+ },
414
+ {
415
+ "id": "apm-sla-target-availability",
416
+ "predicate": "referenced-by",
417
+ "inversePredicate": "sla-target-availability",
418
+ "sourceLayer": "04-application",
419
+ "sourceTypes": ["ApplicationService"],
420
+ "targetTypes": ["SlaTargetAvailability"],
421
+ "fieldPath": "apm.sla-target-availability",
422
+ "cardinality": "single",
423
+ "description": "Inverse of: string (e.g., \"99.95%\", \"99.99%\", optional)"
424
+ },
425
+ {
426
+ "id": "apm-sla-target-availability",
427
+ "predicate": "referenced-by",
428
+ "inversePredicate": "sla-target-availability",
429
+ "sourceLayer": "05-technology",
430
+ "sourceTypes": ["TechnologyService"],
431
+ "targetTypes": ["SlaTargetAvailability"],
432
+ "fieldPath": "apm.sla-target-availability",
433
+ "cardinality": "single",
434
+ "description": "Inverse of: string (e.g., \"99.95%\", \"99.99%\", optional)"
435
+ },
436
+ {
437
+ "id": "apm-sla-target-availability",
438
+ "predicate": "referenced-by",
439
+ "inversePredicate": "sla-target-availability",
440
+ "sourceLayer": "06-api",
441
+ "sourceTypes": ["Operation", "SecurityScheme"],
442
+ "targetTypes": ["SlaTargetAvailability"],
443
+ "fieldPath": "apm.sla-target-availability",
444
+ "cardinality": "single",
445
+ "description": "Inverse of: string (e.g., \"99.95%\", \"99.99%\", optional)"
446
+ },
447
+ {
448
+ "id": "apm-sla-target-latency",
449
+ "predicate": "referenced-by",
450
+ "inversePredicate": "sla-target-latency",
451
+ "sourceLayer": "04-application",
452
+ "sourceTypes": ["ApplicationService"],
453
+ "targetTypes": ["SlaTargetLatency"],
454
+ "fieldPath": "apm.sla-target-latency",
455
+ "cardinality": "single",
456
+ "description": "Inverse of: string (e.g., \"200ms\", \"500ms\", optional)"
457
+ },
458
+ {
459
+ "id": "apm-sla-target-latency",
460
+ "predicate": "referenced-by",
461
+ "inversePredicate": "sla-target-latency",
462
+ "sourceLayer": "05-technology",
463
+ "sourceTypes": ["TechnologyService"],
464
+ "targetTypes": ["SlaTargetLatency"],
465
+ "fieldPath": "apm.sla-target-latency",
466
+ "cardinality": "single",
467
+ "description": "Inverse of: string (e.g., \"200ms\", \"500ms\", optional)"
468
+ },
469
+ {
470
+ "id": "apm-sla-target-latency",
471
+ "predicate": "referenced-by",
472
+ "inversePredicate": "sla-target-latency",
473
+ "sourceLayer": "06-api",
474
+ "sourceTypes": ["Operation", "SecurityScheme"],
475
+ "targetTypes": ["SlaTargetLatency"],
476
+ "fieldPath": "apm.sla-target-latency",
477
+ "cardinality": "single",
478
+ "description": "Inverse of: string (e.g., \"200ms\", \"500ms\", optional)"
479
+ },
480
+ {
481
+ "id": "apm-trace",
482
+ "predicate": "referenced-by",
483
+ "inversePredicate": "apm-trace",
484
+ "sourceLayer": "06-api",
485
+ "sourceTypes": ["Operation", "SecurityScheme"],
486
+ "targetTypes": ["Trace"],
487
+ "fieldPath": "x-apm-trace",
488
+ "cardinality": "single",
489
+ "description": "Inverse of: boolean (optional)"
490
+ },
491
+ {
492
+ "id": "apm-traced",
493
+ "predicate": "referenced-by",
494
+ "inversePredicate": "traced",
495
+ "sourceLayer": "04-application",
496
+ "sourceTypes": ["ApplicationService", "Data Properties"],
497
+ "targetTypes": ["Traced"],
498
+ "fieldPath": "apm.traced",
499
+ "cardinality": "single",
500
+ "description": "Inverse of: Links to Traced in target layer"
501
+ }
502
+ ]
503
+ },
504
+ "type": "object",
505
+ "properties": {
506
+ "spans": {
507
+ "type": "array",
508
+ "description": "Collection of Span entities",
509
+ "items": {
510
+ "$ref": "#/definitions/Span"
511
+ }
512
+ },
513
+ "span-events": {
514
+ "type": "array",
515
+ "description": "Collection of SpanEvent entities",
516
+ "items": {
517
+ "$ref": "#/definitions/SpanEvent"
518
+ }
519
+ },
520
+ "span-links": {
521
+ "type": "array",
522
+ "description": "Collection of SpanLink entities",
523
+ "items": {
524
+ "$ref": "#/definitions/SpanLink"
525
+ }
526
+ },
527
+ "span-statuses": {
528
+ "type": "array",
529
+ "description": "Collection of SpanStatus entities",
530
+ "items": {
531
+ "$ref": "#/definitions/SpanStatus"
532
+ }
533
+ },
534
+ "log-records": {
535
+ "type": "array",
536
+ "description": "Collection of LogRecord entities",
537
+ "items": {
538
+ "$ref": "#/definitions/LogRecord"
539
+ }
540
+ },
541
+ "resources": {
542
+ "type": "array",
543
+ "description": "Collection of Resource entities",
544
+ "items": {
545
+ "$ref": "#/definitions/Resource"
546
+ }
547
+ },
548
+ "instrumentation-scopes": {
549
+ "type": "array",
550
+ "description": "Collection of InstrumentationScope entities",
551
+ "items": {
552
+ "$ref": "#/definitions/InstrumentationScope"
553
+ }
554
+ },
555
+ "exporter-configs": {
556
+ "type": "array",
557
+ "description": "Collection of ExporterConfig entities",
558
+ "items": {
559
+ "$ref": "#/definitions/ExporterConfig"
560
+ }
561
+ },
562
+ "instrumentation-configs": {
563
+ "type": "array",
564
+ "description": "Collection of InstrumentationConfig entities",
565
+ "items": {
566
+ "$ref": "#/definitions/InstrumentationConfig"
567
+ }
568
+ },
569
+ "log-processors": {
570
+ "type": "array",
571
+ "description": "Collection of LogProcessor entities",
572
+ "items": {
573
+ "$ref": "#/definitions/LogProcessor"
574
+ }
575
+ },
576
+ "meter-configs": {
577
+ "type": "array",
578
+ "description": "Collection of MeterConfig entities",
579
+ "items": {
580
+ "$ref": "#/definitions/MeterConfig"
581
+ }
582
+ },
583
+ "metric-instruments": {
584
+ "type": "array",
585
+ "description": "Collection of MetricInstrument entities",
586
+ "items": {
587
+ "$ref": "#/definitions/MetricInstrument"
588
+ }
589
+ },
590
+ "attributes": {
591
+ "type": "array",
592
+ "description": "Collection of Attribute entities",
593
+ "items": {
594
+ "$ref": "#/definitions/Attribute"
595
+ }
596
+ },
597
+ "apm-configurations": {
598
+ "type": "array",
599
+ "description": "Collection of APMConfiguration entities",
600
+ "items": {
601
+ "$ref": "#/definitions/APMConfiguration"
602
+ }
603
+ },
604
+ "trace-configurations": {
605
+ "type": "array",
606
+ "description": "Collection of TraceConfiguration entities",
607
+ "items": {
608
+ "$ref": "#/definitions/TraceConfiguration"
609
+ }
610
+ },
611
+ "log-configurations": {
612
+ "type": "array",
613
+ "description": "Collection of LogConfiguration entities",
614
+ "items": {
615
+ "$ref": "#/definitions/LogConfiguration"
616
+ }
617
+ },
618
+ "metric-configurations": {
619
+ "type": "array",
620
+ "description": "Collection of MetricConfiguration entities",
621
+ "items": {
622
+ "$ref": "#/definitions/MetricConfiguration"
623
+ }
624
+ },
625
+ "data-quality-metricses": {
626
+ "type": "array",
627
+ "description": "Collection of DataQualityMetrics entities",
628
+ "items": {
629
+ "$ref": "#/definitions/DataQualityMetrics"
630
+ }
631
+ },
632
+ "data-quality-metrics": {
633
+ "type": "array",
634
+ "description": "Collection of DataQualityMetric entities",
635
+ "items": {
636
+ "$ref": "#/definitions/DataQualityMetric"
637
+ }
638
+ }
639
+ },
640
+ "definitions": {
641
+ "SpanKind": {
642
+ "type": "string",
643
+ "enum": ["INTERNAL", "SERVER", "CLIENT", "PRODUCER", "CONSUMER"]
644
+ },
645
+ "StatusCode": {
646
+ "type": "string",
647
+ "enum": ["UNSET", "OK", "ERROR"]
648
+ },
649
+ "SeverityNumber": {
650
+ "type": "string",
651
+ "enum": [
652
+ "UNSPECIFIED",
653
+ "TRACE",
654
+ "TRACE2",
655
+ "TRACE3",
656
+ "TRACE4",
657
+ "DEBUG",
658
+ "DEBUG2",
659
+ "DEBUG3",
660
+ "DEBUG4",
661
+ "INFO",
662
+ "INFO2",
663
+ "INFO3",
664
+ "INFO4",
665
+ "WARN",
666
+ "WARN2",
667
+ "WARN3",
668
+ "WARN4",
669
+ "ERROR",
670
+ "ERROR2",
671
+ "ERROR3",
672
+ "ERROR4",
673
+ "FATAL",
674
+ "FATAL2",
675
+ "FATAL3",
676
+ "FATAL4"
677
+ ]
678
+ },
679
+ "ExporterType": {
680
+ "type": "string",
681
+ "enum": ["otlp", "jaeger", "zipkin", "prometheus", "console", "file", "logging", "noop"]
682
+ },
683
+ "ExporterProtocol": {
684
+ "type": "string",
685
+ "enum": ["grpc", "http", "http/json"]
686
+ },
687
+ "CompressionType": {
688
+ "type": "string",
689
+ "enum": ["none", "gzip", "zstd"]
690
+ },
691
+ "AuthType": {
692
+ "type": "string",
693
+ "enum": ["none", "api-key", "bearer", "basic", "oauth2", "mTLS"]
694
+ },
695
+ "InstrumentationType": {
696
+ "type": "string",
697
+ "enum": [
698
+ "http",
699
+ "database",
700
+ "redis",
701
+ "grpc",
702
+ "messaging",
703
+ "graphql",
704
+ "aws-sdk",
705
+ "mongodb",
706
+ "elasticsearch",
707
+ "fs",
708
+ "dns",
709
+ "net",
710
+ "custom"
711
+ ]
712
+ },
713
+ "LogProcessorType": {
714
+ "type": "string",
715
+ "enum": [
716
+ "batch",
717
+ "resource",
718
+ "filter",
719
+ "transform",
720
+ "sampling",
721
+ "redact",
722
+ "routing",
723
+ "memory-limiter",
724
+ "custom"
725
+ ]
726
+ },
727
+ "TransformOperation": {
728
+ "type": "string",
729
+ "enum": [
730
+ "set-attribute",
731
+ "delete-attribute",
732
+ "rename-attribute",
733
+ "hash-attribute",
734
+ "truncate-body",
735
+ "extract-attribute",
736
+ "convert-severity"
737
+ ]
738
+ },
739
+ "AggregationTemporality": {
740
+ "type": "string",
741
+ "enum": ["delta", "cumulative"]
742
+ },
743
+ "InstrumentType": {
744
+ "type": "string",
745
+ "enum": [
746
+ "counter",
747
+ "up_down_counter",
748
+ "gauge",
749
+ "histogram",
750
+ "observable_counter",
751
+ "observable_up_down_counter",
752
+ "observable_gauge"
753
+ ]
754
+ },
755
+ "SamplerType": {
756
+ "type": "string",
757
+ "enum": [
758
+ "always_on",
759
+ "always_off",
760
+ "traceidratio",
761
+ "parentbased_always_on",
762
+ "parentbased_always_off",
763
+ "parentbased_traceidratio"
764
+ ]
765
+ },
766
+ "PropagatorType": {
767
+ "type": "string",
768
+ "enum": ["w3c-trace-context", "w3c-baggage", "b3", "jaeger", "xray", "ottrace"]
769
+ },
770
+ "LogLevel": {
771
+ "type": "string",
772
+ "enum": ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL"]
773
+ },
774
+ "DataQualityType": {
775
+ "type": "string",
776
+ "enum": [
777
+ "completeness",
778
+ "accuracy",
779
+ "freshness",
780
+ "consistency",
781
+ "uniqueness",
782
+ "validity",
783
+ "timeliness",
784
+ "integrity"
785
+ ]
786
+ },
787
+ "Span": {
788
+ "type": "object",
789
+ "description": "Unit of work in distributed tracing",
790
+ "required": [
791
+ "id",
792
+ "traceId",
793
+ "spanId",
794
+ "traceState",
795
+ "parentSpanId",
796
+ "name",
797
+ "spanKind",
798
+ "startTimeUnixNano",
799
+ "endTimeUnixNano",
800
+ "droppedAttributesCount",
801
+ "droppedEventsCount",
802
+ "droppedLinksCount"
803
+ ],
804
+ "properties": {
805
+ "id": {
806
+ "type": "string",
807
+ "format": "uuid",
808
+ "minLength": 1
809
+ },
810
+ "traceId": {
811
+ "type": "string",
812
+ "minLength": 1
813
+ },
814
+ "spanId": {
815
+ "type": "string",
816
+ "minLength": 1
817
+ },
818
+ "traceState": {
819
+ "type": "string",
820
+ "minLength": 1
821
+ },
822
+ "parentSpanId": {
823
+ "type": "string",
824
+ "minLength": 1
825
+ },
826
+ "name": {
827
+ "type": "string",
828
+ "minLength": 1
829
+ },
830
+ "spanKind": {
831
+ "$ref": "#/definitions/SpanKind"
832
+ },
833
+ "startTimeUnixNano": {
834
+ "type": "string",
835
+ "minLength": 1
836
+ },
837
+ "endTimeUnixNano": {
838
+ "type": "string",
839
+ "minLength": 1
840
+ },
841
+ "droppedAttributesCount": {
842
+ "type": "string",
843
+ "minLength": 1
844
+ },
845
+ "droppedEventsCount": {
846
+ "type": "string",
847
+ "minLength": 1
848
+ },
849
+ "droppedLinksCount": {
850
+ "type": "string",
851
+ "minLength": 1
852
+ },
853
+ "attributes": {
854
+ "type": "array",
855
+ "description": "Contains relationship",
856
+ "items": {
857
+ "type": "string"
858
+ }
859
+ },
860
+ "events": {
861
+ "type": "array",
862
+ "description": "Contains relationship",
863
+ "items": {
864
+ "type": "string"
865
+ }
866
+ },
867
+ "links": {
868
+ "type": "array",
869
+ "description": "Contains relationship",
870
+ "items": {
871
+ "type": "string"
872
+ }
873
+ }
874
+ }
875
+ },
876
+ "SpanEvent": {
877
+ "type": "object",
878
+ "description": "Timestamped event during span execution",
879
+ "required": ["id", "timeUnixNano", "name", "droppedAttributesCount"],
880
+ "properties": {
881
+ "id": {
882
+ "type": "string",
883
+ "format": "uuid",
884
+ "minLength": 1
885
+ },
886
+ "timeUnixNano": {
887
+ "type": "string",
888
+ "minLength": 1
889
+ },
890
+ "name": {
891
+ "type": "string",
892
+ "minLength": 1
893
+ },
894
+ "droppedAttributesCount": {
895
+ "type": "string",
896
+ "minLength": 1
897
+ },
898
+ "attributes": {
899
+ "type": "array",
900
+ "description": "Contains relationship",
901
+ "items": {
902
+ "type": "string"
903
+ }
904
+ }
905
+ }
906
+ },
907
+ "SpanLink": {
908
+ "type": "object",
909
+ "description": "Link to related span (different trace or parent)",
910
+ "required": ["id", "name", "traceId", "spanId", "droppedAttributesCount"],
911
+ "properties": {
912
+ "id": {
913
+ "type": "string",
914
+ "format": "uuid",
915
+ "minLength": 1
916
+ },
917
+ "name": {
918
+ "type": "string",
919
+ "minLength": 1
920
+ },
921
+ "traceId": {
922
+ "type": "string",
923
+ "minLength": 1
924
+ },
925
+ "spanId": {
926
+ "type": "string",
927
+ "minLength": 1
928
+ },
929
+ "traceState": {
930
+ "type": "string",
931
+ "minLength": 1
932
+ },
933
+ "droppedAttributesCount": {
934
+ "type": "string",
935
+ "minLength": 1
936
+ },
937
+ "attributes": {
938
+ "type": "array",
939
+ "description": "Contains relationship",
940
+ "items": {
941
+ "type": "string"
942
+ }
943
+ }
944
+ }
945
+ },
946
+ "SpanStatus": {
947
+ "type": "object",
948
+ "description": "Outcome of span execution",
949
+ "required": ["id", "name", "code"],
950
+ "properties": {
951
+ "id": {
952
+ "type": "string",
953
+ "format": "uuid",
954
+ "minLength": 1
955
+ },
956
+ "name": {
957
+ "type": "string",
958
+ "minLength": 1
959
+ },
960
+ "code": {
961
+ "$ref": "#/definitions/StatusCode"
962
+ },
963
+ "message": {
964
+ "type": "string",
965
+ "minLength": 1
966
+ }
967
+ }
968
+ },
969
+ "LogRecord": {
970
+ "type": "object",
971
+ "description": "OpenTelemetry log entry",
972
+ "required": [
973
+ "id",
974
+ "name",
975
+ "timeUnixNano",
976
+ "observedTimeUnixNano",
977
+ "severityNumber",
978
+ "body",
979
+ "flags",
980
+ "droppedAttributesCount"
981
+ ],
982
+ "properties": {
983
+ "id": {
984
+ "type": "string",
985
+ "format": "uuid",
986
+ "minLength": 1
987
+ },
988
+ "name": {
989
+ "type": "string",
990
+ "minLength": 1
991
+ },
992
+ "timeUnixNano": {
993
+ "type": "string",
994
+ "minLength": 1
995
+ },
996
+ "observedTimeUnixNano": {
997
+ "type": "string",
998
+ "minLength": 1
999
+ },
1000
+ "severityNumber": {
1001
+ "$ref": "#/definitions/SeverityNumber"
1002
+ },
1003
+ "severityText": {
1004
+ "type": "string",
1005
+ "minLength": 1
1006
+ },
1007
+ "body": {
1008
+ "type": "string",
1009
+ "minLength": 1
1010
+ },
1011
+ "flags": {
1012
+ "type": "string",
1013
+ "minLength": 1
1014
+ },
1015
+ "droppedAttributesCount": {
1016
+ "type": "string",
1017
+ "minLength": 1
1018
+ },
1019
+ "attributes": {
1020
+ "type": "array",
1021
+ "description": "Contains relationship",
1022
+ "items": {
1023
+ "type": "string"
1024
+ }
1025
+ }
1026
+ }
1027
+ },
1028
+ "Resource": {
1029
+ "type": "object",
1030
+ "description": "Immutable representation of entity producing telemetry",
1031
+ "required": ["id", "name", "droppedAttributesCount"],
1032
+ "properties": {
1033
+ "id": {
1034
+ "type": "string",
1035
+ "format": "uuid",
1036
+ "minLength": 1
1037
+ },
1038
+ "name": {
1039
+ "type": "string",
1040
+ "minLength": 1
1041
+ },
1042
+ "schemaUrl": {
1043
+ "type": "string",
1044
+ "minLength": 1
1045
+ },
1046
+ "droppedAttributesCount": {
1047
+ "type": "string",
1048
+ "minLength": 1
1049
+ },
1050
+ "attributes": {
1051
+ "type": "array",
1052
+ "description": "Contains relationship",
1053
+ "items": {
1054
+ "type": "string"
1055
+ }
1056
+ }
1057
+ }
1058
+ },
1059
+ "InstrumentationScope": {
1060
+ "type": "object",
1061
+ "description": "Logical unit of code that generates telemetry",
1062
+ "required": ["id", "name", "droppedAttributesCount"],
1063
+ "properties": {
1064
+ "id": {
1065
+ "type": "string",
1066
+ "format": "uuid",
1067
+ "minLength": 1
1068
+ },
1069
+ "name": {
1070
+ "type": "string",
1071
+ "minLength": 1
1072
+ },
1073
+ "version": {
1074
+ "type": "string",
1075
+ "minLength": 1
1076
+ },
1077
+ "schemaUrl": {
1078
+ "type": "string",
1079
+ "minLength": 1
1080
+ },
1081
+ "droppedAttributesCount": {
1082
+ "type": "string",
1083
+ "minLength": 1
1084
+ },
1085
+ "attributes": {
1086
+ "type": "array",
1087
+ "description": "Contains relationship",
1088
+ "items": {
1089
+ "type": "string"
1090
+ }
1091
+ }
1092
+ }
1093
+ },
1094
+ "ExporterConfig": {
1095
+ "type": "object",
1096
+ "description": "Configuration for telemetry data export destinations, specifying protocol (OTLP, Jaeger, Prometheus), endpoints, authentication, batching, and retry policies. Controls where observability data is sent.",
1097
+ "required": ["id", "name", "type", "endpoint"],
1098
+ "properties": {
1099
+ "id": {
1100
+ "type": "string",
1101
+ "format": "uuid",
1102
+ "minLength": 1
1103
+ },
1104
+ "name": {
1105
+ "type": "string",
1106
+ "minLength": 1
1107
+ },
1108
+ "type": {
1109
+ "$ref": "#/definitions/ExporterType"
1110
+ },
1111
+ "enabled": {
1112
+ "type": "boolean"
1113
+ },
1114
+ "endpoint": {
1115
+ "type": "string",
1116
+ "minLength": 1
1117
+ },
1118
+ "protocol": {
1119
+ "$ref": "#/definitions/ExporterProtocol"
1120
+ }
1121
+ }
1122
+ },
1123
+ "InstrumentationConfig": {
1124
+ "type": "object",
1125
+ "description": "Configuration for automatic or manual instrumentation of application code, specifying which libraries, frameworks, or code paths to instrument and capture telemetry from.",
1126
+ "required": ["id", "name", "type"],
1127
+ "properties": {
1128
+ "id": {
1129
+ "type": "string",
1130
+ "format": "uuid",
1131
+ "minLength": 1
1132
+ },
1133
+ "name": {
1134
+ "type": "string",
1135
+ "minLength": 1
1136
+ },
1137
+ "type": {
1138
+ "$ref": "#/definitions/InstrumentationType"
1139
+ },
1140
+ "enabled": {
1141
+ "type": "boolean"
1142
+ },
1143
+ "description": {
1144
+ "type": "string",
1145
+ "minLength": 1
1146
+ }
1147
+ }
1148
+ },
1149
+ "LogProcessor": {
1150
+ "type": "object",
1151
+ "description": "A processing pipeline component for log records, enabling filtering, transformation, enrichment, or routing of logs before export. Customizes log processing behavior.",
1152
+ "required": ["id", "name", "type"],
1153
+ "properties": {
1154
+ "id": {
1155
+ "type": "string",
1156
+ "format": "uuid",
1157
+ "minLength": 1
1158
+ },
1159
+ "name": {
1160
+ "type": "string",
1161
+ "minLength": 1
1162
+ },
1163
+ "type": {
1164
+ "$ref": "#/definitions/LogProcessorType"
1165
+ },
1166
+ "order": {
1167
+ "type": "integer"
1168
+ },
1169
+ "enabled": {
1170
+ "type": "boolean"
1171
+ }
1172
+ }
1173
+ },
1174
+ "MeterConfig": {
1175
+ "type": "object",
1176
+ "description": "Configuration for metric collection meters, specifying aggregation temporality, cardinality limits, and collection intervals. Controls how metrics are gathered and aggregated.",
1177
+ "required": ["id", "name"],
1178
+ "properties": {
1179
+ "id": {
1180
+ "type": "string",
1181
+ "format": "uuid",
1182
+ "minLength": 1
1183
+ },
1184
+ "name": {
1185
+ "type": "string",
1186
+ "minLength": 1
1187
+ },
1188
+ "description": {
1189
+ "type": "string",
1190
+ "minLength": 1
1191
+ },
1192
+ "version": {
1193
+ "type": "string",
1194
+ "minLength": 1
1195
+ },
1196
+ "schemaUrl": {
1197
+ "type": "string",
1198
+ "minLength": 1
1199
+ },
1200
+ "instruments": {
1201
+ "type": "array",
1202
+ "description": "Contains relationship",
1203
+ "items": {
1204
+ "type": "string"
1205
+ }
1206
+ }
1207
+ }
1208
+ },
1209
+ "MetricInstrument": {
1210
+ "type": "object",
1211
+ "description": "Defines a specific metric measurement instrument (Counter, Gauge, Histogram, etc.) with its name, unit, description, and attributes. The fundamental unit of metric collection.",
1212
+ "required": ["id", "name", "type", "unit"],
1213
+ "properties": {
1214
+ "id": {
1215
+ "type": "string",
1216
+ "format": "uuid",
1217
+ "minLength": 1
1218
+ },
1219
+ "name": {
1220
+ "type": "string",
1221
+ "minLength": 1
1222
+ },
1223
+ "type": {
1224
+ "$ref": "#/definitions/InstrumentType"
1225
+ },
1226
+ "unit": {
1227
+ "type": "string",
1228
+ "minLength": 1
1229
+ },
1230
+ "description": {
1231
+ "type": "string",
1232
+ "minLength": 1
1233
+ },
1234
+ "enabled": {
1235
+ "type": "boolean"
1236
+ },
1237
+ "source": {
1238
+ "type": "object",
1239
+ "description": "Source code reference for code-defined metrics",
1240
+ "properties": {
1241
+ "reference": {
1242
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference"
1243
+ }
1244
+ }
1245
+ }
1246
+ }
1247
+ },
1248
+ "Attribute": {
1249
+ "type": "object",
1250
+ "description": "Key-value pair metadata",
1251
+ "required": ["id", "name", "key", "value"],
1252
+ "properties": {
1253
+ "id": {
1254
+ "type": "string",
1255
+ "format": "uuid",
1256
+ "minLength": 1
1257
+ },
1258
+ "name": {
1259
+ "type": "string",
1260
+ "minLength": 1
1261
+ },
1262
+ "key": {
1263
+ "type": "string",
1264
+ "minLength": 1
1265
+ },
1266
+ "value": {
1267
+ "type": "string",
1268
+ "minLength": 1
1269
+ }
1270
+ }
1271
+ },
1272
+ "APMConfiguration": {
1273
+ "type": "object",
1274
+ "description": "Complete APM configuration for an application",
1275
+ "required": ["id", "name", "version", "application"],
1276
+ "properties": {
1277
+ "id": {
1278
+ "type": "string",
1279
+ "format": "uuid",
1280
+ "minLength": 1
1281
+ },
1282
+ "name": {
1283
+ "type": "string",
1284
+ "minLength": 1
1285
+ },
1286
+ "version": {
1287
+ "type": "string",
1288
+ "minLength": 1
1289
+ },
1290
+ "application": {
1291
+ "type": "string",
1292
+ "minLength": 1
1293
+ }
1294
+ }
1295
+ },
1296
+ "TraceConfiguration": {
1297
+ "type": "object",
1298
+ "description": "Distributed tracing configuration",
1299
+ "required": ["id", "name", "serviceName"],
1300
+ "properties": {
1301
+ "id": {
1302
+ "type": "string",
1303
+ "format": "uuid",
1304
+ "minLength": 1
1305
+ },
1306
+ "name": {
1307
+ "type": "string",
1308
+ "minLength": 1
1309
+ },
1310
+ "serviceName": {
1311
+ "type": "string",
1312
+ "minLength": 1
1313
+ },
1314
+ "serviceVersion": {
1315
+ "type": "string",
1316
+ "minLength": 1
1317
+ },
1318
+ "deploymentEnvironment": {
1319
+ "type": "string",
1320
+ "minLength": 1
1321
+ },
1322
+ "source": {
1323
+ "type": "object",
1324
+ "description": "Source code reference for trace configuration",
1325
+ "properties": {
1326
+ "reference": {
1327
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference"
1328
+ }
1329
+ }
1330
+ }
1331
+ }
1332
+ },
1333
+ "LogConfiguration": {
1334
+ "type": "object",
1335
+ "description": "Logging configuration",
1336
+ "required": ["name", "id", "serviceName", "logLevel"],
1337
+ "properties": {
1338
+ "name": {
1339
+ "type": "string",
1340
+ "minLength": 1
1341
+ },
1342
+ "id": {
1343
+ "type": "string",
1344
+ "format": "uuid",
1345
+ "minLength": 1
1346
+ },
1347
+ "serviceName": {
1348
+ "type": "string",
1349
+ "minLength": 1
1350
+ },
1351
+ "logLevel": {
1352
+ "$ref": "#/definitions/LogLevel"
1353
+ }
1354
+ }
1355
+ },
1356
+ "MetricConfiguration": {
1357
+ "type": "object",
1358
+ "description": "Metrics configuration",
1359
+ "required": ["id", "name", "serviceName"],
1360
+ "properties": {
1361
+ "id": {
1362
+ "type": "string",
1363
+ "format": "uuid",
1364
+ "minLength": 1
1365
+ },
1366
+ "name": {
1367
+ "type": "string",
1368
+ "minLength": 1
1369
+ },
1370
+ "serviceName": {
1371
+ "type": "string",
1372
+ "minLength": 1
1373
+ },
1374
+ "exportIntervalMillis": {
1375
+ "type": "integer"
1376
+ }
1377
+ }
1378
+ },
1379
+ "DataQualityMetrics": {
1380
+ "type": "object",
1381
+ "description": "Data quality monitoring metrics (referenced by Data Model Layer x-apm-data-quality-metrics)",
1382
+ "required": ["schemaRef"],
1383
+ "properties": {
1384
+ "schemaRef": {
1385
+ "type": "string",
1386
+ "minLength": 1
1387
+ },
1388
+ "monitoringEnabled": {
1389
+ "type": "boolean"
1390
+ },
1391
+ "metrics": {
1392
+ "type": "array",
1393
+ "description": "Contains relationship",
1394
+ "items": {
1395
+ "type": "string"
1396
+ }
1397
+ }
1398
+ }
1399
+ },
1400
+ "DataQualityMetric": {
1401
+ "type": "object",
1402
+ "description": "Individual data quality metric",
1403
+ "required": ["type", "name", "measurement", "threshold"],
1404
+ "properties": {
1405
+ "type": {
1406
+ "$ref": "#/definitions/DataQualityType"
1407
+ },
1408
+ "name": {
1409
+ "type": "string",
1410
+ "minLength": 1
1411
+ },
1412
+ "description": {
1413
+ "type": "string",
1414
+ "minLength": 1
1415
+ },
1416
+ "measurement": {
1417
+ "type": "string",
1418
+ "minLength": 1
1419
+ },
1420
+ "threshold": {
1421
+ "type": "string",
1422
+ "minLength": 1
1423
+ },
1424
+ "alertOnViolation": {
1425
+ "type": "boolean"
1426
+ }
1427
+ }
1428
+ }
1429
+ }
1430
+ }