@open-resource-discovery/specification 1.15.0 → 1.16.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.
- package/dist/generated/spec/v1/schemas/Configuration.schema.json +1 -1
- package/dist/generated/spec/v1/schemas/Document.schema.json +272 -72
- package/dist/generated/spec/v1/schemas/OrdOverlay.schema.json +2 -2
- package/dist/generated/spec/v1/types/Configuration.d.ts +1 -1
- package/dist/generated/spec/v1/types/Document.d.ts +293 -59
- package/dist/generated/spec/v1/types/OrdOverlay.d.ts +4 -3
- package/package.json +6 -6
|
@@ -23,7 +23,7 @@ export interface OrdDocument {
|
|
|
23
23
|
/**
|
|
24
24
|
* Version of the Open Resource Discovery specification that is used to describe this document.
|
|
25
25
|
*/
|
|
26
|
-
openResourceDiscovery: "1.0" | "1.1" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.7" | "1.8" | "1.9" | "1.10" | "1.11" | "1.12" | "1.13" | "1.14" | "1.15";
|
|
26
|
+
openResourceDiscovery: "1.0" | "1.1" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.7" | "1.8" | "1.9" | "1.10" | "1.11" | "1.12" | "1.13" | "1.14" | "1.15" | "1.16";
|
|
27
27
|
/**
|
|
28
28
|
* Optional description of the ORD document itself.
|
|
29
29
|
* Please note that this information is NOT further processed or considered by an ORD aggregator.
|
|
@@ -31,6 +31,24 @@ export interface OrdDocument {
|
|
|
31
31
|
* Notated in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
32
32
|
*/
|
|
33
33
|
description?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Optional [base URL](../index.md#base-url) of the ORD provider system instance that serves this document.
|
|
36
|
+
*
|
|
37
|
+
* Used to resolve relative URLs to [resource definition](../index.md#resource-definition) files and resource definition metadata file
|
|
38
|
+
* references within this document (e.g., `resourceDefinitions[].url`, `overlayDefinitions[].url`, `File.url`).
|
|
39
|
+
* This differs from `describedSystemInstance.baseUrl`, which is used for entry point URLs.
|
|
40
|
+
*
|
|
41
|
+
* It may differ from `describedSystemInstance.baseUrl` when an ORD provider describes another system on its behalf.
|
|
42
|
+
* In the common case where the ORD provider and the described system are the same, both values are identical.
|
|
43
|
+
*
|
|
44
|
+
* The `baseUrl` MUST NOT contain a trailing slash.
|
|
45
|
+
*
|
|
46
|
+
* This property is particularly important in push, offline, and self-contained document scenarios,
|
|
47
|
+
* and REQUIRED when the provider and the described system differ.
|
|
48
|
+
*
|
|
49
|
+
* See [Relative URL Resolution](../index.md#relative-url-resolution) for the full resolution order including fallbacks and backward-compatibility rules.
|
|
50
|
+
*/
|
|
51
|
+
baseUrl?: string;
|
|
34
52
|
/**
|
|
35
53
|
* With ORD it's possible to describe a system from a static or a dynamic [perspective](../index.md#perspectives) (for more details, follow the link).
|
|
36
54
|
*
|
|
@@ -265,10 +283,16 @@ export interface SystemVersion {
|
|
|
265
283
|
*/
|
|
266
284
|
export interface SystemInstance {
|
|
267
285
|
/**
|
|
268
|
-
* Optional [base URL](../index.md#base-url) of the **system instance**.
|
|
269
|
-
*
|
|
286
|
+
* Optional [base URL](../index.md#base-url) of the **described system instance**.
|
|
287
|
+
*
|
|
288
|
+
* Used to resolve relative [entry point](../index.md#described-system-base-url-entry-points) URLs within this document.
|
|
289
|
+
* Relative URLs to metadata files (e.g., `resourceDefinitions[].url`) are resolved against
|
|
290
|
+
* the document root `baseUrl` instead — see [Relative URL Resolution](../index.md#relative-url-resolution).
|
|
291
|
+
*
|
|
292
|
+
* ORD aggregators that hold authoritative knowledge of the described system's base URL
|
|
293
|
+
* (e.g., from landscape configuration or service discovery) MAY prefer that over this value.
|
|
270
294
|
*
|
|
271
|
-
* The `baseUrl` MUST
|
|
295
|
+
* The `baseUrl` MUST NOT contain a trailing slash.
|
|
272
296
|
*
|
|
273
297
|
* MUST be provided if the base URL is not known to the ORD aggregators.
|
|
274
298
|
* MUST be provided when the document needs to be fully self contained, e.g. when used for manual imports.
|
|
@@ -361,6 +385,14 @@ export interface ApiResource {
|
|
|
361
385
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
362
386
|
*/
|
|
363
387
|
description: string;
|
|
388
|
+
/**
|
|
389
|
+
* Hint for AI consumers (LLMs, agent orchestrators) on how to use or interpret this resource.
|
|
390
|
+
* Intentionally separate from human-facing `description` so both can evolve independently.
|
|
391
|
+
* SHOULD be written in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
392
|
+
*
|
|
393
|
+
* For guidance and best practices, see [AI Agents and Protocols](../concepts/ai-agents-and-protocols#ai-hints-on-ord-resources).
|
|
394
|
+
*/
|
|
395
|
+
aiHint?: string;
|
|
364
396
|
/**
|
|
365
397
|
* Defines which Package the resource is part of.
|
|
366
398
|
*
|
|
@@ -379,6 +411,10 @@ export interface ApiResource {
|
|
|
379
411
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
380
412
|
*
|
|
381
413
|
* All resources that share the same group ID assignment are effectively grouped together.
|
|
414
|
+
*
|
|
415
|
+
* **Visibility:** Groups and Group Types may carry a `visibility`. Aggregators and consumers MUST NOT expose
|
|
416
|
+
* group assignments to audiences whose access level exceeds the referenced Group's (or Group Type's) visibility.
|
|
417
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
382
418
|
*/
|
|
383
419
|
partOfGroups?: string[];
|
|
384
420
|
/**
|
|
@@ -407,11 +443,15 @@ export interface ApiResource {
|
|
|
407
443
|
*/
|
|
408
444
|
defaultConsumptionBundle?: string;
|
|
409
445
|
/**
|
|
410
|
-
* List of products
|
|
446
|
+
* List of products this package and its resources are a part of.
|
|
411
447
|
*
|
|
412
448
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
413
449
|
*
|
|
414
|
-
* `partOfProducts`
|
|
450
|
+
* `partOfProducts` assigned to a `Package` are inherited by all ORD resources it contains.
|
|
451
|
+
* Resources that belong to a different product than their package can override this directly.
|
|
452
|
+
*
|
|
453
|
+
* Every ORD resource SHOULD be assigned to at least one product, either directly or inherited from its package.
|
|
454
|
+
* Setting `partOfProducts` on the package is the preferred approach, as it propagates automatically to all contained resources.
|
|
415
455
|
*
|
|
416
456
|
* @minItems 0
|
|
417
457
|
*/
|
|
@@ -423,13 +463,13 @@ export interface ApiResource {
|
|
|
423
463
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
424
464
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
425
465
|
*
|
|
426
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
466
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
427
467
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
428
468
|
*
|
|
429
469
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
430
470
|
* The `version` MUST not be bumped for changes in extensions.
|
|
431
471
|
*
|
|
432
|
-
* The general [Version and Lifecycle](../
|
|
472
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
433
473
|
*
|
|
434
474
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
435
475
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -475,7 +515,7 @@ export interface ApiResource {
|
|
|
475
515
|
*
|
|
476
516
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
477
517
|
*
|
|
478
|
-
* See [Lifecycle](../
|
|
518
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
479
519
|
*/
|
|
480
520
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
481
521
|
/**
|
|
@@ -552,12 +592,15 @@ export interface ApiResource {
|
|
|
552
592
|
* If there is no match, the information in ORD takes precedence.
|
|
553
593
|
*
|
|
554
594
|
* **Provider View:**
|
|
555
|
-
*
|
|
556
|
-
*
|
|
595
|
+
* Relative entry point URLs are resolved against `describedSystemInstance`.`baseUrl` (the described system's base URL).
|
|
596
|
+
* It is RECOMMENDED to use relative references and (if known) to provide `describedSystemInstance`.`baseUrl`.
|
|
557
597
|
* If the URL is not relative to the described system instance [base URL](../index.md#base-url), a full URL MUST be provided.
|
|
558
598
|
* If the entry points are rewritten by middleware - incl. the special case of client/consumer specific entry points - it is RECOMMENDED to provide relative URLs, so only the `describedSystemInstance`.`baseUrl` has to be rewritten.
|
|
559
599
|
* The provider should not have to describe all middleware or consumer specific entry points. If they are enriched later by the aggregator, it MAY omit the entry points.
|
|
560
600
|
*
|
|
601
|
+
* Note: this is distinct from relative resource definition URLs, which resolve against the document root `baseUrl`.
|
|
602
|
+
* See [Relative URL Resolution](../index.md#relative-url-resolution) for full rules including the aggregator-override behavior.
|
|
603
|
+
*
|
|
561
604
|
* **Consumer View**:
|
|
562
605
|
* When fetching the information from an ORD Aggregator, the consumer MAY rely on receiving full URLs.
|
|
563
606
|
*
|
|
@@ -580,7 +623,7 @@ export interface ApiResource {
|
|
|
580
623
|
* See also [Resource Definitions](../index.md#resource-definitions) for more context.
|
|
581
624
|
*
|
|
582
625
|
* Each definition is to be understood as an alternative description format, describing the same resource / capability.
|
|
583
|
-
* The combination of `type
|
|
626
|
+
* The combination of `type` (or `customType` for `type: "custom"`), `purpose`, and `visibility` MUST be unique within the list.
|
|
584
627
|
*
|
|
585
628
|
* A definition without a `purpose` is considered the primary/default definition for its type.
|
|
586
629
|
* Additional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).
|
|
@@ -614,6 +657,7 @@ export interface ApiResource {
|
|
|
614
657
|
customImplementationStandardDescription?: string;
|
|
615
658
|
/**
|
|
616
659
|
* A reference to the interface (API contract) and its maximum version that this API implements. Even if the interface contract evolves compatible, this resource will not be compatible with versions beyond the specified one.
|
|
660
|
+
* It does not imply the same endpoints, security or tenant specific configuration is used.
|
|
617
661
|
*
|
|
618
662
|
* Serves as a declaration of compatible implementation of API contract, effectively functioning as an "implementationOf" relationship. The data that compatible APIs return follow the same schema, but itself can be different.
|
|
619
663
|
* This means that if one API is returning 1 record for a dedicated request, a compatible API could return multiple and different records, as long as they adhere to the same schema.
|
|
@@ -810,7 +854,7 @@ export interface ChangelogEntry {
|
|
|
810
854
|
*
|
|
811
855
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
812
856
|
*
|
|
813
|
-
* See [Lifecycle](../
|
|
857
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
814
858
|
*/
|
|
815
859
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
816
860
|
/**
|
|
@@ -864,7 +908,8 @@ export interface ApiResourceDefinition {
|
|
|
864
908
|
/**
|
|
865
909
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
866
910
|
*
|
|
867
|
-
* It is RECOMMENDED to provide a relative URL
|
|
911
|
+
* It is RECOMMENDED to provide a relative URL.
|
|
912
|
+
* If relative, it is resolved against the ORD Document's root [`baseUrl`](#ord-document_baseurl) (the ORD provider base URL).
|
|
868
913
|
*/
|
|
869
914
|
url: string;
|
|
870
915
|
/**
|
|
@@ -900,6 +945,10 @@ export interface ApiResourceDefinition {
|
|
|
900
945
|
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
901
946
|
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
902
947
|
*
|
|
948
|
+
* Together with `type` (or `customType`) and `visibility`, `purpose` forms the uniqueness
|
|
949
|
+
* key for entries in the `resourceDefinitions` list — no two entries on the same resource
|
|
950
|
+
* may share the same combination.
|
|
951
|
+
*
|
|
903
952
|
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
904
953
|
*/
|
|
905
954
|
purpose?: (string | "ord:ai-enrichment") & string;
|
|
@@ -1098,7 +1147,7 @@ export interface ApiAndEventResourceLink {
|
|
|
1098
1147
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the API or Event Resource Link.
|
|
1099
1148
|
*
|
|
1100
1149
|
* The link target SHOULD be absolute and SHOULD be openly accessible.
|
|
1101
|
-
* If a relative link is given, it is
|
|
1150
|
+
* If a relative link is given, it is resolved against the ORD Document's root [`baseUrl`](#ord-document_baseurl) (the ORD provider base URL).
|
|
1102
1151
|
*/
|
|
1103
1152
|
url: string;
|
|
1104
1153
|
}
|
|
@@ -1194,6 +1243,14 @@ export interface EventResource {
|
|
|
1194
1243
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
1195
1244
|
*/
|
|
1196
1245
|
description: string;
|
|
1246
|
+
/**
|
|
1247
|
+
* Hint for AI consumers (LLMs, agent orchestrators) on how to use or interpret this resource.
|
|
1248
|
+
* Intentionally separate from human-facing `description` so both can evolve independently.
|
|
1249
|
+
* SHOULD be written in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
1250
|
+
*
|
|
1251
|
+
* For guidance and best practices, see [AI Agents and Protocols](../concepts/ai-agents-and-protocols#ai-hints-on-ord-resources).
|
|
1252
|
+
*/
|
|
1253
|
+
aiHint?: string;
|
|
1197
1254
|
/**
|
|
1198
1255
|
* Defines which Package the resource is part of.
|
|
1199
1256
|
*
|
|
@@ -1212,6 +1269,10 @@ export interface EventResource {
|
|
|
1212
1269
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
1213
1270
|
*
|
|
1214
1271
|
* All resources that share the same group ID assignment are effectively grouped together.
|
|
1272
|
+
*
|
|
1273
|
+
* **Visibility:** Groups and Group Types may carry a `visibility`. Aggregators and consumers MUST NOT expose
|
|
1274
|
+
* group assignments to audiences whose access level exceeds the referenced Group's (or Group Type's) visibility.
|
|
1275
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
1215
1276
|
*/
|
|
1216
1277
|
partOfGroups?: string[];
|
|
1217
1278
|
/**
|
|
@@ -1240,11 +1301,15 @@ export interface EventResource {
|
|
|
1240
1301
|
*/
|
|
1241
1302
|
defaultConsumptionBundle?: string;
|
|
1242
1303
|
/**
|
|
1243
|
-
* List of products
|
|
1304
|
+
* List of products this package and its resources are a part of.
|
|
1244
1305
|
*
|
|
1245
1306
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
1246
1307
|
*
|
|
1247
|
-
* `partOfProducts`
|
|
1308
|
+
* `partOfProducts` assigned to a `Package` are inherited by all ORD resources it contains.
|
|
1309
|
+
* Resources that belong to a different product than their package can override this directly.
|
|
1310
|
+
*
|
|
1311
|
+
* Every ORD resource SHOULD be assigned to at least one product, either directly or inherited from its package.
|
|
1312
|
+
* Setting `partOfProducts` on the package is the preferred approach, as it propagates automatically to all contained resources.
|
|
1248
1313
|
*
|
|
1249
1314
|
* @minItems 0
|
|
1250
1315
|
*/
|
|
@@ -1256,13 +1321,13 @@ export interface EventResource {
|
|
|
1256
1321
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
1257
1322
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
1258
1323
|
*
|
|
1259
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
1324
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
1260
1325
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
1261
1326
|
*
|
|
1262
1327
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
1263
1328
|
* The `version` MUST not be bumped for changes in extensions.
|
|
1264
1329
|
*
|
|
1265
|
-
* The general [Version and Lifecycle](../
|
|
1330
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
1266
1331
|
*
|
|
1267
1332
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
1268
1333
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -1308,7 +1373,7 @@ export interface EventResource {
|
|
|
1308
1373
|
*
|
|
1309
1374
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
1310
1375
|
*
|
|
1311
|
-
* See [Lifecycle](../
|
|
1376
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
1312
1377
|
*/
|
|
1313
1378
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
1314
1379
|
/**
|
|
@@ -1377,7 +1442,7 @@ export interface EventResource {
|
|
|
1377
1442
|
* See also [Resource Definitions](../index.md#resource-definitions) for more context.
|
|
1378
1443
|
*
|
|
1379
1444
|
* Each definition is to be understood as an alternative description format, describing the same resource / capability.
|
|
1380
|
-
* The combination of `type
|
|
1445
|
+
* The combination of `type` (or `customType` for `type: "custom"`), `purpose`, and `visibility` MUST be unique within the list.
|
|
1381
1446
|
*
|
|
1382
1447
|
* A definition without a `purpose` is considered the primary/default definition for its type.
|
|
1383
1448
|
* Additional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).
|
|
@@ -1551,7 +1616,8 @@ export interface EventResourceDefinition {
|
|
|
1551
1616
|
/**
|
|
1552
1617
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
1553
1618
|
*
|
|
1554
|
-
* It is RECOMMENDED to provide a relative URL
|
|
1619
|
+
* It is RECOMMENDED to provide a relative URL.
|
|
1620
|
+
* If relative, it is resolved against the ORD Document's root [`baseUrl`](#ord-document_baseurl) (the ORD provider base URL).
|
|
1555
1621
|
*/
|
|
1556
1622
|
url: string;
|
|
1557
1623
|
/**
|
|
@@ -1587,6 +1653,10 @@ export interface EventResourceDefinition {
|
|
|
1587
1653
|
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
1588
1654
|
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
1589
1655
|
*
|
|
1656
|
+
* Together with `type` (or `customType`) and `visibility`, `purpose` forms the uniqueness
|
|
1657
|
+
* key for entries in the `resourceDefinitions` list — no two entries on the same resource
|
|
1658
|
+
* may share the same combination.
|
|
1659
|
+
*
|
|
1590
1660
|
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
1591
1661
|
*/
|
|
1592
1662
|
purpose?: (string | "ord:ai-enrichment") & string;
|
|
@@ -1664,6 +1734,14 @@ export interface EntityType {
|
|
|
1664
1734
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
1665
1735
|
*/
|
|
1666
1736
|
description?: string;
|
|
1737
|
+
/**
|
|
1738
|
+
* Hint for AI consumers (LLMs, agent orchestrators) on how to use or interpret this resource.
|
|
1739
|
+
* Intentionally separate from human-facing `description` so both can evolve independently.
|
|
1740
|
+
* SHOULD be written in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
1741
|
+
*
|
|
1742
|
+
* For guidance and best practices, see [AI Agents and Protocols](../concepts/ai-agents-and-protocols#ai-hints-on-ord-resources).
|
|
1743
|
+
*/
|
|
1744
|
+
aiHint?: string;
|
|
1667
1745
|
/**
|
|
1668
1746
|
* Defines which Package the resource is part of.
|
|
1669
1747
|
*
|
|
@@ -1682,14 +1760,22 @@ export interface EntityType {
|
|
|
1682
1760
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
1683
1761
|
*
|
|
1684
1762
|
* All resources that share the same group ID assignment are effectively grouped together.
|
|
1763
|
+
*
|
|
1764
|
+
* **Visibility:** Groups and Group Types may carry a `visibility`. Aggregators and consumers MUST NOT expose
|
|
1765
|
+
* group assignments to audiences whose access level exceeds the referenced Group's (or Group Type's) visibility.
|
|
1766
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
1685
1767
|
*/
|
|
1686
1768
|
partOfGroups?: string[];
|
|
1687
1769
|
/**
|
|
1688
|
-
* List of products
|
|
1770
|
+
* List of products this package and its resources are a part of.
|
|
1689
1771
|
*
|
|
1690
1772
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
1691
1773
|
*
|
|
1692
|
-
* `partOfProducts`
|
|
1774
|
+
* `partOfProducts` assigned to a `Package` are inherited by all ORD resources it contains.
|
|
1775
|
+
* Resources that belong to a different product than their package can override this directly.
|
|
1776
|
+
*
|
|
1777
|
+
* Every ORD resource SHOULD be assigned to at least one product, either directly or inherited from its package.
|
|
1778
|
+
* Setting `partOfProducts` on the package is the preferred approach, as it propagates automatically to all contained resources.
|
|
1693
1779
|
*
|
|
1694
1780
|
* @minItems 0
|
|
1695
1781
|
*/
|
|
@@ -1701,13 +1787,13 @@ export interface EntityType {
|
|
|
1701
1787
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
1702
1788
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
1703
1789
|
*
|
|
1704
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
1790
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
1705
1791
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
1706
1792
|
*
|
|
1707
1793
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
1708
1794
|
* The `version` MUST not be bumped for changes in extensions.
|
|
1709
1795
|
*
|
|
1710
|
-
* The general [Version and Lifecycle](../
|
|
1796
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
1711
1797
|
*
|
|
1712
1798
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
1713
1799
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -1743,7 +1829,7 @@ export interface EntityType {
|
|
|
1743
1829
|
*
|
|
1744
1830
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
1745
1831
|
*
|
|
1746
|
-
* See [Lifecycle](../
|
|
1832
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
1747
1833
|
*/
|
|
1748
1834
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
1749
1835
|
/**
|
|
@@ -1778,7 +1864,7 @@ export interface EntityType {
|
|
|
1778
1864
|
/**
|
|
1779
1865
|
* Defining the abstraction level of the entity type using the DDD terminology.
|
|
1780
1866
|
*
|
|
1781
|
-
* In Domain-Driven Design, there is a concept of entities and aggregates.
|
|
1867
|
+
* In Domain-Driven Design, there is a concept of domain entities and aggregates.
|
|
1782
1868
|
* There are root entities which may contain further sub entities by composition.
|
|
1783
1869
|
* The complete "package" is then called an aggregate, which gets its name and identity from the root entity.
|
|
1784
1870
|
* An aggregate is a cluster of domain objects that can be treated as a single unit.
|
|
@@ -1794,6 +1880,10 @@ export interface EntityType {
|
|
|
1794
1880
|
* Usually this happens if there are similar conceptual entity types across different namespaces.
|
|
1795
1881
|
*/
|
|
1796
1882
|
relatedEntityTypes?: RelatedEntityType[];
|
|
1883
|
+
/**
|
|
1884
|
+
* List of available machine-readable definitions that describe the entity type's internal model in detail.
|
|
1885
|
+
*/
|
|
1886
|
+
definitions?: EntityTypeDefinition[];
|
|
1797
1887
|
/**
|
|
1798
1888
|
* Generic Links with arbitrary meaning and content.
|
|
1799
1889
|
*/
|
|
@@ -1866,6 +1956,68 @@ export interface RelatedEntityType {
|
|
|
1866
1956
|
*/
|
|
1867
1957
|
relationType?: (string | "part-of" | "can-share-identity") & string;
|
|
1868
1958
|
}
|
|
1959
|
+
/**
|
|
1960
|
+
* Machine-readable definition that describes the entity type's internal model structure.
|
|
1961
|
+
*
|
|
1962
|
+
* Entity Type definitions represent an internal implementation detail - the underlying domain model of your application.
|
|
1963
|
+
* This can be used to describe a shared internal model multiple APIs and Events are based on.
|
|
1964
|
+
* However, interaction with the actual data happens through API Resources or Event Resources that expose these entity types with a defined interface and contract.
|
|
1965
|
+
*
|
|
1966
|
+
* Each definition is an alternative description format for the same entity type.
|
|
1967
|
+
* The same definition type MUST NOT be provided more than once, except with different `visibility` or `mediaType`.
|
|
1968
|
+
*
|
|
1969
|
+
* **Why Entity Types are private by default**: Since entity type definitions are internal implementation details, they SHOULD be marked as `private` visibility by default.
|
|
1970
|
+
*
|
|
1971
|
+
* **Finding related APIs**: To discover which APIs expose a particular Entity Type, check the API Resource's `relatedEntityTypes` property.
|
|
1972
|
+
*/
|
|
1973
|
+
export interface EntityTypeDefinition {
|
|
1974
|
+
/**
|
|
1975
|
+
* Type of the entity type resource definition.
|
|
1976
|
+
*
|
|
1977
|
+
* MUST be either:
|
|
1978
|
+
* - any valid [Specification ID](../index.md#specification-id), or
|
|
1979
|
+
* - one of the pre-defined values listed below.
|
|
1980
|
+
*/
|
|
1981
|
+
type: (string | "sap-csn-interop-effective-v1") & string;
|
|
1982
|
+
/**
|
|
1983
|
+
* [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) that describes the format of the definition.
|
|
1984
|
+
*
|
|
1985
|
+
* Media Types under `application/*` and `text/*` are allowed.
|
|
1986
|
+
* If no Media Type is registered for the referenced file,
|
|
1987
|
+
* `text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.
|
|
1988
|
+
*/
|
|
1989
|
+
mediaType: string;
|
|
1990
|
+
/**
|
|
1991
|
+
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
1992
|
+
*
|
|
1993
|
+
* It is RECOMMENDED to provide a relative URL (to base URL).
|
|
1994
|
+
*/
|
|
1995
|
+
url: string;
|
|
1996
|
+
/**
|
|
1997
|
+
* List of supported access strategies for retrieving metadata from the ORD provider.
|
|
1998
|
+
* An ORD Consumer/ORD Aggregator MAY choose any of the strategies.
|
|
1999
|
+
*
|
|
2000
|
+
* The access strategies only apply to the metadata access and not the actual API access.
|
|
2001
|
+
* The actual access to the APIs for clients is described via Consumption Bundles.
|
|
2002
|
+
*
|
|
2003
|
+
* If this property is not provided, the definition URL will be available through the same access strategy as this ORD document.
|
|
2004
|
+
* It is RECOMMENDED anyway that the attached metadata definitions are available with the same access strategies, to simplify the aggregator crawling process.
|
|
2005
|
+
*
|
|
2006
|
+
* @minItems 1
|
|
2007
|
+
*/
|
|
2008
|
+
accessStrategies?: [MetadataDefinitionAccessStrategy, ...MetadataDefinitionAccessStrategy[]];
|
|
2009
|
+
/**
|
|
2010
|
+
* Who is allowed to access the entity type definition. Defaults to `private`.
|
|
2011
|
+
*
|
|
2012
|
+
* Entity Type definitions are internal implementation details and SHOULD remain `private` by default.
|
|
2013
|
+
* Consumers interact with the data through related API Resources, not the internal model directly.
|
|
2014
|
+
*
|
|
2015
|
+
* The visibility MUST be equal to or more restrictive than the Entity Type resource's visibility.
|
|
2016
|
+
*
|
|
2017
|
+
* Only use `public` visibility when the internal model definition itself needs open access for standardization or documentation purposes.
|
|
2018
|
+
*/
|
|
2019
|
+
visibility: "public" | "internal" | "private";
|
|
2020
|
+
}
|
|
1869
2021
|
/**
|
|
1870
2022
|
* Capabilities can be used to describe use case specific capabilities, most notably supported features or additional information (like configuration) that needs to be understood from outside.
|
|
1871
2023
|
* This is a generic ORD concept that aims to cover many different capability discovery use cases that would otherwise need be implemented as individual service provider interfaces (SPIs).
|
|
@@ -1931,6 +2083,14 @@ export interface Capability {
|
|
|
1931
2083
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
1932
2084
|
*/
|
|
1933
2085
|
description?: string;
|
|
2086
|
+
/**
|
|
2087
|
+
* Hint for AI consumers (LLMs, agent orchestrators) on how to use or interpret this resource.
|
|
2088
|
+
* Intentionally separate from human-facing `description` so both can evolve independently.
|
|
2089
|
+
* SHOULD be written in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
2090
|
+
*
|
|
2091
|
+
* For guidance and best practices, see [AI Agents and Protocols](../concepts/ai-agents-and-protocols#ai-hints-on-ord-resources).
|
|
2092
|
+
*/
|
|
2093
|
+
aiHint?: string;
|
|
1934
2094
|
/**
|
|
1935
2095
|
* Defines which Package the resource is part of.
|
|
1936
2096
|
*
|
|
@@ -1949,6 +2109,10 @@ export interface Capability {
|
|
|
1949
2109
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
1950
2110
|
*
|
|
1951
2111
|
* All resources that share the same group ID assignment are effectively grouped together.
|
|
2112
|
+
*
|
|
2113
|
+
* **Visibility:** Groups and Group Types may carry a `visibility`. Aggregators and consumers MUST NOT expose
|
|
2114
|
+
* group assignments to audiences whose access level exceeds the referenced Group's (or Group Type's) visibility.
|
|
2115
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
1952
2116
|
*/
|
|
1953
2117
|
partOfGroups?: string[];
|
|
1954
2118
|
/**
|
|
@@ -1958,13 +2122,13 @@ export interface Capability {
|
|
|
1958
2122
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
1959
2123
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
1960
2124
|
*
|
|
1961
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
2125
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
1962
2126
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
1963
2127
|
*
|
|
1964
2128
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
1965
2129
|
* The `version` MUST not be bumped for changes in extensions.
|
|
1966
2130
|
*
|
|
1967
|
-
* The general [Version and Lifecycle](../
|
|
2131
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
1968
2132
|
*
|
|
1969
2133
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
1970
2134
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -2000,7 +2164,7 @@ export interface Capability {
|
|
|
2000
2164
|
*
|
|
2001
2165
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
2002
2166
|
*
|
|
2003
|
-
* See [Lifecycle](../
|
|
2167
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
2004
2168
|
*/
|
|
2005
2169
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
2006
2170
|
/**
|
|
@@ -2051,7 +2215,7 @@ export interface Capability {
|
|
|
2051
2215
|
* See also [Resource Definitions](../index.md#resource-definitions) for more context.
|
|
2052
2216
|
*
|
|
2053
2217
|
* Each definition is to be understood as an alternative description format, describing the same resource / capability.
|
|
2054
|
-
* The combination of `type
|
|
2218
|
+
* The combination of `type` (or `customType` for `type: "custom"`), `purpose`, and `visibility` MUST be unique within the list.
|
|
2055
2219
|
*
|
|
2056
2220
|
* A definition without a `purpose` is considered the primary/default definition for its type.
|
|
2057
2221
|
* Additional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).
|
|
@@ -2135,7 +2299,8 @@ export interface CapabilityDefinition {
|
|
|
2135
2299
|
/**
|
|
2136
2300
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
2137
2301
|
*
|
|
2138
|
-
* It is RECOMMENDED to provide a relative URL
|
|
2302
|
+
* It is RECOMMENDED to provide a relative URL.
|
|
2303
|
+
* If relative, it is resolved against the ORD Document's root [`baseUrl`](#ord-document_baseurl) (the ORD provider base URL).
|
|
2139
2304
|
*/
|
|
2140
2305
|
url: string;
|
|
2141
2306
|
/**
|
|
@@ -2171,6 +2336,10 @@ export interface CapabilityDefinition {
|
|
|
2171
2336
|
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
2172
2337
|
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
2173
2338
|
*
|
|
2339
|
+
* Together with `type` (or `customType`) and `visibility`, `purpose` forms the uniqueness
|
|
2340
|
+
* key for entries in the `resourceDefinitions` list — no two entries on the same resource
|
|
2341
|
+
* may share the same combination.
|
|
2342
|
+
*
|
|
2174
2343
|
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
2175
2344
|
*/
|
|
2176
2345
|
purpose?: (string | "ord:ai-enrichment") & string;
|
|
@@ -2226,6 +2395,14 @@ export interface DataProduct {
|
|
|
2226
2395
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
2227
2396
|
*/
|
|
2228
2397
|
description: string;
|
|
2398
|
+
/**
|
|
2399
|
+
* Hint for AI consumers (LLMs, agent orchestrators) on how to use or interpret this resource.
|
|
2400
|
+
* Intentionally separate from human-facing `description` so both can evolve independently.
|
|
2401
|
+
* SHOULD be written in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
2402
|
+
*
|
|
2403
|
+
* For guidance and best practices, see [AI Agents and Protocols](../concepts/ai-agents-and-protocols#ai-hints-on-ord-resources).
|
|
2404
|
+
*/
|
|
2405
|
+
aiHint?: string;
|
|
2229
2406
|
/**
|
|
2230
2407
|
* Defines which Package the resource is part of.
|
|
2231
2408
|
*
|
|
@@ -2244,6 +2421,10 @@ export interface DataProduct {
|
|
|
2244
2421
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
2245
2422
|
*
|
|
2246
2423
|
* All resources that share the same group ID assignment are effectively grouped together.
|
|
2424
|
+
*
|
|
2425
|
+
* **Visibility:** Groups and Group Types may carry a `visibility`. Aggregators and consumers MUST NOT expose
|
|
2426
|
+
* group assignments to audiences whose access level exceeds the referenced Group's (or Group Type's) visibility.
|
|
2427
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
2247
2428
|
*/
|
|
2248
2429
|
partOfGroups?: string[];
|
|
2249
2430
|
/**
|
|
@@ -2251,7 +2432,11 @@ export interface DataProduct {
|
|
|
2251
2432
|
*
|
|
2252
2433
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
2253
2434
|
*
|
|
2254
|
-
* `partOfProducts`
|
|
2435
|
+
* `partOfProducts` assigned to a `Package` are inherited by all ORD resources it contains.
|
|
2436
|
+
* Resources that belong to a different product than their package can override this directly.
|
|
2437
|
+
*
|
|
2438
|
+
* Every ORD resource SHOULD be assigned to at least one product, either directly or inherited from its package.
|
|
2439
|
+
* Setting `partOfProducts` on the package is the preferred approach, as it propagates automatically to all contained resources.
|
|
2255
2440
|
*
|
|
2256
2441
|
* @minItems 0
|
|
2257
2442
|
*/
|
|
@@ -2263,13 +2448,13 @@ export interface DataProduct {
|
|
|
2263
2448
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
2264
2449
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
2265
2450
|
*
|
|
2266
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
2451
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
2267
2452
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
2268
2453
|
*
|
|
2269
2454
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
2270
2455
|
* The `version` MUST not be bumped for changes in extensions.
|
|
2271
2456
|
*
|
|
2272
|
-
* The general [Version and Lifecycle](../
|
|
2457
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
2273
2458
|
*
|
|
2274
2459
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
2275
2460
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -2527,7 +2712,7 @@ export interface DataProductLink {
|
|
|
2527
2712
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the Data Product Link.
|
|
2528
2713
|
*
|
|
2529
2714
|
* The link target SHOULD be absolute and SHOULD be openly accessible.
|
|
2530
|
-
* If a relative link is given, it is
|
|
2715
|
+
* If a relative link is given, it is resolved against the ORD Document's root [`baseUrl`](#ord-document_baseurl) (the ORD provider base URL).
|
|
2531
2716
|
*/
|
|
2532
2717
|
url: string;
|
|
2533
2718
|
}
|
|
@@ -2586,6 +2771,14 @@ export interface Agent {
|
|
|
2586
2771
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
2587
2772
|
*/
|
|
2588
2773
|
description?: string;
|
|
2774
|
+
/**
|
|
2775
|
+
* Hint for AI consumers (LLMs, agent orchestrators) on how to use or interpret this resource.
|
|
2776
|
+
* Intentionally separate from human-facing `description` so both can evolve independently.
|
|
2777
|
+
* SHOULD be written in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
2778
|
+
*
|
|
2779
|
+
* For guidance and best practices, see [AI Agents and Protocols](../concepts/ai-agents-and-protocols#ai-hints-on-ord-resources).
|
|
2780
|
+
*/
|
|
2781
|
+
aiHint?: string;
|
|
2589
2782
|
/**
|
|
2590
2783
|
* Defines which Package the resource is part of.
|
|
2591
2784
|
*
|
|
@@ -2604,6 +2797,10 @@ export interface Agent {
|
|
|
2604
2797
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
2605
2798
|
*
|
|
2606
2799
|
* All resources that share the same group ID assignment are effectively grouped together.
|
|
2800
|
+
*
|
|
2801
|
+
* **Visibility:** Groups and Group Types may carry a `visibility`. Aggregators and consumers MUST NOT expose
|
|
2802
|
+
* group assignments to audiences whose access level exceeds the referenced Group's (or Group Type's) visibility.
|
|
2803
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
2607
2804
|
*/
|
|
2608
2805
|
partOfGroups?: string[];
|
|
2609
2806
|
/**
|
|
@@ -2613,13 +2810,13 @@ export interface Agent {
|
|
|
2613
2810
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
2614
2811
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
2615
2812
|
*
|
|
2616
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
2813
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
2617
2814
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
2618
2815
|
*
|
|
2619
2816
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
2620
2817
|
* The `version` MUST not be bumped for changes in extensions.
|
|
2621
2818
|
*
|
|
2622
|
-
* The general [Version and Lifecycle](../
|
|
2819
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
2623
2820
|
*
|
|
2624
2821
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
2625
2822
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -2655,7 +2852,7 @@ export interface Agent {
|
|
|
2655
2852
|
*
|
|
2656
2853
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
2657
2854
|
*
|
|
2658
|
-
* See [Lifecycle](../
|
|
2855
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
2659
2856
|
*/
|
|
2660
2857
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
2661
2858
|
/**
|
|
@@ -2679,11 +2876,15 @@ export interface Agent {
|
|
|
2679
2876
|
*/
|
|
2680
2877
|
minSystemVersion?: string;
|
|
2681
2878
|
/**
|
|
2682
|
-
* List of products
|
|
2879
|
+
* List of products this package and its resources are a part of.
|
|
2683
2880
|
*
|
|
2684
2881
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
2685
2882
|
*
|
|
2686
|
-
* `partOfProducts`
|
|
2883
|
+
* `partOfProducts` assigned to a `Package` are inherited by all ORD resources it contains.
|
|
2884
|
+
* Resources that belong to a different product than their package can override this directly.
|
|
2885
|
+
*
|
|
2886
|
+
* Every ORD resource SHOULD be assigned to at least one product, either directly or inherited from its package.
|
|
2887
|
+
* Setting `partOfProducts` on the package is the preferred approach, as it propagates automatically to all contained resources.
|
|
2687
2888
|
*
|
|
2688
2889
|
* @minItems 0
|
|
2689
2890
|
*/
|
|
@@ -2832,13 +3033,13 @@ export interface Overlay {
|
|
|
2832
3033
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
2833
3034
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
2834
3035
|
*
|
|
2835
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
3036
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
2836
3037
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
2837
3038
|
*
|
|
2838
3039
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
2839
3040
|
* The `version` MUST not be bumped for changes in extensions.
|
|
2840
3041
|
*
|
|
2841
|
-
* The general [Version and Lifecycle](../
|
|
3042
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
2842
3043
|
*
|
|
2843
3044
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
2844
3045
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -2874,7 +3075,7 @@ export interface Overlay {
|
|
|
2874
3075
|
*
|
|
2875
3076
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
2876
3077
|
*
|
|
2877
|
-
* See [Lifecycle](../
|
|
3078
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
2878
3079
|
*/
|
|
2879
3080
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
2880
3081
|
/**
|
|
@@ -2934,7 +3135,8 @@ export interface OverlayDefinition {
|
|
|
2934
3135
|
/**
|
|
2935
3136
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
2936
3137
|
*
|
|
2937
|
-
* It is RECOMMENDED to provide a relative URL
|
|
3138
|
+
* It is RECOMMENDED to provide a relative URL.
|
|
3139
|
+
* If relative, it is resolved against the ORD Document's root [`baseUrl`](#ord-document_baseurl) (the ORD provider base URL).
|
|
2938
3140
|
*/
|
|
2939
3141
|
url: string;
|
|
2940
3142
|
/**
|
|
@@ -2970,6 +3172,10 @@ export interface OverlayDefinition {
|
|
|
2970
3172
|
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
2971
3173
|
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
2972
3174
|
*
|
|
3175
|
+
* Together with `type` (or `customType`) and `visibility`, `purpose` forms the uniqueness
|
|
3176
|
+
* key for entries in the `resourceDefinitions` list — no two entries on the same resource
|
|
3177
|
+
* may share the same combination.
|
|
3178
|
+
*
|
|
2973
3179
|
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
2974
3180
|
*/
|
|
2975
3181
|
purpose?: (string | "ord:ai-enrichment") & string;
|
|
@@ -3059,6 +3265,10 @@ export interface IntegrationDependency {
|
|
|
3059
3265
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
3060
3266
|
*
|
|
3061
3267
|
* All resources that share the same group ID assignment are effectively grouped together.
|
|
3268
|
+
*
|
|
3269
|
+
* **Visibility:** Groups and Group Types may carry a `visibility`. Aggregators and consumers MUST NOT expose
|
|
3270
|
+
* group assignments to audiences whose access level exceeds the referenced Group's (or Group Type's) visibility.
|
|
3271
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
3062
3272
|
*/
|
|
3063
3273
|
partOfGroups?: string[];
|
|
3064
3274
|
/**
|
|
@@ -3068,13 +3278,13 @@ export interface IntegrationDependency {
|
|
|
3068
3278
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
3069
3279
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
3070
3280
|
*
|
|
3071
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
3281
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
3072
3282
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
3073
3283
|
*
|
|
3074
3284
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
3075
3285
|
* The `version` MUST not be bumped for changes in extensions.
|
|
3076
3286
|
*
|
|
3077
|
-
* The general [Version and Lifecycle](../
|
|
3287
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
3078
3288
|
*
|
|
3079
3289
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
3080
3290
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -3110,7 +3320,7 @@ export interface IntegrationDependency {
|
|
|
3110
3320
|
*
|
|
3111
3321
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
3112
3322
|
*
|
|
3113
|
-
* See [Lifecycle](../
|
|
3323
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
3114
3324
|
*/
|
|
3115
3325
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
3116
3326
|
/**
|
|
@@ -3222,15 +3432,23 @@ export interface ApiResourceIntegrationAspect {
|
|
|
3222
3432
|
*/
|
|
3223
3433
|
minVersion?: string;
|
|
3224
3434
|
/**
|
|
3225
|
-
*
|
|
3435
|
+
* Narrows the dependency to only the listed API operations (or MCP tools) that are required to achieve the aspect.
|
|
3436
|
+
*
|
|
3437
|
+
* If `subset` is not provided, the dependency implies that all operations of the referenced resource may be used.
|
|
3438
|
+
* If `subset` is provided, only the listed operations are required — consumers MUST NOT assume that other operations are available or permitted.
|
|
3439
|
+
*
|
|
3440
|
+
* For more details and examples, see [Integration Dependency](../concepts/integration-dependency).
|
|
3226
3441
|
*/
|
|
3227
3442
|
subset?: APIResourceIntegrationAspectSubset[];
|
|
3228
3443
|
}
|
|
3229
3444
|
/**
|
|
3230
|
-
* Defines that API Resource Integration Aspect only requires a subset of the referenced contract.
|
|
3445
|
+
* Defines that the API Resource Integration Aspect only requires a subset of the referenced contract.
|
|
3231
3446
|
*
|
|
3232
3447
|
* For APIs, this is a list of the operations or tools that need to be available in order to make the integration work.
|
|
3233
|
-
*
|
|
3448
|
+
* Without a `subset`, the dependency implies access to the full resource.
|
|
3449
|
+
* With a `subset`, only the listed operations are required, allowing consumers to understand /load only the minimal surface area needed.
|
|
3450
|
+
*
|
|
3451
|
+
* For more details and examples, see [Integration Dependency](../concepts/integration-dependency).
|
|
3234
3452
|
*/
|
|
3235
3453
|
export interface APIResourceIntegrationAspectSubset {
|
|
3236
3454
|
/**
|
|
@@ -3488,13 +3706,13 @@ export interface Package {
|
|
|
3488
3706
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
3489
3707
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
3490
3708
|
*
|
|
3491
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
3709
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
3492
3710
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
3493
3711
|
*
|
|
3494
3712
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
3495
3713
|
* The `version` MUST not be bumped for changes in extensions.
|
|
3496
3714
|
*
|
|
3497
|
-
* The general [Version and Lifecycle](../
|
|
3715
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
3498
3716
|
*
|
|
3499
3717
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
3500
3718
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -3565,11 +3783,15 @@ export interface Package {
|
|
|
3565
3783
|
*/
|
|
3566
3784
|
vendor: string;
|
|
3567
3785
|
/**
|
|
3568
|
-
* List of products
|
|
3786
|
+
* List of products this package and its resources are a part of.
|
|
3569
3787
|
*
|
|
3570
3788
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
3571
3789
|
*
|
|
3572
|
-
* `partOfProducts`
|
|
3790
|
+
* `partOfProducts` assigned to a `Package` are inherited by all ORD resources it contains.
|
|
3791
|
+
* Resources that belong to a different product than their package can override this directly.
|
|
3792
|
+
*
|
|
3793
|
+
* Every ORD resource SHOULD be assigned to at least one product, either directly or inherited from its package.
|
|
3794
|
+
* Setting `partOfProducts` on the package is the preferred approach, as it propagates automatically to all contained resources.
|
|
3573
3795
|
*
|
|
3574
3796
|
* @minItems 0
|
|
3575
3797
|
*/
|
|
@@ -3650,7 +3872,7 @@ export interface File {
|
|
|
3650
3872
|
* [URL](https://tools.ietf.org/html/rfc3986) of the link.
|
|
3651
3873
|
*
|
|
3652
3874
|
* The file target MAY be relative or absolute.
|
|
3653
|
-
* If a relative URL is given, it is
|
|
3875
|
+
* If a relative URL is given, it is resolved against the ORD Document's root [`baseUrl`](#ord-document_baseurl) (the ORD provider base URL).
|
|
3654
3876
|
* If an absolute URL is given, then it MUST be openly accessible.
|
|
3655
3877
|
*/
|
|
3656
3878
|
url: string;
|
|
@@ -3738,13 +3960,13 @@ export interface ConsumptionBundle {
|
|
|
3738
3960
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
3739
3961
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
3740
3962
|
*
|
|
3741
|
-
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment
|
|
3963
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
3742
3964
|
* In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
|
|
3743
3965
|
*
|
|
3744
3966
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
3745
3967
|
* The `version` MUST not be bumped for changes in extensions.
|
|
3746
3968
|
*
|
|
3747
|
-
* The general [Version and Lifecycle](../
|
|
3969
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
3748
3970
|
*
|
|
3749
3971
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
3750
3972
|
* For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
|
|
@@ -3889,6 +4111,12 @@ export interface Group {
|
|
|
3889
4111
|
* This relationship does not imply inheritance, but can be interpreted as such for specific group types and scenarios.
|
|
3890
4112
|
*/
|
|
3891
4113
|
partOfGroups?: string[];
|
|
4114
|
+
/**
|
|
4115
|
+
* Defines who is allowed to discover and access this Group and its metadata.
|
|
4116
|
+
* Defaults to `public` if not set.
|
|
4117
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
4118
|
+
*/
|
|
4119
|
+
visibility?: "public" | "internal" | "private";
|
|
3892
4120
|
[k: string]: unknown | undefined;
|
|
3893
4121
|
}
|
|
3894
4122
|
/**
|
|
@@ -3934,6 +4162,12 @@ export interface GroupType {
|
|
|
3934
4162
|
* This relationship does not imply inheritance, but can be interpreted as such for specific group types and scenarios.
|
|
3935
4163
|
*/
|
|
3936
4164
|
partOfGroupTypes?: string[];
|
|
4165
|
+
/**
|
|
4166
|
+
* Defines who is allowed to discover and access this Group Type and its metadata.
|
|
4167
|
+
* Defaults to `public` if not set.
|
|
4168
|
+
* See [Visibility of Groups and Group Types](../concepts/grouping-and-bundling#visibility-of-groups-and-group-types).
|
|
4169
|
+
*/
|
|
4170
|
+
visibility?: "public" | "internal" | "private";
|
|
3937
4171
|
[k: string]: unknown | undefined;
|
|
3938
4172
|
}
|
|
3939
4173
|
/**
|