@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
@@ -7,7 +7,7 @@
|
|
7
7
|
"Package": {
|
8
8
|
"type": "object",
|
9
9
|
"title": "Package",
|
10
|
-
"description": "A [**Package**](
|
10
|
+
"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).",
|
11
11
|
"properties": {
|
12
12
|
"ordId": {
|
13
13
|
"type": "string",
|
@@ -65,7 +65,12 @@
|
|
65
65
|
"policyLevel": {
|
66
66
|
"type": "string",
|
67
67
|
"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",
|
68
|
-
"
|
68
|
+
"anyOf": [
|
69
|
+
{
|
70
|
+
"type": "string",
|
71
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
72
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
73
|
+
},
|
69
74
|
{
|
70
75
|
"const": "none",
|
71
76
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -344,7 +349,7 @@
|
|
344
349
|
]
|
345
350
|
},
|
346
351
|
"runtimeRestriction": {
|
347
|
-
"description": "If provided, all resources that are part of this package can only run on the listed runtime.\n\nMUST be a valid [
|
352
|
+
"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).",
|
348
353
|
"type": "string",
|
349
354
|
"pattern": "^[a-z0-9]+(?:[.][a-z0-9]+){1}$",
|
350
355
|
"examples": [
|
@@ -386,7 +391,7 @@
|
|
386
391
|
"ConsumptionBundle": {
|
387
392
|
"type": "object",
|
388
393
|
"title": "Consumption Bundle",
|
389
|
-
"description": "A [**Consumption Bundle**](
|
394
|
+
"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).",
|
390
395
|
"properties": {
|
391
396
|
"ordId": {
|
392
397
|
"type": "string",
|
@@ -803,7 +808,12 @@
|
|
803
808
|
"apiProtocol": {
|
804
809
|
"type": "string",
|
805
810
|
"description": "API Protocol including the protocol version if applicable",
|
806
|
-
"
|
811
|
+
"anyOf": [
|
812
|
+
{
|
813
|
+
"type": "string",
|
814
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
815
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
816
|
+
},
|
807
817
|
{
|
808
818
|
"const": "odata-v2",
|
809
819
|
"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`."
|
@@ -863,7 +873,12 @@
|
|
863
873
|
"implementationStandard": {
|
864
874
|
"type": "string",
|
865
875
|
"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.",
|
866
|
-
"
|
876
|
+
"anyOf": [
|
877
|
+
{
|
878
|
+
"type": "string",
|
879
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
880
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
|
881
|
+
},
|
867
882
|
{
|
868
883
|
"const": "sap:ord-document-api:v1",
|
869
884
|
"description": "API follows the Open Resource Discovery v1 [Document API](../index.md#ord-provider-api) contract."
|
@@ -948,7 +963,12 @@
|
|
948
963
|
"description": "List of use cases (types) how the resource is meant to be used for.\n\nThis helps consumers better to understand which use cases had been in mind by the provider\nand are therefore explicitly supported.\nThis is obviously described from a provider perspective, but stating what consumer use cases it potentially supports.\nAs it's not possible to create a list of options that are mutually exclusive, all options that apply should be provided.\n\nIf no array is defined, it is assumed that this information is not provided.",
|
949
964
|
"items": {
|
950
965
|
"type": "string",
|
951
|
-
"
|
966
|
+
"anyOf": [
|
967
|
+
{
|
968
|
+
"type": "string",
|
969
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
970
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
971
|
+
},
|
952
972
|
{
|
953
973
|
"const": "data-federation",
|
954
974
|
"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."
|
@@ -996,6 +1016,28 @@
|
|
996
1016
|
"$ref": "#/definitions/EntityTypeMapping"
|
997
1017
|
}
|
998
1018
|
},
|
1019
|
+
"exposedEntityTypes": {
|
1020
|
+
"type": "array",
|
1021
|
+
"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.",
|
1022
|
+
"items": {
|
1023
|
+
"$ref": "#/definitions/ExposedEntityType"
|
1024
|
+
},
|
1025
|
+
"examples": [
|
1026
|
+
[
|
1027
|
+
{
|
1028
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
1029
|
+
}
|
1030
|
+
],
|
1031
|
+
[
|
1032
|
+
{
|
1033
|
+
"ordId": "sap.sm:entityType:PurchaseOrderItem:v1"
|
1034
|
+
},
|
1035
|
+
{
|
1036
|
+
"ordId": "sap.sm:entityType:BusinessPartner:v1"
|
1037
|
+
}
|
1038
|
+
]
|
1039
|
+
]
|
1040
|
+
},
|
999
1041
|
"apiResourceLinks": {
|
1000
1042
|
"type": "array",
|
1001
1043
|
"description": "Links with semantic meaning that are specific to API Resources.",
|
@@ -1217,7 +1259,12 @@
|
|
1217
1259
|
"policyLevel": {
|
1218
1260
|
"type": "string",
|
1219
1261
|
"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",
|
1220
|
-
"
|
1262
|
+
"anyOf": [
|
1263
|
+
{
|
1264
|
+
"type": "string",
|
1265
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1266
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
1267
|
+
},
|
1221
1268
|
{
|
1222
1269
|
"const": "none",
|
1223
1270
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -1518,7 +1565,17 @@
|
|
1518
1565
|
"implementationStandard": {
|
1519
1566
|
"type": "string",
|
1520
1567
|
"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.",
|
1521
|
-
"
|
1568
|
+
"anyOf": [
|
1569
|
+
{
|
1570
|
+
"type": "string",
|
1571
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1572
|
+
"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."
|
1573
|
+
},
|
1574
|
+
{
|
1575
|
+
"type": "string",
|
1576
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1577
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
|
1578
|
+
},
|
1522
1579
|
{
|
1523
1580
|
"const": "custom",
|
1524
1581
|
"description": "If chosen, a custom implementation standard MUST be provided via `customImplementationStandard` and SHOULD be described via `customImplementationStandardDescription`"
|
@@ -1573,6 +1630,28 @@
|
|
1573
1630
|
"$ref": "#/definitions/EntityTypeMapping"
|
1574
1631
|
}
|
1575
1632
|
},
|
1633
|
+
"exposedEntityTypes": {
|
1634
|
+
"type": "array",
|
1635
|
+
"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.",
|
1636
|
+
"items": {
|
1637
|
+
"$ref": "#/definitions/ExposedEntityType"
|
1638
|
+
},
|
1639
|
+
"examples": [
|
1640
|
+
[
|
1641
|
+
{
|
1642
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
1643
|
+
}
|
1644
|
+
],
|
1645
|
+
[
|
1646
|
+
{
|
1647
|
+
"ordId": "sap.sm:entityType:PurchaseOrderItem:v1"
|
1648
|
+
},
|
1649
|
+
{
|
1650
|
+
"ordId": "sap.sm:entityType:BusinessPartner:v1"
|
1651
|
+
}
|
1652
|
+
]
|
1653
|
+
]
|
1654
|
+
},
|
1576
1655
|
"eventResourceLinks": {
|
1577
1656
|
"type": "array",
|
1578
1657
|
"description": "Links with semantic meaning that are specific to event resources.\n\nIf applicable, `eventResourceLinks` MUST be used instead of generic `links`.",
|
@@ -1794,7 +1873,12 @@
|
|
1794
1873
|
"policyLevel": {
|
1795
1874
|
"type": "string",
|
1796
1875
|
"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",
|
1797
|
-
"
|
1876
|
+
"anyOf": [
|
1877
|
+
{
|
1878
|
+
"type": "string",
|
1879
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1880
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
1881
|
+
},
|
1798
1882
|
{
|
1799
1883
|
"const": "none",
|
1800
1884
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -1866,7 +1950,7 @@
|
|
1866
1950
|
"EntityType": {
|
1867
1951
|
"type": "object",
|
1868
1952
|
"title": "Entity Type",
|
1869
|
-
"description": "An [**Entity Type**](
|
1953
|
+
"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).",
|
1870
1954
|
"properties": {
|
1871
1955
|
"ordId": {
|
1872
1956
|
"type": "string",
|
@@ -2074,7 +2158,7 @@
|
|
2074
2158
|
},
|
2075
2159
|
"level": {
|
2076
2160
|
"type": "string",
|
2077
|
-
"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
|
2161
|
+
"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)",
|
2078
2162
|
"oneOf": [
|
2079
2163
|
{
|
2080
2164
|
"const": "aggregate",
|
@@ -2098,7 +2182,14 @@
|
|
2098
2182
|
"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.",
|
2099
2183
|
"items": {
|
2100
2184
|
"$ref": "#/definitions/RelatedEntityType"
|
2101
|
-
}
|
2185
|
+
},
|
2186
|
+
"examples": [
|
2187
|
+
[
|
2188
|
+
{
|
2189
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
2190
|
+
}
|
2191
|
+
]
|
2192
|
+
]
|
2102
2193
|
},
|
2103
2194
|
"links": {
|
2104
2195
|
"type": "array",
|
@@ -2134,7 +2225,12 @@
|
|
2134
2225
|
"policyLevel": {
|
2135
2226
|
"type": "string",
|
2136
2227
|
"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",
|
2137
|
-
"
|
2228
|
+
"anyOf": [
|
2229
|
+
{
|
2230
|
+
"type": "string",
|
2231
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2232
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2233
|
+
},
|
2138
2234
|
{
|
2139
2235
|
"const": "none",
|
2140
2236
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -2206,7 +2302,7 @@
|
|
2206
2302
|
"DataProduct": {
|
2207
2303
|
"type": "object",
|
2208
2304
|
"title": "Data Product",
|
2209
|
-
"description": "A [Data Product](
|
2305
|
+
"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).",
|
2210
2306
|
"properties": {
|
2211
2307
|
"ordId": {
|
2212
2308
|
"type": "string",
|
@@ -2454,9 +2550,14 @@
|
|
2454
2550
|
]
|
2455
2551
|
},
|
2456
2552
|
"category": {
|
2457
|
-
"description": "Category of the data-set within data product. Based on its definition, a data product is a
|
2553
|
+
"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.",
|
2458
2554
|
"type": "string",
|
2459
|
-
"
|
2555
|
+
"anyOf": [
|
2556
|
+
{
|
2557
|
+
"type": "string",
|
2558
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2559
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2560
|
+
},
|
2460
2561
|
{
|
2461
2562
|
"const": "business-object",
|
2462
2563
|
"description": "Business Objects: master data, transaction data"
|
@@ -2749,7 +2850,12 @@
|
|
2749
2850
|
"policyLevel": {
|
2750
2851
|
"type": "string",
|
2751
2852
|
"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",
|
2752
|
-
"
|
2853
|
+
"anyOf": [
|
2854
|
+
{
|
2855
|
+
"type": "string",
|
2856
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2857
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2858
|
+
},
|
2753
2859
|
{
|
2754
2860
|
"const": "none",
|
2755
2861
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -2871,7 +2977,12 @@
|
|
2871
2977
|
"type": {
|
2872
2978
|
"description": "Type of the API Resource Definition\nIf \"custom\" is chosen, a customType MUST be provided",
|
2873
2979
|
"type": "string",
|
2874
|
-
"
|
2980
|
+
"anyOf": [
|
2981
|
+
{
|
2982
|
+
"type": "string",
|
2983
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2984
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2985
|
+
},
|
2875
2986
|
{
|
2876
2987
|
"const": "openapi-v2",
|
2877
2988
|
"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`."
|
@@ -3000,7 +3111,12 @@
|
|
3000
3111
|
"type": {
|
3001
3112
|
"description": "Type of the event resource definition",
|
3002
3113
|
"type": "string",
|
3003
|
-
"
|
3114
|
+
"anyOf": [
|
3115
|
+
{
|
3116
|
+
"type": "string",
|
3117
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3118
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3119
|
+
},
|
3004
3120
|
{
|
3005
3121
|
"const": "asyncapi-v2",
|
3006
3122
|
"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."
|
@@ -3225,14 +3341,19 @@
|
|
3225
3341
|
"type": {
|
3226
3342
|
"description": "Type of the Capability",
|
3227
3343
|
"type": "string",
|
3228
|
-
"
|
3344
|
+
"anyOf": [
|
3229
3345
|
{
|
3230
|
-
"
|
3231
|
-
"
|
3346
|
+
"type": "string",
|
3347
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3348
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3232
3349
|
},
|
3233
3350
|
{
|
3234
3351
|
"const": "sap.mdo:mdi-capability:v1",
|
3235
3352
|
"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`."
|
3353
|
+
},
|
3354
|
+
{
|
3355
|
+
"const": "custom",
|
3356
|
+
"description": "If chosen, `customType` MUST be provided."
|
3236
3357
|
}
|
3237
3358
|
],
|
3238
3359
|
"examples": [
|
@@ -3358,7 +3479,7 @@
|
|
3358
3479
|
},
|
3359
3480
|
"relatedEntityTypes": {
|
3360
3481
|
"type": "array",
|
3361
|
-
"description": "Optional list of related EntityType Resources.\
|
3482
|
+
"description": "Optional list of related EntityType Resources.\nMUST be a valid reference to an [EntityType Resource](#entity-type) ORD ID.",
|
3362
3483
|
"items": {
|
3363
3484
|
"type": "string",
|
3364
3485
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
|
@@ -3432,14 +3553,19 @@
|
|
3432
3553
|
"type": {
|
3433
3554
|
"description": "Type of the capability resource definition",
|
3434
3555
|
"type": "string",
|
3435
|
-
"
|
3556
|
+
"anyOf": [
|
3436
3557
|
{
|
3437
|
-
"
|
3438
|
-
"
|
3558
|
+
"type": "string",
|
3559
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3560
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3439
3561
|
},
|
3440
3562
|
{
|
3441
3563
|
"const": "sap.mdo:mdi-capability-definition:v1",
|
3442
3564
|
"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`."
|
3565
|
+
},
|
3566
|
+
{
|
3567
|
+
"const": "custom",
|
3568
|
+
"description": "If chosen, a custom type MUST be provided via `customType`"
|
3443
3569
|
}
|
3444
3570
|
],
|
3445
3571
|
"examples": [
|
@@ -3515,7 +3641,7 @@
|
|
3515
3641
|
"IntegrationDependency": {
|
3516
3642
|
"type": "object",
|
3517
3643
|
"title": "Integration Dependency",
|
3518
|
-
"description": "An [Integration Dependency](
|
3644
|
+
"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).",
|
3519
3645
|
"properties": {
|
3520
3646
|
"ordId": {
|
3521
3647
|
"type": "string",
|
@@ -4061,7 +4187,12 @@
|
|
4061
4187
|
"properties": {
|
4062
4188
|
"type": {
|
4063
4189
|
"type": "string",
|
4064
|
-
"
|
4190
|
+
"anyOf": [
|
4191
|
+
{
|
4192
|
+
"type": "string",
|
4193
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4194
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4195
|
+
},
|
4065
4196
|
{
|
4066
4197
|
"const": "terms-of-service",
|
4067
4198
|
"description": "Link to human-readable terms of service / use documentation."
|
@@ -4136,7 +4267,12 @@
|
|
4136
4267
|
"type": {
|
4137
4268
|
"type": "string",
|
4138
4269
|
"description": "See also: [WADG0001 WebAPI type extension](https://webapi-discovery.github.io/rfcs/rfc0001.html#webapiactions)",
|
4139
|
-
"
|
4270
|
+
"anyOf": [
|
4271
|
+
{
|
4272
|
+
"type": "string",
|
4273
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4274
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4275
|
+
},
|
4140
4276
|
{
|
4141
4277
|
"const": "api-documentation",
|
4142
4278
|
"description": "Link to human-readable documentation describing the API or event resource in more detail."
|
@@ -4212,7 +4348,12 @@
|
|
4212
4348
|
"properties": {
|
4213
4349
|
"type": {
|
4214
4350
|
"type": "string",
|
4215
|
-
"
|
4351
|
+
"anyOf": [
|
4352
|
+
{
|
4353
|
+
"type": "string",
|
4354
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4355
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4356
|
+
},
|
4216
4357
|
{
|
4217
4358
|
"const": "payment",
|
4218
4359
|
"description": "Links to a resource detailing pricing details of the data product."
|
@@ -4448,7 +4589,12 @@
|
|
4448
4589
|
"type": {
|
4449
4590
|
"type": "string",
|
4450
4591
|
"description": "Defines the authentication/authorization strategy through which the referenced `resourceDefinitions` are accessible.",
|
4451
|
-
"
|
4592
|
+
"anyOf": [
|
4593
|
+
{
|
4594
|
+
"type": "string",
|
4595
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4596
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customDescription` SHOULD be provided."
|
4597
|
+
},
|
4452
4598
|
{
|
4453
4599
|
"const": "open",
|
4454
4600
|
"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)."
|
@@ -4515,7 +4661,12 @@
|
|
4515
4661
|
"type": {
|
4516
4662
|
"type": "string",
|
4517
4663
|
"description": "The type of credential exchange strategy.",
|
4518
|
-
"
|
4664
|
+
"anyOf": [
|
4665
|
+
{
|
4666
|
+
"type": "string",
|
4667
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4668
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customDescription` SHOULD be provided."
|
4669
|
+
},
|
4519
4670
|
{
|
4520
4671
|
"const": "custom",
|
4521
4672
|
"description": "If chosen, `customType` MUST be provided.\nIf chosen, `customDescription` SHOULD be provided."
|
@@ -4576,7 +4727,7 @@
|
|
4576
4727
|
"GroupType": {
|
4577
4728
|
"title": "Group Type",
|
4578
4729
|
"type": "object",
|
4579
|
-
"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](
|
4730
|
+
"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).",
|
4580
4731
|
"properties": {
|
4581
4732
|
"groupTypeId": {
|
4582
4733
|
"type": "string",
|
@@ -4620,7 +4771,7 @@
|
|
4620
4771
|
"Group": {
|
4621
4772
|
"title": "Group",
|
4622
4773
|
"type": "object",
|
4623
|
-
"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](
|
4774
|
+
"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).",
|
4624
4775
|
"properties": {
|
4625
4776
|
"groupId": {
|
4626
4777
|
"type": "string",
|
@@ -4833,10 +4984,10 @@
|
|
4833
4984
|
}
|
4834
4985
|
]
|
4835
4986
|
},
|
4836
|
-
"
|
4837
|
-
"title": "
|
4987
|
+
"EntityTypeOrdIdTarget": {
|
4988
|
+
"title": "Entity Type Target (ORD ID)",
|
4838
4989
|
"type": "object",
|
4839
|
-
"description": "
|
4990
|
+
"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.",
|
4840
4991
|
"properties": {
|
4841
4992
|
"ordId": {
|
4842
4993
|
"type": "string",
|
@@ -4853,10 +5004,29 @@
|
|
4853
5004
|
],
|
4854
5005
|
"additionalProperties": false
|
4855
5006
|
},
|
4856
|
-
"
|
4857
|
-
"title": "Entity Type Target (
|
5007
|
+
"EntityTypeCorrelationIdTarget": {
|
5008
|
+
"title": "Entity Type Target (Correlation ID)",
|
4858
5009
|
"type": "object",
|
4859
|
-
"description": "Define which entity type is the target of an entity type mapping\n\nEntity types can be referenced using a [
|
5010
|
+
"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).",
|
5011
|
+
"properties": {
|
5012
|
+
"correlationId": {
|
5013
|
+
"type": "string",
|
5014
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
5015
|
+
"maxLength": 255,
|
5016
|
+
"examples": [
|
5017
|
+
"sap.csnexposure:entity:Attachment"
|
5018
|
+
]
|
5019
|
+
}
|
5020
|
+
},
|
5021
|
+
"required": [
|
5022
|
+
"correlationId"
|
5023
|
+
],
|
5024
|
+
"additionalProperties": false
|
5025
|
+
},
|
5026
|
+
"RelatedEntityType": {
|
5027
|
+
"title": "Related Entity Type",
|
5028
|
+
"type": "object",
|
5029
|
+
"description": "Defines which Entity Type is related (via its ORD ID).\nIn the future, this could include stating the relationship type, too.",
|
4860
5030
|
"properties": {
|
4861
5031
|
"ordId": {
|
4862
5032
|
"type": "string",
|
@@ -4873,22 +5043,23 @@
|
|
4873
5043
|
],
|
4874
5044
|
"additionalProperties": false
|
4875
5045
|
},
|
4876
|
-
"
|
4877
|
-
"title": "Entity Type
|
5046
|
+
"ExposedEntityType": {
|
5047
|
+
"title": "Exposed Entity Type",
|
4878
5048
|
"type": "object",
|
4879
|
-
"description": "
|
5049
|
+
"description": "Defines which Entity Type is exposed through (via its ORD ID).",
|
4880
5050
|
"properties": {
|
4881
|
-
"
|
5051
|
+
"ordId": {
|
4882
5052
|
"type": "string",
|
4883
|
-
"
|
5053
|
+
"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.",
|
5054
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4884
5055
|
"maxLength": 255,
|
4885
5056
|
"examples": [
|
4886
|
-
"sap.
|
5057
|
+
"sap.s4.sot:entityType:BusinessPartner:v1"
|
4887
5058
|
]
|
4888
5059
|
}
|
4889
5060
|
},
|
4890
5061
|
"required": [
|
4891
|
-
"
|
5062
|
+
"ordId"
|
4892
5063
|
],
|
4893
5064
|
"additionalProperties": false
|
4894
5065
|
},
|
@@ -5145,10 +5316,11 @@
|
|
5145
5316
|
"1.7",
|
5146
5317
|
"1.8",
|
5147
5318
|
"1.9",
|
5148
|
-
"1.10"
|
5319
|
+
"1.10",
|
5320
|
+
"1.11"
|
5149
5321
|
],
|
5150
5322
|
"examples": [
|
5151
|
-
"1.
|
5323
|
+
"1.11"
|
5152
5324
|
]
|
5153
5325
|
},
|
5154
5326
|
"description": {
|
@@ -5174,7 +5346,12 @@
|
|
5174
5346
|
"policyLevel": {
|
5175
5347
|
"type": "string",
|
5176
5348
|
"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",
|
5177
|
-
"
|
5349
|
+
"anyOf": [
|
5350
|
+
{
|
5351
|
+
"type": "string",
|
5352
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
5353
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
5354
|
+
},
|
5178
5355
|
{
|
5179
5356
|
"const": "none",
|
5180
5357
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|