@open-resource-discovery/specification 1.14.5 → 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 +2 -2
- package/dist/generated/spec/v1/schemas/Document.schema.json +646 -72
- package/dist/generated/spec/v1/schemas/OrdOverlay.schema.json +885 -0
- package/dist/generated/spec/v1/types/Configuration.d.ts +1 -1
- package/dist/generated/spec/v1/types/Document.d.ts +560 -100
- package/dist/generated/spec/v1/types/OrdOverlay.d.ts +554 -0
- package/dist/generated/spec/v1/types/OrdOverlay.js +4 -0
- package/dist/generated/spec/v1/types/index.d.ts +1 -1
- package/dist/generated/spec/v1/types/index.js +2 -2
- package/dist/index.d.ts +5 -1
- package/dist/index.js +8 -3
- package/package.json +16 -14
- package/dist/generated/spec/v1/types/AgentGovernance.d.ts +0 -7
- package/dist/generated/spec/v1/types/AgentGovernance.js +0 -4
|
@@ -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" | "1.16";
|
|
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.
|
|
@@ -27,6 +31,24 @@ export interface OrdDocument {
|
|
|
27
31
|
* Notated in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
28
32
|
*/
|
|
29
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;
|
|
30
52
|
/**
|
|
31
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).
|
|
32
54
|
*
|
|
@@ -39,9 +61,9 @@ export interface OrdDocument {
|
|
|
39
61
|
* Please read the [article on perspectives](../concepts/perspectives) for more explanations.
|
|
40
62
|
*/
|
|
41
63
|
perspective?: ("system-type" | "system-version" | "system-instance" | "system-independent") & string;
|
|
42
|
-
describedSystemInstance?: SystemInstance;
|
|
43
64
|
describedSystemType?: SystemType;
|
|
44
65
|
describedSystemVersion?: SystemVersion;
|
|
66
|
+
describedSystemInstance?: SystemInstance;
|
|
45
67
|
/**
|
|
46
68
|
* The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.
|
|
47
69
|
* Depending on the chosen policy level, additional expectations and validations rules will be applied.
|
|
@@ -91,6 +113,16 @@ export interface OrdDocument {
|
|
|
91
113
|
* Array of all AI Agents that are described in this ORD document.
|
|
92
114
|
*/
|
|
93
115
|
agents?: Agent[];
|
|
116
|
+
/**
|
|
117
|
+
* Array of all metadata overlays described in this ORD document.
|
|
118
|
+
*
|
|
119
|
+
* An ORD Overlay resource is a standalone, versioned resource that references an overlay document which patches
|
|
120
|
+
* resource definitions (e.g. OpenAPI, AsyncAPI, OData CSDL) without modifying the originals.
|
|
121
|
+
*
|
|
122
|
+
* For overlays that are tightly coupled to a single API or Event resource, consider attaching them directly
|
|
123
|
+
* as a `resourceDefinitions` entry with `type: ord:overlay:v1` instead.
|
|
124
|
+
*/
|
|
125
|
+
overlays?: Overlay[];
|
|
94
126
|
/**
|
|
95
127
|
* Array of all integration dependencies that are described in this ORD document.
|
|
96
128
|
*/
|
|
@@ -128,27 +160,14 @@ export interface OrdDocument {
|
|
|
128
160
|
tombstones?: Tombstone[];
|
|
129
161
|
}
|
|
130
162
|
/**
|
|
131
|
-
* Information on the [system
|
|
132
|
-
*
|
|
133
|
-
* Whether this information is required or recommended to add, depends on the requirements of the ORD aggregator.
|
|
163
|
+
* Information on the [system type](../index.md#system-type) that this ORD document describes.
|
|
134
164
|
*/
|
|
135
|
-
export interface
|
|
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;
|
|
165
|
+
export interface SystemType {
|
|
146
166
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* In case of multi-tenant systems, it is equivalent to the local tenant id.
|
|
167
|
+
* The [system namespace](../index.md#system-namespace) is a unique identifier for the system type.
|
|
168
|
+
* It is used to reference the system type in the ORD.
|
|
150
169
|
*/
|
|
151
|
-
|
|
170
|
+
systemNamespace?: string;
|
|
152
171
|
/**
|
|
153
172
|
* Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
|
|
154
173
|
*
|
|
@@ -220,14 +239,23 @@ export interface DocumentationLabels {
|
|
|
220
239
|
[k: string]: string[];
|
|
221
240
|
}
|
|
222
241
|
/**
|
|
223
|
-
* Information on the [system
|
|
242
|
+
* Information on the [system version](../index.md#system-version) that this ORD document describes.
|
|
224
243
|
*/
|
|
225
|
-
export interface
|
|
244
|
+
export interface SystemVersion {
|
|
226
245
|
/**
|
|
227
|
-
* The
|
|
228
|
-
*
|
|
246
|
+
* The version of the system instance (run-time) or the version of the described system-version perspective.
|
|
247
|
+
*
|
|
248
|
+
* It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
|
|
249
|
+
*
|
|
250
|
+
* MUST be provided if the ORD document is `perspective`: `system-version`.
|
|
251
|
+
*
|
|
252
|
+
* 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
253
|
*/
|
|
230
|
-
|
|
254
|
+
version?: string;
|
|
255
|
+
/**
|
|
256
|
+
* Human-readable title of the system version.
|
|
257
|
+
*/
|
|
258
|
+
title?: string;
|
|
231
259
|
/**
|
|
232
260
|
* Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
|
|
233
261
|
*
|
|
@@ -249,23 +277,33 @@ export interface SystemType {
|
|
|
249
277
|
tags?: string[];
|
|
250
278
|
}
|
|
251
279
|
/**
|
|
252
|
-
* Information on the [system
|
|
280
|
+
* Information on the [system-instance](../index.md#system-instance) that this ORD document describes.
|
|
281
|
+
*
|
|
282
|
+
* Whether this information is required or recommended to add, depends on the requirements of the ORD aggregator.
|
|
253
283
|
*/
|
|
254
|
-
export interface
|
|
284
|
+
export interface SystemInstance {
|
|
255
285
|
/**
|
|
256
|
-
*
|
|
286
|
+
* Optional [base URL](../index.md#base-url) of the **described system instance**.
|
|
257
287
|
*
|
|
258
|
-
*
|
|
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).
|
|
259
291
|
*
|
|
260
|
-
*
|
|
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.
|
|
261
294
|
*
|
|
262
|
-
*
|
|
295
|
+
* The `baseUrl` MUST NOT contain a trailing slash.
|
|
296
|
+
*
|
|
297
|
+
* MUST be provided if the base URL is not known to the ORD aggregators.
|
|
298
|
+
* MUST be provided when the document needs to be fully self contained, e.g. when used for manual imports.
|
|
263
299
|
*/
|
|
264
|
-
|
|
300
|
+
baseUrl?: string;
|
|
265
301
|
/**
|
|
266
|
-
*
|
|
302
|
+
* Optional local ID for the system instance, as known by the described system.
|
|
303
|
+
*
|
|
304
|
+
* In case of multi-tenant systems, it is equivalent to the local tenant id.
|
|
267
305
|
*/
|
|
268
|
-
|
|
306
|
+
localId?: string;
|
|
269
307
|
/**
|
|
270
308
|
* Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
|
|
271
309
|
*
|
|
@@ -347,6 +385,14 @@ export interface ApiResource {
|
|
|
347
385
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
348
386
|
*/
|
|
349
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;
|
|
350
396
|
/**
|
|
351
397
|
* Defines which Package the resource is part of.
|
|
352
398
|
*
|
|
@@ -365,6 +411,10 @@ export interface ApiResource {
|
|
|
365
411
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
366
412
|
*
|
|
367
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).
|
|
368
418
|
*/
|
|
369
419
|
partOfGroups?: string[];
|
|
370
420
|
/**
|
|
@@ -393,11 +443,15 @@ export interface ApiResource {
|
|
|
393
443
|
*/
|
|
394
444
|
defaultConsumptionBundle?: string;
|
|
395
445
|
/**
|
|
396
|
-
* List of products
|
|
446
|
+
* List of products this package and its resources are a part of.
|
|
397
447
|
*
|
|
398
448
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
399
449
|
*
|
|
400
|
-
* `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.
|
|
401
455
|
*
|
|
402
456
|
* @minItems 0
|
|
403
457
|
*/
|
|
@@ -409,13 +463,13 @@ export interface ApiResource {
|
|
|
409
463
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
410
464
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
411
465
|
*
|
|
412
|
-
* 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.
|
|
413
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.
|
|
414
468
|
*
|
|
415
469
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
416
470
|
* The `version` MUST not be bumped for changes in extensions.
|
|
417
471
|
*
|
|
418
|
-
* The general [Version and Lifecycle](../
|
|
472
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
419
473
|
*
|
|
420
474
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
421
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.
|
|
@@ -461,7 +515,7 @@ export interface ApiResource {
|
|
|
461
515
|
*
|
|
462
516
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
463
517
|
*
|
|
464
|
-
* See [Lifecycle](../
|
|
518
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
465
519
|
*/
|
|
466
520
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
467
521
|
/**
|
|
@@ -538,12 +592,15 @@ export interface ApiResource {
|
|
|
538
592
|
* If there is no match, the information in ORD takes precedence.
|
|
539
593
|
*
|
|
540
594
|
* **Provider View:**
|
|
541
|
-
*
|
|
542
|
-
*
|
|
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`.
|
|
543
597
|
* If the URL is not relative to the described system instance [base URL](../index.md#base-url), a full URL MUST be provided.
|
|
544
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.
|
|
545
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.
|
|
546
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
|
+
*
|
|
547
604
|
* **Consumer View**:
|
|
548
605
|
* When fetching the information from an ORD Aggregator, the consumer MAY rely on receiving full URLs.
|
|
549
606
|
*
|
|
@@ -566,8 +623,10 @@ export interface ApiResource {
|
|
|
566
623
|
* See also [Resource Definitions](../index.md#resource-definitions) for more context.
|
|
567
624
|
*
|
|
568
625
|
* Each definition is to be understood as an alternative description format, describing the same resource / capability.
|
|
569
|
-
*
|
|
570
|
-
*
|
|
626
|
+
* The combination of `type` (or `customType` for `type: "custom"`), `purpose`, and `visibility` MUST be unique within the list.
|
|
627
|
+
*
|
|
628
|
+
* A definition without a `purpose` is considered the primary/default definition for its type.
|
|
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).
|
|
571
630
|
*
|
|
572
631
|
* It is RECOMMENDED to provide the definitions as they enable machine-readable use cases.
|
|
573
632
|
* If the definitions are added or changed, the `version` MUST be incremented.
|
|
@@ -598,6 +657,7 @@ export interface ApiResource {
|
|
|
598
657
|
customImplementationStandardDescription?: string;
|
|
599
658
|
/**
|
|
600
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.
|
|
601
661
|
*
|
|
602
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.
|
|
603
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.
|
|
@@ -754,7 +814,7 @@ export interface RelatedAPIResource {
|
|
|
754
814
|
* Defines the semantic meaning of the relationship.
|
|
755
815
|
* If not provided, the relationship has no specific semantics ("related somehow").
|
|
756
816
|
*/
|
|
757
|
-
relationType?: string;
|
|
817
|
+
relationType?: (string | "ord:patches") & string;
|
|
758
818
|
}
|
|
759
819
|
/**
|
|
760
820
|
* Defines a relation to an Event Resource (via its ORD ID).
|
|
@@ -772,7 +832,7 @@ export interface RelatedEventResource {
|
|
|
772
832
|
* Defines the semantic meaning of the relationship.
|
|
773
833
|
* If not provided, the relationship has no specific semantics ("related somehow").
|
|
774
834
|
*/
|
|
775
|
-
relationType?: string;
|
|
835
|
+
relationType?: (string | "ord:patches") & string;
|
|
776
836
|
}
|
|
777
837
|
/**
|
|
778
838
|
* A changelog entry can be used to indicate changes.
|
|
@@ -794,7 +854,7 @@ export interface ChangelogEntry {
|
|
|
794
854
|
*
|
|
795
855
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
796
856
|
*
|
|
797
|
-
* See [Lifecycle](../
|
|
857
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
798
858
|
*/
|
|
799
859
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
800
860
|
/**
|
|
@@ -826,7 +886,7 @@ export interface ApiResourceDefinition {
|
|
|
826
886
|
* Type of the API Resource Definition
|
|
827
887
|
* If "custom" is chosen, a customType MUST be provided
|
|
828
888
|
*/
|
|
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;
|
|
889
|
+
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
890
|
/**
|
|
831
891
|
* If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
|
|
832
892
|
*
|
|
@@ -848,7 +908,8 @@ export interface ApiResourceDefinition {
|
|
|
848
908
|
/**
|
|
849
909
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
850
910
|
*
|
|
851
|
-
* 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).
|
|
852
913
|
*/
|
|
853
914
|
url: string;
|
|
854
915
|
/**
|
|
@@ -875,6 +936,22 @@ export interface ApiResourceDefinition {
|
|
|
875
936
|
* @minItems 1
|
|
876
937
|
*/
|
|
877
938
|
accessStrategies?: [MetadataDefinitionAccessStrategy, ...MetadataDefinitionAccessStrategy[]];
|
|
939
|
+
/**
|
|
940
|
+
* Describes the intended purpose or role of this resource definition.
|
|
941
|
+
*
|
|
942
|
+
* While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
|
|
943
|
+
* This allows multiple definitions of the same type to coexist when they serve different purposes.
|
|
944
|
+
*
|
|
945
|
+
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
946
|
+
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
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
|
+
*
|
|
952
|
+
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
953
|
+
*/
|
|
954
|
+
purpose?: (string | "ord:ai-enrichment") & string;
|
|
878
955
|
}
|
|
879
956
|
/**
|
|
880
957
|
* Defines the [access strategy](../../spec-extensions/access-strategies/) for accessing the resource definitions.
|
|
@@ -1070,7 +1147,7 @@ export interface ApiAndEventResourceLink {
|
|
|
1070
1147
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the API or Event Resource Link.
|
|
1071
1148
|
*
|
|
1072
1149
|
* The link target SHOULD be absolute and SHOULD be openly accessible.
|
|
1073
|
-
* 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).
|
|
1074
1151
|
*/
|
|
1075
1152
|
url: string;
|
|
1076
1153
|
}
|
|
@@ -1103,14 +1180,7 @@ export interface Link {
|
|
|
1103
1180
|
* If applicable, a description and further resources about extending this resource are provided.
|
|
1104
1181
|
*/
|
|
1105
1182
|
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";
|
|
1183
|
+
supported: ExtensibilitySupportLevel;
|
|
1114
1184
|
/**
|
|
1115
1185
|
* A description about the extensibility capabilities of this API, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
1116
1186
|
*
|
|
@@ -1173,6 +1243,14 @@ export interface EventResource {
|
|
|
1173
1243
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
1174
1244
|
*/
|
|
1175
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;
|
|
1176
1254
|
/**
|
|
1177
1255
|
* Defines which Package the resource is part of.
|
|
1178
1256
|
*
|
|
@@ -1191,6 +1269,10 @@ export interface EventResource {
|
|
|
1191
1269
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
1192
1270
|
*
|
|
1193
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).
|
|
1194
1276
|
*/
|
|
1195
1277
|
partOfGroups?: string[];
|
|
1196
1278
|
/**
|
|
@@ -1219,11 +1301,15 @@ export interface EventResource {
|
|
|
1219
1301
|
*/
|
|
1220
1302
|
defaultConsumptionBundle?: string;
|
|
1221
1303
|
/**
|
|
1222
|
-
* List of products
|
|
1304
|
+
* List of products this package and its resources are a part of.
|
|
1223
1305
|
*
|
|
1224
1306
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
1225
1307
|
*
|
|
1226
|
-
* `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.
|
|
1227
1313
|
*
|
|
1228
1314
|
* @minItems 0
|
|
1229
1315
|
*/
|
|
@@ -1235,13 +1321,13 @@ export interface EventResource {
|
|
|
1235
1321
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
1236
1322
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
1237
1323
|
*
|
|
1238
|
-
* 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.
|
|
1239
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.
|
|
1240
1326
|
*
|
|
1241
1327
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
1242
1328
|
* The `version` MUST not be bumped for changes in extensions.
|
|
1243
1329
|
*
|
|
1244
|
-
* The general [Version and Lifecycle](../
|
|
1330
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
1245
1331
|
*
|
|
1246
1332
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
1247
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.
|
|
@@ -1287,7 +1373,7 @@ export interface EventResource {
|
|
|
1287
1373
|
*
|
|
1288
1374
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
1289
1375
|
*
|
|
1290
|
-
* See [Lifecycle](../
|
|
1376
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
1291
1377
|
*/
|
|
1292
1378
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
1293
1379
|
/**
|
|
@@ -1356,8 +1442,10 @@ export interface EventResource {
|
|
|
1356
1442
|
* See also [Resource Definitions](../index.md#resource-definitions) for more context.
|
|
1357
1443
|
*
|
|
1358
1444
|
* Each definition is to be understood as an alternative description format, describing the same resource / capability.
|
|
1359
|
-
*
|
|
1360
|
-
*
|
|
1445
|
+
* The combination of `type` (or `customType` for `type: "custom"`), `purpose`, and `visibility` MUST be unique within the list.
|
|
1446
|
+
*
|
|
1447
|
+
* A definition without a `purpose` is considered the primary/default definition for its type.
|
|
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).
|
|
1361
1449
|
*
|
|
1362
1450
|
* It is RECOMMENDED to provide the definitions as they enable machine-readable use cases.
|
|
1363
1451
|
* If the definitions are added or changed, the `version` MUST be incremented.
|
|
@@ -1506,7 +1594,7 @@ export interface EventResourceDefinition {
|
|
|
1506
1594
|
/**
|
|
1507
1595
|
* Type of the event resource definition
|
|
1508
1596
|
*/
|
|
1509
|
-
type: (string | "asyncapi-v2" | "sap-csn-interop-effective-v1" | "custom") & string;
|
|
1597
|
+
type: (string | "asyncapi-v2" | "sap-csn-interop-effective-v1" | "ord:overlay:v1" | "custom") & string;
|
|
1510
1598
|
/**
|
|
1511
1599
|
* If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.
|
|
1512
1600
|
*
|
|
@@ -1528,7 +1616,8 @@ export interface EventResourceDefinition {
|
|
|
1528
1616
|
/**
|
|
1529
1617
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
1530
1618
|
*
|
|
1531
|
-
* 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).
|
|
1532
1621
|
*/
|
|
1533
1622
|
url: string;
|
|
1534
1623
|
/**
|
|
@@ -1555,6 +1644,22 @@ export interface EventResourceDefinition {
|
|
|
1555
1644
|
* in case that some metadata must only be made accessible to internal consumers.
|
|
1556
1645
|
*/
|
|
1557
1646
|
visibility?: "public" | "internal" | "private";
|
|
1647
|
+
/**
|
|
1648
|
+
* Describes the intended purpose or role of this resource definition.
|
|
1649
|
+
*
|
|
1650
|
+
* While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
|
|
1651
|
+
* This allows multiple definitions of the same type to coexist when they serve different purposes.
|
|
1652
|
+
*
|
|
1653
|
+
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
1654
|
+
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
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
|
+
*
|
|
1660
|
+
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
1661
|
+
*/
|
|
1662
|
+
purpose?: (string | "ord:ai-enrichment") & string;
|
|
1558
1663
|
}
|
|
1559
1664
|
/**
|
|
1560
1665
|
* Describes the compatibility of the Event with other Events. This can be used to express that an Event is compatible with another Event version.
|
|
@@ -1629,6 +1734,14 @@ export interface EntityType {
|
|
|
1629
1734
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
1630
1735
|
*/
|
|
1631
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;
|
|
1632
1745
|
/**
|
|
1633
1746
|
* Defines which Package the resource is part of.
|
|
1634
1747
|
*
|
|
@@ -1647,14 +1760,22 @@ export interface EntityType {
|
|
|
1647
1760
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
1648
1761
|
*
|
|
1649
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).
|
|
1650
1767
|
*/
|
|
1651
1768
|
partOfGroups?: string[];
|
|
1652
1769
|
/**
|
|
1653
|
-
* List of products
|
|
1770
|
+
* List of products this package and its resources are a part of.
|
|
1654
1771
|
*
|
|
1655
1772
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
1656
1773
|
*
|
|
1657
|
-
* `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.
|
|
1658
1779
|
*
|
|
1659
1780
|
* @minItems 0
|
|
1660
1781
|
*/
|
|
@@ -1666,13 +1787,13 @@ export interface EntityType {
|
|
|
1666
1787
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
1667
1788
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
1668
1789
|
*
|
|
1669
|
-
* 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.
|
|
1670
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.
|
|
1671
1792
|
*
|
|
1672
1793
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
1673
1794
|
* The `version` MUST not be bumped for changes in extensions.
|
|
1674
1795
|
*
|
|
1675
|
-
* The general [Version and Lifecycle](../
|
|
1796
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
1676
1797
|
*
|
|
1677
1798
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
1678
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.
|
|
@@ -1708,7 +1829,7 @@ export interface EntityType {
|
|
|
1708
1829
|
*
|
|
1709
1830
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
1710
1831
|
*
|
|
1711
|
-
* See [Lifecycle](../
|
|
1832
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
1712
1833
|
*/
|
|
1713
1834
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
1714
1835
|
/**
|
|
@@ -1743,7 +1864,7 @@ export interface EntityType {
|
|
|
1743
1864
|
/**
|
|
1744
1865
|
* Defining the abstraction level of the entity type using the DDD terminology.
|
|
1745
1866
|
*
|
|
1746
|
-
* 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.
|
|
1747
1868
|
* There are root entities which may contain further sub entities by composition.
|
|
1748
1869
|
* The complete "package" is then called an aggregate, which gets its name and identity from the root entity.
|
|
1749
1870
|
* An aggregate is a cluster of domain objects that can be treated as a single unit.
|
|
@@ -1759,6 +1880,10 @@ export interface EntityType {
|
|
|
1759
1880
|
* Usually this happens if there are similar conceptual entity types across different namespaces.
|
|
1760
1881
|
*/
|
|
1761
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[];
|
|
1762
1887
|
/**
|
|
1763
1888
|
* Generic Links with arbitrary meaning and content.
|
|
1764
1889
|
*/
|
|
@@ -1831,6 +1956,68 @@ export interface RelatedEntityType {
|
|
|
1831
1956
|
*/
|
|
1832
1957
|
relationType?: (string | "part-of" | "can-share-identity") & string;
|
|
1833
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
|
+
}
|
|
1834
2021
|
/**
|
|
1835
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.
|
|
1836
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).
|
|
@@ -1896,6 +2083,14 @@ export interface Capability {
|
|
|
1896
2083
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
1897
2084
|
*/
|
|
1898
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;
|
|
1899
2094
|
/**
|
|
1900
2095
|
* Defines which Package the resource is part of.
|
|
1901
2096
|
*
|
|
@@ -1914,6 +2109,10 @@ export interface Capability {
|
|
|
1914
2109
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
1915
2110
|
*
|
|
1916
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).
|
|
1917
2116
|
*/
|
|
1918
2117
|
partOfGroups?: string[];
|
|
1919
2118
|
/**
|
|
@@ -1923,13 +2122,13 @@ export interface Capability {
|
|
|
1923
2122
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
1924
2123
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
1925
2124
|
*
|
|
1926
|
-
* 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.
|
|
1927
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.
|
|
1928
2127
|
*
|
|
1929
2128
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
1930
2129
|
* The `version` MUST not be bumped for changes in extensions.
|
|
1931
2130
|
*
|
|
1932
|
-
* The general [Version and Lifecycle](../
|
|
2131
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
1933
2132
|
*
|
|
1934
2133
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
1935
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.
|
|
@@ -1965,7 +2164,7 @@ export interface Capability {
|
|
|
1965
2164
|
*
|
|
1966
2165
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
1967
2166
|
*
|
|
1968
|
-
* See [Lifecycle](../
|
|
2167
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
1969
2168
|
*/
|
|
1970
2169
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
1971
2170
|
/**
|
|
@@ -2016,8 +2215,10 @@ export interface Capability {
|
|
|
2016
2215
|
* See also [Resource Definitions](../index.md#resource-definitions) for more context.
|
|
2017
2216
|
*
|
|
2018
2217
|
* Each definition is to be understood as an alternative description format, describing the same resource / capability.
|
|
2019
|
-
*
|
|
2020
|
-
*
|
|
2218
|
+
* The combination of `type` (or `customType` for `type: "custom"`), `purpose`, and `visibility` MUST be unique within the list.
|
|
2219
|
+
*
|
|
2220
|
+
* A definition without a `purpose` is considered the primary/default definition for its type.
|
|
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).
|
|
2021
2222
|
*
|
|
2022
2223
|
* It is RECOMMENDED to provide the definitions as they enable machine-readable use cases.
|
|
2023
2224
|
* If the definitions are added or changed, the `version` MUST be incremented.
|
|
@@ -2098,7 +2299,8 @@ export interface CapabilityDefinition {
|
|
|
2098
2299
|
/**
|
|
2099
2300
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
2100
2301
|
*
|
|
2101
|
-
* 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).
|
|
2102
2304
|
*/
|
|
2103
2305
|
url: string;
|
|
2104
2306
|
/**
|
|
@@ -2125,6 +2327,22 @@ export interface CapabilityDefinition {
|
|
|
2125
2327
|
* in case that some metadata must only be made accessible to internal consumers.
|
|
2126
2328
|
*/
|
|
2127
2329
|
visibility?: "public" | "internal" | "private";
|
|
2330
|
+
/**
|
|
2331
|
+
* Describes the intended purpose or role of this resource definition.
|
|
2332
|
+
*
|
|
2333
|
+
* While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
|
|
2334
|
+
* This allows multiple definitions of the same type to coexist when they serve different purposes.
|
|
2335
|
+
*
|
|
2336
|
+
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
2337
|
+
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
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
|
+
*
|
|
2343
|
+
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
2344
|
+
*/
|
|
2345
|
+
purpose?: (string | "ord:ai-enrichment") & string;
|
|
2128
2346
|
}
|
|
2129
2347
|
/**
|
|
2130
2348
|
* 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).
|
|
@@ -2177,6 +2395,14 @@ export interface DataProduct {
|
|
|
2177
2395
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
2178
2396
|
*/
|
|
2179
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;
|
|
2180
2406
|
/**
|
|
2181
2407
|
* Defines which Package the resource is part of.
|
|
2182
2408
|
*
|
|
@@ -2195,6 +2421,10 @@ export interface DataProduct {
|
|
|
2195
2421
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
2196
2422
|
*
|
|
2197
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).
|
|
2198
2428
|
*/
|
|
2199
2429
|
partOfGroups?: string[];
|
|
2200
2430
|
/**
|
|
@@ -2202,7 +2432,11 @@ export interface DataProduct {
|
|
|
2202
2432
|
*
|
|
2203
2433
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
2204
2434
|
*
|
|
2205
|
-
* `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.
|
|
2206
2440
|
*
|
|
2207
2441
|
* @minItems 0
|
|
2208
2442
|
*/
|
|
@@ -2214,13 +2448,13 @@ export interface DataProduct {
|
|
|
2214
2448
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
2215
2449
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
2216
2450
|
*
|
|
2217
|
-
* 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.
|
|
2218
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.
|
|
2219
2453
|
*
|
|
2220
2454
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
2221
2455
|
* The `version` MUST not be bumped for changes in extensions.
|
|
2222
2456
|
*
|
|
2223
|
-
* The general [Version and Lifecycle](../
|
|
2457
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
2224
2458
|
*
|
|
2225
2459
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
2226
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.
|
|
@@ -2478,7 +2712,7 @@ export interface DataProductLink {
|
|
|
2478
2712
|
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the Data Product Link.
|
|
2479
2713
|
*
|
|
2480
2714
|
* The link target SHOULD be absolute and SHOULD be openly accessible.
|
|
2481
|
-
* 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).
|
|
2482
2716
|
*/
|
|
2483
2717
|
url: string;
|
|
2484
2718
|
}
|
|
@@ -2537,6 +2771,14 @@ export interface Agent {
|
|
|
2537
2771
|
* Detailed documentation SHOULD be attached as (typed) links.
|
|
2538
2772
|
*/
|
|
2539
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;
|
|
2540
2782
|
/**
|
|
2541
2783
|
* Defines which Package the resource is part of.
|
|
2542
2784
|
*
|
|
@@ -2555,6 +2797,10 @@ export interface Agent {
|
|
|
2555
2797
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
2556
2798
|
*
|
|
2557
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).
|
|
2558
2804
|
*/
|
|
2559
2805
|
partOfGroups?: string[];
|
|
2560
2806
|
/**
|
|
@@ -2564,13 +2810,13 @@ export interface Agent {
|
|
|
2564
2810
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
2565
2811
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
2566
2812
|
*
|
|
2567
|
-
* 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.
|
|
2568
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.
|
|
2569
2815
|
*
|
|
2570
2816
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
2571
2817
|
* The `version` MUST not be bumped for changes in extensions.
|
|
2572
2818
|
*
|
|
2573
|
-
* The general [Version and Lifecycle](../
|
|
2819
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
2574
2820
|
*
|
|
2575
2821
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
2576
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.
|
|
@@ -2606,7 +2852,7 @@ export interface Agent {
|
|
|
2606
2852
|
*
|
|
2607
2853
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
2608
2854
|
*
|
|
2609
|
-
* See [Lifecycle](../
|
|
2855
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
2610
2856
|
*/
|
|
2611
2857
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
2612
2858
|
/**
|
|
@@ -2630,11 +2876,15 @@ export interface Agent {
|
|
|
2630
2876
|
*/
|
|
2631
2877
|
minSystemVersion?: string;
|
|
2632
2878
|
/**
|
|
2633
|
-
* List of products
|
|
2879
|
+
* List of products this package and its resources are a part of.
|
|
2634
2880
|
*
|
|
2635
2881
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
2636
2882
|
*
|
|
2637
|
-
* `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.
|
|
2638
2888
|
*
|
|
2639
2889
|
* @minItems 0
|
|
2640
2890
|
*/
|
|
@@ -2748,6 +2998,188 @@ export interface ExposedAPIResource {
|
|
|
2748
2998
|
*/
|
|
2749
2999
|
ordId: string;
|
|
2750
3000
|
}
|
|
3001
|
+
/**
|
|
3002
|
+
* An Overlay Resource is a standalone, versioned resource that references a metadata patch file.
|
|
3003
|
+
* 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.
|
|
3004
|
+
*
|
|
3005
|
+
* 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.
|
|
3006
|
+
* 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`.
|
|
3007
|
+
*/
|
|
3008
|
+
export interface Overlay {
|
|
3009
|
+
/**
|
|
3010
|
+
* The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
|
|
3011
|
+
*
|
|
3012
|
+
* It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
|
|
3013
|
+
*/
|
|
3014
|
+
ordId: string;
|
|
3015
|
+
/**
|
|
3016
|
+
* Human-readable title.
|
|
3017
|
+
*
|
|
3018
|
+
* MUST NOT exceed 255 chars.
|
|
3019
|
+
* MUST NOT contain line breaks.
|
|
3020
|
+
*/
|
|
3021
|
+
title?: string;
|
|
3022
|
+
/**
|
|
3023
|
+
* Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).
|
|
3024
|
+
*
|
|
3025
|
+
* The description SHOULD not be excessive in length and is not meant to provide full documentation.
|
|
3026
|
+
* Detailed documentation SHOULD be attached as (typed) links.
|
|
3027
|
+
*/
|
|
3028
|
+
description?: string;
|
|
3029
|
+
/**
|
|
3030
|
+
* The complete [SemVer](https://semver.org/) version string.
|
|
3031
|
+
*
|
|
3032
|
+
* It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
|
|
3033
|
+
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
3034
|
+
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
3035
|
+
*
|
|
3036
|
+
* When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment SHOULD be updated to be identical.
|
|
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.
|
|
3038
|
+
*
|
|
3039
|
+
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
3040
|
+
* The `version` MUST not be bumped for changes in extensions.
|
|
3041
|
+
*
|
|
3042
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
3043
|
+
*
|
|
3044
|
+
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
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.
|
|
3046
|
+
*/
|
|
3047
|
+
version: string;
|
|
3048
|
+
/**
|
|
3049
|
+
* Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.
|
|
3050
|
+
*
|
|
3051
|
+
* The date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).
|
|
3052
|
+
*
|
|
3053
|
+
* When retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.
|
|
3054
|
+
* Therefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.
|
|
3055
|
+
*
|
|
3056
|
+
* 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.
|
|
3057
|
+
*
|
|
3058
|
+
* Together with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.
|
|
3059
|
+
*/
|
|
3060
|
+
lastUpdate?: string;
|
|
3061
|
+
/**
|
|
3062
|
+
* Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.
|
|
3063
|
+
*
|
|
3064
|
+
* This controls who can see that the resource exists and retrieve its metadata level information.
|
|
3065
|
+
* It does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.
|
|
3066
|
+
*
|
|
3067
|
+
* Use this to prevent exposing internal implementation details to inappropriate consumer audiences.
|
|
3068
|
+
*/
|
|
3069
|
+
visibility: "public" | "internal" | "private";
|
|
3070
|
+
/**
|
|
3071
|
+
* Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).
|
|
3072
|
+
*
|
|
3073
|
+
* This indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk
|
|
3074
|
+
* of depending on the resource and whether it's suitable for production use.
|
|
3075
|
+
*
|
|
3076
|
+
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
3077
|
+
*
|
|
3078
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
3079
|
+
*/
|
|
3080
|
+
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
3081
|
+
/**
|
|
3082
|
+
* Optional list of API Resources whose definition files this overlay patches.
|
|
3083
|
+
*
|
|
3084
|
+
* SHOULD be provided when the target resource is described in an ORD document accessible to the same aggregator,
|
|
3085
|
+
* as it enables efficient indexing without requiring the aggregator to parse each overlay file.
|
|
3086
|
+
* Use `relationType: ord:patches` to express the patching relationship.
|
|
3087
|
+
*
|
|
3088
|
+
* May be omitted when the target resource is not described in an accessible ORD document,
|
|
3089
|
+
* or when the overlay is cross-cutting and patches resources from multiple providers.
|
|
3090
|
+
*/
|
|
3091
|
+
relatedApiResources?: RelatedAPIResource[];
|
|
3092
|
+
/**
|
|
3093
|
+
* Optional list of Event Resources whose definition files this overlay patches.
|
|
3094
|
+
*
|
|
3095
|
+
* SHOULD be provided when the target resource is described in an ORD document accessible to the same aggregator,
|
|
3096
|
+
* as it enables efficient indexing without requiring the aggregator to parse each overlay file.
|
|
3097
|
+
* Use `relationType: ord:patches` to express the patching relationship.
|
|
3098
|
+
*
|
|
3099
|
+
* May be omitted when the target resource is not described in an accessible ORD document,
|
|
3100
|
+
* or when the overlay is cross-cutting and patches resources from multiple providers.
|
|
3101
|
+
*/
|
|
3102
|
+
relatedEventResources?: RelatedEventResource[];
|
|
3103
|
+
/**
|
|
3104
|
+
* List of overlay definition files referenced by this ORD Overlay Resource.
|
|
3105
|
+
* Each entry points to an ORD Overlay document (`type: ord:overlay:v1`) that contains the actual patches.
|
|
3106
|
+
*/
|
|
3107
|
+
definitions?: OverlayDefinition[];
|
|
3108
|
+
/**
|
|
3109
|
+
* List of free text style tags.
|
|
3110
|
+
* No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
|
|
3111
|
+
*
|
|
3112
|
+
* Tags that are assigned to a `Package` are inherited to all of the ORD resources it contains.
|
|
3113
|
+
*/
|
|
3114
|
+
tags?: string[];
|
|
3115
|
+
labels?: Labels;
|
|
3116
|
+
}
|
|
3117
|
+
/**
|
|
3118
|
+
* Link to a machine-readable [ORD Overlay](../../spec-v1/interfaces/OrdOverlay) document.
|
|
3119
|
+
*/
|
|
3120
|
+
export interface OverlayDefinition {
|
|
3121
|
+
/**
|
|
3122
|
+
* Type of the overlay definition
|
|
3123
|
+
*/
|
|
3124
|
+
type: ("ord:overlay:v1" | string) & string;
|
|
3125
|
+
/**
|
|
3126
|
+
* The [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) of the definition serialization format.
|
|
3127
|
+
* A consuming application can use this information to know which file format parser it needs to use.
|
|
3128
|
+
* For example, for OpenAPI 3, it's valid to express the same definition in both YAML and JSON.
|
|
3129
|
+
*
|
|
3130
|
+
* If no Media Type is registered for the referenced file,
|
|
3131
|
+
* `text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.
|
|
3132
|
+
*
|
|
3133
|
+
*/
|
|
3134
|
+
mediaType: string;
|
|
3135
|
+
/**
|
|
3136
|
+
* [URL reference](https://tools.ietf.org/html/rfc3986#section-4.1) (URL or relative reference) to the resource definition file.
|
|
3137
|
+
*
|
|
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).
|
|
3140
|
+
*/
|
|
3141
|
+
url: string;
|
|
3142
|
+
/**
|
|
3143
|
+
* List of supported access strategies for retrieving metadata from the ORD provider.
|
|
3144
|
+
* An ORD Consumer/ORD Aggregator MAY choose any of the strategies.
|
|
3145
|
+
*
|
|
3146
|
+
* The access strategies only apply to the metadata access and not the actual API access.
|
|
3147
|
+
* The actual access to the APIs for clients is described via Consumption Bundles.
|
|
3148
|
+
*
|
|
3149
|
+
* If this property is not provided, the definition URL will be available through the same access strategy as this ORD document.
|
|
3150
|
+
* It is RECOMMENDED anyway that the attached metadata definitions are available with the same access strategies, to simplify the aggregator crawling process.
|
|
3151
|
+
*
|
|
3152
|
+
* @minItems 1
|
|
3153
|
+
*/
|
|
3154
|
+
accessStrategies?: [MetadataDefinitionAccessStrategy, ...MetadataDefinitionAccessStrategy[]];
|
|
3155
|
+
/**
|
|
3156
|
+
* The visibility states who is allowed to "see" and access the resource definition, in case it differs from the resource visibility.
|
|
3157
|
+
*
|
|
3158
|
+
* If not given, the resource definition has the same visibility as the resource it describes.
|
|
3159
|
+
* The visibility of a resource definition MUST be lower (more restrictive) than the visibility of the resource it describes.
|
|
3160
|
+
* 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.
|
|
3161
|
+
*
|
|
3162
|
+
* This makes it also possible to provide both a public and an internal metadata description of the resource,
|
|
3163
|
+
* in case that some metadata must only be made accessible to internal consumers.
|
|
3164
|
+
*/
|
|
3165
|
+
visibility?: "public" | "internal" | "private";
|
|
3166
|
+
/**
|
|
3167
|
+
* Describes the intended purpose or role of this resource definition.
|
|
3168
|
+
*
|
|
3169
|
+
* While `type` specifies the format (e.g., OpenAPI, AsyncAPI), `purpose` indicates what the definition is used for.
|
|
3170
|
+
* This allows multiple definitions of the same type to coexist when they serve different purposes.
|
|
3171
|
+
*
|
|
3172
|
+
* For example, an API Resource might have multiple OpenAPI definitions:
|
|
3173
|
+
* one for standard API documentation and another specifically enriched for AI/agent consumption.
|
|
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
|
+
*
|
|
3179
|
+
* MUST be a valid [Concept ID](../index.md#concept-id).
|
|
3180
|
+
*/
|
|
3181
|
+
purpose?: (string | "ord:ai-enrichment") & string;
|
|
3182
|
+
}
|
|
2751
3183
|
/**
|
|
2752
3184
|
* 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
3185
|
* 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.
|
|
@@ -2833,6 +3265,10 @@ export interface IntegrationDependency {
|
|
|
2833
3265
|
* If an "identity / equals" relationship needs to be expressed, use the `correlationIds` instead.
|
|
2834
3266
|
*
|
|
2835
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).
|
|
2836
3272
|
*/
|
|
2837
3273
|
partOfGroups?: string[];
|
|
2838
3274
|
/**
|
|
@@ -2842,13 +3278,13 @@ export interface IntegrationDependency {
|
|
|
2842
3278
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
2843
3279
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
2844
3280
|
*
|
|
2845
|
-
* 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.
|
|
2846
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.
|
|
2847
3283
|
*
|
|
2848
3284
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
2849
3285
|
* The `version` MUST not be bumped for changes in extensions.
|
|
2850
3286
|
*
|
|
2851
|
-
* The general [Version and Lifecycle](../
|
|
3287
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
2852
3288
|
*
|
|
2853
3289
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
2854
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.
|
|
@@ -2884,7 +3320,7 @@ export interface IntegrationDependency {
|
|
|
2884
3320
|
*
|
|
2885
3321
|
* Note: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.
|
|
2886
3322
|
*
|
|
2887
|
-
* See [Lifecycle](../
|
|
3323
|
+
* See [Lifecycle](../concepts/versioning-and-lifecycle.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.
|
|
2888
3324
|
*/
|
|
2889
3325
|
releaseStatus: "development" | "beta" | "active" | "deprecated" | "sunset";
|
|
2890
3326
|
/**
|
|
@@ -2996,15 +3432,23 @@ export interface ApiResourceIntegrationAspect {
|
|
|
2996
3432
|
*/
|
|
2997
3433
|
minVersion?: string;
|
|
2998
3434
|
/**
|
|
2999
|
-
*
|
|
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).
|
|
3000
3441
|
*/
|
|
3001
3442
|
subset?: APIResourceIntegrationAspectSubset[];
|
|
3002
3443
|
}
|
|
3003
3444
|
/**
|
|
3004
|
-
* 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.
|
|
3005
3446
|
*
|
|
3006
3447
|
* For APIs, this is a list of the operations or tools that need to be available in order to make the integration work.
|
|
3007
|
-
*
|
|
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).
|
|
3008
3452
|
*/
|
|
3009
3453
|
export interface APIResourceIntegrationAspectSubset {
|
|
3010
3454
|
/**
|
|
@@ -3262,13 +3706,13 @@ export interface Package {
|
|
|
3262
3706
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
3263
3707
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
3264
3708
|
*
|
|
3265
|
-
* 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.
|
|
3266
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.
|
|
3267
3711
|
*
|
|
3268
3712
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
3269
3713
|
* The `version` MUST not be bumped for changes in extensions.
|
|
3270
3714
|
*
|
|
3271
|
-
* The general [Version and Lifecycle](../
|
|
3715
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
3272
3716
|
*
|
|
3273
3717
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
3274
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.
|
|
@@ -3339,11 +3783,15 @@ export interface Package {
|
|
|
3339
3783
|
*/
|
|
3340
3784
|
vendor: string;
|
|
3341
3785
|
/**
|
|
3342
|
-
* List of products
|
|
3786
|
+
* List of products this package and its resources are a part of.
|
|
3343
3787
|
*
|
|
3344
3788
|
* MUST be a valid reference to a [Product](#product) ORD ID.
|
|
3345
3789
|
*
|
|
3346
|
-
* `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.
|
|
3347
3795
|
*
|
|
3348
3796
|
* @minItems 0
|
|
3349
3797
|
*/
|
|
@@ -3424,7 +3872,7 @@ export interface File {
|
|
|
3424
3872
|
* [URL](https://tools.ietf.org/html/rfc3986) of the link.
|
|
3425
3873
|
*
|
|
3426
3874
|
* The file target MAY be relative or absolute.
|
|
3427
|
-
* 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).
|
|
3428
3876
|
* If an absolute URL is given, then it MUST be openly accessible.
|
|
3429
3877
|
*/
|
|
3430
3878
|
url: string;
|
|
@@ -3512,13 +3960,13 @@ export interface ConsumptionBundle {
|
|
|
3512
3960
|
* It SHOULD be changed if the ORD information or referenced resource definitions changed.
|
|
3513
3961
|
* It SHOULD express minor and patch changes that don't lead to incompatible changes.
|
|
3514
3962
|
*
|
|
3515
|
-
* 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.
|
|
3516
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.
|
|
3517
3965
|
*
|
|
3518
3966
|
* If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
|
|
3519
3967
|
* The `version` MUST not be bumped for changes in extensions.
|
|
3520
3968
|
*
|
|
3521
|
-
* The general [Version and Lifecycle](../
|
|
3969
|
+
* The general [Version and Lifecycle](../concepts/versioning-and-lifecycle.md) flow MUST be followed.
|
|
3522
3970
|
*
|
|
3523
3971
|
* Note: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.
|
|
3524
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.
|
|
@@ -3663,6 +4111,12 @@ export interface Group {
|
|
|
3663
4111
|
* This relationship does not imply inheritance, but can be interpreted as such for specific group types and scenarios.
|
|
3664
4112
|
*/
|
|
3665
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";
|
|
3666
4120
|
[k: string]: unknown | undefined;
|
|
3667
4121
|
}
|
|
3668
4122
|
/**
|
|
@@ -3708,6 +4162,12 @@ export interface GroupType {
|
|
|
3708
4162
|
* This relationship does not imply inheritance, but can be interpreted as such for specific group types and scenarios.
|
|
3709
4163
|
*/
|
|
3710
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";
|
|
3711
4171
|
[k: string]: unknown | undefined;
|
|
3712
4172
|
}
|
|
3713
4173
|
/**
|