@open-resource-discovery/specification 1.14.4 → 1.15.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.
@@ -2,6 +2,10 @@
2
2
  * Define from where the API resource can be used and accessed
3
3
  */
4
4
  export type Usage = "external" | "local";
5
+ /**
6
+ * Defines whether and how the resource can be extended with custom fields.
7
+ */
8
+ export type ExtensibilitySupportLevel = "no" | "manual" | "automatic";
5
9
  /**
6
10
  * The [ORD Document](../index.md#ord-document) object serves as a wrapper for the **ORD resources** and **ORD taxonomy** and adds further top-level information
7
11
  * that is specific to the document/the service it describes.
@@ -19,7 +23,7 @@ export interface OrdDocument {
19
23
  /**
20
24
  * Version of the Open Resource Discovery specification that is used to describe this document.
21
25
  */
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";
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";
23
27
  /**
24
28
  * Optional description of the ORD document itself.
25
29
  * Please note that this information is NOT further processed or considered by an ORD aggregator.
@@ -39,9 +43,9 @@ export interface OrdDocument {
39
43
  * Please read the [article on perspectives](../concepts/perspectives) for more explanations.
40
44
  */
41
45
  perspective?: ("system-type" | "system-version" | "system-instance" | "system-independent") & string;
42
- describedSystemInstance?: SystemInstance;
43
46
  describedSystemType?: SystemType;
44
47
  describedSystemVersion?: SystemVersion;
48
+ describedSystemInstance?: SystemInstance;
45
49
  /**
46
50
  * The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.
47
51
  * Depending on the chosen policy level, additional expectations and validations rules will be applied.
@@ -91,6 +95,16 @@ export interface OrdDocument {
91
95
  * Array of all AI Agents that are described in this ORD document.
92
96
  */
93
97
  agents?: Agent[];
98
+ /**
99
+ * Array of all metadata overlays described in this ORD document.
100
+ *
101
+ * An ORD Overlay resource is a standalone, versioned resource that references an overlay document which patches
102
+ * resource definitions (e.g. OpenAPI, AsyncAPI, OData CSDL) without modifying the originals.
103
+ *
104
+ * For overlays that are tightly coupled to a single API or Event resource, consider attaching them directly
105
+ * as a `resourceDefinitions` entry with `type: ord:overlay:v1` instead.
106
+ */
107
+ overlays?: Overlay[];
94
108
  /**
95
109
  * Array of all integration dependencies that are described in this ORD document.
96
110
  */
@@ -128,27 +142,14 @@ export interface OrdDocument {
128
142
  tombstones?: Tombstone[];
129
143
  }
130
144
  /**
131
- * Information on the [system-instance](../index.md#system-instance) that this ORD document describes.
132
- *
133
- * Whether this information is required or recommended to add, depends on the requirements of the ORD aggregator.
145
+ * Information on the [system type](../index.md#system-type) that this ORD document describes.
134
146
  */
135
- export interface SystemInstance {
136
- /**
137
- * Optional [base URL](../index.md#base-url) of the **system instance**.
138
- * By providing the base URL, relative URLs in the document are resolved relative to it.
139
- *
140
- * The `baseUrl` MUST not contain a leading slash.
141
- *
142
- * MUST be provided if the base URL is not known to the ORD aggregators.
143
- * MUST be provided when the document needs to be fully self contained, e.g. when used for manual imports.
144
- */
145
- baseUrl?: string;
147
+ export interface SystemType {
146
148
  /**
147
- * Optional local ID for the system instance, as known by the described system.
148
- *
149
- * In case of multi-tenant systems, it is equivalent to the local tenant id.
149
+ * The [system namespace](../index.md#system-namespace) is a unique identifier for the system type.
150
+ * It is used to reference the system type in the ORD.
150
151
  */
151
- localId?: string;
152
+ systemNamespace?: string;
152
153
  /**
153
154
  * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
154
155
  *
@@ -220,14 +221,23 @@ export interface DocumentationLabels {
220
221
  [k: string]: string[];
221
222
  }
222
223
  /**
223
- * Information on the [system type](../index.md#system-type) that this ORD document describes.
224
+ * Information on the [system version](../index.md#system-version) that this ORD document describes.
224
225
  */
225
- export interface SystemType {
226
+ export interface SystemVersion {
226
227
  /**
227
- * The [system namespace](../index.md#system-namespace) is a unique identifier for the system type.
228
- * It is used to reference the system type in the ORD.
228
+ * The version of the system instance (run-time) or the version of the described system-version perspective.
229
+ *
230
+ * It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
231
+ *
232
+ * MUST be provided if the ORD document is `perspective`: `system-version`.
233
+ *
234
+ * For continuous-delivery systems, the version MAY be fixed to the same value, e.g. `1.0.0`, but be aware that phased rollouts may benefit from a more precise versioning like adding a build number.
229
235
  */
230
- systemNamespace?: string;
236
+ version?: string;
237
+ /**
238
+ * Human-readable title of the system version.
239
+ */
240
+ title?: string;
231
241
  /**
232
242
  * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
233
243
  *
@@ -249,23 +259,27 @@ export interface SystemType {
249
259
  tags?: string[];
250
260
  }
251
261
  /**
252
- * Information on the [system version](../index.md#system-version) that this ORD document describes.
262
+ * Information on the [system-instance](../index.md#system-instance) that this ORD document describes.
263
+ *
264
+ * Whether this information is required or recommended to add, depends on the requirements of the ORD aggregator.
253
265
  */
254
- export interface SystemVersion {
266
+ export interface SystemInstance {
255
267
  /**
256
- * The version of the system instance (run-time) or the version of the described system-version perspective.
257
- *
258
- * It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
268
+ * Optional [base URL](../index.md#base-url) of the **system instance**.
269
+ * By providing the base URL, relative URLs in the document are resolved relative to it.
259
270
  *
260
- * MUST be provided if the ORD document is `perspective`: `system-version`.
271
+ * The `baseUrl` MUST not contain a leading slash.
261
272
  *
262
- * For continuous-delivery systems, the version MAY be fixed to the same value, e.g. `1.0.0`, but be aware that phased rollouts may benefit from a more precise versioning like adding a build number.
273
+ * MUST be provided if the base URL is not known to the ORD aggregators.
274
+ * MUST be provided when the document needs to be fully self contained, e.g. when used for manual imports.
263
275
  */
264
- version?: string;
276
+ baseUrl?: string;
265
277
  /**
266
- * Human-readable title of the system version.
278
+ * Optional local ID for the system instance, as known by the described system.
279
+ *
280
+ * In case of multi-tenant systems, it is equivalent to the local tenant id.
267
281
  */
268
- title?: string;
282
+ localId?: string;
269
283
  /**
270
284
  * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
271
285
  *
@@ -566,8 +580,10 @@ export interface ApiResource {
566
580
  * See also [Resource Definitions](../index.md#resource-definitions) for more context.
567
581
  *
568
582
  * Each definition is to be understood as an alternative description format, describing the same resource / capability.
569
- * As a consequence the same definition type MUST NOT be provided more than once.
570
- * The exception is when the same definition type is provided more than once, but with a different `visibility`.
583
+ * The combination of `type`, `purpose`, and `visibility` MUST be unique within the list.
584
+ *
585
+ * A definition without a `purpose` is considered the primary/default definition for its type.
586
+ * Additional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).
571
587
  *
572
588
  * It is RECOMMENDED to provide the definitions as they enable machine-readable use cases.
573
589
  * If the definitions are added or changed, the `version` MUST be incremented.
@@ -754,7 +770,7 @@ export interface RelatedAPIResource {
754
770
  * Defines the semantic meaning of the relationship.
755
771
  * If not provided, the relationship has no specific semantics ("related somehow").
756
772
  */
757
- relationType?: string;
773
+ relationType?: (string | "ord:patches") & string;
758
774
  }
759
775
  /**
760
776
  * Defines a relation to an Event Resource (via its ORD ID).
@@ -772,7 +788,7 @@ export interface RelatedEventResource {
772
788
  * Defines the semantic meaning of the relationship.
773
789
  * If not provided, the relationship has no specific semantics ("related somehow").
774
790
  */
775
- relationType?: string;
791
+ relationType?: (string | "ord:patches") & string;
776
792
  }
777
793
  /**
778
794
  * A changelog entry can be used to indicate changes.
@@ -826,7 +842,7 @@ export interface ApiResourceDefinition {
826
842
  * Type of the API Resource Definition
827
843
  * If "custom" is chosen, a customType MUST be provided
828
844
  */
829
- type: (string | "openapi-v2" | "openapi-v3" | "openapi-v3.1+" | "raml-v1" | "edmx" | "csdl-json" | "graphql-sdl" | "wsdl-v1" | "wsdl-v2" | "a2a-agent-card" | "sap-rfc-metadata-v1" | "sap-sql-api-definition-v1" | "sap-csn-interop-effective-v1" | "custom") & string;
845
+ type: (string | "openapi-v2" | "openapi-v3" | "openapi-v3.1+" | "raml-v1" | "edmx" | "csdl-json" | "graphql-sdl" | "wsdl-v1" | "wsdl-v2" | "a2a-agent-card" | "sap-rfc-metadata-v1" | "sap-sql-api-definition-v1" | "sap-csn-interop-effective-v1" | "ord:overlay:v1" | "custom") & string;
830
846
  /**
831
847
  * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
832
848
  *
@@ -875,6 +891,18 @@ export interface ApiResourceDefinition {
875
891
  * @minItems 1
876
892
  */
877
893
  accessStrategies?: [MetadataDefinitionAccessStrategy, ...MetadataDefinitionAccessStrategy[]];
894
+ /**
895
+ * Describes the intended purpose or role of this resource definition.
896
+ *
897
+ * While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
898
+ * This allows multiple definitions of the same type to coexist when they serve different purposes.
899
+ *
900
+ * For example, an API Resource might have multiple OpenAPI definitions:
901
+ * one for standard API documentation and another specifically enriched for AI/agent consumption.
902
+ *
903
+ * MUST be a valid [Concept ID](../index.md#concept-id).
904
+ */
905
+ purpose?: (string | "ord:ai-enrichment") & string;
878
906
  }
879
907
  /**
880
908
  * Defines the [access strategy](../../spec-extensions/access-strategies/) for accessing the resource definitions.
@@ -1103,14 +1131,7 @@ export interface Link {
1103
1131
  * If applicable, a description and further resources about extending this resource are provided.
1104
1132
  */
1105
1133
  export interface Extensible {
1106
- /**
1107
- * This property defines whether the resource is extensible.
1108
- *
1109
- * **Not extensible** means that the data model of the resource (i.e. API or event) cannot be extended with custom fields.
1110
- * **Manually extensible** means that in addition to defining a custom field, manual activities to include the field in the data model of the resource (i.e. API or event) are required. E.g. using a specific mapping tool or by selecting the resource in the data model extension tool.
1111
- * **Automatically extensible** means that after defining a custom field in the local domain model, the resource (i.e. API or event) is automatically extended as part of the default extension field definition.
1112
- */
1113
- supported: "no" | "manual" | "automatic";
1134
+ supported: ExtensibilitySupportLevel;
1114
1135
  /**
1115
1136
  * A description about the extensibility capabilities of this API, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).
1116
1137
  *
@@ -1356,8 +1377,10 @@ export interface EventResource {
1356
1377
  * See also [Resource Definitions](../index.md#resource-definitions) for more context.
1357
1378
  *
1358
1379
  * Each definition is to be understood as an alternative description format, describing the same resource / capability.
1359
- * As a consequence the same definition type MUST NOT be provided more than once.
1360
- * The exception is when the same definition type is provided more than once, but with a different `visibility`.
1380
+ * The combination of `type`, `purpose`, and `visibility` MUST be unique within the list.
1381
+ *
1382
+ * A definition without a `purpose` is considered the primary/default definition for its type.
1383
+ * Additional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).
1361
1384
  *
1362
1385
  * It is RECOMMENDED to provide the definitions as they enable machine-readable use cases.
1363
1386
  * If the definitions are added or changed, the `version` MUST be incremented.
@@ -1506,7 +1529,7 @@ export interface EventResourceDefinition {
1506
1529
  /**
1507
1530
  * Type of the event resource definition
1508
1531
  */
1509
- type: (string | "asyncapi-v2" | "sap-csn-interop-effective-v1" | "custom") & string;
1532
+ type: (string | "asyncapi-v2" | "sap-csn-interop-effective-v1" | "ord:overlay:v1" | "custom") & string;
1510
1533
  /**
1511
1534
  * If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
1512
1535
  *
@@ -1555,6 +1578,18 @@ export interface EventResourceDefinition {
1555
1578
  * in case that some metadata must only be made accessible to internal consumers.
1556
1579
  */
1557
1580
  visibility?: "public" | "internal" | "private";
1581
+ /**
1582
+ * Describes the intended purpose or role of this resource definition.
1583
+ *
1584
+ * While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
1585
+ * This allows multiple definitions of the same type to coexist when they serve different purposes.
1586
+ *
1587
+ * For example, an API Resource might have multiple OpenAPI definitions:
1588
+ * one for standard API documentation and another specifically enriched for AI/agent consumption.
1589
+ *
1590
+ * MUST be a valid [Concept ID](../index.md#concept-id).
1591
+ */
1592
+ purpose?: (string | "ord:ai-enrichment") & string;
1558
1593
  }
1559
1594
  /**
1560
1595
  * Describes the compatibility of the Event with other Events. This can be used to express that an Event is compatible with another Event version.
@@ -2016,8 +2051,10 @@ export interface Capability {
2016
2051
  * See also [Resource Definitions](../index.md#resource-definitions) for more context.
2017
2052
  *
2018
2053
  * Each definition is to be understood as an alternative description format, describing the same resource / capability.
2019
- * As a consequence the same definition type MUST NOT be provided more than once.
2020
- * The exception is when the same definition type is provided more than once, but with a different `visibility`.
2054
+ * The combination of `type`, `purpose`, and `visibility` MUST be unique within the list.
2055
+ *
2056
+ * A definition without a `purpose` is considered the primary/default definition for its type.
2057
+ * Additional definitions of the same type MAY be provided if they have a distinct `purpose` (e.g., `ord:ai-enrichment` for AI-optimized definitions).
2021
2058
  *
2022
2059
  * It is RECOMMENDED to provide the definitions as they enable machine-readable use cases.
2023
2060
  * If the definitions are added or changed, the `version` MUST be incremented.
@@ -2125,6 +2162,18 @@ export interface CapabilityDefinition {
2125
2162
  * in case that some metadata must only be made accessible to internal consumers.
2126
2163
  */
2127
2164
  visibility?: "public" | "internal" | "private";
2165
+ /**
2166
+ * Describes the intended purpose or role of this resource definition.
2167
+ *
2168
+ * While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
2169
+ * This allows multiple definitions of the same type to coexist when they serve different purposes.
2170
+ *
2171
+ * For example, an API Resource might have multiple OpenAPI definitions:
2172
+ * one for standard API documentation and another specifically enriched for AI/agent consumption.
2173
+ *
2174
+ * MUST be a valid [Concept ID](../index.md#concept-id).
2175
+ */
2176
+ purpose?: (string | "ord:ai-enrichment") & string;
2128
2177
  }
2129
2178
  /**
2130
2179
  * A [Data Product](../concepts/data-product) is a data set exposed for consumption outside the boundaries of the producing application via APIs and described by high quality metadata that can be accessed through the [ORD Aggregator](../../spec-v1/#ord-aggregator).
@@ -2748,6 +2797,183 @@ export interface ExposedAPIResource {
2748
2797
  */
2749
2798
  ordId: string;
2750
2799
  }
2800
+ /**
2801
+ * An Overlay Resource is a standalone, versioned resource that references a metadata patch file.
2802
+ * Overlays enrich / patch resource definition files (e.g. OpenAPI) without modifying the originals, e.g. to add AI-optimized descriptions, apply governance annotations, or adapt definitions for a specific audience / purpose.
2803
+ *
2804
+ * Use an Overlay Resource for overlays that serve a different concern or audience than the original metadata — such as AI enrichment, governance annotations, or audience-specific adaptations — and are managed independently or applied across multiple resources.
2805
+ * For producer-owned overlays that belong to a single resource, they SHOULD instead be attached directly as a `resourceDefinitions` entry with `type: ord:overlay:v1`.
2806
+ */
2807
+ export interface Overlay {
2808
+ /**
2809
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2810
+ *
2811
+ * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2812
+ */
2813
+ ordId: string;
2814
+ /**
2815
+ * Human-readable title.
2816
+ *
2817
+ * MUST NOT exceed 255 chars.
2818
+ * MUST NOT contain line breaks.
2819
+ */
2820
+ title?: string;
2821
+ /**
2822
+ * Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).
2823
+ *
2824
+ * The description SHOULD not be excessive in length and is not meant to provide full documentation.
2825
+ * Detailed documentation SHOULD be attached as (typed) links.
2826
+ */
2827
+ description?: string;
2828
+ /**
2829
+ * The complete [SemVer](https://semver.org/) version string.
2830
+ *
2831
+ * It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
2832
+ * It SHOULD be changed if the ORD information or referenced resource definitions changed.
2833
+ * It SHOULD express minor and patch changes that don't lead to incompatible changes.
2834
+ *
2835
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2836
+ * 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
+ *
2838
+ * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
2839
+ * The `version` MUST not be bumped for changes in extensions.
2840
+ *
2841
+ * The general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.
2842
+ *
2843
+ * Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
2844
+ * For example: If a resource within a `Package` changes, but the Package itself did not, the Package version does not need to be incremented.
2845
+ */
2846
+ version: string;
2847
+ /**
2848
+ * Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.
2849
+ *
2850
+ * The date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).
2851
+ *
2852
+ * When retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.
2853
+ * Therefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.
2854
+ *
2855
+ * 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.
2856
+ *
2857
+ * Together with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.
2858
+ */
2859
+ lastUpdate?: string;
2860
+ /**
2861
+ * Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
2862
+ *
2863
+ * This controls who can see that the resource exists and retrieve its metadata level information.
2864
+ * It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
2865
+ *
2866
+ * Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
2867
+ */
2868
+ visibility: "public" | "internal" | "private";
2869
+ /**
2870
+ * Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
2871
+ *
2872
+ * This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
2873
+ * of depending on the resource and whether it's suitable for production use.
2874
+ *
2875
+ * Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
2876
+ *
2877
+ * See [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
2878
+ */
2879
+ releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
2880
+ /**
2881
+ * Optional list of API Resources whose definition files this overlay patches.
2882
+ *
2883
+ * SHOULD be provided when the target resource is described in an ORD document accessible to the same aggregator,
2884
+ * as it enables efficient indexing without requiring the aggregator to parse each overlay file.
2885
+ * Use `relationType: ord:patches` to express the patching relationship.
2886
+ *
2887
+ * May be omitted when the target resource is not described in an accessible ORD document,
2888
+ * or when the overlay is cross-cutting and patches resources from multiple providers.
2889
+ */
2890
+ relatedApiResources?: RelatedAPIResource[];
2891
+ /**
2892
+ * Optional list of Event Resources whose definition files this overlay patches.
2893
+ *
2894
+ * SHOULD be provided when the target resource is described in an ORD document accessible to the same aggregator,
2895
+ * as it enables efficient indexing without requiring the aggregator to parse each overlay file.
2896
+ * Use `relationType: ord:patches` to express the patching relationship.
2897
+ *
2898
+ * May be omitted when the target resource is not described in an accessible ORD document,
2899
+ * or when the overlay is cross-cutting and patches resources from multiple providers.
2900
+ */
2901
+ relatedEventResources?: RelatedEventResource[];
2902
+ /**
2903
+ * List of overlay definition files referenced by this ORD Overlay Resource.
2904
+ * Each entry points to an ORD Overlay document (`type: ord:overlay:v1`) that contains the actual patches.
2905
+ */
2906
+ definitions?: OverlayDefinition[];
2907
+ /**
2908
+ * List of free text style tags.
2909
+ * No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
2910
+ *
2911
+ * Tags that are assigned to a `Package` are inherited to all of the ORD resources it contains.
2912
+ */
2913
+ tags?: string[];
2914
+ labels?: Labels;
2915
+ }
2916
+ /**
2917
+ * Link to a machine-readable [ORD Overlay](../../spec-v1/interfaces/OrdOverlay) document.
2918
+ */
2919
+ export interface OverlayDefinition {
2920
+ /**
2921
+ * Type of the overlay definition
2922
+ */
2923
+ type: ("ord:overlay:v1" | string) & string;
2924
+ /**
2925
+ * The [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) of the definition serialization format.
2926
+ * A consuming application can use this information to know which file format parser it needs to use.
2927
+ * For example, for OpenAPI 3, it's valid to express the same definition in both YAML and JSON.
2928
+ *
2929
+ * If no Media Type is registered for the referenced file,
2930
+ * `text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.
2931
+ *
2932
+ */
2933
+ mediaType: string;
2934
+ /**
2935
+ * [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
2936
+ *
2937
+ * It is RECOMMENDED to provide a relative URL (to base URL).
2938
+ */
2939
+ url: string;
2940
+ /**
2941
+ * List of supported access strategies for retrieving metadata from the ORD provider.
2942
+ * An ORD Consumer/ORD Aggregator MAY choose any of the strategies.
2943
+ *
2944
+ * The access strategies only apply to the metadata access and not the actual API access.
2945
+ * The actual access to the APIs for clients is described via Consumption Bundles.
2946
+ *
2947
+ * If this property is not provided, the definition URL will be available through the same access strategy as this ORD document.
2948
+ * It is RECOMMENDED anyway that the attached metadata definitions are available with the same access strategies, to simplify the aggregator crawling process.
2949
+ *
2950
+ * @minItems 1
2951
+ */
2952
+ accessStrategies?: [MetadataDefinitionAccessStrategy, ...MetadataDefinitionAccessStrategy[]];
2953
+ /**
2954
+ * The visibility states who is allowed to "see" and access the resource definition, in case it differs from the resource visibility.
2955
+ *
2956
+ * If not given, the resource definition has the same visibility as the resource it describes.
2957
+ * The visibility of a resource definition MUST be lower (more restrictive) than the visibility of the resource it describes.
2958
+ * E.g. a public resource can have metadata definitions that are internal only. An internal resource can't declare to have a public metadata definition.
2959
+ *
2960
+ * This makes it also possible to provide both a public and an internal metadata description of the resource,
2961
+ * in case that some metadata must only be made accessible to internal consumers.
2962
+ */
2963
+ visibility?: "public" | "internal" | "private";
2964
+ /**
2965
+ * Describes the intended purpose or role of this resource definition.
2966
+ *
2967
+ * While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
2968
+ * This allows multiple definitions of the same type to coexist when they serve different purposes.
2969
+ *
2970
+ * For example, an API Resource might have multiple OpenAPI definitions:
2971
+ * one for standard API documentation and another specifically enriched for AI/agent consumption.
2972
+ *
2973
+ * MUST be a valid [Concept ID](../index.md#concept-id).
2974
+ */
2975
+ purpose?: (string | "ord:ai-enrichment") & string;
2976
+ }
2751
2977
  /**
2752
2978
  * An [Integration Dependency](../concepts/integration-dependency) states that the described system (self) can integrate with external systems (integration target) to achieve an integration purpose.
2753
2979
  * 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.
@@ -3224,6 +3450,16 @@ export interface Package {
3224
3450
  * 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.
3225
3451
  */
3226
3452
  localId?: string;
3453
+ /**
3454
+ * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
3455
+ *
3456
+ * They express an "identity" / "equals" / "mappable" relationship to the target ID.
3457
+ *
3458
+ * If a "part of" relationship needs to be expressed, use the `partOfGroups` assignment instead.
3459
+ *
3460
+ * MUST be a valid [Correlation ID](../index.md#correlation-id).
3461
+ */
3462
+ correlationIds?: string[];
3227
3463
  /**
3228
3464
  * Human-readable title.
3229
3465
  *