@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.
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://open-resource-discovery.github.io/specification/spec-v1/interfaces/Document.schema.json#",
4
+ "title": "ORD Document",
4
5
  "description": "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\nthat are specific to the document/the service it describes.\n\nThe constraints and considerations on [ORD Documents](../index.md#ord-document) MUST be followed.",
5
6
  "definitions": {
6
7
  "Package": {
@@ -10,7 +11,7 @@
10
11
  "properties": {
11
12
  "ordId": {
12
13
  "type": "string",
13
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
14
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
14
15
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(package):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
15
16
  "maxLength": 255,
16
17
  "examples": [
@@ -19,7 +20,7 @@
19
20
  },
20
21
  "localId": {
21
22
  "type": "string",
22
- "description": "Local ID, as known by the described system.\n\nThis 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.",
23
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
23
24
  "maxLength": 255,
24
25
  "examples": [
25
26
  "SuccessFactorsRecruiting",
@@ -54,7 +55,7 @@
54
55
  },
55
56
  "version": {
56
57
  "type": "string",
57
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
58
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
58
59
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
59
60
  "examples": [
60
61
  "1.2.3",
@@ -149,7 +150,7 @@
149
150
  },
150
151
  "partOfProducts": {
151
152
  "type": "array",
152
- "description": "List of products this resource is a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
153
+ "description": "List of products the resources of the package are a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
153
154
  "items": {
154
155
  "type": "string",
155
156
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
@@ -389,7 +390,7 @@
389
390
  "properties": {
390
391
  "ordId": {
391
392
  "type": "string",
392
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
393
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
393
394
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(consumptionBundle):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
394
395
  "maxLength": 255,
395
396
  "examples": [
@@ -398,7 +399,7 @@
398
399
  },
399
400
  "localId": {
400
401
  "type": "string",
401
- "description": "Local ID, as known by the described system.\n\nThis 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.",
402
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
402
403
  "maxLength": 255,
403
404
  "examples": [
404
405
  "SuccessFactorsRecruiting",
@@ -447,7 +448,7 @@
447
448
  },
448
449
  "version": {
449
450
  "type": "string",
450
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
451
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
451
452
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
452
453
  "examples": [
453
454
  "1.2.3",
@@ -554,7 +555,7 @@
554
555
  "properties": {
555
556
  "ordId": {
556
557
  "type": "string",
557
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
558
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
558
559
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
559
560
  "maxLength": 255,
560
561
  "examples": [
@@ -563,7 +564,7 @@
563
564
  },
564
565
  "localId": {
565
566
  "type": "string",
566
- "description": "Local ID, as known by the described system.\n\nThis 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.",
567
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
567
568
  "maxLength": 255,
568
569
  "examples": [
569
570
  "API_BILL_OF_MATERIAL_SRV"
@@ -651,7 +652,7 @@
651
652
  },
652
653
  "partOfProducts": {
653
654
  "type": "array",
654
- "description": "List of products this resource is a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
655
+ "description": "List of products the resources of the package are a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
655
656
  "items": {
656
657
  "type": "string",
657
658
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
@@ -666,7 +667,7 @@
666
667
  },
667
668
  "version": {
668
669
  "type": "string",
669
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
670
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
670
671
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
671
672
  "examples": [
672
673
  "1.2.3",
@@ -725,6 +726,10 @@
725
726
  "default": false,
726
727
  "description": "Indicates that this resource is currently not available for consumption at runtime, but could be configured to be so.\nThis can happen either because it has not been setup for use or disabled by an admin / user.\n\nIf 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.\n\nThis property can only reflect the knowledge of the described system instance itself.\nOutside factors for availability can't need to be considered (e.g. network connectivity, middlewares).\n\nA disabled resource MAY skip describing its resource definitions.\n"
727
728
  },
729
+ "minSystemVersion": {
730
+ "type": "string",
731
+ "description": "The resource has been introduced in the given [system version](../index.md#def-system-version).\nThis implies that the resource is only available if the system instance is of at least that system version."
732
+ },
728
733
  "deprecationDate": {
729
734
  "type": "string",
730
735
  "format": "date-time",
@@ -861,7 +866,7 @@
861
866
  "oneOf": [
862
867
  {
863
868
  "const": "sap:ord-document-api:v1",
864
- "description": "API follows the Open Resource Discovery v1 [Document API](../index.md#ord-document-api) contract."
869
+ "description": "API follows the Open Resource Discovery v1 [Document API](../index.md#ord-provider-api) contract."
865
870
  },
866
871
  {
867
872
  "const": "cff:open-service-broker:v2",
@@ -887,6 +892,10 @@
887
892
  "const": "sap:hana-cloud-sql:v1",
888
893
  "description": "Specific additional implementation of the sap-sql-api-v1 API (sub-)protocol that provide replication support when connecting from an Hana Cloud system\nsee [SAP HANA Cloud documentation](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-data-access-guide/replicating-tables-from-remote-sources).\nThe `apiProtocol` MUST be set to `sap-sql-api-v1`, as this is a sub-protocol / variant of the SAP SQL API."
889
894
  },
895
+ {
896
+ "const": "sap.dp:data-subscription-api:v1",
897
+ "description": "Data Subscription API is the unified data ingestion framework that SAP LoBs can adopt for data ingestion into BDC.\nAn API marked with this implementation standard is providing the Data Delivery part of the Data Subscription API flow for a dedicated BDC data source."
898
+ },
890
899
  {
891
900
  "const": "custom",
892
901
  "description": "If chosen, `customImplementationStandard` MUST be provided.\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
@@ -912,6 +921,19 @@
912
921
  "Implemented as defined in the [S/4HANA Attachment Service documentation](https://api.sap.com/api/API_CV_ATTACHMENT_SRV/overview)"
913
922
  ]
914
923
  },
924
+ "compatibleWith": {
925
+ "type": "array",
926
+ "description": "Declares this API is a compatible implementation of the referenced API contract(s).\nThis is also sometimes known as [Service Provider Interface](https://en.wikipedia.org/wiki/Service_provider_interface).\n\nMUST be a valid reference to an (usually external) [API Resource](#api-resource) ORD ID.\n\nAll APIs that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.",
927
+ "items": {
928
+ "type": "string",
929
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
930
+ },
931
+ "examples": [
932
+ [
933
+ "sap.s4com:apiResource:SomeSharedContract:v1"
934
+ ]
935
+ ]
936
+ },
915
937
  "responsible": {
916
938
  "type": "string",
917
939
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
@@ -1272,7 +1294,7 @@
1272
1294
  "properties": {
1273
1295
  "ordId": {
1274
1296
  "type": "string",
1275
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
1297
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
1276
1298
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
1277
1299
  "maxLength": 255,
1278
1300
  "examples": [
@@ -1282,7 +1304,7 @@
1282
1304
  },
1283
1305
  "localId": {
1284
1306
  "type": "string",
1285
- "description": "Local ID, as known by the described system.\n\nThis 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.",
1307
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
1286
1308
  "maxLength": 255,
1287
1309
  "examples": [
1288
1310
  "BusinessEvents_SubscriptionEvents"
@@ -1371,7 +1393,7 @@
1371
1393
  },
1372
1394
  "partOfProducts": {
1373
1395
  "type": "array",
1374
- "description": "List of products this resource is a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
1396
+ "description": "List of products the resources of the package are a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
1375
1397
  "items": {
1376
1398
  "type": "string",
1377
1399
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
@@ -1386,7 +1408,7 @@
1386
1408
  },
1387
1409
  "version": {
1388
1410
  "type": "string",
1389
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
1411
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
1390
1412
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
1391
1413
  "examples": [
1392
1414
  "1.2.3",
@@ -1445,6 +1467,10 @@
1445
1467
  "default": false,
1446
1468
  "description": "Indicates that this resource is currently not available for consumption at runtime, but could be configured to be so.\nThis can happen either because it has not been setup for use or disabled by an admin / user.\n\nIf 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.\n\nThis property can only reflect the knowledge of the described system instance itself.\nOutside factors for availability can't need to be considered (e.g. network connectivity, middlewares).\n\nA disabled resource MAY skip describing its resource definitions.\n"
1447
1469
  },
1470
+ "minSystemVersion": {
1471
+ "type": "string",
1472
+ "description": "The resource has been introduced in the given [system version](../index.md#def-system-version).\nThis implies that the resource is only available if the system instance is of at least that system version."
1473
+ },
1448
1474
  "deprecationDate": {
1449
1475
  "type": "string",
1450
1476
  "format": "date-time",
@@ -1518,6 +1544,19 @@
1518
1544
  "Implemented as defined in [Some Application Documentation](some link)."
1519
1545
  ]
1520
1546
  },
1547
+ "compatibleWith": {
1548
+ "type": "array",
1549
+ "description": "Declares this event resource is a compatible implementation of the referenced contract.\nThis is also sometimes known as [Service Provider Interface](https://en.wikipedia.org/wiki/Service_provider_interface).\n\nMUST be a valid reference to an (usually external) [Event Resource](#event-resource) ORD ID.\n\nAll event resources that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.",
1550
+ "items": {
1551
+ "type": "string",
1552
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
1553
+ },
1554
+ "examples": [
1555
+ [
1556
+ "sap.s4com:eventResource:SomeSharedContract:v1"
1557
+ ]
1558
+ ]
1559
+ },
1521
1560
  "responsible": {
1522
1561
  "type": "string",
1523
1562
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
@@ -1831,7 +1870,7 @@
1831
1870
  "properties": {
1832
1871
  "ordId": {
1833
1872
  "type": "string",
1834
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
1873
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
1835
1874
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
1836
1875
  "maxLength": 255,
1837
1876
  "examples": [
@@ -1842,7 +1881,7 @@
1842
1881
  },
1843
1882
  "localId": {
1844
1883
  "type": "string",
1845
- "description": "Local ID, as known by the described system.\n\nThis 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.",
1884
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
1846
1885
  "maxLength": 255,
1847
1886
  "examples": [
1848
1887
  "BusinessPartner",
@@ -1921,7 +1960,7 @@
1921
1960
  },
1922
1961
  "partOfProducts": {
1923
1962
  "type": "array",
1924
- "description": "List of products this resource is a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
1963
+ "description": "List of products the resources of the package are a part of.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
1925
1964
  "items": {
1926
1965
  "type": "string",
1927
1966
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
@@ -1936,7 +1975,7 @@
1936
1975
  },
1937
1976
  "version": {
1938
1977
  "type": "string",
1939
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
1978
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
1940
1979
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
1941
1980
  "examples": [
1942
1981
  "1.2.3",
@@ -2171,7 +2210,7 @@
2171
2210
  "properties": {
2172
2211
  "ordId": {
2173
2212
  "type": "string",
2174
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
2213
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
2175
2214
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(dataProduct):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
2176
2215
  "maxLength": 255,
2177
2216
  "examples": [
@@ -2180,7 +2219,7 @@
2180
2219
  },
2181
2220
  "localId": {
2182
2221
  "type": "string",
2183
- "description": "Local ID, as known by the described system.\n\nThis 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.",
2222
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
2184
2223
  "maxLength": 255,
2185
2224
  "examples": [
2186
2225
  "CustomerOrder"
@@ -2243,9 +2282,24 @@
2243
2282
  },
2244
2283
  "description": "Defines which groups the resource is assigned to.\n\nThe property is optional, but if given the value MUST be an array of valid Group IDs.\n\nGroups are a lightweight custom taxonomy concept.\nThey express a \"part of\" relationship to the chosen group concept.\nIf an \"identity / equals\" relationship needs to be expressed, use the `correlationIds` instead.\n\nAll resources that share the same group ID assignment are effectively grouped together."
2245
2284
  },
2285
+ "partOfProducts": {
2286
+ "type": "array",
2287
+ "description": "List of products this Data Product is a part of or is related to, its e.g. data source systems.\n\nMUST be a valid reference to a [Product](#product) ORD ID.\n\n`partOfProducts` that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
2288
+ "items": {
2289
+ "type": "string",
2290
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
2291
+ "maxLength": 255
2292
+ },
2293
+ "minItems": 0,
2294
+ "examples": [
2295
+ [
2296
+ "sap:product:S4HANA_OD:"
2297
+ ]
2298
+ ]
2299
+ },
2246
2300
  "version": {
2247
2301
  "type": "string",
2248
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
2302
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
2249
2303
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
2250
2304
  "examples": [
2251
2305
  "1.2.3",
@@ -2304,6 +2358,10 @@
2304
2358
  "default": false,
2305
2359
  "description": "Indicates that this resource is currently not available for consumption at runtime, but could be configured to be so.\nThis can happen either because it has not been setup for use or disabled by an admin / user.\n\nIf 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.\n\nThis property can only reflect the knowledge of the described system instance itself.\nOutside factors for availability can't need to be considered (e.g. network connectivity, middlewares).\n\nA disabled resource MAY skip describing its resource definitions.\n"
2306
2360
  },
2361
+ "minSystemVersion": {
2362
+ "type": "string",
2363
+ "description": "The resource has been introduced in the given [system version](../index.md#def-system-version).\nThis implies that the resource is only available if the system instance is of at least that system version."
2364
+ },
2307
2365
  "lifecycleStatus": {
2308
2366
  "type": "string",
2309
2367
  "description": "Lifecycle status of the Data Product as a whole.\n\nMUST be provided when describing the system-instance aware (run-time) perspective.\nSHOULD NOT be provided in static (design-time) perspective. Static aggregators MUST ignore this property.",
@@ -2771,7 +2829,7 @@
2771
2829
  "properties": {
2772
2830
  "ordId": {
2773
2831
  "type": "string",
2774
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
2832
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
2775
2833
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(integrationDependency):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
2776
2834
  "maxLength": 255,
2777
2835
  "examples": [
@@ -2791,7 +2849,7 @@
2791
2849
  "properties": {
2792
2850
  "ordId": {
2793
2851
  "type": "string",
2794
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
2852
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
2795
2853
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource|eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
2796
2854
  "maxLength": 255,
2797
2855
  "examples": [
@@ -3033,7 +3091,7 @@
3033
3091
  "properties": {
3034
3092
  "ordId": {
3035
3093
  "type": "string",
3036
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3094
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3037
3095
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
3038
3096
  "maxLength": 255,
3039
3097
  "examples": [
@@ -3134,7 +3192,7 @@
3134
3192
  "properties": {
3135
3193
  "ordId": {
3136
3194
  "type": "string",
3137
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3195
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3138
3196
  "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(capability):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3139
3197
  "maxLength": 255,
3140
3198
  "examples": [
@@ -3143,7 +3201,7 @@
3143
3201
  },
3144
3202
  "localId": {
3145
3203
  "type": "string",
3146
- "description": "Local ID, as known by the described system.\n\nThis 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.",
3204
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
3147
3205
  "maxLength": 255,
3148
3206
  "examples": [
3149
3207
  "SuccessFactorsRecruiting",
@@ -3235,7 +3293,7 @@
3235
3293
  },
3236
3294
  "version": {
3237
3295
  "type": "string",
3238
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
3296
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
3239
3297
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
3240
3298
  "examples": [
3241
3299
  "1.2.3",
@@ -3289,6 +3347,15 @@
3289
3347
  "active"
3290
3348
  ]
3291
3349
  },
3350
+ "disabled": {
3351
+ "type": "boolean",
3352
+ "default": false,
3353
+ "description": "Indicates that this resource is currently not available for consumption at runtime, but could be configured to be so.\nThis can happen either because it has not been setup for use or disabled by an admin / user.\n\nIf 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.\n\nThis property can only reflect the knowledge of the described system instance itself.\nOutside factors for availability can't need to be considered (e.g. network connectivity, middlewares).\n\nA disabled resource MAY skip describing its resource definitions.\n"
3354
+ },
3355
+ "minSystemVersion": {
3356
+ "type": "string",
3357
+ "description": "The resource has been introduced in the given [system version](../index.md#def-system-version).\nThis implies that the resource is only available if the system instance is of at least that system version."
3358
+ },
3292
3359
  "relatedEntityTypes": {
3293
3360
  "type": "array",
3294
3361
  "description": "Optional list of related EntityType Resources.\n\nMUST be a valid reference to an [EntityType Resource](#entity-type) ORD ID.",
@@ -3452,7 +3519,7 @@
3452
3519
  "properties": {
3453
3520
  "ordId": {
3454
3521
  "type": "string",
3455
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3522
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3456
3523
  "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(integrationDependency):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3457
3524
  "maxLength": 255,
3458
3525
  "examples": [
@@ -3461,7 +3528,7 @@
3461
3528
  },
3462
3529
  "localId": {
3463
3530
  "type": "string",
3464
- "description": "Local ID, as known by the described system.\n\nThis 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.",
3531
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
3465
3532
  "maxLength": 255,
3466
3533
  "examples": [
3467
3534
  "SuccessFactorsRecruiting",
@@ -3527,7 +3594,7 @@
3527
3594
  },
3528
3595
  "version": {
3529
3596
  "type": "string",
3530
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
3597
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
3531
3598
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
3532
3599
  "examples": [
3533
3600
  "1.2.3",
@@ -3725,7 +3792,7 @@
3725
3792
  "properties": {
3726
3793
  "ordId": {
3727
3794
  "type": "string",
3728
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3795
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3729
3796
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3730
3797
  "maxLength": 255,
3731
3798
  "examples": [
@@ -3754,7 +3821,7 @@
3754
3821
  "properties": {
3755
3822
  "ordId": {
3756
3823
  "type": "string",
3757
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3824
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3758
3825
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3759
3826
  "maxLength": 255,
3760
3827
  "examples": [
@@ -3823,7 +3890,7 @@
3823
3890
  "properties": {
3824
3891
  "ordId": {
3825
3892
  "type": "string",
3826
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3893
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
3827
3894
  "pattern": "^([a-z0-9]+):(vendor):([a-zA-Z0-9._\\-]+):()$",
3828
3895
  "maxLength": 255,
3829
3896
  "examples": [
@@ -4204,7 +4271,7 @@
4204
4271
  "SystemInstance": {
4205
4272
  "type": "object",
4206
4273
  "title": "System Instance",
4207
- "description": "A **system instance** is a concrete, running instance of a system type.\nIn a multi-tenant system, this corresponds to a tenant.",
4274
+ "description": "A [system instance](../index.md#def-system-instance) is a concrete, running instance of a system type.\nIn a multi-tenant system, it corresponds to a tenant.\nIn a single-tenant system, it corresponds to the [system installation](../index.md#def-system-deployment) itself.",
4208
4275
  "properties": {
4209
4276
  "baseUrl": {
4210
4277
  "type": "string",
@@ -4239,6 +4306,12 @@
4239
4306
  ]
4240
4307
  ]
4241
4308
  },
4309
+ "labels": {
4310
+ "$ref": "#/definitions/Labels"
4311
+ },
4312
+ "documentationLabels": {
4313
+ "$ref": "#/definitions/DocumentationLabels"
4314
+ },
4242
4315
  "tags": {
4243
4316
  "type": "array",
4244
4317
  "items": {
@@ -4253,12 +4326,116 @@
4253
4326
  "high-availability"
4254
4327
  ]
4255
4328
  ]
4329
+ }
4330
+ },
4331
+ "additionalProperties": false
4332
+ },
4333
+ "SystemType": {
4334
+ "type": "object",
4335
+ "title": "System Type",
4336
+ "description": "A [system type](../index.md#def-system-type) is the abstract type of an application or service, from operational perspective.",
4337
+ "properties": {
4338
+ "systemNamespace": {
4339
+ "type": "string",
4340
+ "description": "The system namespace is a unique identifier for the system type.\nIt is used to reference the system type in the ORD.",
4341
+ "pattern": "^[a-z0-9]+(?:[.][a-z0-9]+){1}$",
4342
+ "examples": [
4343
+ "sap.s4",
4344
+ "sap.c4c",
4345
+ "sap.cld"
4346
+ ]
4347
+ },
4348
+ "correlationIds": {
4349
+ "type": "array",
4350
+ "description": "Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).\n\nThey express an \"identity\" / \"equals\" / \"mappable\" relationship to the target ID.\n\nIf a \"part of\" relationship needs to be expressed, use the `partOfGroups` assignment instead.\n\nMUST be a valid [Correlation ID](../index.md#correlation-id).",
4351
+ "items": {
4352
+ "type": "string",
4353
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
4354
+ "maxLength": 255
4355
+ },
4356
+ "examples": [
4357
+ [
4358
+ "sap.cld:systemRole:S4_PC"
4359
+ ]
4360
+ ]
4256
4361
  },
4257
4362
  "labels": {
4258
4363
  "$ref": "#/definitions/Labels"
4259
4364
  },
4260
4365
  "documentationLabels": {
4261
4366
  "$ref": "#/definitions/DocumentationLabels"
4367
+ },
4368
+ "tags": {
4369
+ "type": "array",
4370
+ "items": {
4371
+ "type": "string",
4372
+ "pattern": "^[a-zA-Z0-9-_.\\/ ]*$",
4373
+ "minLength": 1
4374
+ },
4375
+ "description": "List of free text style tags.\nNo special characters are allowed except `-`, `_`, `.`, `/` and ` `.\n\nTags that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
4376
+ "examples": [
4377
+ [
4378
+ "storage",
4379
+ "high-availability"
4380
+ ]
4381
+ ]
4382
+ }
4383
+ },
4384
+ "additionalProperties": false
4385
+ },
4386
+ "SystemVersion": {
4387
+ "type": "object",
4388
+ "title": "System Version",
4389
+ "description": "A [system version](../index.md#def-system-version) states the design-time version / release of a [system instance](../index.md#def-system-instance).\nIt provides versioning for operational purposes for the [system type](../index.md#def-system-type).",
4390
+ "properties": {
4391
+ "version": {
4392
+ "type": "string",
4393
+ "description": "The version number of the system instance (run-time) or the version of the described static system type.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.",
4394
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
4395
+ "examples": [
4396
+ "1.2.3",
4397
+ "2024.8.0"
4398
+ ]
4399
+ },
4400
+ "title": {
4401
+ "type": "string",
4402
+ "description": "Human-readable title of the system version.",
4403
+ "minLength": 1,
4404
+ "maxLength": 255,
4405
+ "examples": [
4406
+ "SAP S/4HANA Cloud 2408"
4407
+ ]
4408
+ },
4409
+ "correlationIds": {
4410
+ "type": "array",
4411
+ "description": "Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).\n\nThey express an \"identity\" / \"equals\" / \"mappable\" relationship to the target ID.\n\nIf a \"part of\" relationship needs to be expressed, use the `partOfGroups` assignment instead.\n\nMUST be a valid [Correlation ID](../index.md#correlation-id).",
4412
+ "items": {
4413
+ "type": "string",
4414
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
4415
+ "maxLength": 255
4416
+ },
4417
+ "examples": []
4418
+ },
4419
+ "labels": {
4420
+ "$ref": "#/definitions/Labels"
4421
+ },
4422
+ "documentationLabels": {
4423
+ "$ref": "#/definitions/DocumentationLabels"
4424
+ },
4425
+ "tags": {
4426
+ "type": "array",
4427
+ "items": {
4428
+ "type": "string",
4429
+ "pattern": "^[a-zA-Z0-9-_.\\/ ]*$",
4430
+ "minLength": 1
4431
+ },
4432
+ "description": "List of free text style tags.\nNo special characters are allowed except `-`, `_`, `.`, `/` and ` `.\n\nTags that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
4433
+ "examples": [
4434
+ [
4435
+ "storage",
4436
+ "high-availability"
4437
+ ]
4438
+ ]
4262
4439
  }
4263
4440
  },
4264
4441
  "additionalProperties": false
@@ -4551,7 +4728,7 @@
4551
4728
  "EntityTypeMapping": {
4552
4729
  "title": "Entity Type Mapping",
4553
4730
  "type": "object",
4554
- "description": "An API or Event resource may optionally define its `entityTypeMappings`.\nThis is used to map and correlate the API models to the underlying, conceptual **entity types**.\n\nIf the mapping from API resource to entity types is not defined,\ncertain use-cases that rely on this explicit connection will not be possible.\n\nThis mapping is meant to be rather fine granular.\nTherefore, the mapping needs to be done on basis of one of the referenced resource definitions,\nas only there we know the details and the actual contents of the API Model of the API resource.\n\nFor the various resource definition formats the selection of API models may need to be expressed differently.\nAs a consequence, there are different types of selectors that are specialized toward certain resource definition formats.\n\nThe target of the mapping is a correlation to an entity type via a [Correlation ID](../../#/v1/README?id=correlation-id)\nor to an [ORD ID] of an entity type.\nIt is assumed that the entity types are described in more detail or on a different abstraction level via metadata.\nWhen the correlation ID is used, an ORD consumer may need to know how to access the entity type metadata through conventions.\nThis can be determined either by the namespace of the correlation ID,\nor through a defined and known `implementationStandard` that can resolve the `localId` fragment of the correlation ID .\n\nAt SAP, the metadata about entity types could be retrieved via the CSN_EXPOSURE service.\nTo indicate this, the service needs to be implemented and described in ORD with `implementationStandard` set to `sap:csn-exposure:v1`).\n\nODM 2.0 relies on the entity type mappings and uses the the mapping to express the relationship of an API to the\ncorresponding ODM entity. ORD consumers like SAP Business Accelerator Hub consume the mapping to make the relationships navigatable for customers.",
4731
+ "description": "An API or Event resource may optionally define its `entityTypeMappings`.\nThis is used to map and correlate the API models to the underlying, conceptual **entity types**.\n\nIf the mapping from API resource to entity types is not defined,\ncertain use-cases that rely on this explicit connection will not be possible.\n\nThis mapping is meant to be rather fine granular.\nTherefore, the mapping needs to be done on basis of one of the referenced resource definitions,\nas only there we know the details and the actual contents of the API Model of the API resource.\n\nFor the various resource definition formats the selection of API models may need to be expressed differently.\nAs a consequence, there are different types of selectors that are specialized toward certain resource definition formats.\n\nThe target of the mapping is a correlation to an entity type via a [Correlation ID](../../#/v1/README?id=correlation-id)\nor to an [ORD ID](../../spec-v1/#ord-id) of an entity type.\nIt is assumed that the entity types are described in more detail or on a different abstraction level via metadata.\nWhen the correlation ID is used, an ORD consumer may need to know how to access the entity type metadata through conventions.\nThis can be determined either by the namespace of the correlation ID,\nor through a defined and known `implementationStandard` that can resolve the `localId` fragment of the correlation ID .\n\nAt SAP, the metadata about entity types could be retrieved via the CSN_EXPOSURE service.\nTo indicate this, the service needs to be implemented and described in ORD with `implementationStandard` set to `sap:csn-exposure:v1`).\n\nODM 2.0 relies on the entity type mappings and uses the the mapping to express the relationship of an API to the\ncorresponding ODM entity. ORD consumers like SAP Business Accelerator Hub consume the mapping to make the relationships navigate-able for customers.",
4555
4732
  "properties": {
4556
4733
  "apiModelSelectors": {
4557
4734
  "type": "array",
@@ -4663,7 +4840,7 @@
4663
4840
  "properties": {
4664
4841
  "ordId": {
4665
4842
  "type": "string",
4666
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
4843
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
4667
4844
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
4668
4845
  "maxLength": 255,
4669
4846
  "examples": [
@@ -4683,7 +4860,7 @@
4683
4860
  "properties": {
4684
4861
  "ordId": {
4685
4862
  "type": "string",
4686
- "description": "The [ORD ID](../index.md#ord-id) is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
4863
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
4687
4864
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
4688
4865
  "maxLength": 255,
4689
4866
  "examples": [
@@ -4776,9 +4953,168 @@
4776
4953
  "removalDate": "2020-12-02T14:12:59Z"
4777
4954
  }
4778
4955
  ]
4956
+ },
4957
+ "OrdResource": {
4958
+ "type": "object",
4959
+ "title": "ORD Resource (abstract)",
4960
+ "description": "Abstract definition of shared properties across ORD Resources.",
4961
+ "properties": {
4962
+ "ordId": {
4963
+ "type": "string",
4964
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
4965
+ "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(apiResource|eventResource|capability|dataProduct):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*|)$",
4966
+ "maxLength": 255,
4967
+ "examples": []
4968
+ },
4969
+ "localId": {
4970
+ "type": "string",
4971
+ "description": "The locally unique ID under which this resource can be looked up / resolved in the described system itself.\nUnlike the ORD ID it's not globally unique, but it may be useful to document the original ID / technical name.\n\nIt 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.\nBut 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.",
4972
+ "maxLength": 255,
4973
+ "examples": []
4974
+ },
4975
+ "correlationIds": {
4976
+ "type": "array",
4977
+ "description": "Correlation IDs can be used to create a reference to related data in other repositories (especially to the system of record).\n\nThey express an \"identity\" / \"equals\" / \"mappable\" relationship to the target ID.\n\nIf a \"part of\" relationship needs to be expressed, use the `partOfGroups` assignment instead.\n\nMUST be a valid [Correlation ID](../index.md#correlation-id).",
4978
+ "items": {
4979
+ "type": "string",
4980
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
4981
+ "maxLength": 255
4982
+ },
4983
+ "examples": []
4984
+ },
4985
+ "title": {
4986
+ "type": "string",
4987
+ "description": "Human-readable title.\n\nMUST NOT exceed 255 chars.\nMUST NOT contain line breaks.",
4988
+ "minLength": 1,
4989
+ "maxLength": 255,
4990
+ "examples": []
4991
+ },
4992
+ "shortDescription": {
4993
+ "type": "string",
4994
+ "description": "Plain text short description.\n\nMUST NOT exceed 255 chars.\nMUST NOT contain line breaks.",
4995
+ "minLength": 1,
4996
+ "maxLength": 255,
4997
+ "examples": []
4998
+ },
4999
+ "description": {
5000
+ "type": "string",
5001
+ "minLength": 1,
5002
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
5003
+ "examples": []
5004
+ },
5005
+ "partOfPackage": {
5006
+ "type": "string",
5007
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(package):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
5008
+ "maxLength": 255,
5009
+ "description": "Defines which Package the resource is part of.\n\nMUST be a valid reference to a [Package](#package) ORD ID.\n\nEvery resource MUST be part of one package.",
5010
+ "examples": []
5011
+ },
5012
+ "partOfGroups": {
5013
+ "type": "array",
5014
+ "items": {
5015
+ "type": "string",
5016
+ "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-\\/]+):([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-\\/]+)$"
5017
+ },
5018
+ "description": "Defines which groups the resource is assigned to.\n\nThe property is optional, but if given the value MUST be an array of valid Group IDs.\n\nGroups are a lightweight custom taxonomy concept.\nThey express a \"part of\" relationship to the chosen group concept.\nIf an \"identity / equals\" relationship needs to be expressed, use the `correlationIds` instead.\n\nAll resources that share the same group ID assignment are effectively grouped together.",
5019
+ "examples": []
5020
+ },
5021
+ "version": {
5022
+ "type": "string",
5023
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn 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.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
5024
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
5025
+ "examples": [
5026
+ "1.2.3",
5027
+ "1.0.0-alpha.1"
5028
+ ]
5029
+ },
5030
+ "lastUpdate": {
5031
+ "type": "string",
5032
+ "format": "date-time",
5033
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf 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.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
5034
+ "examples": [
5035
+ "2022-12-19T15:47:04+00:00"
5036
+ ]
5037
+ },
5038
+ "visibility": {
5039
+ "type": "string",
5040
+ "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
5041
+ "oneOf": [
5042
+ {
5043
+ "const": "public",
5044
+ "description": "Resources are publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
5045
+ },
5046
+ {
5047
+ "const": "internal",
5048
+ "description": "Resources are visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
5049
+ },
5050
+ {
5051
+ "const": "private",
5052
+ "description": "Resources that are exclusive within an application or service.\nThis includes resources that may be called from outside but serve purely private purposes and are not supposed to be known by other outside parties.\nE.g., webhooks for provisioning callbacks or backing services.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope or without the necessary access permissions."
5053
+ }
5054
+ ]
5055
+ },
5056
+ "releaseStatus": {
5057
+ "type": "string",
5058
+ "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
5059
+ "oneOf": [
5060
+ {
5061
+ "const": "active",
5062
+ "description": "Resource is meant for productive use and provides a stable API contract."
5063
+ },
5064
+ {
5065
+ "const": "beta",
5066
+ "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
5067
+ },
5068
+ {
5069
+ "const": "deprecated",
5070
+ "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
5071
+ }
5072
+ ],
5073
+ "examples": [
5074
+ "active"
5075
+ ]
5076
+ },
5077
+ "links": {
5078
+ "type": "array",
5079
+ "description": "Generic links with arbitrary meaning and content.\n\n`packageLinks` MUST be preferred if applicable.",
5080
+ "items": {
5081
+ "$ref": "#/definitions/Link"
5082
+ }
5083
+ },
5084
+ "tags": {
5085
+ "type": "array",
5086
+ "items": {
5087
+ "type": "string",
5088
+ "pattern": "^[a-zA-Z0-9-_.\\/ ]*$",
5089
+ "minLength": 1
5090
+ },
5091
+ "description": "List of free text style tags.\nNo special characters are allowed except `-`, `_`, `.`, `/` and ` `.\n\nTags that are assigned to a `Package` are inherited to all of the ORD resources it contains.",
5092
+ "examples": [
5093
+ [
5094
+ "storage",
5095
+ "high-availability"
5096
+ ]
5097
+ ]
5098
+ },
5099
+ "labels": {
5100
+ "$ref": "#/definitions/Labels"
5101
+ },
5102
+ "documentationLabels": {
5103
+ "$ref": "#/definitions/DocumentationLabels"
5104
+ }
5105
+ },
5106
+ "required": [
5107
+ "ordId",
5108
+ "title",
5109
+ "description",
5110
+ "version",
5111
+ "visibility",
5112
+ "releaseStatus",
5113
+ "partOfPackage"
5114
+ ],
5115
+ "additionalProperties": true
4779
5116
  }
4780
5117
  },
4781
- "title": "ORD Document",
4782
5118
  "type": "object",
4783
5119
  "properties": {
4784
5120
  "$schema": {
@@ -4798,50 +5134,21 @@
4798
5134
  "openResourceDiscovery": {
4799
5135
  "type": "string",
4800
5136
  "description": "Version of the Open Resource Discovery specification that is used to describe this document.",
4801
- "oneOf": [
4802
- {
4803
- "const": "1.0",
4804
- "description": "ORD Version 1.0"
4805
- },
4806
- {
4807
- "const": "1.1",
4808
- "description": "ORD Version 1.1"
4809
- },
4810
- {
4811
- "const": "1.2",
4812
- "description": "ORD Version 1.2"
4813
- },
4814
- {
4815
- "const": "1.3",
4816
- "description": "ORD Version 1.3"
4817
- },
4818
- {
4819
- "const": "1.4",
4820
- "description": "ORD Version 1.4"
4821
- },
4822
- {
4823
- "const": "1.5",
4824
- "description": "ORD Version 1.5"
4825
- },
4826
- {
4827
- "const": "1.6",
4828
- "description": "ORD Version 1.6"
4829
- },
4830
- {
4831
- "const": "1.7",
4832
- "description": "ORD Version 1.7"
4833
- },
4834
- {
4835
- "const": "1.8",
4836
- "description": "ORD Version 1.8"
4837
- },
4838
- {
4839
- "const": "1.9",
4840
- "description": "ORD Version 1.9"
4841
- }
5137
+ "enum": [
5138
+ "1.0",
5139
+ "1.1",
5140
+ "1.2",
5141
+ "1.3",
5142
+ "1.4",
5143
+ "1.5",
5144
+ "1.6",
5145
+ "1.7",
5146
+ "1.8",
5147
+ "1.9",
5148
+ "1.10"
4842
5149
  ],
4843
5150
  "examples": [
4844
- "1.9"
5151
+ "1.10"
4845
5152
  ]
4846
5153
  },
4847
5154
  "description": {
@@ -4854,7 +5161,15 @@
4854
5161
  },
4855
5162
  "describedSystemInstance": {
4856
5163
  "$ref": "#/definitions/SystemInstance",
4857
- "description": "Information on the **system instance** that this ORD document describes.\n\nThis information is optional, but RECOMMENDED to add, as it makes the ORD document self contained."
5164
+ "description": "Information on the [system instance](../index.md#def-system-instance) that this ORD document describes."
5165
+ },
5166
+ "describedSystemType": {
5167
+ "$ref": "#/definitions/SystemType",
5168
+ "description": "Information on the [system type](../index.md#def-system-type) that this ORD document describes."
5169
+ },
5170
+ "describedSystemVersion": {
5171
+ "$ref": "#/definitions/SystemVersion",
5172
+ "description": "Information on the [system version](../index.md#def-system-version) that this ORD document describes."
4858
5173
  },
4859
5174
  "policyLevel": {
4860
5175
  "type": "string",