@open-resource-discovery/specification 1.13.0 → 1.14.1

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.
@@ -19,7 +19,7 @@ export interface OrdDocument {
19
19
  /**
20
20
  * Version of the Open Resource Discovery specification that is used to describe this document.
21
21
  */
22
- 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";
22
+ 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";
23
23
  /**
24
24
  * Optional description of the ORD document itself.
25
25
  * Please note that this information is NOT further processed or considered by an ORD aggregator.
@@ -87,6 +87,10 @@ export interface OrdDocument {
87
87
  * Array of all data products that are described in this ORD document.
88
88
  */
89
89
  dataProducts?: DataProduct[];
90
+ /**
91
+ * Array of all AI Agents that are described in this ORD document.
92
+ */
93
+ agents?: Agent[];
90
94
  /**
91
95
  * Array of all integration dependencies that are described in this ORD document.
92
96
  */
@@ -426,11 +430,31 @@ export interface ApiResource {
426
430
  */
427
431
  lastUpdate?: string;
428
432
  /**
429
- * The visibility states who is allowed to "see" the described resource or capability.
433
+ * Indicates that the resource serves as interface only and cannot be called directly, similar to the abstract keyword in programming languages like Java.
434
+ *
435
+ * Abstract resources define contracts that other resources can declare compatibility with through the `compatibleWith` property.
436
+ *
437
+ * More details can be found on the [Compatibility](../concepts/compatibility) concept page.
438
+ */
439
+ abstract?: boolean;
440
+ /**
441
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
442
+ *
443
+ * This controls who can see that the resource exists and retrieve its metadata level information.
444
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
445
+ *
446
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
430
447
  */
431
448
  visibility: "public" | "internal" | "private";
432
449
  /**
433
- * The `releaseStatus` specifies the stability of the resource and its external contract.
450
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
451
+ *
452
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
453
+ * of depending on the resource and whether it's suitable for production use.
454
+ *
455
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
456
+ *
457
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
434
458
  */
435
459
  releaseStatus: "beta" | "active" | "deprecated" | "sunset";
436
460
  /**
@@ -554,14 +578,18 @@ export interface ApiResource {
554
578
  */
555
579
  customImplementationStandardDescription?: string;
556
580
  /**
557
- * A reference to the interface (API contract) that this API implements.
558
- * Serves as a declaration of compatible implementation of API contract, effectively functioning as an "implementationOf" relationship.
581
+ * 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.
582
+ *
583
+ * 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.
584
+ * 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.
559
585
  *
560
586
  * MUST be a valid reference to an (usually external) [API Resource](#api-resource) ORD ID.
561
587
  *
562
588
  * All APIs that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.
589
+ *
590
+ * More details can be found on the [Compatibility](../concepts/compatibility) concept page.
563
591
  */
564
- compatibleWith?: string[];
592
+ compatibleWith?: APICompatibility[];
565
593
  /**
566
594
  * Contains typically the organization that is responsible in the sense of RACI matrix for this ORD resource. This includes support and feature requests. It is maintained as correlation id to for example support components.
567
595
  */
@@ -704,7 +732,14 @@ export interface ChangelogEntry {
704
732
  */
705
733
  version: string;
706
734
  /**
707
- * The `releaseStatus` specifies the stability of the resource and its external contract.
735
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
736
+ *
737
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
738
+ * of depending on the resource and whether it's suitable for production use.
739
+ *
740
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
741
+ *
742
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
708
743
  */
709
744
  releaseStatus: "beta" | "active" | "deprecated" | "sunset";
710
745
  /**
@@ -754,7 +789,7 @@ export interface ApiResourceDefinition {
754
789
  * `text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.
755
790
  *
756
791
  */
757
- mediaType: "application/json" | "application/xml" | "text/yaml" | "text/plain" | "application/octet-stream";
792
+ mediaType: string;
758
793
  /**
759
794
  * [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
760
795
  *
@@ -809,6 +844,28 @@ export interface MetadataDefinitionAccessStrategy {
809
844
  */
810
845
  customDescription?: string;
811
846
  }
847
+ /**
848
+ * Describes the compatibility of the API with other APIs. This can be used to express that an API is compatible with another API version.
849
+ */
850
+ export interface APICompatibility {
851
+ /**
852
+ * ORD ID of the APIResource that serves as contract that this resource is compatible with.
853
+ *
854
+ * MUST be a valid reference to an (usually external) [API Resource](#api-resource) ORD ID.
855
+ */
856
+ ordId: string;
857
+ /**
858
+ * Specifies the maximum version of the interface contract that this resource is compatible with. This is the version, that the resource fully implements and supports.
859
+ *
860
+ * Even if the interface contract evolves compatible, this resource will not be compatible with versions beyond the specified one. It is important to consider, given the example of an API version 1.0, that has the fields A and B.
861
+ * Being compatible with version 1.0 means to have exactly the fields A and B and potential tenant specific extensions in a dedicated namespace.
862
+ * If an API contract changes to version 1.1 compatible by adding field C, the API declaring compatibility towards 1.0, will miss field C. Only if adopting the contract of 1.1 with having fields A, B, and C, such an API is also
863
+ * compatible with version 1.1 of the contract. However, a client relying on version 1.0 of the contract, can still work with the API being compatible with version 1.1 of the contract.
864
+ *
865
+ * Following the [Semantic Versioning 2.0.0](https://semver.org/) standard, patch versions (x.y.Z) must not have impact on the schema/contract. Therefore, the maxVersion are only the major.minor parts of a semantic version.
866
+ */
867
+ maxVersion: string;
868
+ }
812
869
  /**
813
870
  * An API or Event resource may optionally define its `entityTypeMappings`.
814
871
  * This is used to map and correlate the API models to the underlying, conceptual **entity types**.
@@ -860,8 +917,8 @@ export interface EntityTypeMapping {
860
917
  * @minItems 1
861
918
  */
862
919
  entityTypeTargets: [
863
- EntityTypeTargetOrdId | EntityTypeTargetCorrelationId,
864
- ...(EntityTypeTargetOrdId | EntityTypeTargetCorrelationId)[]
920
+ EntityTypeTargetORDID | EntityTypeTargetCorrelationId,
921
+ ...(EntityTypeTargetORDID | EntityTypeTargetCorrelationId)[]
865
922
  ];
866
923
  }
867
924
  /**
@@ -909,7 +966,7 @@ export interface ApiModelSelectorJsonPointer {
909
966
  *
910
967
  * Entity types can be referenced using a [ORD ID](../index.md#ord-id) of an entity type.
911
968
  */
912
- export interface EntityTypeTargetOrdId {
969
+ export interface EntityTypeTargetORDID {
913
970
  /**
914
971
  * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
915
972
  *
@@ -1149,11 +1206,31 @@ export interface EventResource {
1149
1206
  */
1150
1207
  lastUpdate?: string;
1151
1208
  /**
1152
- * The visibility states who is allowed to "see" the described resource or capability.
1209
+ * Indicates that the resource serves as interface only and cannot be called directly, similar to the abstract keyword in programming languages like Java.
1210
+ *
1211
+ * Abstract resources define contracts that other resources can declare compatibility with through the `compatibleWith` property.
1212
+ *
1213
+ * More details can be found on the [Compatibility](../concepts/compatibility) concept page.
1214
+ */
1215
+ abstract?: boolean;
1216
+ /**
1217
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
1218
+ *
1219
+ * This controls who can see that the resource exists and retrieve its metadata level information.
1220
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
1221
+ *
1222
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
1153
1223
  */
1154
1224
  visibility: "public" | "internal" | "private";
1155
1225
  /**
1156
- * The `releaseStatus` specifies the stability of the resource and its external contract.
1226
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
1227
+ *
1228
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
1229
+ * of depending on the resource and whether it's suitable for production use.
1230
+ *
1231
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
1232
+ *
1233
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
1157
1234
  */
1158
1235
  releaseStatus: "beta" | "active" | "deprecated" | "sunset";
1159
1236
  /**
@@ -1245,14 +1322,16 @@ export interface EventResource {
1245
1322
  */
1246
1323
  customImplementationStandardDescription?: string;
1247
1324
  /**
1248
- * Declares this event resource is a compatible implementation of the referenced contract.
1249
- * This is also sometimes known as [Service Provider Interface](https://en.wikipedia.org/wiki/Service_provider_interface).
1325
+ * A reference to the interface (event contract) and its maximum version that this event implements. Even if the interface contract evolves compatible, this resource will not be compatible with versions beyond the specified one.
1250
1326
  *
1251
- * MUST be a valid reference to an (usually external) [Event Resource](#event-resource) ORD ID.
1327
+ * Serves as a declaration of compatible implementation of event contract, effectively functioning as an "implementationOf" relationship. The data that compatible events return follow the same schema, but itself can be different.
1328
+ * This means that if one event is returning 1 record for a dedicated request, a compatible event could return multiple and different records, as long as they adhere to the same schema.
1252
1329
  *
1253
- * All event resources that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.
1330
+ * All events that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.
1331
+ *
1332
+ * More details can be found on the [Compatibility](../concepts/compatibility) concept page.
1254
1333
  */
1255
- compatibleWith?: string[];
1334
+ compatibleWith?: EventCompatibility[];
1256
1335
  /**
1257
1336
  * Contains typically the organization that is responsible in the sense of RACI matrix for this ORD resource. This includes support and feature requests. It is maintained as correlation id to for example support components.
1258
1337
  */
@@ -1376,7 +1455,7 @@ export interface EventResourceDefinition {
1376
1455
  * `text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.
1377
1456
  *
1378
1457
  */
1379
- mediaType: "application/json" | "application/xml" | "text/yaml" | "text/plain" | "application/octet-stream";
1458
+ mediaType: string;
1380
1459
  /**
1381
1460
  * [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
1382
1461
  *
@@ -1408,6 +1487,27 @@ export interface EventResourceDefinition {
1408
1487
  */
1409
1488
  visibility?: "public" | "internal" | "private";
1410
1489
  }
1490
+ /**
1491
+ * Describes the compatibility of the Event with other Events. This can be used to express that an Event is compatible with another Event version.
1492
+ */
1493
+ export interface EventCompatibility {
1494
+ /**
1495
+ * ORD ID of the EventResource that serves as contract that this resource is compatible with.
1496
+ *
1497
+ * MUST be a valid reference to an (usually external) [Event Resource](#event-resource) ORD ID.
1498
+ */
1499
+ ordId: string;
1500
+ /**
1501
+ * Specifies the maximum version of the interface contract that this resource is compatible with. This is the version, that the resource fully implements and supports.
1502
+ *
1503
+ * Even if the interface contract evolves compatible, this resource will not be compatible with versions beyond the specified one. It is important to consider, given the example of an event version 1.0, that has the fields A and B. Being compatible with version 1.0 means to have exactly the fields A and B and potential tenant specific extensions in a dedicated namespace.
1504
+ * If an event contract changes to version 1.1 compatible by adding field C, the event declaring compatibility towards 1.0, will miss field C. Only if adopting the contract of 1.1 with having fields A, B, and C, such an event is also
1505
+ * compatible with version 1.1 of the contract. However, a client relying on version 1.0 of the contract, can still work with the event being compatible with version 1.1 of the contract.
1506
+ *
1507
+ * Following the [Semantic Versioning 2.0.0](https://semver.org/) standard, patch versions (x.y.Z) must not have impact on the schema/contract. Therefore, the maxVersion are only the major.minor parts of a semantic version.
1508
+ */
1509
+ maxVersion: string;
1510
+ }
1411
1511
  /**
1412
1512
  * An [**Entity Type**](../concepts/grouping-and-bundling#entity-type) describes either a business concept / term or an underlying conceptual model.
1413
1513
  * The same entity type can be exposed through one or multiple API and events resources.
@@ -1523,11 +1623,23 @@ export interface EntityType {
1523
1623
  */
1524
1624
  lastUpdate?: string;
1525
1625
  /**
1526
- * The visibility states who is allowed to "see" the described resource or capability.
1626
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
1627
+ *
1628
+ * This controls who can see that the resource exists and retrieve its metadata level information.
1629
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
1630
+ *
1631
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
1527
1632
  */
1528
1633
  visibility: "public" | "internal" | "private";
1529
1634
  /**
1530
- * The `releaseStatus` specifies the stability of the resource and its external contract.
1635
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
1636
+ *
1637
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
1638
+ * of depending on the resource and whether it's suitable for production use.
1639
+ *
1640
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
1641
+ *
1642
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
1531
1643
  */
1532
1644
  releaseStatus: "beta" | "active" | "deprecated" | "sunset";
1533
1645
  /**
@@ -1766,11 +1878,23 @@ export interface Capability {
1766
1878
  */
1767
1879
  lastUpdate?: string;
1768
1880
  /**
1769
- * The visibility states who is allowed to "see" the described resource or capability.
1881
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
1882
+ *
1883
+ * This controls who can see that the resource exists and retrieve its metadata level information.
1884
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
1885
+ *
1886
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
1770
1887
  */
1771
1888
  visibility: "public" | "internal" | "private";
1772
1889
  /**
1773
- * The `releaseStatus` specifies the stability of the resource and its external contract.
1890
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
1891
+ *
1892
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
1893
+ * of depending on the resource and whether it's suitable for production use.
1894
+ *
1895
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
1896
+ *
1897
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
1774
1898
  */
1775
1899
  releaseStatus: "beta" | "active" | "deprecated" | "sunset";
1776
1900
  /**
@@ -1863,7 +1987,7 @@ export interface CapabilityDefinition {
1863
1987
  * `text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.
1864
1988
  *
1865
1989
  */
1866
- mediaType: "application/json" | "application/xml" | "text/yaml" | "text/plain" | "application/octet-stream";
1990
+ mediaType: string;
1867
1991
  /**
1868
1992
  * [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
1869
1993
  *
@@ -2031,6 +2155,12 @@ export interface DataProduct {
2031
2155
  *
2032
2156
  */
2033
2157
  disabled?: boolean;
2158
+ /**
2159
+ * Indicates that the data product serves as interface only. All output ports MUST be marked as abstract.
2160
+ *
2161
+ * Implementations of this data product MUST declare compatible with on their specific output port resources as consumption of data products happens through the output ports.
2162
+ */
2163
+ abstract?: boolean;
2034
2164
  /**
2035
2165
  * The resource has been introduced in the given [system version](../index.md#system-version).
2036
2166
  * This implies that the resource is only available if the system instance is of at least that system version.
@@ -2245,6 +2375,272 @@ export interface DataProductLink {
2245
2375
  */
2246
2376
  url: string;
2247
2377
  }
2378
+ /**
2379
+ * An **Agent** provides a high-level description of an AI-powered autonomous system that can perform tasks, make decisions, and interact with users or other systems to achieve specific business goals.
2380
+ *
2381
+ * An Agent can relate to specific entity types it works with, declare integration dependencies on external systems it requires, and expose its capabilities through APIs using protocols like A2A (Agent-to-Agent).
2382
+ *
2383
+ * Agents enable intelligent automation and decision-making within business processes by providing semantic understanding and context-aware capabilities beyond traditional API-based integrations.
2384
+ *
2385
+ * For more details, see [AI Agents and Protocols](../concepts/ai-agents-and-protocols.md).
2386
+ */
2387
+ export interface Agent {
2388
+ /**
2389
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2390
+ *
2391
+ * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2392
+ */
2393
+ ordId: string;
2394
+ /**
2395
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
2396
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
2397
+ *
2398
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
2399
+ * But since this is not always possible, no assumptions MUST be made about the local ID being the same as the `<resourceName>` fragment in the ORD ID.
2400
+ */
2401
+ localId?: string;
2402
+ /**
2403
+ * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
2404
+ *
2405
+ * They express an "identity" / "equals" / "mappable" relationship to the target ID.
2406
+ *
2407
+ * If a "part of" relationship needs to be expressed, use the `partOfGroups` assignment instead.
2408
+ *
2409
+ * MUST be a valid [Correlation ID](../index.md#correlation-id).
2410
+ */
2411
+ correlationIds?: string[];
2412
+ /**
2413
+ * Human-readable title.
2414
+ *
2415
+ * MUST NOT exceed 255 chars.
2416
+ * MUST NOT contain line breaks.
2417
+ */
2418
+ title: string;
2419
+ /**
2420
+ * Plain text short description.
2421
+ *
2422
+ * MUST NOT exceed 255 chars.
2423
+ * MUST NOT contain line breaks.
2424
+ */
2425
+ shortDescription?: string;
2426
+ /**
2427
+ * Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).
2428
+ *
2429
+ * The description SHOULD not be excessive in length and is not meant to provide full documentation.
2430
+ * Detailed documentation SHOULD be attached as (typed) links.
2431
+ */
2432
+ description?: string;
2433
+ /**
2434
+ * Defines which Package the resource is part of.
2435
+ *
2436
+ * MUST be a valid reference to a [Package](#package) ORD ID.
2437
+ *
2438
+ * Every resource MUST be part of one package.
2439
+ */
2440
+ partOfPackage: string;
2441
+ /**
2442
+ * Defines which groups the resource is assigned to.
2443
+ *
2444
+ * The property is optional, but if given the value MUST be an array of valid Group IDs.
2445
+ *
2446
+ * Groups are a lightweight custom taxonomy concept.
2447
+ * They express a "part of" relationship to the chosen group concept.
2448
+ * If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
2449
+ *
2450
+ * All resources that share the same group ID assignment are effectively grouped together.
2451
+ */
2452
+ partOfGroups?: string[];
2453
+ /**
2454
+ * The complete [SemVer](https://semver.org/) version string.
2455
+ *
2456
+ * It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
2457
+ * It SHOULD be changed if the ORD information or referenced resource definitions changed.
2458
+ * It SHOULD express minor and patch changes that don't lead to incompatible changes.
2459
+ *
2460
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2461
+ * 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.
2462
+ *
2463
+ * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
2464
+ * The `version` MUST not be bumped for changes in extensions.
2465
+ *
2466
+ * The general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.
2467
+ *
2468
+ * Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
2469
+ * For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
2470
+ */
2471
+ version: string;
2472
+ /**
2473
+ * Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.
2474
+ *
2475
+ * The date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).
2476
+ *
2477
+ * When retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.
2478
+ * Therefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.
2479
+ *
2480
+ * If the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.
2481
+ *
2482
+ * Together with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.
2483
+ */
2484
+ lastUpdate?: string;
2485
+ /**
2486
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
2487
+ *
2488
+ * This controls who can see that the resource exists and retrieve its metadata level information.
2489
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
2490
+ *
2491
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
2492
+ */
2493
+ visibility: "public" | "internal" | "private";
2494
+ /**
2495
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
2496
+ *
2497
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
2498
+ * of depending on the resource and whether it's suitable for production use.
2499
+ *
2500
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
2501
+ *
2502
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
2503
+ */
2504
+ releaseStatus: "beta" | "active" | "deprecated" | "sunset";
2505
+ /**
2506
+ * Indicates that this resource is currently not available for consumption at runtime, but could be configured to be so.
2507
+ * This can happen either because it has not been setup for use or disabled by an admin / user.
2508
+ *
2509
+ * If the resource is not available in principle for a particular system instance, e.g. due to lack of entitlement, it MUST not be described in the system-instance-aware perspective.
2510
+ *
2511
+ * This property can only reflect the knowledge of the described system instance itself.
2512
+ * Outside factors for availability can't need to be considered (e.g. network connectivity, middlewares).
2513
+ *
2514
+ * A disabled resource MAY skip describing its resource definitions.
2515
+ *
2516
+ */
2517
+ disabled?: boolean;
2518
+ /**
2519
+ * The resource has been introduced in the given [system version](../index.md#system-version).
2520
+ * This implies that the resource is only available if the system instance is of at least that system version.
2521
+ *
2522
+ * It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
2523
+ */
2524
+ minSystemVersion?: string;
2525
+ /**
2526
+ * List of products the resources of the Package are a part of.
2527
+ *
2528
+ * MUST be a valid reference to a [Product](#product) ORD ID.
2529
+ *
2530
+ * `partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.
2531
+ *
2532
+ * @minItems 0
2533
+ */
2534
+ partOfProducts?: string[];
2535
+ /**
2536
+ * Contains typically the organization that is responsible in the sense of RACI matrix for this ORD resource. This includes support and feature requests. It is maintained as correlation id to for example support components.
2537
+ */
2538
+ responsible?: string;
2539
+ /**
2540
+ * The deprecation date defines when the resource has been set as deprecated.
2541
+ * This is not to be confused with the `sunsetDate` which defines when the resource will be actually sunset, aka. decommissioned / removed / archived.
2542
+ *
2543
+ * The date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).
2544
+ */
2545
+ deprecationDate?: string;
2546
+ /**
2547
+ * The sunset date defines when the resource is scheduled to be decommissioned / removed / archived.
2548
+ *
2549
+ * If the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).
2550
+ * Once the sunset date is known and ready to be communicated externally, it MUST be provided here.
2551
+ *
2552
+ * The date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).
2553
+ */
2554
+ sunsetDate?: string;
2555
+ /**
2556
+ * The successor resource(s).
2557
+ *
2558
+ * MUST be a valid reference to an ORD ID.
2559
+ *
2560
+ * If the `releaseStatus` is set to `deprecated`, `successors` MUST be provided if one exists.
2561
+ * If `successors` is given, the described resource SHOULD set its `releaseStatus` to `deprecated`.
2562
+ */
2563
+ successors?: string[];
2564
+ /**
2565
+ * Contains changelog entries that summarize changes with special regards to version and releaseStatus
2566
+ */
2567
+ changelogEntries?: ChangelogEntry[];
2568
+ /**
2569
+ * A list of [policy levels](../../spec-extensions/policy-levels/) that the described resources need to be compliant with.
2570
+ * For each chosen policy level, additional expectations and validations rules will be applied.
2571
+ *
2572
+ * Policy levels can be defined on ORD Document level, but also be overwritten on an individual package or resource level.
2573
+ *
2574
+ * A policy level MUST be a valid [Specification ID](../index.md#specification-id).
2575
+ */
2576
+ policyLevels?: string[];
2577
+ /**
2578
+ * List of countries that the Package resources are applicable to.
2579
+ *
2580
+ * MUST be expressed as an array of country codes according to [IES ISO-3166 ALPHA-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
2581
+ *
2582
+ * `countries` that are assigned to a `Package` are inherited to all of the ORD resources it contains.
2583
+ */
2584
+ countries?: string[];
2585
+ /**
2586
+ * List of line of business tags.
2587
+ * No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
2588
+ *
2589
+ * `lineOfBusiness` that are assigned to a `Package` are inherited to all of the ORD resources it contains.
2590
+ */
2591
+ lineOfBusiness?: ((string | "Asset Management" | "Commerce" | "Finance" | "Human Resources" | "Manufacturing" | "Marketing" | "R&D Engineering" | "Sales" | "Service" | "Sourcing and Procurement" | "Strategy, Compliance, and Governance" | "Supply Chain" | "Sustainability" | "Metering" | "Grid Operations and Maintenance" | "Plant Operations and Maintenance" | "Maintenance and Engineering") & string)[];
2592
+ /**
2593
+ * List of industry tags.
2594
+ * No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
2595
+ *
2596
+ * `industry` that are assigned to a `Package` are inherited to all of the ORD resources it contains.
2597
+ */
2598
+ industry?: ((string | "Aerospace and Defense" | "Agribusiness" | "Automotive" | "Banking" | "Chemicals" | "Consumer Industries" | "Consumer Products" | "Defense and Security" | "Discrete Industries" | "Energy and Natural Resources" | "Engineering Construction and Operations" | "Financial Services" | "Future Cities" | "Healthcare" | "High Tech" | "Higher Education and Research" | "Industrial Machinery and Components" | "Insurance" | "Life Sciences" | "Media" | "Mill Products" | "Mining" | "Oil and Gas" | "Professional Services" | "Public Sector" | "Public Services" | "Retail" | "Service Industries" | "Sports and Entertainment" | "Telecommunications" | "Travel and Transportation" | "Utilities" | "Wholesale Distribution") & string)[];
2599
+ /**
2600
+ * Optional list of related EntityType Resources.
2601
+ *
2602
+ * MUST be a valid reference to an [EntityType Resource](#entity-type) ORD ID.
2603
+ */
2604
+ relatedEntityTypes?: string[];
2605
+ /**
2606
+ * Optional list of API Resources that expose the functionality of the agent. Typically using the A2A protocol, but other protocols are possible as well.
2607
+ *
2608
+ * MUST be a valid reference to an [API Resource](#api-resource) ORD ID.
2609
+ */
2610
+ exposedApiResources?: ExposedAPIResource[];
2611
+ /**
2612
+ * Optional list of integration dependencies that the agent relies on.
2613
+ *
2614
+ * MUST be a valid reference to an [Integration Dependency](#integration-dependency) ORD ID.
2615
+ */
2616
+ integrationDependencies?: string[];
2617
+ /**
2618
+ * Generic Links with arbitrary meaning and content.
2619
+ */
2620
+ links?: Link[];
2621
+ /**
2622
+ * List of free text style tags.
2623
+ * No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
2624
+ *
2625
+ * Tags that are assigned to a `Package` are inherited to all of the ORD resources it contains.
2626
+ */
2627
+ tags?: string[];
2628
+ labels?: Labels;
2629
+ documentationLabels?: DocumentationLabels;
2630
+ }
2631
+ /**
2632
+ * Reference to an API Resource that exposes the functionality of an agent.
2633
+ *
2634
+ * This is a complex object to allow additional properties / selections to be attached in the future.
2635
+ */
2636
+ export interface ExposedAPIResource {
2637
+ /**
2638
+ * The API Resource ORD ID that this reference points to.
2639
+ *
2640
+ * MUST be a valid reference to an [API Resource](#api-resource) ORD ID.
2641
+ */
2642
+ ordId: string;
2643
+ }
2248
2644
  /**
2249
2645
  * An [Integration Dependency](../concepts/integration-dependency) states that the described system (self) can integrate with external systems (integration target) to achieve an integration purpose.
2250
2646
  * The purpose could be to enable a certain feature or integration scenario, but it could also be a mandatory prerequisite for the described system to work.
@@ -2365,11 +2761,23 @@ export interface IntegrationDependency {
2365
2761
  */
2366
2762
  lastUpdate?: string;
2367
2763
  /**
2368
- * The visibility states who is allowed to "see" the described resource or capability.
2764
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
2765
+ *
2766
+ * This controls who can see that the resource exists and retrieve its metadata level information.
2767
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
2768
+ *
2769
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
2369
2770
  */
2370
2771
  visibility: "public" | "internal" | "private";
2371
2772
  /**
2372
- * The `releaseStatus` specifies the stability of the resource and its external contract.
2773
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
2774
+ *
2775
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
2776
+ * of depending on the resource and whether it's suitable for production use.
2777
+ *
2778
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
2779
+ *
2780
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
2373
2781
  */
2374
2782
  releaseStatus: "beta" | "active" | "deprecated" | "sunset";
2375
2783
  /**
@@ -2476,6 +2884,25 @@ export interface ApiResourceIntegrationAspect {
2476
2884
  *
2477
2885
  */
2478
2886
  minVersion?: string;
2887
+ /**
2888
+ * List of individual API operations that are sufficient to achieve the aspect.
2889
+ */
2890
+ subset?: APIResourceIntegrationAspectSubset[];
2891
+ }
2892
+ /**
2893
+ * Defines that API Resource Integration Aspect only requires a subset of the referenced contract.
2894
+ *
2895
+ * For APIs, this is a list of the operations or tools that need to be available in order to make the integration work.
2896
+ * This information helps to narrow down what is really necessary and can help optimize the integration.
2897
+ */
2898
+ export interface APIResourceIntegrationAspectSubset {
2899
+ /**
2900
+ * The ID of the individual API operation or tool.
2901
+ *
2902
+ * This MUST be an ID that is understood by the used protocol and resource definition format.
2903
+ * E.g. for OpenAPI this is the `operationId`, for MCP this is the tool `name`.
2904
+ */
2905
+ operationId: string;
2479
2906
  }
2480
2907
  /**
2481
2908
  * Event resource related integration aspect
@@ -2933,7 +3360,12 @@ export interface ConsumptionBundle {
2933
3360
  */
2934
3361
  lastUpdate?: string;
2935
3362
  /**
2936
- * The visibility states who is allowed to "see" the described resource or capability.
3363
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
3364
+ *
3365
+ * This controls who can see that the resource exists and retrieve its metadata level information.
3366
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
3367
+ *
3368
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
2937
3369
  */
2938
3370
  visibility?: "public" | "internal" | "private";
2939
3371
  /**
@@ -3035,6 +3467,17 @@ export interface Group {
3035
3467
  * Detailed documentation SHOULD be attached as (typed) links.
3036
3468
  */
3037
3469
  description?: string;
3470
+ labels?: Labels;
3471
+ /**
3472
+ * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
3473
+ *
3474
+ * They express an "identity" / "equals" / "mappable" relationship to the target ID.
3475
+ *
3476
+ * If a "part of" relationship needs to be expressed, use the `partOfGroups` assignment instead.
3477
+ *
3478
+ * MUST be a valid [Correlation ID](../index.md#correlation-id).
3479
+ */
3480
+ correlationIds?: string[];
3038
3481
  /**
3039
3482
  * A group (instance) can logically be part of another group, for example in hierarchical taxonomies or graph relationships.
3040
3483
  * Assigning a group to be part of another group is a lightweight and flexible approach to express such relationships.
@@ -3068,6 +3511,17 @@ export interface GroupType {
3068
3511
  * Detailed documentation SHOULD be attached as (typed) links.
3069
3512
  */
3070
3513
  description?: string;
3514
+ labels?: Labels;
3515
+ /**
3516
+ * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
3517
+ *
3518
+ * They express an "identity" / "equals" / "mappable" relationship to the target ID.
3519
+ *
3520
+ * If a "part of" relationship needs to be expressed, use the `partOfGroups` assignment instead.
3521
+ *
3522
+ * MUST be a valid [Correlation ID](../index.md#correlation-id).
3523
+ */
3524
+ correlationIds?: string[];
3071
3525
  /**
3072
3526
  * A group type can logically be part of another group type, for example in hierarchical taxonomies or graph relationships.
3073
3527
  * Assigning a group type to be part of another group type is a lightweight and flexible approach to express such relationships.