@open-resource-discovery/specification 1.10.1 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/v1/Configuration.d.ts +12 -1
- package/dist/types/v1/Document.d.ts +64 -38
- package/package.json +4 -4
- package/static/spec-v1/interfaces/Configuration.annotated.schema.json +16 -1
- package/static/spec-v1/interfaces/Configuration.schema.json +16 -1
- package/static/spec-v1/interfaces/Document.annotated.schema.json +254 -56
- package/static/spec-v1/interfaces/Document.schema.json +228 -51
@@ -24,7 +24,7 @@
|
|
24
24
|
"type": "object",
|
25
25
|
"title": "Package",
|
26
26
|
"x-ums-type": "root",
|
27
|
-
"description": "A [**Package**](
|
27
|
+
"description": "A [**Package**](../concepts/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](../concepts/grouping-and-bundling#package).",
|
28
28
|
"properties": {
|
29
29
|
"ordId": {
|
30
30
|
"type": "string",
|
@@ -83,7 +83,12 @@
|
|
83
83
|
"policyLevel": {
|
84
84
|
"type": "string",
|
85
85
|
"description": "The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.\nDepending on the chosen policy level, additional expectations and validations rules will be applied.\n\nThe policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n",
|
86
|
-
"
|
86
|
+
"anyOf": [
|
87
|
+
{
|
88
|
+
"type": "string",
|
89
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
90
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
91
|
+
},
|
87
92
|
{
|
88
93
|
"const": "none",
|
89
94
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -378,7 +383,7 @@
|
|
378
383
|
"runtimeRestriction": {
|
379
384
|
"x-introduced-in-version": "1.8.0",
|
380
385
|
"x-feature-status": "alpha",
|
381
|
-
"description": "If provided, all resources that are part of this package can only run on the listed runtime.\n\nMUST be a valid [
|
386
|
+
"description": "If provided, all resources that are part of this package can only run on the listed runtime.\n\nMUST be a valid [system namespace](../index.md#system-namespace).",
|
382
387
|
"type": "string",
|
383
388
|
"pattern": "^[a-z0-9]+(?:[.][a-z0-9]+){1}$",
|
384
389
|
"examples": [
|
@@ -423,7 +428,7 @@
|
|
423
428
|
"type": "object",
|
424
429
|
"title": "Consumption Bundle",
|
425
430
|
"x-ums-type": "root",
|
426
|
-
"description": "A [**Consumption Bundle**](
|
431
|
+
"description": "A [**Consumption Bundle**](../concepts/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](../concepts/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](../concepts/grouping-and-bundling#consumption-bundle).",
|
427
432
|
"properties": {
|
428
433
|
"ordId": {
|
429
434
|
"type": "string",
|
@@ -885,7 +890,12 @@
|
|
885
890
|
"apiProtocol": {
|
886
891
|
"type": "string",
|
887
892
|
"description": "API Protocol including the protocol version if applicable",
|
888
|
-
"
|
893
|
+
"anyOf": [
|
894
|
+
{
|
895
|
+
"type": "string",
|
896
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
897
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
898
|
+
},
|
889
899
|
{
|
890
900
|
"const": "odata-v2",
|
891
901
|
"description": "[OData Version 2.0](https://www.odata.org/documentation/odata-version-2-0/) API.\nAn API Resource definition of type `edmx` MUST be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `edmx`, `csdl-json`, `openapi-v2`, `openapi-v3`, `sap-csn-interop-effective-v1` or `custom`."
|
@@ -947,7 +957,12 @@
|
|
947
957
|
"implementationStandard": {
|
948
958
|
"type": "string",
|
949
959
|
"description": "Declares this API to be a valid implementation of an externally standardized API contract, sub-protocol or protocol variant.\n\nAll APIs that share the same implementation standard MAY be treated the same or similar by a consumer client.",
|
950
|
-
"
|
960
|
+
"anyOf": [
|
961
|
+
{
|
962
|
+
"type": "string",
|
963
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
964
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
|
965
|
+
},
|
951
966
|
{
|
952
967
|
"const": "sap:ord-document-api:v1",
|
953
968
|
"description": "API follows the Open Resource Discovery v1 [Document API](../index.md#ord-provider-api) contract."
|
@@ -1038,7 +1053,12 @@
|
|
1038
1053
|
"x-feature-status": "beta",
|
1039
1054
|
"items": {
|
1040
1055
|
"type": "string",
|
1041
|
-
"
|
1056
|
+
"anyOf": [
|
1057
|
+
{
|
1058
|
+
"type": "string",
|
1059
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1060
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
1061
|
+
},
|
1042
1062
|
{
|
1043
1063
|
"const": "data-federation",
|
1044
1064
|
"description": "Resources are designed to support [data federation](https://en.wikipedia.org/wiki/Federated_database_system). This goes beyond plain queries, but typically allowing connections on the data base level, in the context of a business user.\nAs consumers will directly access data, performance of the system must support these use cases."
|
@@ -1084,11 +1104,36 @@
|
|
1084
1104
|
"entityTypeMappings": {
|
1085
1105
|
"type": "array",
|
1086
1106
|
"x-introduced-in-version": "1.6.0",
|
1107
|
+
"x-deprecated-in-version": "1.11.0",
|
1108
|
+
"x-deprecated": "Use the simplified `exposedEntityTypes` instead.",
|
1087
1109
|
"description": "Describes mappings between the API Models of the described resource to the underlying, conceptual entity types.",
|
1088
1110
|
"items": {
|
1089
1111
|
"$ref": "#/definitions/EntityTypeMapping"
|
1090
1112
|
}
|
1091
1113
|
},
|
1114
|
+
"exposedEntityTypes": {
|
1115
|
+
"type": "array",
|
1116
|
+
"x-introduced-in-version": "1.11.0",
|
1117
|
+
"description": "Optional list of [entity types](#entity-type) that are exposed by the resource.\n\nThis replaces `entityTypeMappings`. If both is given, the `exposedEntityTypes` wins.\n\nMUST be a valid reference to an [EntityType](#entity-type) ORD ID.",
|
1118
|
+
"items": {
|
1119
|
+
"$ref": "#/definitions/ExposedEntityType"
|
1120
|
+
},
|
1121
|
+
"examples": [
|
1122
|
+
[
|
1123
|
+
{
|
1124
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
1125
|
+
}
|
1126
|
+
],
|
1127
|
+
[
|
1128
|
+
{
|
1129
|
+
"ordId": "sap.sm:entityType:PurchaseOrderItem:v1"
|
1130
|
+
},
|
1131
|
+
{
|
1132
|
+
"ordId": "sap.sm:entityType:BusinessPartner:v1"
|
1133
|
+
}
|
1134
|
+
]
|
1135
|
+
]
|
1136
|
+
},
|
1092
1137
|
"apiResourceLinks": {
|
1093
1138
|
"type": "array",
|
1094
1139
|
"description": "Links with semantic meaning that are specific to API Resources.",
|
@@ -1313,7 +1358,12 @@
|
|
1313
1358
|
"policyLevel": {
|
1314
1359
|
"type": "string",
|
1315
1360
|
"description": "The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.\nDepending on the chosen policy level, additional expectations and validations rules will be applied.\n\nThe policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n",
|
1316
|
-
"
|
1361
|
+
"anyOf": [
|
1362
|
+
{
|
1363
|
+
"type": "string",
|
1364
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1365
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
1366
|
+
},
|
1317
1367
|
{
|
1318
1368
|
"const": "none",
|
1319
1369
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -1650,7 +1700,17 @@
|
|
1650
1700
|
"implementationStandard": {
|
1651
1701
|
"type": "string",
|
1652
1702
|
"description": "Declares this EventResource to be a valid implementation of a standardized or shared contract.\n\nAll implementations of the same implementation standard MAY be treated the same by a consumer.\nHowever, there MAY be differences in the access strategy, and compatible customizations by the implementer.\nThe implementation standard MAY define the role of the implementor (producer, consumer, both) and how it is determined.\n\nAs of now, only custom implementation standards are supported.",
|
1653
|
-
"
|
1703
|
+
"anyOf": [
|
1704
|
+
{
|
1705
|
+
"type": "string",
|
1706
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1707
|
+
"description": "Any valid [API Resource ORD ID](../index.md#api-resource_ordid).\n\nRECOMMENDED to use if the contract is published via ORD and has an ORD ID."
|
1708
|
+
},
|
1709
|
+
{
|
1710
|
+
"type": "string",
|
1711
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1712
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
|
1713
|
+
},
|
1654
1714
|
{
|
1655
1715
|
"const": "custom",
|
1656
1716
|
"description": "If chosen, a custom implementation standard MUST be provided via `customImplementationStandard` and SHOULD be described via `customImplementationStandardDescription`"
|
@@ -1702,11 +1762,36 @@
|
|
1702
1762
|
"entityTypeMappings": {
|
1703
1763
|
"type": "array",
|
1704
1764
|
"x-introduced-in-version": "1.6.0",
|
1765
|
+
"x-deprecated-in-version": "1.11.0",
|
1766
|
+
"x-deprecated": "Use the simplified `exposedEntityTypes` instead.",
|
1705
1767
|
"description": "Describes mappings between the API Models of the described resource to the underlying, conceptual entity types.",
|
1706
1768
|
"items": {
|
1707
1769
|
"$ref": "#/definitions/EntityTypeMapping"
|
1708
1770
|
}
|
1709
1771
|
},
|
1772
|
+
"exposedEntityTypes": {
|
1773
|
+
"type": "array",
|
1774
|
+
"x-introduced-in-version": "1.11.0",
|
1775
|
+
"description": "Optional list of [entity types](#entity-type) that are exposed by the resource.\n\nThis replaces `entityTypeMappings`. If both is given, the `exposedEntityTypes` wins.\n\nMUST be a valid reference to an [EntityType](#entity-type) ORD ID.",
|
1776
|
+
"items": {
|
1777
|
+
"$ref": "#/definitions/ExposedEntityType"
|
1778
|
+
},
|
1779
|
+
"examples": [
|
1780
|
+
[
|
1781
|
+
{
|
1782
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
1783
|
+
}
|
1784
|
+
],
|
1785
|
+
[
|
1786
|
+
{
|
1787
|
+
"ordId": "sap.sm:entityType:PurchaseOrderItem:v1"
|
1788
|
+
},
|
1789
|
+
{
|
1790
|
+
"ordId": "sap.sm:entityType:BusinessPartner:v1"
|
1791
|
+
}
|
1792
|
+
]
|
1793
|
+
]
|
1794
|
+
},
|
1710
1795
|
"eventResourceLinks": {
|
1711
1796
|
"type": "array",
|
1712
1797
|
"x-introduced-in-version": "1.7.1",
|
@@ -1932,7 +2017,12 @@
|
|
1932
2017
|
"policyLevel": {
|
1933
2018
|
"type": "string",
|
1934
2019
|
"description": "The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.\nDepending on the chosen policy level, additional expectations and validations rules will be applied.\n\nThe policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n",
|
1935
|
-
"
|
2020
|
+
"anyOf": [
|
2021
|
+
{
|
2022
|
+
"type": "string",
|
2023
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2024
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2025
|
+
},
|
1936
2026
|
{
|
1937
2027
|
"const": "none",
|
1938
2028
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -2015,7 +2105,7 @@
|
|
2015
2105
|
"type": "object",
|
2016
2106
|
"title": "Entity Type",
|
2017
2107
|
"x-ums-type": "root",
|
2018
|
-
"description": "An [**Entity Type**](
|
2108
|
+
"description": "An [**Entity Type**](../concepts/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](../concepts/grouping-and-bundling#entity-type).",
|
2019
2109
|
"x-introduced-in-version": "1.8.0",
|
2020
2110
|
"properties": {
|
2021
2111
|
"ordId": {
|
@@ -2248,7 +2338,7 @@
|
|
2248
2338
|
},
|
2249
2339
|
"level": {
|
2250
2340
|
"type": "string",
|
2251
|
-
"description": "Defining the abstraction level of the entity type using the DDD terminology.\n\nIn Domain-Driven Design, there is a concept of entities and aggregates.\nThere are root entities which may contain further sub entities by composition.\nThe complete
|
2341
|
+
"description": "Defining the abstraction level of the entity type using the DDD terminology.\n\nIn Domain-Driven Design, there is a concept of entities and aggregates.\nThere are root entities which may contain further sub entities by composition.\nThe complete \"package\" is then called an aggregate, which gets its name and identity from the root entity.\nAn aggregate is a cluster of domain objects that can be treated as a single unit.\nThe root is the entity that is referenced from outside the aggregate. There must be only one root per aggregate.\nThe root ensures the integrity of the aggregate. A sub entity is any other non-root entity in the aggregate.\n\nSource, see [Martin Fowler on DDD Aggregate](https://martinfowler.com/bliki/DDD_Aggregate.html)",
|
2252
2342
|
"oneOf": [
|
2253
2343
|
{
|
2254
2344
|
"const": "aggregate",
|
@@ -2273,7 +2363,14 @@
|
|
2273
2363
|
"description": "States that this Entity Type is related to another Entity Type.\n\nUsually this happens if there are similar conceptual entity types across different namespaces.",
|
2274
2364
|
"items": {
|
2275
2365
|
"$ref": "#/definitions/RelatedEntityType"
|
2276
|
-
}
|
2366
|
+
},
|
2367
|
+
"examples": [
|
2368
|
+
[
|
2369
|
+
{
|
2370
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
2371
|
+
}
|
2372
|
+
]
|
2373
|
+
]
|
2277
2374
|
},
|
2278
2375
|
"links": {
|
2279
2376
|
"type": "array",
|
@@ -2312,7 +2409,12 @@
|
|
2312
2409
|
"policyLevel": {
|
2313
2410
|
"type": "string",
|
2314
2411
|
"description": "The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.\nDepending on the chosen policy level, additional expectations and validations rules will be applied.\n\nThe policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n",
|
2315
|
-
"
|
2412
|
+
"anyOf": [
|
2413
|
+
{
|
2414
|
+
"type": "string",
|
2415
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2416
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2417
|
+
},
|
2316
2418
|
{
|
2317
2419
|
"const": "none",
|
2318
2420
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -2397,7 +2499,7 @@
|
|
2397
2499
|
"x-ums-type": "root",
|
2398
2500
|
"x-introduced-in-version": "1.8.0",
|
2399
2501
|
"x-implements": "#/definitions/OrdResource",
|
2400
|
-
"description": "A [Data Product](
|
2502
|
+
"description": "A [Data Product](../concepts/data-product) is a data set exposed for consumption outside the boundaries of the producing application via APIs and described by high quality metadata that can be accessed through the [ORD Aggregator](../../spec-v1/#ord-aggregator).\n\nPlease note that this concept is in beta, see [Data Product - Beta Status](../concepts/data-product#beta-status).",
|
2401
2503
|
"properties": {
|
2402
2504
|
"ordId": {
|
2403
2505
|
"type": "string",
|
@@ -2677,9 +2779,14 @@
|
|
2677
2779
|
]
|
2678
2780
|
},
|
2679
2781
|
"category": {
|
2680
|
-
"description": "Category of the data-set within data product. Based on its definition, a data product is a
|
2782
|
+
"description": "Category of the data-set within data product. Based on its definition, a data product is a \"data set\" - which can include on the values below.\nBased on the type some properties of a data product may become optional/mandatory.\nConsumers might still do analytics on business object like data products.",
|
2681
2783
|
"type": "string",
|
2682
|
-
"
|
2784
|
+
"anyOf": [
|
2785
|
+
{
|
2786
|
+
"type": "string",
|
2787
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2788
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2789
|
+
},
|
2683
2790
|
{
|
2684
2791
|
"const": "business-object",
|
2685
2792
|
"description": "Business Objects: master data, transaction data"
|
@@ -2995,7 +3102,12 @@
|
|
2995
3102
|
"x-feature-status": "beta",
|
2996
3103
|
"type": "string",
|
2997
3104
|
"description": "The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.\nDepending on the chosen policy level, additional expectations and validations rules will be applied.\n\nThe policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n",
|
2998
|
-
"
|
3105
|
+
"anyOf": [
|
3106
|
+
{
|
3107
|
+
"type": "string",
|
3108
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3109
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3110
|
+
},
|
2999
3111
|
{
|
3000
3112
|
"const": "none",
|
3001
3113
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -3139,7 +3251,12 @@
|
|
3139
3251
|
"type": {
|
3140
3252
|
"description": "Type of the API Resource Definition\nIf \"custom\" is chosen, a customType MUST be provided",
|
3141
3253
|
"type": "string",
|
3142
|
-
"
|
3254
|
+
"anyOf": [
|
3255
|
+
{
|
3256
|
+
"type": "string",
|
3257
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3258
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3259
|
+
},
|
3143
3260
|
{
|
3144
3261
|
"const": "openapi-v2",
|
3145
3262
|
"description": "[OpenAPI 2 / Swagger 2](https://swagger.io/specification/v2/) API Definition for [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) APIs.\nThe `mediaType` MUST be be set to either `application/json` or `text/yaml`."
|
@@ -3271,7 +3388,12 @@
|
|
3271
3388
|
"type": {
|
3272
3389
|
"description": "Type of the event resource definition",
|
3273
3390
|
"type": "string",
|
3274
|
-
"
|
3391
|
+
"anyOf": [
|
3392
|
+
{
|
3393
|
+
"type": "string",
|
3394
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3395
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3396
|
+
},
|
3275
3397
|
{
|
3276
3398
|
"const": "asyncapi-v2",
|
3277
3399
|
"description": "[AsyncAPI 2](https://www.asyncapi.com/docs/specifications/2.0.0) API definition for events.\nThe SAP Event Catalog Specification also falls under this category, as it is a valid AsyncAPI definition."
|
@@ -3509,14 +3631,19 @@
|
|
3509
3631
|
"type": {
|
3510
3632
|
"description": "Type of the Capability",
|
3511
3633
|
"type": "string",
|
3512
|
-
"
|
3634
|
+
"anyOf": [
|
3513
3635
|
{
|
3514
|
-
"
|
3515
|
-
"
|
3636
|
+
"type": "string",
|
3637
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3638
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3516
3639
|
},
|
3517
3640
|
{
|
3518
3641
|
"const": "sap.mdo:mdi-capability:v1",
|
3519
3642
|
"description": "Capability for SAP Master Data Integration (MDI).\n\nFor the capability definitions: `type` MUST ONLY be set to `sap.mdo:mdi-capability-definition:v1`."
|
3643
|
+
},
|
3644
|
+
{
|
3645
|
+
"const": "custom",
|
3646
|
+
"description": "If chosen, `customType` MUST be provided."
|
3520
3647
|
}
|
3521
3648
|
],
|
3522
3649
|
"examples": [
|
@@ -3659,7 +3786,7 @@
|
|
3659
3786
|
},
|
3660
3787
|
"relatedEntityTypes": {
|
3661
3788
|
"type": "array",
|
3662
|
-
"description": "Optional list of related EntityType Resources.\
|
3789
|
+
"description": "Optional list of related EntityType Resources.\nMUST be a valid reference to an [EntityType Resource](#entity-type) ORD ID.",
|
3663
3790
|
"items": {
|
3664
3791
|
"type": "string",
|
3665
3792
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
@@ -3749,14 +3876,19 @@
|
|
3749
3876
|
"type": {
|
3750
3877
|
"description": "Type of the capability resource definition",
|
3751
3878
|
"type": "string",
|
3752
|
-
"
|
3879
|
+
"anyOf": [
|
3753
3880
|
{
|
3754
|
-
"
|
3755
|
-
"
|
3881
|
+
"type": "string",
|
3882
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3883
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3756
3884
|
},
|
3757
3885
|
{
|
3758
3886
|
"const": "sap.mdo:mdi-capability-definition:v1",
|
3759
3887
|
"description": "Specification for describing master data integration capabilities for Master Data Orchestration (MDO).\n\nThe `mediaType` MUST be set to `application/json`.\nThe capability `type` MUST be set to `sap.mdo:mdi-capability:v1`."
|
3888
|
+
},
|
3889
|
+
{
|
3890
|
+
"const": "custom",
|
3891
|
+
"description": "If chosen, a custom type MUST be provided via `customType`"
|
3760
3892
|
}
|
3761
3893
|
],
|
3762
3894
|
"examples": [
|
@@ -3834,7 +3966,7 @@
|
|
3834
3966
|
"title": "Integration Dependency",
|
3835
3967
|
"x-ums-type": "root",
|
3836
3968
|
"x-introduced-in-version": "1.7.0",
|
3837
|
-
"description": "An [Integration Dependency](
|
3969
|
+
"description": "An [Integration Dependency](../concepts/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](../concepts/integration-dependency).",
|
3838
3970
|
"properties": {
|
3839
3971
|
"ordId": {
|
3840
3972
|
"type": "string",
|
@@ -4423,7 +4555,12 @@
|
|
4423
4555
|
"properties": {
|
4424
4556
|
"type": {
|
4425
4557
|
"type": "string",
|
4426
|
-
"
|
4558
|
+
"anyOf": [
|
4559
|
+
{
|
4560
|
+
"type": "string",
|
4561
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4562
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4563
|
+
},
|
4427
4564
|
{
|
4428
4565
|
"const": "terms-of-service",
|
4429
4566
|
"description": "Link to human-readable terms of service / use documentation."
|
@@ -4499,7 +4636,12 @@
|
|
4499
4636
|
"type": {
|
4500
4637
|
"type": "string",
|
4501
4638
|
"description": "See also: [WADG0001 WebAPI type extension](https://webapi-discovery.github.io/rfcs/rfc0001.html#webapiactions)",
|
4502
|
-
"
|
4639
|
+
"anyOf": [
|
4640
|
+
{
|
4641
|
+
"type": "string",
|
4642
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4643
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4644
|
+
},
|
4503
4645
|
{
|
4504
4646
|
"const": "api-documentation",
|
4505
4647
|
"description": "Link to human-readable documentation describing the API or event resource in more detail."
|
@@ -4576,7 +4718,12 @@
|
|
4576
4718
|
"properties": {
|
4577
4719
|
"type": {
|
4578
4720
|
"type": "string",
|
4579
|
-
"
|
4721
|
+
"anyOf": [
|
4722
|
+
{
|
4723
|
+
"type": "string",
|
4724
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4725
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4726
|
+
},
|
4580
4727
|
{
|
4581
4728
|
"const": "payment",
|
4582
4729
|
"description": "Links to a resource detailing pricing details of the data product."
|
@@ -4823,7 +4970,12 @@
|
|
4823
4970
|
"type": {
|
4824
4971
|
"type": "string",
|
4825
4972
|
"description": "Defines the authentication/authorization strategy through which the referenced `resourceDefinitions` are accessible.",
|
4826
|
-
"
|
4973
|
+
"anyOf": [
|
4974
|
+
{
|
4975
|
+
"type": "string",
|
4976
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4977
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customDescription` SHOULD be provided."
|
4978
|
+
},
|
4827
4979
|
{
|
4828
4980
|
"const": "open",
|
4829
4981
|
"description": "The resource definitions are openly accessible and not protected via authentication or authorization.\nPlease find a more detailed documentation [here](../../spec-extensions/access-strategies/open)."
|
@@ -4892,7 +5044,12 @@
|
|
4892
5044
|
"type": {
|
4893
5045
|
"type": "string",
|
4894
5046
|
"description": "The type of credential exchange strategy.",
|
4895
|
-
"
|
5047
|
+
"anyOf": [
|
5048
|
+
{
|
5049
|
+
"type": "string",
|
5050
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
5051
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customDescription` SHOULD be provided."
|
5052
|
+
},
|
4896
5053
|
{
|
4897
5054
|
"const": "custom",
|
4898
5055
|
"description": "If chosen, `customType` MUST be provided.\nIf chosen, `customDescription` SHOULD be provided."
|
@@ -4955,7 +5112,7 @@
|
|
4955
5112
|
"title": "Group Type",
|
4956
5113
|
"type": "object",
|
4957
5114
|
"x-ums-type": "root",
|
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](
|
5115
|
+
"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](../concepts/grouping-and-bundling#Groups).",
|
4959
5116
|
"x-introduced-in-version": "1.9.0",
|
4960
5117
|
"properties": {
|
4961
5118
|
"groupTypeId": {
|
@@ -5001,7 +5158,7 @@
|
|
5001
5158
|
"title": "Group",
|
5002
5159
|
"type": "object",
|
5003
5160
|
"x-ums-type": "root",
|
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](
|
5161
|
+
"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](../concepts/grouping-and-bundling#Groups).",
|
5005
5162
|
"x-introduced-in-version": "1.9.0",
|
5006
5163
|
"properties": {
|
5007
5164
|
"groupId": {
|
@@ -5121,9 +5278,11 @@
|
|
5121
5278
|
},
|
5122
5279
|
"EntityTypeMapping": {
|
5123
5280
|
"title": "Entity Type Mapping",
|
5281
|
+
"type": "object",
|
5124
5282
|
"x-introduced-in-version": "1.6.0",
|
5283
|
+
"x-deprecated-in-version": "1.11.0",
|
5284
|
+
"x-deprecated": "Use the simplified `relatedEntityTypes` instead.",
|
5125
5285
|
"x-ums-type": "custom",
|
5126
|
-
"type": "object",
|
5127
5286
|
"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.",
|
5128
5287
|
"properties": {
|
5129
5288
|
"apiModelSelectors": {
|
@@ -5164,6 +5323,8 @@
|
|
5164
5323
|
"ApiModelSelectorOData": {
|
5165
5324
|
"title": "API Model Selector (OData)",
|
5166
5325
|
"x-introduced-in-version": "1.6.0",
|
5326
|
+
"x-deprecated-in-version": "1.11.0",
|
5327
|
+
"x-deprecated": "Use the simplified `relatedEntityTypes` instead.\n\nFor creating a mapping from API model to Entity Types, consider using the [Entity Relationship](https://sap.github.io/csn-interop-specification/annotations/entity-relationship) annotations.",
|
5167
5328
|
"x-ums-type": "custom",
|
5168
5329
|
"type": "object",
|
5169
5330
|
"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`.",
|
@@ -5199,6 +5360,8 @@
|
|
5199
5360
|
"ApiModelSelectorJsonPointer": {
|
5200
5361
|
"title": "API Model Selector (JSON Pointer)",
|
5201
5362
|
"x-introduced-in-version": "1.6.0",
|
5363
|
+
"x-deprecated-in-version": "1.11.0",
|
5364
|
+
"x-deprecated": "Use the simplified `relatedEntityTypes` instead.\n\nFor creating a mapping from API model to Entity Types, consider using the [Entity Relationship](https://sap.github.io/csn-interop-specification/annotations/entity-relationship) annotations.",
|
5202
5365
|
"x-ums-type": "custom",
|
5203
5366
|
"type": "object",
|
5204
5367
|
"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`.",
|
@@ -5233,12 +5396,14 @@
|
|
5233
5396
|
}
|
5234
5397
|
]
|
5235
5398
|
},
|
5236
|
-
"
|
5237
|
-
"title": "
|
5238
|
-
"x-introduced-in-version": "1.
|
5239
|
-
"x-
|
5399
|
+
"EntityTypeOrdIdTarget": {
|
5400
|
+
"title": "Entity Type Target (ORD ID)",
|
5401
|
+
"x-introduced-in-version": "1.6.0",
|
5402
|
+
"x-deprecated-in-version": "1.11.0",
|
5403
|
+
"x-deprecated": "Use the simplified `relatedEntityTypes` instead.",
|
5404
|
+
"x-ums-type": "custom",
|
5240
5405
|
"type": "object",
|
5241
|
-
"description": "
|
5406
|
+
"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.",
|
5242
5407
|
"properties": {
|
5243
5408
|
"ordId": {
|
5244
5409
|
"type": "string",
|
@@ -5258,12 +5423,35 @@
|
|
5258
5423
|
],
|
5259
5424
|
"additionalProperties": false
|
5260
5425
|
},
|
5261
|
-
"
|
5262
|
-
"title": "Entity Type Target (
|
5426
|
+
"EntityTypeCorrelationIdTarget": {
|
5427
|
+
"title": "Entity Type Target (Correlation ID)",
|
5428
|
+
"type": "object",
|
5429
|
+
"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).",
|
5263
5430
|
"x-introduced-in-version": "1.6.0",
|
5431
|
+
"x-deprecated-in-version": "1.11.0",
|
5432
|
+
"x-deprecated": "Use the simplified `relatedEntityTypes` instead.",
|
5264
5433
|
"x-ums-type": "custom",
|
5434
|
+
"properties": {
|
5435
|
+
"correlationId": {
|
5436
|
+
"type": "string",
|
5437
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
5438
|
+
"maxLength": 255,
|
5439
|
+
"examples": [
|
5440
|
+
"sap.csnexposure:entity:Attachment"
|
5441
|
+
]
|
5442
|
+
}
|
5443
|
+
},
|
5444
|
+
"required": [
|
5445
|
+
"correlationId"
|
5446
|
+
],
|
5447
|
+
"additionalProperties": false
|
5448
|
+
},
|
5449
|
+
"RelatedEntityType": {
|
5450
|
+
"title": "Related Entity Type",
|
5451
|
+
"x-introduced-in-version": "1.9.0",
|
5452
|
+
"x-ums-type": "embedded",
|
5265
5453
|
"type": "object",
|
5266
|
-
"description": "
|
5454
|
+
"description": "Defines which Entity Type is related (via its ORD ID).\nIn the future, this could include stating the relationship type, too.",
|
5267
5455
|
"properties": {
|
5268
5456
|
"ordId": {
|
5269
5457
|
"type": "string",
|
@@ -5283,24 +5471,28 @@
|
|
5283
5471
|
],
|
5284
5472
|
"additionalProperties": false
|
5285
5473
|
},
|
5286
|
-
"
|
5287
|
-
"title": "Entity Type
|
5288
|
-
"x-introduced-in-version": "1.6.0",
|
5289
|
-
"x-ums-type": "custom",
|
5474
|
+
"ExposedEntityType": {
|
5475
|
+
"title": "Exposed Entity Type",
|
5290
5476
|
"type": "object",
|
5291
|
-
"description": "
|
5477
|
+
"description": "Defines which Entity Type is exposed through (via its ORD ID).",
|
5478
|
+
"x-introduced-in-version": "1.11.0",
|
5479
|
+
"x-ums-type": "embedded",
|
5292
5480
|
"properties": {
|
5293
|
-
"
|
5481
|
+
"ordId": {
|
5294
5482
|
"type": "string",
|
5295
|
-
"
|
5483
|
+
"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.",
|
5484
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
5296
5485
|
"maxLength": 255,
|
5297
5486
|
"examples": [
|
5298
|
-
"sap.
|
5487
|
+
"sap.s4.sot:entityType:BusinessPartner:v1"
|
5488
|
+
],
|
5489
|
+
"x-association-target": [
|
5490
|
+
"#/definitions/EntityType/ordId"
|
5299
5491
|
]
|
5300
5492
|
}
|
5301
5493
|
},
|
5302
5494
|
"required": [
|
5303
|
-
"
|
5495
|
+
"ordId"
|
5304
5496
|
],
|
5305
5497
|
"additionalProperties": false
|
5306
5498
|
},
|
@@ -5596,10 +5788,11 @@
|
|
5596
5788
|
"1.7",
|
5597
5789
|
"1.8",
|
5598
5790
|
"1.9",
|
5599
|
-
"1.10"
|
5791
|
+
"1.10",
|
5792
|
+
"1.11"
|
5600
5793
|
],
|
5601
5794
|
"examples": [
|
5602
|
-
"1.
|
5795
|
+
"1.11"
|
5603
5796
|
]
|
5604
5797
|
},
|
5605
5798
|
"description": {
|
@@ -5625,7 +5818,12 @@
|
|
5625
5818
|
"policyLevel": {
|
5626
5819
|
"type": "string",
|
5627
5820
|
"description": "The [policy level](../../spec-extensions/policy-levels/) (aka. compliance level) that the described resources need to be compliant with.\nDepending on the chosen policy level, additional expectations and validations rules will be applied.\n\nThe policy level can be defined on ORD Document level, but also be overwritten on an individual package or resource level.\n",
|
5628
|
-
"
|
5821
|
+
"anyOf": [
|
5822
|
+
{
|
5823
|
+
"type": "string",
|
5824
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
5825
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
5826
|
+
},
|
5629
5827
|
{
|
5630
5828
|
"const": "none",
|
5631
5829
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|