@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 +2 -1
- package/dist/types/v1/Document.d.ts +196 -52
- package/package.json +2 -2
- package/static/spec-v1/interfaces/Configuration.annotated.schema.json +1 -1
- package/static/spec-v1/interfaces/Configuration.schema.json +1 -1
- package/static/spec-v1/interfaces/Document.annotated.schema.json +557 -86
- package/static/spec-v1/interfaces/Document.schema.json +398 -83
@@ -2,6 +2,7 @@
|
|
2
2
|
"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.",
|
3
3
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
4
4
|
"$id": "https://open-resource-discovery.github.io/specification/spec-v1/interfaces/Document.schema.json#",
|
5
|
+
"title": "ORD Document",
|
5
6
|
"x-property-order": [
|
6
7
|
"Document",
|
7
8
|
"ApiResource",
|
@@ -22,11 +23,12 @@
|
|
22
23
|
"Package": {
|
23
24
|
"type": "object",
|
24
25
|
"title": "Package",
|
26
|
+
"x-ums-type": "root",
|
25
27
|
"description": "A [**Package**](../../details/articles/grouping-and-bundling#package) organizes a set of related resources together, by publishing and catalog presentation concerns.\n\nThe Package can also be used to indicate which products or vendors provided the packaged resources.\nFor partner or customer content, the package can indicate this via the `vendor` and `partOfProducts` assignments.\nIn any case, the Package `ordID` namespace MUST reflect the namespace of the providing application (which hosts the resource), not the resource definition owner, which could be a customer or partner.\n\nA package SHOULD contain at least one resource. Avoid empty packages.\n\nThe package assignment of a resource MAY change, so consumers MUST not rely on this to be stable.\n\nA package does not have a `visibility` property.\nWhether it is displayed is decided by the fact, whether it contains any visible resources according to the visibility role of the aggregator.\n\nTo learn more about the concept and further guidance, see [Package](../../details/articles/grouping-and-bundling#package).",
|
26
28
|
"properties": {
|
27
29
|
"ordId": {
|
28
30
|
"type": "string",
|
29
|
-
"description": "The
|
31
|
+
"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.",
|
30
32
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(package):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
31
33
|
"maxLength": 255,
|
32
34
|
"examples": [
|
@@ -36,7 +38,7 @@
|
|
36
38
|
"localId": {
|
37
39
|
"type": "string",
|
38
40
|
"x-introduced-in-version": "1.2.1",
|
39
|
-
"description": "
|
41
|
+
"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.",
|
40
42
|
"maxLength": 255,
|
41
43
|
"examples": [
|
42
44
|
"SuccessFactorsRecruiting",
|
@@ -71,7 +73,7 @@
|
|
71
73
|
},
|
72
74
|
"version": {
|
73
75
|
"type": "string",
|
74
|
-
"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.",
|
76
|
+
"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.",
|
75
77
|
"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-]+)*))?$",
|
76
78
|
"examples": [
|
77
79
|
"1.2.3",
|
@@ -177,7 +179,7 @@
|
|
177
179
|
},
|
178
180
|
"partOfProducts": {
|
179
181
|
"type": "array",
|
180
|
-
"description": "List of products
|
182
|
+
"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.",
|
181
183
|
"items": {
|
182
184
|
"type": "string",
|
183
185
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
|
@@ -420,11 +422,12 @@
|
|
420
422
|
"ConsumptionBundle": {
|
421
423
|
"type": "object",
|
422
424
|
"title": "Consumption Bundle",
|
425
|
+
"x-ums-type": "root",
|
423
426
|
"description": "A [**Consumption Bundle**](../../details/articles/grouping-and-bundling#consumption-bundle) groups APIs and Events together that can be consumed with the credentials and auth mechanism.\nIdeally it also includes instructions and details how to request access and credentials for resources.\n\nFor more documentation and guidance how to correctly this correctly, see [Consumption Bundle details](../../details/articles/grouping-and-bundling#consumption-bundle).\n\nA consumption bundle SHOULD have at least one association with a resource (0..n). Avoid empty consumption bundles.\nA consumption bundle MUST NOT contain APIs and Events that are NOT defined in the ORD document(s) returned\nby the system instance that defines the consumption bundle.\n\nPlease note that some ORD consumer use cases MAY depend on consumption bundle assignments to work with the resources.\n\nTo learn more about the concept, see [Consumption Bundle](../../details/articles/grouping-and-bundling#consumption-bundle).",
|
424
427
|
"properties": {
|
425
428
|
"ordId": {
|
426
429
|
"type": "string",
|
427
|
-
"description": "The
|
430
|
+
"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.",
|
428
431
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(consumptionBundle):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
429
432
|
"maxLength": 255,
|
430
433
|
"examples": [
|
@@ -434,7 +437,7 @@
|
|
434
437
|
"localId": {
|
435
438
|
"type": "string",
|
436
439
|
"x-introduced-in-version": "1.2.1",
|
437
|
-
"description": "
|
440
|
+
"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.",
|
438
441
|
"maxLength": 255,
|
439
442
|
"examples": [
|
440
443
|
"SuccessFactorsRecruiting",
|
@@ -483,7 +486,7 @@
|
|
483
486
|
},
|
484
487
|
"version": {
|
485
488
|
"type": "string",
|
486
|
-
"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.",
|
489
|
+
"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.",
|
487
490
|
"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-]+)*))?$",
|
488
491
|
"examples": [
|
489
492
|
"1.2.3",
|
@@ -570,6 +573,7 @@
|
|
570
573
|
"ConsumptionBundleReference": {
|
571
574
|
"type": "object",
|
572
575
|
"title": "Consumption Bundle Reference",
|
576
|
+
"x-ums-type": "embedded",
|
573
577
|
"description": "Reference to a Consumption bundle.\n\nThis is a complex object to allow additional properties / selections to be attached.",
|
574
578
|
"properties": {
|
575
579
|
"ordId": {
|
@@ -598,11 +602,13 @@
|
|
598
602
|
"ApiResource": {
|
599
603
|
"type": "object",
|
600
604
|
"title": "API Resource",
|
605
|
+
"x-ums-type": "root",
|
606
|
+
"x-implements": "#/definitions/OrdResource",
|
601
607
|
"description": "The API Resource provides a high-level description of an exposed API.\nYou can find more information, such as the API resource definitions, in the links in the table below.\n\nAn API Resource bundles multiple endpoints and resources together.\nThey share the same API namespace and lifecycle (API major version).\nHowever, the exact granularity of this is up to the implementer of the API.\nAs a consequence, an API resource MUST NOT bundle together endpoints from different API versions or namespaces.\n\nA common practice is to bundle endpoints that are based on the same domain or Business Object.\n\nPlease note that APIs can be described, but still be [`disabled`](#api-resource_disabled).\n\nIf the API is not created or owned by the user of the system or by third parties (like partners), it MUST be assigned to dedicated [Packages](#package) that state this the ownership via the `vendor` property.",
|
602
608
|
"properties": {
|
603
609
|
"ordId": {
|
604
610
|
"type": "string",
|
605
|
-
"description": "The
|
611
|
+
"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.",
|
606
612
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
607
613
|
"maxLength": 255,
|
608
614
|
"examples": [
|
@@ -612,7 +618,7 @@
|
|
612
618
|
"localId": {
|
613
619
|
"type": "string",
|
614
620
|
"x-introduced-in-version": "1.2.1",
|
615
|
-
"description": "
|
621
|
+
"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.",
|
616
622
|
"maxLength": 255,
|
617
623
|
"examples": [
|
618
624
|
"API_BILL_OF_MATERIAL_SRV"
|
@@ -664,6 +670,12 @@
|
|
664
670
|
"x-association-target": [
|
665
671
|
"#/definitions/Package/ordId"
|
666
672
|
],
|
673
|
+
"x-reverse-relationship": {
|
674
|
+
"propertyName": "apiResources",
|
675
|
+
"description": "The API resources that are part the given Package.",
|
676
|
+
"min": 0,
|
677
|
+
"max": "*"
|
678
|
+
},
|
667
679
|
"maxLength": 255,
|
668
680
|
"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.",
|
669
681
|
"examples": [
|
@@ -679,6 +691,12 @@
|
|
679
691
|
"#/definitions/Group/groupId"
|
680
692
|
]
|
681
693
|
},
|
694
|
+
"x-reverse-relationship": {
|
695
|
+
"propertyName": "apiResourceMembers",
|
696
|
+
"description": "The API resources that are part the given Group.",
|
697
|
+
"min": 0,
|
698
|
+
"max": "*"
|
699
|
+
},
|
682
700
|
"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."
|
683
701
|
},
|
684
702
|
"partOfConsumptionBundles": {
|
@@ -709,7 +727,7 @@
|
|
709
727
|
},
|
710
728
|
"partOfProducts": {
|
711
729
|
"type": "array",
|
712
|
-
"description": "List of products
|
730
|
+
"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.",
|
713
731
|
"items": {
|
714
732
|
"type": "string",
|
715
733
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
|
@@ -727,7 +745,7 @@
|
|
727
745
|
},
|
728
746
|
"version": {
|
729
747
|
"type": "string",
|
730
|
-
"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.",
|
748
|
+
"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.",
|
731
749
|
"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-]+)*))?$",
|
732
750
|
"examples": [
|
733
751
|
"1.2.3",
|
@@ -787,6 +805,10 @@
|
|
787
805
|
"default": false,
|
788
806
|
"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"
|
789
807
|
},
|
808
|
+
"minSystemVersion": {
|
809
|
+
"type": "string",
|
810
|
+
"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."
|
811
|
+
},
|
790
812
|
"deprecationDate": {
|
791
813
|
"type": "string",
|
792
814
|
"format": "date-time",
|
@@ -928,7 +950,7 @@
|
|
928
950
|
"oneOf": [
|
929
951
|
{
|
930
952
|
"const": "sap:ord-document-api:v1",
|
931
|
-
"description": "API follows the Open Resource Discovery v1 [Document API](../index.md#ord-
|
953
|
+
"description": "API follows the Open Resource Discovery v1 [Document API](../index.md#ord-provider-api) contract."
|
932
954
|
},
|
933
955
|
{
|
934
956
|
"const": "cff:open-service-broker:v2",
|
@@ -956,6 +978,11 @@
|
|
956
978
|
"x-introduced-in-version": "1.8.0",
|
957
979
|
"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."
|
958
980
|
},
|
981
|
+
{
|
982
|
+
"const": "sap.dp:data-subscription-api:v1",
|
983
|
+
"x-introduced-in-version": "1.9.12",
|
984
|
+
"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."
|
985
|
+
},
|
959
986
|
{
|
960
987
|
"const": "custom",
|
961
988
|
"description": "If chosen, `customImplementationStandard` MUST be provided.\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
|
@@ -981,6 +1008,19 @@
|
|
981
1008
|
"Implemented as defined in the [S/4HANA Attachment Service documentation](https://api.sap.com/api/API_CV_ATTACHMENT_SRV/overview)"
|
982
1009
|
]
|
983
1010
|
},
|
1011
|
+
"compatibleWith": {
|
1012
|
+
"type": "array",
|
1013
|
+
"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.",
|
1014
|
+
"items": {
|
1015
|
+
"type": "string",
|
1016
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
|
1017
|
+
},
|
1018
|
+
"examples": [
|
1019
|
+
[
|
1020
|
+
"sap.s4com:apiResource:SomeSharedContract:v1"
|
1021
|
+
]
|
1022
|
+
]
|
1023
|
+
},
|
984
1024
|
"responsible": {
|
985
1025
|
"type": "string",
|
986
1026
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
@@ -1353,11 +1393,13 @@
|
|
1353
1393
|
"EventResource": {
|
1354
1394
|
"type": "object",
|
1355
1395
|
"title": "Event Resource",
|
1396
|
+
"x-ums-type": "root",
|
1397
|
+
"x-implements": "#/definitions/OrdResource",
|
1356
1398
|
"description": "The event resource provides a high-level description of a collection of related Events. More detailed information, such as the event resource definitions, are provided in links in the table below.\nWhich events are considered \"related\" is up to the implementer. A common practice is to bundle events that are based on the same resource/Business Object. It is also an option to bundle all available events into a single event resource/event catalog.\nPlease note that event resources can be described, but still be [`disabled`](#event-resource_disabled).\nIf the event resource is not created or owned by the user / customer of the system or by partners / third parties, it MUST be assigned to dedicated [Packages](#package) that state this the ownership via the `vendor` property.",
|
1357
1399
|
"properties": {
|
1358
1400
|
"ordId": {
|
1359
1401
|
"type": "string",
|
1360
|
-
"description": "The
|
1402
|
+
"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.",
|
1361
1403
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1362
1404
|
"maxLength": 255,
|
1363
1405
|
"examples": [
|
@@ -1368,7 +1410,7 @@
|
|
1368
1410
|
"localId": {
|
1369
1411
|
"type": "string",
|
1370
1412
|
"x-introduced-in-version": "1.2.1",
|
1371
|
-
"description": "
|
1413
|
+
"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.",
|
1372
1414
|
"maxLength": 255,
|
1373
1415
|
"examples": [
|
1374
1416
|
"BusinessEvents_SubscriptionEvents"
|
@@ -1421,6 +1463,12 @@
|
|
1421
1463
|
"x-association-target": [
|
1422
1464
|
"#/definitions/Package/ordId"
|
1423
1465
|
],
|
1466
|
+
"x-reverse-relationship": {
|
1467
|
+
"propertyName": "eventResources",
|
1468
|
+
"description": "The event resources that are part the given Package.",
|
1469
|
+
"min": 0,
|
1470
|
+
"max": "*"
|
1471
|
+
},
|
1424
1472
|
"maxLength": 255,
|
1425
1473
|
"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.",
|
1426
1474
|
"examples": [
|
@@ -1436,6 +1484,10 @@
|
|
1436
1484
|
"#/definitions/Group/groupId"
|
1437
1485
|
]
|
1438
1486
|
},
|
1487
|
+
"x-reverse-relationship": {
|
1488
|
+
"propertyName": "eventResourceMembers",
|
1489
|
+
"description": "The event resources that are part the given Group."
|
1490
|
+
},
|
1439
1491
|
"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."
|
1440
1492
|
},
|
1441
1493
|
"partOfConsumptionBundles": {
|
@@ -1466,7 +1518,7 @@
|
|
1466
1518
|
},
|
1467
1519
|
"partOfProducts": {
|
1468
1520
|
"type": "array",
|
1469
|
-
"description": "List of products
|
1521
|
+
"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.",
|
1470
1522
|
"items": {
|
1471
1523
|
"type": "string",
|
1472
1524
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
|
@@ -1484,7 +1536,7 @@
|
|
1484
1536
|
},
|
1485
1537
|
"version": {
|
1486
1538
|
"type": "string",
|
1487
|
-
"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.",
|
1539
|
+
"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.",
|
1488
1540
|
"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-]+)*))?$",
|
1489
1541
|
"examples": [
|
1490
1542
|
"1.2.3",
|
@@ -1544,6 +1596,10 @@
|
|
1544
1596
|
"default": false,
|
1545
1597
|
"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"
|
1546
1598
|
},
|
1599
|
+
"minSystemVersion": {
|
1600
|
+
"type": "string",
|
1601
|
+
"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."
|
1602
|
+
},
|
1547
1603
|
"deprecationDate": {
|
1548
1604
|
"type": "string",
|
1549
1605
|
"format": "date-time",
|
@@ -1620,6 +1676,19 @@
|
|
1620
1676
|
"Implemented as defined in [Some Application Documentation](some link)."
|
1621
1677
|
]
|
1622
1678
|
},
|
1679
|
+
"compatibleWith": {
|
1680
|
+
"type": "array",
|
1681
|
+
"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.",
|
1682
|
+
"items": {
|
1683
|
+
"type": "string",
|
1684
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
|
1685
|
+
},
|
1686
|
+
"examples": [
|
1687
|
+
[
|
1688
|
+
"sap.s4com:eventResource:SomeSharedContract:v1"
|
1689
|
+
]
|
1690
|
+
]
|
1691
|
+
},
|
1623
1692
|
"responsible": {
|
1624
1693
|
"type": "string",
|
1625
1694
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
@@ -1945,12 +2014,13 @@
|
|
1945
2014
|
"EntityType": {
|
1946
2015
|
"type": "object",
|
1947
2016
|
"title": "Entity Type",
|
2017
|
+
"x-ums-type": "root",
|
1948
2018
|
"description": "An [**Entity Type**](../../details/articles/grouping-and-bundling#entity-type) describes either a business concept / term or an underlying conceptual model.\nThe same entity type can be exposed through one or multiple API and events resources.\n\nTo learn more about the concept, see [Entity Type](../../details/articles/grouping-and-bundling#entity-type).",
|
1949
2019
|
"x-introduced-in-version": "1.8.0",
|
1950
2020
|
"properties": {
|
1951
2021
|
"ordId": {
|
1952
2022
|
"type": "string",
|
1953
|
-
"description": "The
|
2023
|
+
"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.",
|
1954
2024
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1955
2025
|
"maxLength": 255,
|
1956
2026
|
"examples": [
|
@@ -1962,7 +2032,7 @@
|
|
1962
2032
|
"localId": {
|
1963
2033
|
"type": "string",
|
1964
2034
|
"x-introduced-in-version": "1.2.1",
|
1965
|
-
"description": "
|
2035
|
+
"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.",
|
1966
2036
|
"maxLength": 255,
|
1967
2037
|
"examples": [
|
1968
2038
|
"BusinessPartner",
|
@@ -2028,6 +2098,12 @@
|
|
2028
2098
|
"x-association-target": [
|
2029
2099
|
"#/definitions/Package/ordId"
|
2030
2100
|
],
|
2101
|
+
"x-reverse-relationship": {
|
2102
|
+
"propertyName": "entityTypes",
|
2103
|
+
"description": "The entity types that are part the given Package.",
|
2104
|
+
"min": 0,
|
2105
|
+
"max": "*"
|
2106
|
+
},
|
2031
2107
|
"maxLength": 255,
|
2032
2108
|
"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.",
|
2033
2109
|
"examples": [
|
@@ -2043,11 +2119,15 @@
|
|
2043
2119
|
"#/definitions/Group/groupId"
|
2044
2120
|
]
|
2045
2121
|
},
|
2122
|
+
"x-reverse-relationship": {
|
2123
|
+
"propertyName": "entityTypeMembers",
|
2124
|
+
"description": "The entity types that are part the given Group."
|
2125
|
+
},
|
2046
2126
|
"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."
|
2047
2127
|
},
|
2048
2128
|
"partOfProducts": {
|
2049
2129
|
"type": "array",
|
2050
|
-
"description": "List of products
|
2130
|
+
"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.",
|
2051
2131
|
"items": {
|
2052
2132
|
"type": "string",
|
2053
2133
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
|
@@ -2065,7 +2145,7 @@
|
|
2065
2145
|
},
|
2066
2146
|
"version": {
|
2067
2147
|
"type": "string",
|
2068
|
-
"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.",
|
2148
|
+
"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.",
|
2069
2149
|
"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-]+)*))?$",
|
2070
2150
|
"examples": [
|
2071
2151
|
"1.2.3",
|
@@ -2314,12 +2394,14 @@
|
|
2314
2394
|
"DataProduct": {
|
2315
2395
|
"type": "object",
|
2316
2396
|
"title": "Data Product",
|
2397
|
+
"x-ums-type": "root",
|
2317
2398
|
"x-introduced-in-version": "1.8.0",
|
2399
|
+
"x-implements": "#/definitions/OrdResource",
|
2318
2400
|
"description": "A [Data Product](../../details/articles/data-product) is a data set exposed for consumption outside the boundaries of the producing application via APIs and described by high quality metadata that can be accessed through the [ORD Aggregator](../../spec-v1/#ord-aggregator).\n\nPlease note that this concept is in beta, see [Data Product - Beta Status](../../details/articles/data-product#beta-status).",
|
2319
2401
|
"properties": {
|
2320
2402
|
"ordId": {
|
2321
2403
|
"type": "string",
|
2322
|
-
"description": "The
|
2404
|
+
"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.",
|
2323
2405
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(dataProduct):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2324
2406
|
"maxLength": 255,
|
2325
2407
|
"examples": [
|
@@ -2329,7 +2411,7 @@
|
|
2329
2411
|
"localId": {
|
2330
2412
|
"type": "string",
|
2331
2413
|
"x-introduced-in-version": "1.2.1",
|
2332
|
-
"description": "
|
2414
|
+
"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.",
|
2333
2415
|
"maxLength": 255,
|
2334
2416
|
"examples": [
|
2335
2417
|
"CustomerOrder"
|
@@ -2382,6 +2464,12 @@
|
|
2382
2464
|
"x-association-target": [
|
2383
2465
|
"#/definitions/Package/ordId"
|
2384
2466
|
],
|
2467
|
+
"x-reverse-relationship": {
|
2468
|
+
"propertyName": "dataProducts",
|
2469
|
+
"description": "The data products that are part the given Package.",
|
2470
|
+
"min": 0,
|
2471
|
+
"max": "*"
|
2472
|
+
},
|
2385
2473
|
"maxLength": 255,
|
2386
2474
|
"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.",
|
2387
2475
|
"examples": [
|
@@ -2389,7 +2477,6 @@
|
|
2389
2477
|
]
|
2390
2478
|
},
|
2391
2479
|
"partOfGroups": {
|
2392
|
-
"x-feature-status": "beta",
|
2393
2480
|
"type": "array",
|
2394
2481
|
"items": {
|
2395
2482
|
"type": "string",
|
@@ -2398,11 +2485,34 @@
|
|
2398
2485
|
"#/definitions/Group/groupId"
|
2399
2486
|
]
|
2400
2487
|
},
|
2401
|
-
"
|
2488
|
+
"x-reverse-relationship": {
|
2489
|
+
"propertyName": "dataProductMembers",
|
2490
|
+
"description": "The data products that are part the given Group."
|
2491
|
+
},
|
2492
|
+
"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.",
|
2493
|
+
"x-feature-status": "beta"
|
2494
|
+
},
|
2495
|
+
"partOfProducts": {
|
2496
|
+
"type": "array",
|
2497
|
+
"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.",
|
2498
|
+
"items": {
|
2499
|
+
"type": "string",
|
2500
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
|
2501
|
+
"maxLength": 255,
|
2502
|
+
"x-association-target": [
|
2503
|
+
"#/definitions/Product/ordId"
|
2504
|
+
]
|
2505
|
+
},
|
2506
|
+
"minItems": 0,
|
2507
|
+
"examples": [
|
2508
|
+
[
|
2509
|
+
"sap:product:S4HANA_OD:"
|
2510
|
+
]
|
2511
|
+
]
|
2402
2512
|
},
|
2403
2513
|
"version": {
|
2404
2514
|
"type": "string",
|
2405
|
-
"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.",
|
2515
|
+
"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.",
|
2406
2516
|
"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-]+)*))?$",
|
2407
2517
|
"examples": [
|
2408
2518
|
"1.2.3",
|
@@ -2464,6 +2574,10 @@
|
|
2464
2574
|
"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",
|
2465
2575
|
"x-hide": true
|
2466
2576
|
},
|
2577
|
+
"minSystemVersion": {
|
2578
|
+
"type": "string",
|
2579
|
+
"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."
|
2580
|
+
},
|
2467
2581
|
"lifecycleStatus": {
|
2468
2582
|
"type": "string",
|
2469
2583
|
"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.",
|
@@ -2595,6 +2709,12 @@
|
|
2595
2709
|
"#/definitions/EntityType/ordId"
|
2596
2710
|
]
|
2597
2711
|
},
|
2712
|
+
"x-reverse-relationship": {
|
2713
|
+
"propertyName": "dataProducts",
|
2714
|
+
"description": "Data Products associated to the Entity Type.",
|
2715
|
+
"min": 0,
|
2716
|
+
"max": "*"
|
2717
|
+
},
|
2598
2718
|
"examples": [
|
2599
2719
|
[
|
2600
2720
|
"sap.odm:entityType:CustomerOrder:v1",
|
@@ -2963,11 +3083,12 @@
|
|
2963
3083
|
"DataProductInputPort": {
|
2964
3084
|
"type": "object",
|
2965
3085
|
"title": "Data Product Input Port",
|
3086
|
+
"x-ums-type": "embedded",
|
2966
3087
|
"description": "An input port of a data product states where it retrieves its data inputs from.\n\nIt is described as via an ORD Integration Dependency.",
|
2967
3088
|
"properties": {
|
2968
3089
|
"ordId": {
|
2969
3090
|
"type": "string",
|
2970
|
-
"description": "The
|
3091
|
+
"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.",
|
2971
3092
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(integrationDependency):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2972
3093
|
"maxLength": 255,
|
2973
3094
|
"examples": [
|
@@ -2986,11 +3107,12 @@
|
|
2986
3107
|
"DataProductOutputPort": {
|
2987
3108
|
"type": "object",
|
2988
3109
|
"title": "Data Product Output Port",
|
3110
|
+
"x-ums-type": "embedded",
|
2989
3111
|
"description": "A data product output port references the APIs or Events that can be used to access the data-set.\nIt MAY provide full access to the complete data set, but can also just expose a subset of it - if other output ports cover the missing parts.\n\nReferenced API or Event ORD resources don't need to be provided within the same ORD document.\nIf a data product is built against a specific API contract of another application or data product, this API resource should be referred to.\nIn this case the other application is responsible for the lifecycle of the API contract and will update its ORD description independently.",
|
2990
3112
|
"properties": {
|
2991
3113
|
"ordId": {
|
2992
3114
|
"type": "string",
|
2993
|
-
"description": "The
|
3115
|
+
"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.",
|
2994
3116
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource|eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2995
3117
|
"maxLength": 255,
|
2996
3118
|
"examples": [
|
@@ -3012,6 +3134,7 @@
|
|
3012
3134
|
"type": "object",
|
3013
3135
|
"title": "API Resource Definition",
|
3014
3136
|
"description": "Link and categorization of a machine-readable API definition.\nFor example, OpenAPI definition, OData Metadata, etc.",
|
3137
|
+
"x-ums-type": "custom",
|
3015
3138
|
"properties": {
|
3016
3139
|
"type": {
|
3017
3140
|
"description": "Type of the API Resource Definition\nIf \"custom\" is chosen, a customType MUST be provided",
|
@@ -3142,6 +3265,7 @@
|
|
3142
3265
|
"EventResourceDefinition": {
|
3143
3266
|
"type": "object",
|
3144
3267
|
"title": "Event Resource Definition",
|
3268
|
+
"x-ums-type": "custom",
|
3145
3269
|
"description": "Link and categorization of a machine-readable API definition.\nFor example, AsyncAPI or OpenAPI with callbacks, etc.",
|
3146
3270
|
"properties": {
|
3147
3271
|
"type": {
|
@@ -3234,11 +3358,12 @@
|
|
3234
3358
|
"Product": {
|
3235
3359
|
"type": "object",
|
3236
3360
|
"title": "Product",
|
3361
|
+
"x-ums-type": "root",
|
3237
3362
|
"description": "A **product** in ORD is understood as a commercial product or service.\n\nIt is a high-level entity for structuring the software portfolio from a sales / software logistics perspective.\nWhile **system type** is a technical concept, **product** covers the commercial and marketing view.\n\nPlease note that the ORD concept of a product is very simple on purpose.\nThere is no distinction between products and services and concepts like product versions, variants, etc.\n\nORD assumes that this is handled by specialized systems and that ORD only provides the means to correlate to them.",
|
3238
3363
|
"properties": {
|
3239
3364
|
"ordId": {
|
3240
3365
|
"type": "string",
|
3241
|
-
"description": "The
|
3366
|
+
"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.",
|
3242
3367
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\\-]+):()$",
|
3243
3368
|
"maxLength": 255,
|
3244
3369
|
"examples": [
|
@@ -3343,12 +3468,14 @@
|
|
3343
3468
|
"Capability": {
|
3344
3469
|
"type": "object",
|
3345
3470
|
"title": "Capability",
|
3471
|
+
"x-ums-type": "root",
|
3346
3472
|
"x-introduced-in-version": "1.4.0",
|
3473
|
+
"x-implements": "#/definitions/OrdResource",
|
3347
3474
|
"description": "Capabilities can be used to describe use case specific capabilities, most notably supported features or additional information (like configuration) that needs to be understood from outside.\nThis is a generic ORD concept that aims to cover many different capability discovery use cases that would otherwise need be implemented as individual service provider interfaces (SPIs).\n\nIf a capability needs to expose more information than possible with generic capability properties, a custom capability definition can be defined and referenced in ORD.\nThis is the same idea and mechanism as with API resources and their resource definition formats.",
|
3348
3475
|
"properties": {
|
3349
3476
|
"ordId": {
|
3350
3477
|
"type": "string",
|
3351
|
-
"description": "The
|
3478
|
+
"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.",
|
3352
3479
|
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(capability):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3353
3480
|
"maxLength": 255,
|
3354
3481
|
"examples": [
|
@@ -3358,7 +3485,7 @@
|
|
3358
3485
|
"localId": {
|
3359
3486
|
"type": "string",
|
3360
3487
|
"x-introduced-in-version": "1.2.1",
|
3361
|
-
"description": "
|
3488
|
+
"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.",
|
3362
3489
|
"maxLength": 255,
|
3363
3490
|
"examples": [
|
3364
3491
|
"SuccessFactorsRecruiting",
|
@@ -3437,6 +3564,12 @@
|
|
3437
3564
|
"x-association-target": [
|
3438
3565
|
"#/definitions/Package/ordId"
|
3439
3566
|
],
|
3567
|
+
"x-reverse-relationship": {
|
3568
|
+
"propertyName": "capabilities",
|
3569
|
+
"description": "The capabilities that are part the given Package.",
|
3570
|
+
"min": 0,
|
3571
|
+
"max": "*"
|
3572
|
+
},
|
3440
3573
|
"maxLength": 255,
|
3441
3574
|
"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.",
|
3442
3575
|
"examples": [
|
@@ -3452,11 +3585,15 @@
|
|
3452
3585
|
"#/definitions/Group/groupId"
|
3453
3586
|
]
|
3454
3587
|
},
|
3588
|
+
"x-reverse-relationship": {
|
3589
|
+
"propertyName": "capabilityMembers",
|
3590
|
+
"description": "The Capabilities that are part the given Group."
|
3591
|
+
},
|
3455
3592
|
"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."
|
3456
3593
|
},
|
3457
3594
|
"version": {
|
3458
3595
|
"type": "string",
|
3459
|
-
"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.",
|
3596
|
+
"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.",
|
3460
3597
|
"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-]+)*))?$",
|
3461
3598
|
"examples": [
|
3462
3599
|
"1.2.3",
|
@@ -3511,6 +3648,15 @@
|
|
3511
3648
|
"active"
|
3512
3649
|
]
|
3513
3650
|
},
|
3651
|
+
"disabled": {
|
3652
|
+
"type": "boolean",
|
3653
|
+
"default": false,
|
3654
|
+
"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"
|
3655
|
+
},
|
3656
|
+
"minSystemVersion": {
|
3657
|
+
"type": "string",
|
3658
|
+
"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."
|
3659
|
+
},
|
3514
3660
|
"relatedEntityTypes": {
|
3515
3661
|
"type": "array",
|
3516
3662
|
"description": "Optional list of related EntityType Resources.\n\nMUST be a valid reference to an [EntityType Resource](#entity-type) ORD ID.",
|
@@ -3521,6 +3667,12 @@
|
|
3521
3667
|
"#/definitions/EntityType/ordId"
|
3522
3668
|
]
|
3523
3669
|
},
|
3670
|
+
"x-reverse-relationship": {
|
3671
|
+
"propertyName": "capabilities",
|
3672
|
+
"description": "Capabilities associated to the Entity Type.",
|
3673
|
+
"min": 0,
|
3674
|
+
"max": "*"
|
3675
|
+
},
|
3524
3676
|
"examples": [
|
3525
3677
|
[
|
3526
3678
|
"sap.odm:entityType:WorkforcePerson:v1"
|
@@ -3591,6 +3743,7 @@
|
|
3591
3743
|
"type": "object",
|
3592
3744
|
"title": "Capability Definition",
|
3593
3745
|
"x-introduced-in-version": "1.4.0",
|
3746
|
+
"x-ums-type": "custom",
|
3594
3747
|
"description": "Link and categorization of a machine-readable capability definition.",
|
3595
3748
|
"properties": {
|
3596
3749
|
"type": {
|
@@ -3679,12 +3832,13 @@
|
|
3679
3832
|
"IntegrationDependency": {
|
3680
3833
|
"type": "object",
|
3681
3834
|
"title": "Integration Dependency",
|
3835
|
+
"x-ums-type": "root",
|
3682
3836
|
"x-introduced-in-version": "1.7.0",
|
3683
3837
|
"description": "An [Integration Dependency](../../details/articles/integration-dependency) states that the described system (self) can integrate with external systems (integration target) to achieve an integration purpose.\nThe purpose could be to enable a certain feature or integration scenario, but it could also be a mandatory prerequisite for the described system to work.\n\nThe integration dependency includes a list of individual **aspects** that the integration consists of.\nAspects are an \"ingredient\" for the integration scenario (and are logically combined with AND condition).\nEach aspect can express alternatives (OR condition) on what API and event resources can be used to achieve the same outcome.\n\nThe direction of connection establishment, data flow is not directly implied and needs to be inferred from the referenced resources.\n\nIt is not in scope for the Integration Dependency to describe scenarios that external consumers have with the own exposed resources.\nThis would overstep the boundary of self-description.\n\nIf an integration scenario consists of two sides integration with each other, each need to describe its own part in it as an Integration Dependency.\nTherefore, if an integration with multiple types of systems need to be setup, this SHOULD be separated into distinct Integration Dependencies.\n\nAn integration dependency is also not meant to describe a bigger process.\nInstead it focuses on the technical necessaries to create an integration for one particular purpose.\n\nTo learn more about the concept, see [Integration Dependency](../../details/articles/integration-dependency).",
|
3684
3838
|
"properties": {
|
3685
3839
|
"ordId": {
|
3686
3840
|
"type": "string",
|
3687
|
-
"description": "The
|
3841
|
+
"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.",
|
3688
3842
|
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(integrationDependency):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3689
3843
|
"maxLength": 255,
|
3690
3844
|
"examples": [
|
@@ -3694,7 +3848,7 @@
|
|
3694
3848
|
"localId": {
|
3695
3849
|
"type": "string",
|
3696
3850
|
"x-introduced-in-version": "1.2.1",
|
3697
|
-
"description": "
|
3851
|
+
"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.",
|
3698
3852
|
"maxLength": 255,
|
3699
3853
|
"examples": [
|
3700
3854
|
"SuccessFactorsRecruiting",
|
@@ -3747,6 +3901,12 @@
|
|
3747
3901
|
"x-association-target": [
|
3748
3902
|
"#/definitions/Package/ordId"
|
3749
3903
|
],
|
3904
|
+
"x-reverse-relationship": {
|
3905
|
+
"propertyName": "integrationDependencies",
|
3906
|
+
"description": "The integration dependencies that are part the given Package.",
|
3907
|
+
"min": 0,
|
3908
|
+
"max": "*"
|
3909
|
+
},
|
3750
3910
|
"maxLength": 255,
|
3751
3911
|
"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.",
|
3752
3912
|
"examples": [
|
@@ -3762,11 +3922,15 @@
|
|
3762
3922
|
"#/definitions/Group/groupId"
|
3763
3923
|
]
|
3764
3924
|
},
|
3925
|
+
"x-reverse-relationship": {
|
3926
|
+
"propertyName": "integrationDependencyMembers",
|
3927
|
+
"description": "The Integration Dependencies that are part the given Group."
|
3928
|
+
},
|
3765
3929
|
"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."
|
3766
3930
|
},
|
3767
3931
|
"version": {
|
3768
3932
|
"type": "string",
|
3769
|
-
"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.",
|
3933
|
+
"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.",
|
3770
3934
|
"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-]+)*))?$",
|
3771
3935
|
"examples": [
|
3772
3936
|
"1.2.3",
|
@@ -3919,6 +4083,7 @@
|
|
3919
4083
|
"type": "object",
|
3920
4084
|
"title": "Aspect",
|
3921
4085
|
"x-introduced-in-version": "1.7.0",
|
4086
|
+
"x-ums-type": "custom",
|
3922
4087
|
"description": "An (integration) aspect is the constituent part that makes up an Integration Dependency.\n\nEach aspect can list references to resources, which could be owned and defined by the integration target or by the described system itself.\nIn case the reference links to own resources, it is implied that they are to be used by the integration target to fulfill the Integration Dependency.\n\nIf multiple resources are given within an aspect, they are considered alternatives to each other (OR condition).\nIn case an AND condition is needed, multiple aspects need to be added to the Integration Dependency.",
|
3923
4088
|
"properties": {
|
3924
4089
|
"title": {
|
@@ -3971,11 +4136,12 @@
|
|
3971
4136
|
"type": "object",
|
3972
4137
|
"title": "API Resource Integration Aspect",
|
3973
4138
|
"x-introduced-in-version": "1.7.0",
|
4139
|
+
"x-ums-type": "custom",
|
3974
4140
|
"description": "API resource related integration aspect",
|
3975
4141
|
"properties": {
|
3976
4142
|
"ordId": {
|
3977
4143
|
"type": "string",
|
3978
|
-
"description": "The
|
4144
|
+
"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.",
|
3979
4145
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3980
4146
|
"maxLength": 255,
|
3981
4147
|
"examples": [
|
@@ -4001,11 +4167,12 @@
|
|
4001
4167
|
"type": "object",
|
4002
4168
|
"title": "Event Resource Integration Aspect",
|
4003
4169
|
"x-introduced-in-version": "1.7.0",
|
4170
|
+
"x-ums-type": "custom",
|
4004
4171
|
"description": "Event resource related integration aspect",
|
4005
4172
|
"properties": {
|
4006
4173
|
"ordId": {
|
4007
4174
|
"type": "string",
|
4008
|
-
"description": "The
|
4175
|
+
"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.",
|
4009
4176
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4010
4177
|
"maxLength": 255,
|
4011
4178
|
"examples": [
|
@@ -4053,6 +4220,7 @@
|
|
4053
4220
|
"type": "object",
|
4054
4221
|
"title": "Event Resource Integration Aspect Subset",
|
4055
4222
|
"x-introduced-in-version": "1.7.0",
|
4223
|
+
"x-ums-type": "custom",
|
4056
4224
|
"description": "Defines that Event Resource Integration Aspect only requires a subset of the referenced contract.\n\nFor events, this could be a list of the events that need to be subscribed in order to make the integration work.\nThis information helps to narrow down what is really necessary and can help optimize the integration, e.g. by only publishing the events that are really needed.",
|
4057
4225
|
"properties": {
|
4058
4226
|
"eventType": {
|
@@ -4071,11 +4239,12 @@
|
|
4071
4239
|
"Vendor": {
|
4072
4240
|
"type": "object",
|
4073
4241
|
"title": "Vendor",
|
4242
|
+
"x-ums-type": "root",
|
4074
4243
|
"description": "The vendor of a product or a package, usually a corporation or a customer / user.\n\nThe vendor of a `Package` is the owner or creator of the content of the package.\nThe vendor of a `Product` is the owner of the product.\n\nIf the resources are created by the customer / user of the described system, `customer:vendor:Customer:` MUST be used as vendor.\n\nBoth have already a [vendor namespace](../index.md#vendor-namespace) within their ORD ID.\nThe `Vendor` entity is giving more details on the vendor namespace.\nFor one vendor namespace there MUST only be exactly one `Vendor` ORD entity describing it.\n\nFor example: The only correct value for a SAP vendor reference is `sap:vendor:SAP:`.",
|
4075
4244
|
"properties": {
|
4076
4245
|
"ordId": {
|
4077
4246
|
"type": "string",
|
4078
|
-
"description": "The
|
4247
|
+
"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.",
|
4079
4248
|
"pattern": "^([a-z0-9]+):(vendor):([a-zA-Z0-9._\\-]+):()$",
|
4080
4249
|
"maxLength": 255,
|
4081
4250
|
"examples": [
|
@@ -4143,6 +4312,7 @@
|
|
4143
4312
|
"type": "object",
|
4144
4313
|
"title": "Changelog Entry",
|
4145
4314
|
"description": "A changelog entry can be used to indicate changes.\nUsually they lead to a change of the version number or the release status.",
|
4315
|
+
"x-ums-type": "custom",
|
4146
4316
|
"properties": {
|
4147
4317
|
"version": {
|
4148
4318
|
"type": "string",
|
@@ -4206,6 +4376,7 @@
|
|
4206
4376
|
"type": "object",
|
4207
4377
|
"title": "Link",
|
4208
4378
|
"description": "Link that can be attached to packages or Open Resource Discovery resources.\n",
|
4379
|
+
"x-ums-type": "custom",
|
4209
4380
|
"properties": {
|
4210
4381
|
"title": {
|
4211
4382
|
"type": "string",
|
@@ -4247,6 +4418,7 @@
|
|
4247
4418
|
"PackageLink": {
|
4248
4419
|
"type": "object",
|
4249
4420
|
"title": "Package Link",
|
4421
|
+
"x-ums-type": "custom",
|
4250
4422
|
"description": "Links with specific semantic meaning that are related to `Package`.\n\nIf a generic [Link](#link) can also be expressed via a Package Link, the latter MUST be chosen.",
|
4251
4423
|
"properties": {
|
4252
4424
|
"type": {
|
@@ -4321,6 +4493,7 @@
|
|
4321
4493
|
"APIEventResourceLink": {
|
4322
4494
|
"type": "object",
|
4323
4495
|
"title": "API and Event Resource Link",
|
4496
|
+
"x-ums-type": "custom",
|
4324
4497
|
"description": "Links with specific semantic meaning that are related to API or event resources.\n\nIf a generic [Link](#link) can also be expressed via an API / Event Resource Link, the latter MUST be chosen.",
|
4325
4498
|
"properties": {
|
4326
4499
|
"type": {
|
@@ -4398,6 +4571,7 @@
|
|
4398
4571
|
"DataProductLink": {
|
4399
4572
|
"type": "object",
|
4400
4573
|
"title": "Data Product Link",
|
4574
|
+
"x-ums-type": "custom",
|
4401
4575
|
"description": "Links with specific semantic meaning that are related to Data Product resources.\nIf a generic [Link](#link) can also be expressed via Data Product Link, the latter MUST be chosen.",
|
4402
4576
|
"properties": {
|
4403
4577
|
"type": {
|
@@ -4461,7 +4635,8 @@
|
|
4461
4635
|
"SystemInstance": {
|
4462
4636
|
"type": "object",
|
4463
4637
|
"title": "System Instance",
|
4464
|
-
"
|
4638
|
+
"x-ums-type": "ignore",
|
4639
|
+
"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.",
|
4465
4640
|
"properties": {
|
4466
4641
|
"baseUrl": {
|
4467
4642
|
"type": "string",
|
@@ -4497,6 +4672,70 @@
|
|
4497
4672
|
]
|
4498
4673
|
]
|
4499
4674
|
},
|
4675
|
+
"labels": {
|
4676
|
+
"$ref": "#/definitions/Labels",
|
4677
|
+
"description": "Generic labels that can be applied to most ORD information."
|
4678
|
+
},
|
4679
|
+
"documentationLabels": {
|
4680
|
+
"$ref": "#/definitions/DocumentationLabels",
|
4681
|
+
"description": "Generic documentation labels that can be applied to most ORD information."
|
4682
|
+
},
|
4683
|
+
"tags": {
|
4684
|
+
"type": "array",
|
4685
|
+
"items": {
|
4686
|
+
"type": "string",
|
4687
|
+
"pattern": "^[a-zA-Z0-9-_.\\/ ]*$",
|
4688
|
+
"minLength": 1
|
4689
|
+
},
|
4690
|
+
"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.",
|
4691
|
+
"examples": [
|
4692
|
+
[
|
4693
|
+
"storage",
|
4694
|
+
"high-availability"
|
4695
|
+
]
|
4696
|
+
]
|
4697
|
+
}
|
4698
|
+
},
|
4699
|
+
"additionalProperties": false
|
4700
|
+
},
|
4701
|
+
"SystemType": {
|
4702
|
+
"type": "object",
|
4703
|
+
"title": "System Type",
|
4704
|
+
"description": "A [system type](../index.md#def-system-type) is the abstract type of an application or service, from operational perspective.",
|
4705
|
+
"x-ums-type": "ignore",
|
4706
|
+
"properties": {
|
4707
|
+
"systemNamespace": {
|
4708
|
+
"type": "string",
|
4709
|
+
"description": "The system namespace is a unique identifier for the system type.\nIt is used to reference the system type in the ORD.",
|
4710
|
+
"pattern": "^[a-z0-9]+(?:[.][a-z0-9]+){1}$",
|
4711
|
+
"examples": [
|
4712
|
+
"sap.s4",
|
4713
|
+
"sap.c4c",
|
4714
|
+
"sap.cld"
|
4715
|
+
]
|
4716
|
+
},
|
4717
|
+
"correlationIds": {
|
4718
|
+
"type": "array",
|
4719
|
+
"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).",
|
4720
|
+
"items": {
|
4721
|
+
"type": "string",
|
4722
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
4723
|
+
"maxLength": 255
|
4724
|
+
},
|
4725
|
+
"examples": [
|
4726
|
+
[
|
4727
|
+
"sap.cld:systemRole:S4_PC"
|
4728
|
+
]
|
4729
|
+
]
|
4730
|
+
},
|
4731
|
+
"labels": {
|
4732
|
+
"$ref": "#/definitions/Labels",
|
4733
|
+
"description": "Generic labels that can be applied to most ORD information."
|
4734
|
+
},
|
4735
|
+
"documentationLabels": {
|
4736
|
+
"$ref": "#/definitions/DocumentationLabels",
|
4737
|
+
"description": "Generic documentation labels that can be applied to most ORD information."
|
4738
|
+
},
|
4500
4739
|
"tags": {
|
4501
4740
|
"type": "array",
|
4502
4741
|
"items": {
|
@@ -4511,6 +4750,43 @@
|
|
4511
4750
|
"high-availability"
|
4512
4751
|
]
|
4513
4752
|
]
|
4753
|
+
}
|
4754
|
+
},
|
4755
|
+
"additionalProperties": false
|
4756
|
+
},
|
4757
|
+
"SystemVersion": {
|
4758
|
+
"type": "object",
|
4759
|
+
"title": "System Version",
|
4760
|
+
"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).",
|
4761
|
+
"x-ums-type": "ignore",
|
4762
|
+
"properties": {
|
4763
|
+
"version": {
|
4764
|
+
"type": "string",
|
4765
|
+
"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.",
|
4766
|
+
"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-]+)*))?$",
|
4767
|
+
"examples": [
|
4768
|
+
"1.2.3",
|
4769
|
+
"2024.8.0"
|
4770
|
+
]
|
4771
|
+
},
|
4772
|
+
"title": {
|
4773
|
+
"type": "string",
|
4774
|
+
"description": "Human-readable title of the system version.",
|
4775
|
+
"minLength": 1,
|
4776
|
+
"maxLength": 255,
|
4777
|
+
"examples": [
|
4778
|
+
"SAP S/4HANA Cloud 2408"
|
4779
|
+
]
|
4780
|
+
},
|
4781
|
+
"correlationIds": {
|
4782
|
+
"type": "array",
|
4783
|
+
"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).",
|
4784
|
+
"items": {
|
4785
|
+
"type": "string",
|
4786
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
4787
|
+
"maxLength": 255
|
4788
|
+
},
|
4789
|
+
"examples": []
|
4514
4790
|
},
|
4515
4791
|
"labels": {
|
4516
4792
|
"$ref": "#/definitions/Labels",
|
@@ -4519,6 +4795,21 @@
|
|
4519
4795
|
"documentationLabels": {
|
4520
4796
|
"$ref": "#/definitions/DocumentationLabels",
|
4521
4797
|
"description": "Generic documentation labels that can be applied to most ORD information."
|
4798
|
+
},
|
4799
|
+
"tags": {
|
4800
|
+
"type": "array",
|
4801
|
+
"items": {
|
4802
|
+
"type": "string",
|
4803
|
+
"pattern": "^[a-zA-Z0-9-_.\\/ ]*$",
|
4804
|
+
"minLength": 1
|
4805
|
+
},
|
4806
|
+
"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.",
|
4807
|
+
"examples": [
|
4808
|
+
[
|
4809
|
+
"storage",
|
4810
|
+
"high-availability"
|
4811
|
+
]
|
4812
|
+
]
|
4522
4813
|
}
|
4523
4814
|
},
|
4524
4815
|
"additionalProperties": false
|
@@ -4527,6 +4818,7 @@
|
|
4527
4818
|
"type": "object",
|
4528
4819
|
"title": "Access Strategy",
|
4529
4820
|
"description": "Defines the [access strategy](../../spec-extensions/access-strategies/) for accessing the resource definitions.",
|
4821
|
+
"x-ums-type": "custom",
|
4530
4822
|
"properties": {
|
4531
4823
|
"type": {
|
4532
4824
|
"type": "string",
|
@@ -4594,6 +4886,7 @@
|
|
4594
4886
|
"type": "object",
|
4595
4887
|
"title": "Credential Exchange Strategy",
|
4596
4888
|
"x-feature-status": "alpha",
|
4889
|
+
"x-ums-type": "custom",
|
4597
4890
|
"description": "The credential exchange strategy specifies how a set of credentials for a particular usage\nof the APIs in the consumption bundle can be obtained.\nUntil a SAP-wide strategy for obtaining such credentials exists and is agreed upon,\nboth LoBs and aggregators (namely Unified Customer Landscape) can define their own strategy specifications.\n\nWhile the actual flow in term of API calls can differ between the different strategies,\nthe end goal would always be the possibility for automatically obtaining credentials for each client\nthat would like to use the APIs from a particular bundle.",
|
4598
4891
|
"properties": {
|
4599
4892
|
"type": {
|
@@ -4639,6 +4932,7 @@
|
|
4639
4932
|
"title": "Labels",
|
4640
4933
|
"type": "object",
|
4641
4934
|
"description": "Generic labels that can be applied to most ORD information.\nThey are defined as an object that may have arbitrary keys.\nThe value of a key is an array of strings.\n\nLabels can be used to attach technical information that cannot be expressed natively in ORD.\nAn ORD aggregator should allow to categorize and query information based on the labels provided.\n\nIf multiple parties rely on the existence of certain label information,\nstandardization through ORD SHOULD be preferred.\n\nAll labels attached to a `Package` will be inherited to the resources they contain.\nDuplicate labels will be merged by the ORD aggregator according to the following rules:\n* Values of the same label key will be merged.\n* Duplicate values of the same label key will be removed.",
|
4935
|
+
"x-ums-type": "custom",
|
4642
4936
|
"patternProperties": {
|
4643
4937
|
"^[a-zA-Z0-9-_.]*$": {
|
4644
4938
|
"type": "array",
|
@@ -4660,6 +4954,7 @@
|
|
4660
4954
|
"GroupType": {
|
4661
4955
|
"title": "Group Type",
|
4662
4956
|
"type": "object",
|
4957
|
+
"x-ums-type": "root",
|
4663
4958
|
"description": "A Group Type defines the semantics of [group assignments](#group).\nWhat the Group Type means and how it is to be used correctly SHOULD be described in the `description` (which may include markdown links).\n\nGroup Types can be defined centrally (ownership by authority namespace) or decentrally (defined by application / service itself).\n\nTo learn more about the concept, see [Group Concept Documentation](../../details/articles/grouping-and-bundling#Groups).",
|
4664
4959
|
"x-introduced-in-version": "1.9.0",
|
4665
4960
|
"properties": {
|
@@ -4705,6 +5000,7 @@
|
|
4705
5000
|
"Group": {
|
4706
5001
|
"title": "Group",
|
4707
5002
|
"type": "object",
|
5003
|
+
"x-ums-type": "root",
|
4708
5004
|
"description": "Group (instance) that resources can be assigned to.\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\nTo learn more about the concept, see [Group Concept Documentation](../../details/articles/grouping-and-bundling#Groups).",
|
4709
5005
|
"x-introduced-in-version": "1.9.0",
|
4710
5006
|
"properties": {
|
@@ -4726,7 +5022,13 @@
|
|
4726
5022
|
],
|
4727
5023
|
"x-association-target": [
|
4728
5024
|
"#/definitions/GroupType/groupTypeId"
|
4729
|
-
]
|
5025
|
+
],
|
5026
|
+
"x-reverse-relationship": {
|
5027
|
+
"propertyName": "groups",
|
5028
|
+
"description": "Group instances of the group type.",
|
5029
|
+
"min": 0,
|
5030
|
+
"max": "*"
|
5031
|
+
}
|
4730
5032
|
},
|
4731
5033
|
"title": {
|
4732
5034
|
"type": "string",
|
@@ -4764,6 +5066,7 @@
|
|
4764
5066
|
"type": "object",
|
4765
5067
|
"description": "Generic documentation labels that can be applied to most ORD information.\nThey are defined as an object that may have arbitrary keys.\nThe value of a key is an array of [CommonMark](https://spec.commonmark.org/) (Markdown) text.\n\nDocumentation Labels can be used to attach human readable documentation that cannot be expressed natively in ORD.\nA documentation tool (like an API Catalog) can use the documentation labels to provide generic documentation \"snippets\".\nDue to the given structure they can be displayed e.g. as tables.\n\nThe key of the documentation Label is plain-text (MUST not contain line breaks) and denotes the subject matter that is described.\nThe values (multiple can be provided for the same key) are [CommonMark](https://spec.commonmark.org/) (Markdown) text\nwhich describes the subject matter or lists options for the key.\n\nIn contrast to regular labels, documentation labels are not meant to be used to categorize or query information.",
|
4766
5068
|
"x-introduced-in-version": "1.1.0",
|
5069
|
+
"x-ums-type": "custom",
|
4767
5070
|
"patternProperties": {
|
4768
5071
|
"^.*$": {
|
4769
5072
|
"type": "array",
|
@@ -4784,6 +5087,7 @@
|
|
4784
5087
|
"Extensible": {
|
4785
5088
|
"title": "Extensible",
|
4786
5089
|
"type": "object",
|
5090
|
+
"x-ums-type": "embedded",
|
4787
5091
|
"description": "Contains information about the extensibility of this resource.\n\nIf applicable, a description and further resources about extending this resource are provided.",
|
4788
5092
|
"properties": {
|
4789
5093
|
"supported": {
|
@@ -4818,8 +5122,9 @@
|
|
4818
5122
|
"EntityTypeMapping": {
|
4819
5123
|
"title": "Entity Type Mapping",
|
4820
5124
|
"x-introduced-in-version": "1.6.0",
|
5125
|
+
"x-ums-type": "custom",
|
4821
5126
|
"type": "object",
|
4822
|
-
"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
|
5127
|
+
"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.",
|
4823
5128
|
"properties": {
|
4824
5129
|
"apiModelSelectors": {
|
4825
5130
|
"type": "array",
|
@@ -4859,6 +5164,7 @@
|
|
4859
5164
|
"ApiModelSelectorOData": {
|
4860
5165
|
"title": "API Model Selector (OData)",
|
4861
5166
|
"x-introduced-in-version": "1.6.0",
|
5167
|
+
"x-ums-type": "custom",
|
4862
5168
|
"type": "object",
|
4863
5169
|
"description": "API Model Selector for OData, using entity set names for the selection.\n\nMUST only be used if the API Resource provides an API Resource Definition of type `edmx`.",
|
4864
5170
|
"properties": {
|
@@ -4893,6 +5199,7 @@
|
|
4893
5199
|
"ApiModelSelectorJsonPointer": {
|
4894
5200
|
"title": "API Model Selector (JSON Pointer)",
|
4895
5201
|
"x-introduced-in-version": "1.6.0",
|
5202
|
+
"x-ums-type": "custom",
|
4896
5203
|
"type": "object",
|
4897
5204
|
"description": "Generic API Model Selector for JSON / YAML based resource definitions.\nIt uses a [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901) that points to the\nentity type description within the resource definition.\n\nThe JSON Pointer always to refer to the structure of the document as originally provided, before further post-processing like resolving $ref properties.\n\nMUST only be used if the API Resource provides an API Resource Definition of media type `application/json` or `text/yaml`.",
|
4898
5205
|
"properties": {
|
@@ -4929,12 +5236,13 @@
|
|
4929
5236
|
"RelatedEntityType": {
|
4930
5237
|
"title": "Related Entity Type",
|
4931
5238
|
"x-introduced-in-version": "1.9.0",
|
5239
|
+
"x-ums-type": "embedded",
|
4932
5240
|
"type": "object",
|
4933
5241
|
"description": "Defines which Entity Type is related (via its ORD ID).\nIn the future, this could include stating the relationship type, too.",
|
4934
5242
|
"properties": {
|
4935
5243
|
"ordId": {
|
4936
5244
|
"type": "string",
|
4937
|
-
"description": "The
|
5245
|
+
"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.",
|
4938
5246
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4939
5247
|
"maxLength": 255,
|
4940
5248
|
"examples": [
|
@@ -4953,12 +5261,13 @@
|
|
4953
5261
|
"EntityTypeOrdIdTarget": {
|
4954
5262
|
"title": "Entity Type Target (ORD ID)",
|
4955
5263
|
"x-introduced-in-version": "1.6.0",
|
5264
|
+
"x-ums-type": "custom",
|
4956
5265
|
"type": "object",
|
4957
5266
|
"description": "Define which entity type is the target of an entity type mapping\n\nEntity types can be referenced using a [ORD ID](../../spec-v1/#ord-id) of an entity type.",
|
4958
5267
|
"properties": {
|
4959
5268
|
"ordId": {
|
4960
5269
|
"type": "string",
|
4961
|
-
"description": "The
|
5270
|
+
"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.",
|
4962
5271
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4963
5272
|
"maxLength": 255,
|
4964
5273
|
"examples": [
|
@@ -4977,6 +5286,7 @@
|
|
4977
5286
|
"EntityTypeCorrelationIdTarget": {
|
4978
5287
|
"title": "Entity Type Target (Correlation ID)",
|
4979
5288
|
"x-introduced-in-version": "1.6.0",
|
5289
|
+
"x-ums-type": "custom",
|
4980
5290
|
"type": "object",
|
4981
5291
|
"description": "Define which entity type is the target of an entity type mapping\n\nEntity types can be referenced using a [Correlation ID](../../spec-v1/#correlation-id).",
|
4982
5292
|
"properties": {
|
@@ -4997,6 +5307,7 @@
|
|
4997
5307
|
"Tombstone": {
|
4998
5308
|
"type": "object",
|
4999
5309
|
"title": "Tombstone",
|
5310
|
+
"x-ums-type": "ignore",
|
5000
5311
|
"description": "A tombstone indicates that a previously published ORD resource or taxonomy has been removed / decommissioned.\nThis MUST be indicated explicitly, so ORD aggregators and consumers can learn about the removal.\n\nExactly one of the IDs MUST be provided to state which ORD resource or taxonomy item the Tombstone addresses.\n\nIt MUST be kept sufficiently long so that all ORD aggregators can learn about the tombstone.\nAfter that it MAY be removed.",
|
5001
5312
|
"properties": {
|
5002
5313
|
"ordId": {
|
@@ -5073,10 +5384,189 @@
|
|
5073
5384
|
"removalDate": "2020-12-02T14:12:59Z"
|
5074
5385
|
}
|
5075
5386
|
]
|
5387
|
+
},
|
5388
|
+
"OrdResource": {
|
5389
|
+
"type": "object",
|
5390
|
+
"title": "ORD Resource (abstract)",
|
5391
|
+
"x-abstract": true,
|
5392
|
+
"x-ums-type": "root",
|
5393
|
+
"description": "Abstract definition of shared properties across ORD Resources.",
|
5394
|
+
"properties": {
|
5395
|
+
"ordId": {
|
5396
|
+
"type": "string",
|
5397
|
+
"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.",
|
5398
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(apiResource|eventResource|capability|dataProduct):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*|)$",
|
5399
|
+
"maxLength": 255,
|
5400
|
+
"examples": []
|
5401
|
+
},
|
5402
|
+
"localId": {
|
5403
|
+
"type": "string",
|
5404
|
+
"x-introduced-in-version": "1.2.1",
|
5405
|
+
"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.",
|
5406
|
+
"maxLength": 255,
|
5407
|
+
"examples": []
|
5408
|
+
},
|
5409
|
+
"correlationIds": {
|
5410
|
+
"type": "array",
|
5411
|
+
"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).",
|
5412
|
+
"items": {
|
5413
|
+
"type": "string",
|
5414
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
5415
|
+
"maxLength": 255
|
5416
|
+
},
|
5417
|
+
"examples": []
|
5418
|
+
},
|
5419
|
+
"title": {
|
5420
|
+
"type": "string",
|
5421
|
+
"description": "Human-readable title.\n\nMUST NOT exceed 255 chars.\nMUST NOT contain line breaks.",
|
5422
|
+
"minLength": 1,
|
5423
|
+
"maxLength": 255,
|
5424
|
+
"examples": []
|
5425
|
+
},
|
5426
|
+
"shortDescription": {
|
5427
|
+
"type": "string",
|
5428
|
+
"description": "Plain text short description.\n\nMUST NOT exceed 255 chars.\nMUST NOT contain line breaks.",
|
5429
|
+
"minLength": 1,
|
5430
|
+
"maxLength": 255,
|
5431
|
+
"examples": []
|
5432
|
+
},
|
5433
|
+
"description": {
|
5434
|
+
"type": "string",
|
5435
|
+
"minLength": 1,
|
5436
|
+
"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.",
|
5437
|
+
"examples": []
|
5438
|
+
},
|
5439
|
+
"partOfPackage": {
|
5440
|
+
"type": "string",
|
5441
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(package):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
5442
|
+
"x-association-target": [
|
5443
|
+
"#/definitions/Package/ordId"
|
5444
|
+
],
|
5445
|
+
"x-reverse-relationship": null,
|
5446
|
+
"maxLength": 255,
|
5447
|
+
"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.",
|
5448
|
+
"examples": []
|
5449
|
+
},
|
5450
|
+
"partOfGroups": {
|
5451
|
+
"type": "array",
|
5452
|
+
"items": {
|
5453
|
+
"type": "string",
|
5454
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-\\/]+):([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-\\/]+)$",
|
5455
|
+
"x-association-target": [
|
5456
|
+
"#/definitions/Group/groupId"
|
5457
|
+
]
|
5458
|
+
},
|
5459
|
+
"x-reverse-relationship": {
|
5460
|
+
"propertyName": "ordResourceMembers",
|
5461
|
+
"description": "The ORD resources that are part the given Group.",
|
5462
|
+
"min": 0,
|
5463
|
+
"max": "*"
|
5464
|
+
},
|
5465
|
+
"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.",
|
5466
|
+
"examples": []
|
5467
|
+
},
|
5468
|
+
"version": {
|
5469
|
+
"type": "string",
|
5470
|
+
"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.",
|
5471
|
+
"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-]+)*))?$",
|
5472
|
+
"examples": [
|
5473
|
+
"1.2.3",
|
5474
|
+
"1.0.0-alpha.1"
|
5475
|
+
]
|
5476
|
+
},
|
5477
|
+
"lastUpdate": {
|
5478
|
+
"type": "string",
|
5479
|
+
"format": "date-time",
|
5480
|
+
"x-introduced-in-version": "1.4.0",
|
5481
|
+
"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.",
|
5482
|
+
"examples": [
|
5483
|
+
"2022-12-19T15:47:04+00:00"
|
5484
|
+
]
|
5485
|
+
},
|
5486
|
+
"visibility": {
|
5487
|
+
"type": "string",
|
5488
|
+
"description": "The visibility states who is allowed to \"see\" the described resource or capability.",
|
5489
|
+
"oneOf": [
|
5490
|
+
{
|
5491
|
+
"const": "public",
|
5492
|
+
"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)."
|
5493
|
+
},
|
5494
|
+
{
|
5495
|
+
"const": "internal",
|
5496
|
+
"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."
|
5497
|
+
},
|
5498
|
+
{
|
5499
|
+
"const": "private",
|
5500
|
+
"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."
|
5501
|
+
}
|
5502
|
+
]
|
5503
|
+
},
|
5504
|
+
"releaseStatus": {
|
5505
|
+
"type": "string",
|
5506
|
+
"description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
|
5507
|
+
"oneOf": [
|
5508
|
+
{
|
5509
|
+
"const": "active",
|
5510
|
+
"description": "Resource is meant for productive use and provides a stable API contract."
|
5511
|
+
},
|
5512
|
+
{
|
5513
|
+
"const": "beta",
|
5514
|
+
"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."
|
5515
|
+
},
|
5516
|
+
{
|
5517
|
+
"const": "deprecated",
|
5518
|
+
"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)."
|
5519
|
+
}
|
5520
|
+
],
|
5521
|
+
"examples": [
|
5522
|
+
"active"
|
5523
|
+
]
|
5524
|
+
},
|
5525
|
+
"links": {
|
5526
|
+
"type": "array",
|
5527
|
+
"description": "Generic links with arbitrary meaning and content.\n\n`packageLinks` MUST be preferred if applicable.",
|
5528
|
+
"items": {
|
5529
|
+
"$ref": "#/definitions/Link"
|
5530
|
+
}
|
5531
|
+
},
|
5532
|
+
"tags": {
|
5533
|
+
"type": "array",
|
5534
|
+
"items": {
|
5535
|
+
"type": "string",
|
5536
|
+
"pattern": "^[a-zA-Z0-9-_.\\/ ]*$",
|
5537
|
+
"minLength": 1
|
5538
|
+
},
|
5539
|
+
"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.",
|
5540
|
+
"examples": [
|
5541
|
+
[
|
5542
|
+
"storage",
|
5543
|
+
"high-availability"
|
5544
|
+
]
|
5545
|
+
]
|
5546
|
+
},
|
5547
|
+
"labels": {
|
5548
|
+
"$ref": "#/definitions/Labels",
|
5549
|
+
"description": "Generic labels that can be applied to most ORD information."
|
5550
|
+
},
|
5551
|
+
"documentationLabels": {
|
5552
|
+
"$ref": "#/definitions/DocumentationLabels",
|
5553
|
+
"description": "Generic documentation labels that can be applied to most ORD information."
|
5554
|
+
}
|
5555
|
+
},
|
5556
|
+
"required": [
|
5557
|
+
"ordId",
|
5558
|
+
"title",
|
5559
|
+
"description",
|
5560
|
+
"version",
|
5561
|
+
"visibility",
|
5562
|
+
"releaseStatus",
|
5563
|
+
"partOfPackage"
|
5564
|
+
],
|
5565
|
+
"additionalProperties": true
|
5076
5566
|
}
|
5077
5567
|
},
|
5078
|
-
"title": "ORD Document",
|
5079
5568
|
"type": "object",
|
5569
|
+
"x-ums-type": "ignore",
|
5080
5570
|
"properties": {
|
5081
5571
|
"$schema": {
|
5082
5572
|
"type": "string",
|
@@ -5095,50 +5585,21 @@
|
|
5095
5585
|
"openResourceDiscovery": {
|
5096
5586
|
"type": "string",
|
5097
5587
|
"description": "Version of the Open Resource Discovery specification that is used to describe this document.",
|
5098
|
-
"
|
5099
|
-
|
5100
|
-
|
5101
|
-
|
5102
|
-
|
5103
|
-
|
5104
|
-
|
5105
|
-
|
5106
|
-
|
5107
|
-
|
5108
|
-
|
5109
|
-
|
5110
|
-
},
|
5111
|
-
{
|
5112
|
-
"const": "1.3",
|
5113
|
-
"description": "ORD Version 1.3"
|
5114
|
-
},
|
5115
|
-
{
|
5116
|
-
"const": "1.4",
|
5117
|
-
"description": "ORD Version 1.4"
|
5118
|
-
},
|
5119
|
-
{
|
5120
|
-
"const": "1.5",
|
5121
|
-
"description": "ORD Version 1.5"
|
5122
|
-
},
|
5123
|
-
{
|
5124
|
-
"const": "1.6",
|
5125
|
-
"description": "ORD Version 1.6"
|
5126
|
-
},
|
5127
|
-
{
|
5128
|
-
"const": "1.7",
|
5129
|
-
"description": "ORD Version 1.7"
|
5130
|
-
},
|
5131
|
-
{
|
5132
|
-
"const": "1.8",
|
5133
|
-
"description": "ORD Version 1.8"
|
5134
|
-
},
|
5135
|
-
{
|
5136
|
-
"const": "1.9",
|
5137
|
-
"description": "ORD Version 1.9"
|
5138
|
-
}
|
5588
|
+
"enum": [
|
5589
|
+
"1.0",
|
5590
|
+
"1.1",
|
5591
|
+
"1.2",
|
5592
|
+
"1.3",
|
5593
|
+
"1.4",
|
5594
|
+
"1.5",
|
5595
|
+
"1.6",
|
5596
|
+
"1.7",
|
5597
|
+
"1.8",
|
5598
|
+
"1.9",
|
5599
|
+
"1.10"
|
5139
5600
|
],
|
5140
5601
|
"examples": [
|
5141
|
-
"1.
|
5602
|
+
"1.10"
|
5142
5603
|
]
|
5143
5604
|
},
|
5144
5605
|
"description": {
|
@@ -5151,7 +5612,15 @@
|
|
5151
5612
|
},
|
5152
5613
|
"describedSystemInstance": {
|
5153
5614
|
"$ref": "#/definitions/SystemInstance",
|
5154
|
-
"description": "Information on the
|
5615
|
+
"description": "Information on the [system instance](../index.md#def-system-instance) that this ORD document describes."
|
5616
|
+
},
|
5617
|
+
"describedSystemType": {
|
5618
|
+
"$ref": "#/definitions/SystemType",
|
5619
|
+
"description": "Information on the [system type](../index.md#def-system-type) that this ORD document describes."
|
5620
|
+
},
|
5621
|
+
"describedSystemVersion": {
|
5622
|
+
"$ref": "#/definitions/SystemVersion",
|
5623
|
+
"description": "Information on the [system version](../index.md#def-system-version) that this ORD document describes."
|
5155
5624
|
},
|
5156
5625
|
"policyLevel": {
|
5157
5626
|
"type": "string",
|
@@ -5288,6 +5757,7 @@
|
|
5288
5757
|
"groups": {
|
5289
5758
|
"type": "array",
|
5290
5759
|
"description": "Array of all Groups that are described in this ORD document.",
|
5760
|
+
"x-introduced-in-version": "1.9.0",
|
5291
5761
|
"items": {
|
5292
5762
|
"$ref": "#/definitions/Group"
|
5293
5763
|
}
|
@@ -5295,6 +5765,7 @@
|
|
5295
5765
|
"groupTypes": {
|
5296
5766
|
"type": "array",
|
5297
5767
|
"description": "Array of all Group Types that are described in this ORD document.",
|
5768
|
+
"x-introduced-in-version": "1.9.0",
|
5298
5769
|
"items": {
|
5299
5770
|
"$ref": "#/definitions/GroupType"
|
5300
5771
|
}
|