@open-resource-discovery/specification 1.9.11 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  [![REUSE status](https://api.reuse.software/badge/github.com/open-resource-discovery/specification)](https://api.reuse.software/info/github.com/open-resource-discovery/specification)
2
+ <a href="https://www.npmjs.com/package/@open-resource-discovery/specification"><img src="https://img.shields.io/npm/v/@open-resource-discovery/specification" alt="NPM package"></a>
2
3
 
3
4
  # Open Resource Discovery Specification
4
5
 
@@ -47,7 +48,7 @@ For detailed and recent changes, please refer to the [CHANGELOG.md](CHANGELOG.md
47
48
  ## Acknowledgements
48
49
 
49
50
  - The original idea for ORD came from Harsh Jegadeesan and Divya Mary.
50
- - The currently active core-contributors to the spec are: [Simon Heimler](https://github.com/Fannon), [Sebastian Wennemers](https://github.com/swennemers), [Steffen Göbel](https://github.com/steffengoebel), [Ralf Hofmann](https://github.com/ormos), [Kiril Kabakchiev](https://github.com/KirilKabakchiev), [Nikolay Mateev](https://github.com/NickyMateev), [Bibin Thomas](https://github.com/Bibin-T) and others.
51
+ - The currently active core-contributors to the spec are: [Simon Heimler](https://github.com/Fannon), [Sebastian Wennemers](https://github.com/swennemers), [Pavel Kornev](https://github.com/pavelkornev), [Steffen Göbel](https://github.com/steffengoebel), [Ralf Hofmann](https://github.com/ormos), [Kiril Kabakchiev](https://github.com/KirilKabakchiev), [Nikolay Mateev](https://github.com/NickyMateev), [Bibin Thomas](https://github.com/Bibin-T) and others.
51
52
 
52
53
  ## License
53
54
 
@@ -17,7 +17,7 @@ export interface ORDDocument {
17
17
  /**
18
18
  * Version of the Open Resource Discovery specification that is used to describe this document.
19
19
  */
20
- openResourceDiscovery: "1.0" | "1.1" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.7" | "1.8" | "1.9";
20
+ openResourceDiscovery: "1.0" | "1.1" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.7" | "1.8" | "1.9" | "1.10";
21
21
  /**
22
22
  * Optional description of the ORD document itself.
23
23
  * Please note that this information is NOT further processed or considered by an ORD aggregator.
@@ -26,6 +26,8 @@ export interface ORDDocument {
26
26
  */
27
27
  description?: string;
28
28
  describedSystemInstance?: SystemInstance;
29
+ describedSystemType?: SystemType;
30
+ describedSystemVersion?: SystemVersion;
29
31
  /**
30
32
  * The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.
31
33
  * Depending on the chosen policy level, additional expectations and validations rules will be applied.
@@ -108,8 +110,9 @@ export interface ORDDocument {
108
110
  tombstones?: Tombstone[];
109
111
  }
110
112
  /**
111
- * A **system instance** is a concrete, running instance of a system type.
112
- * In a multi-tenant system, this corresponds to a tenant.
113
+ * A [system instance](../index.md#def-system-instance) is a concrete, running instance of a system type.
114
+ * In a multi-tenant system, it corresponds to a tenant.
115
+ * In a single-tenant system, it corresponds to the [system installation](../index.md#def-system-deployment) itself.
113
116
  */
114
117
  export interface SystemInstance {
115
118
  /**
@@ -138,6 +141,8 @@ export interface SystemInstance {
138
141
  * MUST be a valid [Correlation ID](../index.md#correlation-id).
139
142
  */
140
143
  correlationIds?: string[];
144
+ labels?: Labels;
145
+ documentationLabels?: DocumentationLabels;
141
146
  /**
142
147
  * List of free text style tags.
143
148
  * No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
@@ -145,8 +150,6 @@ export interface SystemInstance {
145
150
  * Tags that are assigned to a `Package` are inherited to all of the ORD resources it contains.
146
151
  */
147
152
  tags?: string[];
148
- labels?: Labels;
149
- documentationLabels?: DocumentationLabels;
150
153
  }
151
154
  /**
152
155
  * Generic labels that can be applied to most ORD information.
@@ -193,6 +196,70 @@ export interface DocumentationLabels {
193
196
  */
194
197
  [k: string]: string[];
195
198
  }
199
+ /**
200
+ * A [system type](../index.md#def-system-type) is the abstract type of an application or service, from operational perspective.
201
+ */
202
+ export interface SystemType {
203
+ /**
204
+ * The system namespace is a unique identifier for the system type.
205
+ * It is used to reference the system type in the ORD.
206
+ */
207
+ systemNamespace?: string;
208
+ /**
209
+ * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
210
+ *
211
+ * They express an "identity" / "equals" / "mappable" relationship to the target ID.
212
+ *
213
+ * If a "part of" relationship needs to be expressed, use the `partOfGroups` assignment instead.
214
+ *
215
+ * MUST be a valid [Correlation ID](../index.md#correlation-id).
216
+ */
217
+ correlationIds?: string[];
218
+ labels?: Labels;
219
+ documentationLabels?: DocumentationLabels;
220
+ /**
221
+ * List of free text style tags.
222
+ * No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
223
+ *
224
+ * Tags that are assigned to a `Package` are inherited to all of the ORD resources it contains.
225
+ */
226
+ tags?: string[];
227
+ }
228
+ /**
229
+ * A [system version](../index.md#def-system-version) states the design-time version / release of a [system instance](../index.md#def-system-instance).
230
+ * It provides versioning for operational purposes for the [system type](../index.md#def-system-type).
231
+ */
232
+ export interface SystemVersion {
233
+ /**
234
+ * The version number of the system instance (run-time) or the version of the described static system type.
235
+ *
236
+ * It MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.
237
+ */
238
+ version?: string;
239
+ /**
240
+ * Human-readable title of the system version.
241
+ */
242
+ title?: string;
243
+ /**
244
+ * Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).
245
+ *
246
+ * They express an "identity" / "equals" / "mappable" relationship to the target ID.
247
+ *
248
+ * If a "part of" relationship needs to be expressed, use the `partOfGroups` assignment instead.
249
+ *
250
+ * MUST be a valid [Correlation ID](../index.md#correlation-id).
251
+ */
252
+ correlationIds?: string[];
253
+ labels?: Labels;
254
+ documentationLabels?: DocumentationLabels;
255
+ /**
256
+ * List of free text style tags.
257
+ * No special characters are allowed except `-`, `_`, `.`, `/` and ` `.
258
+ *
259
+ * Tags that are assigned to a `Package` are inherited to all of the ORD resources it contains.
260
+ */
261
+ tags?: string[];
262
+ }
196
263
  /**
197
264
  * The API Resource provides a high-level description of an exposed API.
198
265
  * You can find more information, such as the API resource definitions, in the links in the table below.
@@ -210,15 +277,17 @@ export interface DocumentationLabels {
210
277
  */
211
278
  export interface APIResource {
212
279
  /**
213
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
280
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
214
281
  *
215
282
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
216
283
  */
217
284
  ordId: string;
218
285
  /**
219
- * Local ID, as known by the described system.
286
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
287
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
220
288
  *
221
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
289
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
290
+ * 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.
222
291
  */
223
292
  localId?: string;
224
293
  /**
@@ -298,7 +367,7 @@ export interface APIResource {
298
367
  */
299
368
  defaultConsumptionBundle?: string;
300
369
  /**
301
- * List of products this resource is a part of.
370
+ * List of products the resources of the package are a part of.
302
371
  *
303
372
  * MUST be a valid reference to a [Product](#product) ORD ID.
304
373
  *
@@ -314,7 +383,7 @@ export interface APIResource {
314
383
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
315
384
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
316
385
  *
317
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
386
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
318
387
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
319
388
  *
320
389
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
@@ -360,6 +429,11 @@ export interface APIResource {
360
429
  *
361
430
  */
362
431
  disabled?: boolean;
432
+ /**
433
+ * The resource has been introduced in the given [system version](../index.md#def-system-version).
434
+ * This implies that the resource is only available if the system instance is of at least that system version.
435
+ */
436
+ minSystemVersion?: string;
363
437
  /**
364
438
  * The deprecation date defines when the resource has been set as deprecated.
365
439
  * This is not to be confused with the `sunsetDate` which defines when the resource will be actually decommissioned / removed.
@@ -441,7 +515,7 @@ export interface APIResource {
441
515
  *
442
516
  * All APIs that share the same implementation standard MAY be treated the same or similar by a consumer client.
443
517
  */
444
- implementationStandard?: "sap:ord-document-api:v1" | "cff:open-service-broker:v2" | "sap:csn-exposure:v1" | "sap:ape-api:v1" | "sap:cdi-api:v1" | "sap:delta-sharing:v1" | "sap:hana-cloud-sql:v1" | "custom";
518
+ implementationStandard?: "sap:ord-document-api:v1" | "cff:open-service-broker:v2" | "sap:csn-exposure:v1" | "sap:ape-api:v1" | "sap:cdi-api:v1" | "sap:delta-sharing:v1" | "sap:hana-cloud-sql:v1" | "sap.dp:data-subscription-api:v1" | "custom";
445
519
  /**
446
520
  * If the fixed `implementationStandard` values need to be extended, an arbitrary `customImplementationStandard` can be provided.
447
521
  *
@@ -458,6 +532,15 @@ export interface APIResource {
458
532
  * SHOULD contain documentation and links that describe the used standard.
459
533
  */
460
534
  customImplementationStandardDescription?: string;
535
+ /**
536
+ * Declares this API is a compatible implementation of the referenced API contract(s).
537
+ * This is also sometimes known as [Service Provider Interface](https://en.wikipedia.org/wiki/Service_provider_interface).
538
+ *
539
+ * MUST be a valid reference to an (usually external) [API Resource](#api-resource) ORD ID.
540
+ *
541
+ * All APIs that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.
542
+ */
543
+ compatibleWith?: string[];
461
544
  /**
462
545
  * Contains typically the organization that is responsible in the sense of RACI matrix for this ORD resource. This includes support and feature requests. It is maintained as correlation id to for example support components.
463
546
  */
@@ -697,7 +780,7 @@ export interface AccessStrategy {
697
780
  * As a consequence, there are different types of selectors that are specialized toward certain resource definition formats.
698
781
  *
699
782
  * The target of the mapping is a correlation to an entity type via a [Correlation ID](../../#/v1/README?id=correlation-id)
700
- * or to an [ORD ID] of an entity type.
783
+ * or to an [ORD ID](../../spec-v1/#ord-id) of an entity type.
701
784
  * It is assumed that the entity types are described in more detail or on a different abstraction level via metadata.
702
785
  * When the correlation ID is used, an ORD consumer may need to know how to access the entity type metadata through conventions.
703
786
  * This can be determined either by the namespace of the correlation ID,
@@ -707,7 +790,7 @@ export interface AccessStrategy {
707
790
  * To indicate this, the service needs to be implemented and described in ORD with `implementationStandard` set to `sap:csn-exposure:v1`).
708
791
  *
709
792
  * ODM 2.0 relies on the entity type mappings and uses the the mapping to express the relationship of an API to the
710
- * corresponding ODM entity. ORD consumers like SAP Business Accelerator Hub consume the mapping to make the relationships navigatable for customers.
793
+ * corresponding ODM entity. ORD consumers like SAP Business Accelerator Hub consume the mapping to make the relationships navigate-able for customers.
711
794
  */
712
795
  export interface EntityTypeMapping {
713
796
  /**
@@ -784,7 +867,7 @@ export interface APIModelSelectorJSONPointer {
784
867
  */
785
868
  export interface EntityTypeTargetORDID {
786
869
  /**
787
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
870
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
788
871
  *
789
872
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
790
873
  */
@@ -879,15 +962,17 @@ export interface Extensible {
879
962
  */
880
963
  export interface EventResource {
881
964
  /**
882
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
965
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
883
966
  *
884
967
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
885
968
  */
886
969
  ordId: string;
887
970
  /**
888
- * Local ID, as known by the described system.
971
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
972
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
889
973
  *
890
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
974
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
975
+ * 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.
891
976
  */
892
977
  localId?: string;
893
978
  /**
@@ -967,7 +1052,7 @@ export interface EventResource {
967
1052
  */
968
1053
  defaultConsumptionBundle?: string;
969
1054
  /**
970
- * List of products this resource is a part of.
1055
+ * List of products the resources of the package are a part of.
971
1056
  *
972
1057
  * MUST be a valid reference to a [Product](#product) ORD ID.
973
1058
  *
@@ -983,7 +1068,7 @@ export interface EventResource {
983
1068
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
984
1069
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
985
1070
  *
986
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
1071
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
987
1072
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
988
1073
  *
989
1074
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
@@ -1029,6 +1114,11 @@ export interface EventResource {
1029
1114
  *
1030
1115
  */
1031
1116
  disabled?: boolean;
1117
+ /**
1118
+ * The resource has been introduced in the given [system version](../index.md#def-system-version).
1119
+ * This implies that the resource is only available if the system instance is of at least that system version.
1120
+ */
1121
+ minSystemVersion?: string;
1032
1122
  /**
1033
1123
  * The deprecation date defines when the resource has been set as deprecated.
1034
1124
  * This is not to be confused with the `sunsetDate` which defines when the resource will be actually decommissioned / removed.
@@ -1097,6 +1187,15 @@ export interface EventResource {
1097
1187
  * SHOULD contain documentation and links that describe the used standard.
1098
1188
  */
1099
1189
  customImplementationStandardDescription?: string;
1190
+ /**
1191
+ * Declares this event resource is a compatible implementation of the referenced contract.
1192
+ * This is also sometimes known as [Service Provider Interface](https://en.wikipedia.org/wiki/Service_provider_interface).
1193
+ *
1194
+ * MUST be a valid reference to an (usually external) [Event Resource](#event-resource) ORD ID.
1195
+ *
1196
+ * All event resources that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.
1197
+ */
1198
+ compatibleWith?: string[];
1100
1199
  /**
1101
1200
  * Contains typically the organization that is responsible in the sense of RACI matrix for this ORD resource. This includes support and feature requests. It is maintained as correlation id to for example support components.
1102
1201
  */
@@ -1237,15 +1336,17 @@ export interface EventResourceDefinition {
1237
1336
  */
1238
1337
  export interface EntityType {
1239
1338
  /**
1240
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
1339
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
1241
1340
  *
1242
1341
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
1243
1342
  */
1244
1343
  ordId: string;
1245
1344
  /**
1246
- * Local ID, as known by the described system.
1345
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
1346
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
1247
1347
  *
1248
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
1348
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
1349
+ * 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.
1249
1350
  */
1250
1351
  localId: string;
1251
1352
  /**
@@ -1300,7 +1401,7 @@ export interface EntityType {
1300
1401
  */
1301
1402
  partOfGroups?: string[];
1302
1403
  /**
1303
- * List of products this resource is a part of.
1404
+ * List of products the resources of the package are a part of.
1304
1405
  *
1305
1406
  * MUST be a valid reference to a [Product](#product) ORD ID.
1306
1407
  *
@@ -1316,7 +1417,7 @@ export interface EntityType {
1316
1417
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
1317
1418
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
1318
1419
  *
1319
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
1420
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
1320
1421
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
1321
1422
  *
1322
1423
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
@@ -1454,7 +1555,7 @@ export interface EntityType {
1454
1555
  */
1455
1556
  export interface RelatedEntityType {
1456
1557
  /**
1457
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
1558
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
1458
1559
  *
1459
1560
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
1460
1561
  */
@@ -1469,15 +1570,17 @@ export interface RelatedEntityType {
1469
1570
  */
1470
1571
  export interface Capability {
1471
1572
  /**
1472
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
1573
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
1473
1574
  *
1474
1575
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
1475
1576
  */
1476
1577
  ordId: string;
1477
1578
  /**
1478
- * Local ID, as known by the described system.
1579
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
1580
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
1479
1581
  *
1480
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
1582
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
1583
+ * 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.
1481
1584
  */
1482
1585
  localId?: string;
1483
1586
  /**
@@ -1550,7 +1653,7 @@ export interface Capability {
1550
1653
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
1551
1654
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
1552
1655
  *
1553
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
1656
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
1554
1657
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
1555
1658
  *
1556
1659
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
@@ -1583,6 +1686,24 @@ export interface Capability {
1583
1686
  * The `releaseStatus` specifies the stability of the resource and its external contract.
1584
1687
  */
1585
1688
  releaseStatus: "active" | "beta" | "deprecated";
1689
+ /**
1690
+ * Indicates that this resource is currently not available for consumption at runtime, but could be configured to be so.
1691
+ * This can happen either because it has not been setup for use or disabled by an admin / user.
1692
+ *
1693
+ * If the resource is not available in principle for a particular system instance, e.g. due to lack of entitlement, it MUST not be described in the system-instance aware perspective.
1694
+ *
1695
+ * This property can only reflect the knowledge of the described system instance itself.
1696
+ * Outside factors for availability can't need to be considered (e.g. network connectivity, middlewares).
1697
+ *
1698
+ * A disabled resource MAY skip describing its resource definitions.
1699
+ *
1700
+ */
1701
+ disabled?: boolean;
1702
+ /**
1703
+ * The resource has been introduced in the given [system version](../index.md#def-system-version).
1704
+ * This implies that the resource is only available if the system instance is of at least that system version.
1705
+ */
1706
+ minSystemVersion?: string;
1586
1707
  /**
1587
1708
  * Optional list of related EntityType Resources.
1588
1709
  *
@@ -1676,15 +1797,17 @@ export interface CapabilityDefinition {
1676
1797
  */
1677
1798
  export interface DataProduct {
1678
1799
  /**
1679
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
1800
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
1680
1801
  *
1681
1802
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
1682
1803
  */
1683
1804
  ordId: string;
1684
1805
  /**
1685
- * Local ID, as known by the described system.
1806
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
1807
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
1686
1808
  *
1687
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
1809
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
1810
+ * 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.
1688
1811
  */
1689
1812
  localId?: string;
1690
1813
  /**
@@ -1738,6 +1861,16 @@ export interface DataProduct {
1738
1861
  * All resources that share the same group ID assignment are effectively grouped together.
1739
1862
  */
1740
1863
  partOfGroups?: string[];
1864
+ /**
1865
+ * List of products this Data Product is a part of or is related to, its e.g. data source systems.
1866
+ *
1867
+ * MUST be a valid reference to a [Product](#product) ORD ID.
1868
+ *
1869
+ * `partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.
1870
+ *
1871
+ * @minItems 0
1872
+ */
1873
+ partOfProducts?: string[];
1741
1874
  /**
1742
1875
  * The complete [SemVer](https://semver.org/) version string.
1743
1876
  *
@@ -1745,7 +1878,7 @@ export interface DataProduct {
1745
1878
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
1746
1879
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
1747
1880
  *
1748
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
1881
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
1749
1882
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
1750
1883
  *
1751
1884
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
@@ -1793,6 +1926,11 @@ export interface DataProduct {
1793
1926
  *
1794
1927
  */
1795
1928
  disabled?: boolean;
1929
+ /**
1930
+ * The resource has been introduced in the given [system version](../index.md#def-system-version).
1931
+ * This implies that the resource is only available if the system instance is of at least that system version.
1932
+ */
1933
+ minSystemVersion?: string;
1796
1934
  /**
1797
1935
  * Lifecycle status of the Data Product as a whole.
1798
1936
  *
@@ -1954,7 +2092,7 @@ export interface DataProduct {
1954
2092
  */
1955
2093
  export interface DataProductInputPort {
1956
2094
  /**
1957
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2095
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
1958
2096
  *
1959
2097
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
1960
2098
  */
@@ -1970,7 +2108,7 @@ export interface DataProductInputPort {
1970
2108
  */
1971
2109
  export interface DataProductOutputPort {
1972
2110
  /**
1973
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2111
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
1974
2112
  *
1975
2113
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
1976
2114
  */
@@ -2021,15 +2159,17 @@ export interface DataProductLink {
2021
2159
  */
2022
2160
  export interface IntegrationDependency {
2023
2161
  /**
2024
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2162
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2025
2163
  *
2026
2164
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2027
2165
  */
2028
2166
  ordId: string;
2029
2167
  /**
2030
- * Local ID, as known by the described system.
2168
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
2169
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
2031
2170
  *
2032
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
2171
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
2172
+ * 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.
2033
2173
  */
2034
2174
  localId?: string;
2035
2175
  /**
@@ -2090,7 +2230,7 @@ export interface IntegrationDependency {
2090
2230
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
2091
2231
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
2092
2232
  *
2093
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2233
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2094
2234
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
2095
2235
  *
2096
2236
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
@@ -2217,7 +2357,7 @@ export interface Aspect {
2217
2357
  */
2218
2358
  export interface APIResourceIntegrationAspect {
2219
2359
  /**
2220
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2360
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2221
2361
  *
2222
2362
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2223
2363
  */
@@ -2233,7 +2373,7 @@ export interface APIResourceIntegrationAspect {
2233
2373
  */
2234
2374
  export interface EventResourceIntegrationAspect {
2235
2375
  /**
2236
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2376
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2237
2377
  *
2238
2378
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2239
2379
  */
@@ -2288,7 +2428,7 @@ export interface EventResourceIntegrationAspectSubset {
2288
2428
  */
2289
2429
  export interface Vendor {
2290
2430
  /**
2291
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2431
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2292
2432
  *
2293
2433
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2294
2434
  */
@@ -2331,7 +2471,7 @@ export interface Vendor {
2331
2471
  */
2332
2472
  export interface Product {
2333
2473
  /**
2334
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2474
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2335
2475
  *
2336
2476
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2337
2477
  */
@@ -2407,15 +2547,17 @@ export interface Product {
2407
2547
  */
2408
2548
  export interface Package {
2409
2549
  /**
2410
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2550
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2411
2551
  *
2412
2552
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2413
2553
  */
2414
2554
  ordId: string;
2415
2555
  /**
2416
- * Local ID, as known by the described system.
2556
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
2557
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
2417
2558
  *
2418
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
2559
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
2560
+ * 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.
2419
2561
  */
2420
2562
  localId?: string;
2421
2563
  /**
@@ -2446,7 +2588,7 @@ export interface Package {
2446
2588
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
2447
2589
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
2448
2590
  *
2449
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2591
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2450
2592
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
2451
2593
  *
2452
2594
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
@@ -2519,7 +2661,7 @@ export interface Package {
2519
2661
  */
2520
2662
  vendor: string;
2521
2663
  /**
2522
- * List of products this resource is a part of.
2664
+ * List of products the resources of the package are a part of.
2523
2665
  *
2524
2666
  * MUST be a valid reference to a [Product](#product) ORD ID.
2525
2667
  *
@@ -2605,15 +2747,17 @@ export interface PackageLink {
2605
2747
  */
2606
2748
  export interface ConsumptionBundle {
2607
2749
  /**
2608
- * The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.
2750
+ * The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.
2609
2751
  *
2610
2752
  * It MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.
2611
2753
  */
2612
2754
  ordId: string;
2613
2755
  /**
2614
- * Local ID, as known by the described system.
2756
+ * The locally unique ID under which this resource can be looked up / resolved in the described system itself.
2757
+ * Unlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.
2615
2758
  *
2616
- * This can be the `<resourceName>` fragment in the ORD ID. In this case, make sure it fits the length limits of the ORD ID. It might also be different if e.g. localIds have incompatible charset restrictions.
2759
+ * It MAY also be used as the `<resourceName>` fragment in the ORD ID, IF it can fulfill the charset and length limitations within the ORD ID.
2760
+ * 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.
2617
2761
  */
2618
2762
  localId?: string;
2619
2763
  /**
@@ -2654,7 +2798,7 @@ export interface ConsumptionBundle {
2654
2798
  * It SHOULD be changed if the ORD information or referenced resource definitions changed.
2655
2799
  * It SHOULD express minor and patch changes that don't lead to incompatible changes.
2656
2800
  *
2657
- * When the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2801
+ * When the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.
2658
2802
  * In case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.
2659
2803
  *
2660
2804
  * If the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package",
3
3
  "name": "@open-resource-discovery/specification",
4
- "version": "1.9.11",
4
+ "version": "1.10.1",
5
5
  "description": "Open Resource Discovery (ORD) Specification",
6
6
  "author": "SAP SE",
7
7
  "license": "Apache-2.0",
@@ -29,7 +29,7 @@
29
29
  "@docusaurus/core": "3.7.0",
30
30
  "@docusaurus/preset-classic": "3.7.0",
31
31
  "@docusaurus/theme-mermaid": "3.7.0",
32
- "@easyops-cn/docusaurus-search-local": "0.48.5",
32
+ "@easyops-cn/docusaurus-search-local": "0.49.2",
33
33
  "@mdx-js/react": "3.1.0",
34
34
  "clsx": "2.1.1",
35
35
  "prism-react-renderer": "2.4.1",
@@ -2,6 +2,7 @@
2
2
  "description": "The ORD configuration response will indicate that ORD is available for the given host and how to proceed with the discovery.\n\nMost notably, the ORD configuration will tell an ORD consumer which ORD documents are available and where/how they can be accessed.\n\nThe configuration endpoint is a [Well-Known URI](https://tools.ietf.org/html/rfc8615#section-3) discovery mechanism.",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "$id": "https://open-resource-discovery.github.io/specification/spec-v1/interfaces/Configuration.schema.json#",
5
+ "title": "ORD Configuration",
5
6
  "definitions": {
6
7
  "OpenResourceDiscoveryV1": {
7
8
  "type": "object",
@@ -124,7 +125,6 @@
124
125
  ]
125
126
  }
126
127
  },
127
- "title": "ORD Configuration",
128
128
  "type": "object",
129
129
  "properties": {
130
130
  "$schema": {