@open-resource-discovery/specification 1.10.1 → 1.11.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 +1 -1
- package/dist/types/v1/Configuration.d.ts +12 -1
- package/dist/types/v1/Document.d.ts +82 -56
- 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 +404 -90
- package/static/spec-v1/interfaces/Document.schema.json +378 -85
@@ -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",
|
@@ -55,7 +55,7 @@
|
|
55
55
|
},
|
56
56
|
"version": {
|
57
57
|
"type": "string",
|
58
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
58
|
+
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://spec.openapis.org/oas/v3.1.1.html#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.",
|
59
59
|
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
|
60
60
|
"examples": [
|
61
61
|
"1.2.3",
|
@@ -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."
|
@@ -217,6 +222,9 @@
|
|
217
222
|
{
|
218
223
|
"const": "Sourcing and Procurement"
|
219
224
|
},
|
225
|
+
{
|
226
|
+
"const": "Strategy, Compliance, and Governance"
|
227
|
+
},
|
220
228
|
{
|
221
229
|
"const": "Supply Chain"
|
222
230
|
},
|
@@ -257,6 +265,9 @@
|
|
257
265
|
{
|
258
266
|
"const": "Aerospace and Defense"
|
259
267
|
},
|
268
|
+
{
|
269
|
+
"const": "Agribusiness"
|
270
|
+
},
|
260
271
|
{
|
261
272
|
"const": "Automotive"
|
262
273
|
},
|
@@ -266,24 +277,39 @@
|
|
266
277
|
{
|
267
278
|
"const": "Chemicals"
|
268
279
|
},
|
280
|
+
{
|
281
|
+
"const": "Consumer Industries"
|
282
|
+
},
|
269
283
|
{
|
270
284
|
"const": "Consumer Products"
|
271
285
|
},
|
272
286
|
{
|
273
287
|
"const": "Defense and Security"
|
274
288
|
},
|
289
|
+
{
|
290
|
+
"const": "Discrete Industries"
|
291
|
+
},
|
292
|
+
{
|
293
|
+
"const": "Energy and Natural Resources"
|
294
|
+
},
|
275
295
|
{
|
276
296
|
"const": "Engineering Construction and Operations"
|
277
297
|
},
|
278
298
|
{
|
279
|
-
"const": "
|
299
|
+
"const": "Financial Services"
|
280
300
|
},
|
281
301
|
{
|
282
|
-
"const": "
|
302
|
+
"const": "Future Cities"
|
303
|
+
},
|
304
|
+
{
|
305
|
+
"const": "Healthcare"
|
283
306
|
},
|
284
307
|
{
|
285
308
|
"const": "High Tech"
|
286
309
|
},
|
310
|
+
{
|
311
|
+
"const": "Higher Education and Research"
|
312
|
+
},
|
287
313
|
{
|
288
314
|
"const": "Industrial Machinery and Components"
|
289
315
|
},
|
@@ -311,9 +337,15 @@
|
|
311
337
|
{
|
312
338
|
"const": "Public Sector"
|
313
339
|
},
|
340
|
+
{
|
341
|
+
"const": "Public Services"
|
342
|
+
},
|
314
343
|
{
|
315
344
|
"const": "Retail"
|
316
345
|
},
|
346
|
+
{
|
347
|
+
"const": "Service Industries"
|
348
|
+
},
|
317
349
|
{
|
318
350
|
"const": "Sports and Entertainment"
|
319
351
|
},
|
@@ -344,7 +376,7 @@
|
|
344
376
|
]
|
345
377
|
},
|
346
378
|
"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 [
|
379
|
+
"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
380
|
"type": "string",
|
349
381
|
"pattern": "^[a-z0-9]+(?:[.][a-z0-9]+){1}$",
|
350
382
|
"examples": [
|
@@ -386,7 +418,7 @@
|
|
386
418
|
"ConsumptionBundle": {
|
387
419
|
"type": "object",
|
388
420
|
"title": "Consumption Bundle",
|
389
|
-
"description": "A [**Consumption Bundle**](
|
421
|
+
"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
422
|
"properties": {
|
391
423
|
"ordId": {
|
392
424
|
"type": "string",
|
@@ -448,7 +480,7 @@
|
|
448
480
|
},
|
449
481
|
"version": {
|
450
482
|
"type": "string",
|
451
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
483
|
+
"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://spec.openapis.org/oas/v3.1.1.html#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.",
|
452
484
|
"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-]+)*))?$",
|
453
485
|
"examples": [
|
454
486
|
"1.2.3",
|
@@ -667,7 +699,7 @@
|
|
667
699
|
},
|
668
700
|
"version": {
|
669
701
|
"type": "string",
|
670
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
702
|
+
"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://spec.openapis.org/oas/v3.1.1.html#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.",
|
671
703
|
"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-]+)*))?$",
|
672
704
|
"examples": [
|
673
705
|
"1.2.3",
|
@@ -803,18 +835,23 @@
|
|
803
835
|
"apiProtocol": {
|
804
836
|
"type": "string",
|
805
837
|
"description": "API Protocol including the protocol version if applicable",
|
806
|
-
"
|
838
|
+
"anyOf": [
|
839
|
+
{
|
840
|
+
"type": "string",
|
841
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
842
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
843
|
+
},
|
807
844
|
{
|
808
845
|
"const": "odata-v2",
|
809
|
-
"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`."
|
846
|
+
"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`, `openapi-v3.1+`, `sap-csn-interop-effective-v1` or `custom`."
|
810
847
|
},
|
811
848
|
{
|
812
849
|
"const": "odata-v4",
|
813
|
-
"description": "[OData Version 4](https://www.odata.org/documentation/) API.\nAn OData V4 API MUST be described via a Common Schema Definition Language (CSDL).\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`."
|
850
|
+
"description": "[OData Version 4](https://www.odata.org/documentation/) API.\nAn OData V4 API MUST be described via a Common Schema Definition Language (CSDL).\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`, `openapi-v3.1+`, `sap-csn-interop-effective-v1` or `custom`."
|
814
851
|
},
|
815
852
|
{
|
816
853
|
"const": "rest",
|
817
|
-
"description": "Generic [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API.\nPlease not that while OData is also a REST API, the most precise/opinionated `apiProtocol` MUST be chosen.\nAn API Resource definition of type `openapi-v3` (RECOMMENDED) or another appropriate option SHOULD be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `openapi-v2`, `openapi-v3`, `raml-v1`, `sap-csn-interop-effective-v1` or `custom`."
|
854
|
+
"description": "Generic [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API.\nPlease not that while OData is also a REST API, the most precise/opinionated `apiProtocol` MUST be chosen.\nAn API Resource definition of type `openapi-v3` (RECOMMENDED) or another appropriate option SHOULD be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `openapi-v2`, `openapi-v3`, `openapi-v3.1+`, `raml-v1`, `sap-csn-interop-effective-v1` or `custom`."
|
818
855
|
},
|
819
856
|
{
|
820
857
|
"const": "graphql",
|
@@ -832,6 +869,10 @@
|
|
832
869
|
"const": "soap-outbound",
|
833
870
|
"description": "[SOAP](https://en.wikipedia.org/wiki/SOAP) API that provides/describes outbound interfaces for async communication.\nAn API Resource definition of type `wsdl-v2` (RECOMMENDED) or `wsdl-v1` MUST be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `wsdl-v1`, `wsdl-v2` or `custom`."
|
834
871
|
},
|
872
|
+
{
|
873
|
+
"const": "mcp",
|
874
|
+
"description": "[MCP](https://modelcontextprotocol.io) is an open protocol that standardizes how applications provide context to LLMs, based on JSON-RPC message format.\nThe protocol version is negotiated at runtime via the protocol itself.\n\nCurrently there is no standard API Resource definition type for MCP."
|
875
|
+
},
|
835
876
|
{
|
836
877
|
"const": "websocket",
|
837
878
|
"description": "Generic [WebSocket](https://datatracker.ietf.org/doc/html/rfc6455) Protocol.\nSince WebSocket is very generic, it is important to also define or least describe which semantics are concretely used, e.g. via an `implementationStandard`.\nThe API Resource definitions `type` MUST ONLY be set to `custom`."
|
@@ -863,7 +904,12 @@
|
|
863
904
|
"implementationStandard": {
|
864
905
|
"type": "string",
|
865
906
|
"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
|
-
"
|
907
|
+
"anyOf": [
|
908
|
+
{
|
909
|
+
"type": "string",
|
910
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
911
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
|
912
|
+
},
|
867
913
|
{
|
868
914
|
"const": "sap:ord-document-api:v1",
|
869
915
|
"description": "API follows the Open Resource Discovery v1 [Document API](../index.md#ord-provider-api) contract."
|
@@ -908,7 +954,7 @@
|
|
908
954
|
"customImplementationStandard": {
|
909
955
|
"type": "string",
|
910
956
|
"description": "If the fixed `implementationStandard` values need to be extended, an arbitrary `customImplementationStandard` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `implementationStandard` is set to `custom`.",
|
911
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
957
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
912
958
|
"maxLength": 255,
|
913
959
|
"examples": [
|
914
960
|
"sap.xref:some-api-contract:v1"
|
@@ -923,7 +969,7 @@
|
|
923
969
|
},
|
924
970
|
"compatibleWith": {
|
925
971
|
"type": "array",
|
926
|
-
"description": "
|
972
|
+
"description": "A reference to the interface (API contract) that this API implements.\nServes as a declaration of compatible implementation of API contract, effectively functioning as an \"implementationOf\" relationship.\n\nMUST be a valid reference to an (usually external) [API Resource](#api-resource) ORD ID.\n\nAll APIs that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.",
|
927
973
|
"items": {
|
928
974
|
"type": "string",
|
929
975
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
|
@@ -948,7 +994,12 @@
|
|
948
994
|
"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
995
|
"items": {
|
950
996
|
"type": "string",
|
951
|
-
"
|
997
|
+
"anyOf": [
|
998
|
+
{
|
999
|
+
"type": "string",
|
1000
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1001
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
1002
|
+
},
|
952
1003
|
{
|
953
1004
|
"const": "data-federation",
|
954
1005
|
"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 +1047,28 @@
|
|
996
1047
|
"$ref": "#/definitions/EntityTypeMapping"
|
997
1048
|
}
|
998
1049
|
},
|
1050
|
+
"exposedEntityTypes": {
|
1051
|
+
"type": "array",
|
1052
|
+
"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.",
|
1053
|
+
"items": {
|
1054
|
+
"$ref": "#/definitions/ExposedEntityType"
|
1055
|
+
},
|
1056
|
+
"examples": [
|
1057
|
+
[
|
1058
|
+
{
|
1059
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
1060
|
+
}
|
1061
|
+
],
|
1062
|
+
[
|
1063
|
+
{
|
1064
|
+
"ordId": "sap.sm:entityType:PurchaseOrderItem:v1"
|
1065
|
+
},
|
1066
|
+
{
|
1067
|
+
"ordId": "sap.sm:entityType:BusinessPartner:v1"
|
1068
|
+
}
|
1069
|
+
]
|
1070
|
+
]
|
1071
|
+
},
|
999
1072
|
"apiResourceLinks": {
|
1000
1073
|
"type": "array",
|
1001
1074
|
"description": "Links with semantic meaning that are specific to API Resources.",
|
@@ -1067,6 +1140,9 @@
|
|
1067
1140
|
{
|
1068
1141
|
"const": "Sourcing and Procurement"
|
1069
1142
|
},
|
1143
|
+
{
|
1144
|
+
"const": "Strategy, Compliance, and Governance"
|
1145
|
+
},
|
1070
1146
|
{
|
1071
1147
|
"const": "Supply Chain"
|
1072
1148
|
},
|
@@ -1107,6 +1183,9 @@
|
|
1107
1183
|
{
|
1108
1184
|
"const": "Aerospace and Defense"
|
1109
1185
|
},
|
1186
|
+
{
|
1187
|
+
"const": "Agribusiness"
|
1188
|
+
},
|
1110
1189
|
{
|
1111
1190
|
"const": "Automotive"
|
1112
1191
|
},
|
@@ -1116,24 +1195,39 @@
|
|
1116
1195
|
{
|
1117
1196
|
"const": "Chemicals"
|
1118
1197
|
},
|
1198
|
+
{
|
1199
|
+
"const": "Consumer Industries"
|
1200
|
+
},
|
1119
1201
|
{
|
1120
1202
|
"const": "Consumer Products"
|
1121
1203
|
},
|
1122
1204
|
{
|
1123
1205
|
"const": "Defense and Security"
|
1124
1206
|
},
|
1207
|
+
{
|
1208
|
+
"const": "Discrete Industries"
|
1209
|
+
},
|
1210
|
+
{
|
1211
|
+
"const": "Energy and Natural Resources"
|
1212
|
+
},
|
1125
1213
|
{
|
1126
1214
|
"const": "Engineering Construction and Operations"
|
1127
1215
|
},
|
1128
1216
|
{
|
1129
|
-
"const": "
|
1217
|
+
"const": "Financial Services"
|
1130
1218
|
},
|
1131
1219
|
{
|
1132
|
-
"const": "
|
1220
|
+
"const": "Future Cities"
|
1221
|
+
},
|
1222
|
+
{
|
1223
|
+
"const": "Healthcare"
|
1133
1224
|
},
|
1134
1225
|
{
|
1135
1226
|
"const": "High Tech"
|
1136
1227
|
},
|
1228
|
+
{
|
1229
|
+
"const": "Higher Education and Research"
|
1230
|
+
},
|
1137
1231
|
{
|
1138
1232
|
"const": "Industrial Machinery and Components"
|
1139
1233
|
},
|
@@ -1161,9 +1255,15 @@
|
|
1161
1255
|
{
|
1162
1256
|
"const": "Public Sector"
|
1163
1257
|
},
|
1258
|
+
{
|
1259
|
+
"const": "Public Services"
|
1260
|
+
},
|
1164
1261
|
{
|
1165
1262
|
"const": "Retail"
|
1166
1263
|
},
|
1264
|
+
{
|
1265
|
+
"const": "Service Industries"
|
1266
|
+
},
|
1167
1267
|
{
|
1168
1268
|
"const": "Sports and Entertainment"
|
1169
1269
|
},
|
@@ -1217,7 +1317,12 @@
|
|
1217
1317
|
"policyLevel": {
|
1218
1318
|
"type": "string",
|
1219
1319
|
"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
|
-
"
|
1320
|
+
"anyOf": [
|
1321
|
+
{
|
1322
|
+
"type": "string",
|
1323
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1324
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
1325
|
+
},
|
1221
1326
|
{
|
1222
1327
|
"const": "none",
|
1223
1328
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -1408,7 +1513,7 @@
|
|
1408
1513
|
},
|
1409
1514
|
"version": {
|
1410
1515
|
"type": "string",
|
1411
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
1516
|
+
"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://spec.openapis.org/oas/v3.1.1.html#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.",
|
1412
1517
|
"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-]+)*))?$",
|
1413
1518
|
"examples": [
|
1414
1519
|
"1.2.3",
|
@@ -1518,7 +1623,17 @@
|
|
1518
1623
|
"implementationStandard": {
|
1519
1624
|
"type": "string",
|
1520
1625
|
"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
|
-
"
|
1626
|
+
"anyOf": [
|
1627
|
+
{
|
1628
|
+
"type": "string",
|
1629
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1630
|
+
"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."
|
1631
|
+
},
|
1632
|
+
{
|
1633
|
+
"type": "string",
|
1634
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1635
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customImplementationStandardDescription` SHOULD be provided."
|
1636
|
+
},
|
1522
1637
|
{
|
1523
1638
|
"const": "custom",
|
1524
1639
|
"description": "If chosen, a custom implementation standard MUST be provided via `customImplementationStandard` and SHOULD be described via `customImplementationStandardDescription`"
|
@@ -1531,7 +1646,7 @@
|
|
1531
1646
|
"customImplementationStandard": {
|
1532
1647
|
"type": "string",
|
1533
1648
|
"description": "If the fixed `implementationStandard` values need to be extended, an arbitrary `customImplementationStandard` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `implementationStandard` is set to `custom`.",
|
1534
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
1649
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1535
1650
|
"maxLength": 255,
|
1536
1651
|
"examples": [
|
1537
1652
|
"sap.xref:some-event-contract:v1"
|
@@ -1573,6 +1688,28 @@
|
|
1573
1688
|
"$ref": "#/definitions/EntityTypeMapping"
|
1574
1689
|
}
|
1575
1690
|
},
|
1691
|
+
"exposedEntityTypes": {
|
1692
|
+
"type": "array",
|
1693
|
+
"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.",
|
1694
|
+
"items": {
|
1695
|
+
"$ref": "#/definitions/ExposedEntityType"
|
1696
|
+
},
|
1697
|
+
"examples": [
|
1698
|
+
[
|
1699
|
+
{
|
1700
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
1701
|
+
}
|
1702
|
+
],
|
1703
|
+
[
|
1704
|
+
{
|
1705
|
+
"ordId": "sap.sm:entityType:PurchaseOrderItem:v1"
|
1706
|
+
},
|
1707
|
+
{
|
1708
|
+
"ordId": "sap.sm:entityType:BusinessPartner:v1"
|
1709
|
+
}
|
1710
|
+
]
|
1711
|
+
]
|
1712
|
+
},
|
1576
1713
|
"eventResourceLinks": {
|
1577
1714
|
"type": "array",
|
1578
1715
|
"description": "Links with semantic meaning that are specific to event resources.\n\nIf applicable, `eventResourceLinks` MUST be used instead of generic `links`.",
|
@@ -1644,6 +1781,9 @@
|
|
1644
1781
|
{
|
1645
1782
|
"const": "Sourcing and Procurement"
|
1646
1783
|
},
|
1784
|
+
{
|
1785
|
+
"const": "Strategy, Compliance, and Governance"
|
1786
|
+
},
|
1647
1787
|
{
|
1648
1788
|
"const": "Supply Chain"
|
1649
1789
|
},
|
@@ -1684,6 +1824,9 @@
|
|
1684
1824
|
{
|
1685
1825
|
"const": "Aerospace and Defense"
|
1686
1826
|
},
|
1827
|
+
{
|
1828
|
+
"const": "Agribusiness"
|
1829
|
+
},
|
1687
1830
|
{
|
1688
1831
|
"const": "Automotive"
|
1689
1832
|
},
|
@@ -1693,24 +1836,39 @@
|
|
1693
1836
|
{
|
1694
1837
|
"const": "Chemicals"
|
1695
1838
|
},
|
1839
|
+
{
|
1840
|
+
"const": "Consumer Industries"
|
1841
|
+
},
|
1696
1842
|
{
|
1697
1843
|
"const": "Consumer Products"
|
1698
1844
|
},
|
1699
1845
|
{
|
1700
1846
|
"const": "Defense and Security"
|
1701
1847
|
},
|
1848
|
+
{
|
1849
|
+
"const": "Discrete Industries"
|
1850
|
+
},
|
1851
|
+
{
|
1852
|
+
"const": "Energy and Natural Resources"
|
1853
|
+
},
|
1702
1854
|
{
|
1703
1855
|
"const": "Engineering Construction and Operations"
|
1704
1856
|
},
|
1705
1857
|
{
|
1706
|
-
"const": "
|
1858
|
+
"const": "Financial Services"
|
1707
1859
|
},
|
1708
1860
|
{
|
1709
|
-
"const": "
|
1861
|
+
"const": "Future Cities"
|
1862
|
+
},
|
1863
|
+
{
|
1864
|
+
"const": "Healthcare"
|
1710
1865
|
},
|
1711
1866
|
{
|
1712
1867
|
"const": "High Tech"
|
1713
1868
|
},
|
1869
|
+
{
|
1870
|
+
"const": "Higher Education and Research"
|
1871
|
+
},
|
1714
1872
|
{
|
1715
1873
|
"const": "Industrial Machinery and Components"
|
1716
1874
|
},
|
@@ -1738,9 +1896,15 @@
|
|
1738
1896
|
{
|
1739
1897
|
"const": "Public Sector"
|
1740
1898
|
},
|
1899
|
+
{
|
1900
|
+
"const": "Public Services"
|
1901
|
+
},
|
1741
1902
|
{
|
1742
1903
|
"const": "Retail"
|
1743
1904
|
},
|
1905
|
+
{
|
1906
|
+
"const": "Service Industries"
|
1907
|
+
},
|
1744
1908
|
{
|
1745
1909
|
"const": "Sports and Entertainment"
|
1746
1910
|
},
|
@@ -1794,7 +1958,12 @@
|
|
1794
1958
|
"policyLevel": {
|
1795
1959
|
"type": "string",
|
1796
1960
|
"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
|
-
"
|
1961
|
+
"anyOf": [
|
1962
|
+
{
|
1963
|
+
"type": "string",
|
1964
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
1965
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
1966
|
+
},
|
1798
1967
|
{
|
1799
1968
|
"const": "none",
|
1800
1969
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -1866,7 +2035,7 @@
|
|
1866
2035
|
"EntityType": {
|
1867
2036
|
"type": "object",
|
1868
2037
|
"title": "Entity Type",
|
1869
|
-
"description": "An [**Entity Type**](
|
2038
|
+
"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
2039
|
"properties": {
|
1871
2040
|
"ordId": {
|
1872
2041
|
"type": "string",
|
@@ -1975,7 +2144,7 @@
|
|
1975
2144
|
},
|
1976
2145
|
"version": {
|
1977
2146
|
"type": "string",
|
1978
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
2147
|
+
"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://spec.openapis.org/oas/v3.1.1.html#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.",
|
1979
2148
|
"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-]+)*))?$",
|
1980
2149
|
"examples": [
|
1981
2150
|
"1.2.3",
|
@@ -2074,7 +2243,7 @@
|
|
2074
2243
|
},
|
2075
2244
|
"level": {
|
2076
2245
|
"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
|
2246
|
+
"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
2247
|
"oneOf": [
|
2079
2248
|
{
|
2080
2249
|
"const": "aggregate",
|
@@ -2098,7 +2267,14 @@
|
|
2098
2267
|
"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
2268
|
"items": {
|
2100
2269
|
"$ref": "#/definitions/RelatedEntityType"
|
2101
|
-
}
|
2270
|
+
},
|
2271
|
+
"examples": [
|
2272
|
+
[
|
2273
|
+
{
|
2274
|
+
"ordId": "sap.odm:entityType:WorkforcePerson:v1"
|
2275
|
+
}
|
2276
|
+
]
|
2277
|
+
]
|
2102
2278
|
},
|
2103
2279
|
"links": {
|
2104
2280
|
"type": "array",
|
@@ -2134,7 +2310,12 @@
|
|
2134
2310
|
"policyLevel": {
|
2135
2311
|
"type": "string",
|
2136
2312
|
"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
|
-
"
|
2313
|
+
"anyOf": [
|
2314
|
+
{
|
2315
|
+
"type": "string",
|
2316
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2317
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2318
|
+
},
|
2138
2319
|
{
|
2139
2320
|
"const": "none",
|
2140
2321
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -2206,7 +2387,7 @@
|
|
2206
2387
|
"DataProduct": {
|
2207
2388
|
"type": "object",
|
2208
2389
|
"title": "Data Product",
|
2209
|
-
"description": "A [Data Product](
|
2390
|
+
"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
2391
|
"properties": {
|
2211
2392
|
"ordId": {
|
2212
2393
|
"type": "string",
|
@@ -2299,7 +2480,7 @@
|
|
2299
2480
|
},
|
2300
2481
|
"version": {
|
2301
2482
|
"type": "string",
|
2302
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
2483
|
+
"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://spec.openapis.org/oas/v3.1.1.html#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.",
|
2303
2484
|
"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-]+)*))?$",
|
2304
2485
|
"examples": [
|
2305
2486
|
"1.2.3",
|
@@ -2454,9 +2635,14 @@
|
|
2454
2635
|
]
|
2455
2636
|
},
|
2456
2637
|
"category": {
|
2457
|
-
"description": "Category of the data-set within data product. Based on its definition, a data product is a
|
2638
|
+
"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
2639
|
"type": "string",
|
2459
|
-
"
|
2640
|
+
"anyOf": [
|
2641
|
+
{
|
2642
|
+
"type": "string",
|
2643
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2644
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2645
|
+
},
|
2460
2646
|
{
|
2461
2647
|
"const": "business-object",
|
2462
2648
|
"description": "Business Objects: master data, transaction data"
|
@@ -2558,6 +2744,9 @@
|
|
2558
2744
|
{
|
2559
2745
|
"const": "Aerospace and Defense"
|
2560
2746
|
},
|
2747
|
+
{
|
2748
|
+
"const": "Agribusiness"
|
2749
|
+
},
|
2561
2750
|
{
|
2562
2751
|
"const": "Automotive"
|
2563
2752
|
},
|
@@ -2567,24 +2756,39 @@
|
|
2567
2756
|
{
|
2568
2757
|
"const": "Chemicals"
|
2569
2758
|
},
|
2759
|
+
{
|
2760
|
+
"const": "Consumer Industries"
|
2761
|
+
},
|
2570
2762
|
{
|
2571
2763
|
"const": "Consumer Products"
|
2572
2764
|
},
|
2573
2765
|
{
|
2574
2766
|
"const": "Defense and Security"
|
2575
2767
|
},
|
2768
|
+
{
|
2769
|
+
"const": "Discrete Industries"
|
2770
|
+
},
|
2771
|
+
{
|
2772
|
+
"const": "Energy and Natural Resources"
|
2773
|
+
},
|
2576
2774
|
{
|
2577
2775
|
"const": "Engineering Construction and Operations"
|
2578
2776
|
},
|
2579
2777
|
{
|
2580
|
-
"const": "
|
2778
|
+
"const": "Financial Services"
|
2581
2779
|
},
|
2582
2780
|
{
|
2583
|
-
"const": "
|
2781
|
+
"const": "Future Cities"
|
2782
|
+
},
|
2783
|
+
{
|
2784
|
+
"const": "Healthcare"
|
2584
2785
|
},
|
2585
2786
|
{
|
2586
2787
|
"const": "High Tech"
|
2587
2788
|
},
|
2789
|
+
{
|
2790
|
+
"const": "Higher Education and Research"
|
2791
|
+
},
|
2588
2792
|
{
|
2589
2793
|
"const": "Industrial Machinery and Components"
|
2590
2794
|
},
|
@@ -2612,9 +2816,15 @@
|
|
2612
2816
|
{
|
2613
2817
|
"const": "Public Sector"
|
2614
2818
|
},
|
2819
|
+
{
|
2820
|
+
"const": "Public Services"
|
2821
|
+
},
|
2615
2822
|
{
|
2616
2823
|
"const": "Retail"
|
2617
2824
|
},
|
2825
|
+
{
|
2826
|
+
"const": "Service Industries"
|
2827
|
+
},
|
2618
2828
|
{
|
2619
2829
|
"const": "Sports and Entertainment"
|
2620
2830
|
},
|
@@ -2684,6 +2894,9 @@
|
|
2684
2894
|
{
|
2685
2895
|
"const": "Sourcing and Procurement"
|
2686
2896
|
},
|
2897
|
+
{
|
2898
|
+
"const": "Strategy, Compliance, and Governance"
|
2899
|
+
},
|
2687
2900
|
{
|
2688
2901
|
"const": "Supply Chain"
|
2689
2902
|
},
|
@@ -2749,7 +2962,12 @@
|
|
2749
2962
|
"policyLevel": {
|
2750
2963
|
"type": "string",
|
2751
2964
|
"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
|
-
"
|
2965
|
+
"anyOf": [
|
2966
|
+
{
|
2967
|
+
"type": "string",
|
2968
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2969
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
2970
|
+
},
|
2753
2971
|
{
|
2754
2972
|
"const": "none",
|
2755
2973
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|
@@ -2871,14 +3089,23 @@
|
|
2871
3089
|
"type": {
|
2872
3090
|
"description": "Type of the API Resource Definition\nIf \"custom\" is chosen, a customType MUST be provided",
|
2873
3091
|
"type": "string",
|
2874
|
-
"
|
3092
|
+
"anyOf": [
|
3093
|
+
{
|
3094
|
+
"type": "string",
|
3095
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3096
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3097
|
+
},
|
2875
3098
|
{
|
2876
3099
|
"const": "openapi-v2",
|
2877
|
-
"description": "[OpenAPI 2 / Swagger 2](https://
|
3100
|
+
"description": "[OpenAPI 2 / Swagger 2](https://spec.openapis.org/oas/v2.0.html) 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`."
|
2878
3101
|
},
|
2879
3102
|
{
|
2880
3103
|
"const": "openapi-v3",
|
2881
|
-
"description": "[OpenAPI 3](https://
|
3104
|
+
"description": "[OpenAPI 3.0.x](https://spec.openapis.org/oas/v3.0.4.html) 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`.\n\nFor OpenAPI 3.1+, `openapi-v3.1+` MUST be used instead, as it's not backward compatible with OpenAPI 3.0."
|
3105
|
+
},
|
3106
|
+
{
|
3107
|
+
"const": "openapi-v3.1+",
|
3108
|
+
"description": "[OpenAPI 3.1+](https://spec.openapis.org/oas/v3.1.1.html) (3.1 or greater, but below 4.x) 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`."
|
2882
3109
|
},
|
2883
3110
|
{
|
2884
3111
|
"const": "raml-v1",
|
@@ -2928,7 +3155,7 @@
|
|
2928
3155
|
"customType": {
|
2929
3156
|
"type": "string",
|
2930
3157
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
2931
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
3158
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
2932
3159
|
"maxLength": 255,
|
2933
3160
|
"examples": [
|
2934
3161
|
"sap:custom-definition-format:v1"
|
@@ -3000,7 +3227,12 @@
|
|
3000
3227
|
"type": {
|
3001
3228
|
"description": "Type of the event resource definition",
|
3002
3229
|
"type": "string",
|
3003
|
-
"
|
3230
|
+
"anyOf": [
|
3231
|
+
{
|
3232
|
+
"type": "string",
|
3233
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3234
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3235
|
+
},
|
3004
3236
|
{
|
3005
3237
|
"const": "asyncapi-v2",
|
3006
3238
|
"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."
|
@@ -3021,7 +3253,7 @@
|
|
3021
3253
|
"customType": {
|
3022
3254
|
"type": "string",
|
3023
3255
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
3024
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
3256
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3025
3257
|
"maxLength": 255,
|
3026
3258
|
"examples": [
|
3027
3259
|
"sap:custom-definition-format:v1"
|
@@ -3225,14 +3457,19 @@
|
|
3225
3457
|
"type": {
|
3226
3458
|
"description": "Type of the Capability",
|
3227
3459
|
"type": "string",
|
3228
|
-
"
|
3460
|
+
"anyOf": [
|
3229
3461
|
{
|
3230
|
-
"
|
3231
|
-
"
|
3462
|
+
"type": "string",
|
3463
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3464
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3232
3465
|
},
|
3233
3466
|
{
|
3234
3467
|
"const": "sap.mdo:mdi-capability:v1",
|
3235
3468
|
"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`."
|
3469
|
+
},
|
3470
|
+
{
|
3471
|
+
"const": "custom",
|
3472
|
+
"description": "If chosen, `customType` MUST be provided."
|
3236
3473
|
}
|
3237
3474
|
],
|
3238
3475
|
"examples": [
|
@@ -3242,7 +3479,7 @@
|
|
3242
3479
|
"customType": {
|
3243
3480
|
"type": "string",
|
3244
3481
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
3245
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
3482
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3246
3483
|
"maxLength": 255,
|
3247
3484
|
"examples": [
|
3248
3485
|
"sap:custom-definition-format:v1"
|
@@ -3293,7 +3530,7 @@
|
|
3293
3530
|
},
|
3294
3531
|
"version": {
|
3295
3532
|
"type": "string",
|
3296
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
3533
|
+
"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://spec.openapis.org/oas/v3.1.1.html#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.",
|
3297
3534
|
"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-]+)*))?$",
|
3298
3535
|
"examples": [
|
3299
3536
|
"1.2.3",
|
@@ -3358,7 +3595,7 @@
|
|
3358
3595
|
},
|
3359
3596
|
"relatedEntityTypes": {
|
3360
3597
|
"type": "array",
|
3361
|
-
"description": "Optional list of related EntityType Resources.\
|
3598
|
+
"description": "Optional list of related EntityType Resources.\nMUST be a valid reference to an [EntityType Resource](#entity-type) ORD ID.",
|
3362
3599
|
"items": {
|
3363
3600
|
"type": "string",
|
3364
3601
|
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
|
@@ -3432,14 +3669,19 @@
|
|
3432
3669
|
"type": {
|
3433
3670
|
"description": "Type of the capability resource definition",
|
3434
3671
|
"type": "string",
|
3435
|
-
"
|
3672
|
+
"anyOf": [
|
3436
3673
|
{
|
3437
|
-
"
|
3438
|
-
"
|
3674
|
+
"type": "string",
|
3675
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3676
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
3439
3677
|
},
|
3440
3678
|
{
|
3441
3679
|
"const": "sap.mdo:mdi-capability-definition:v1",
|
3442
3680
|
"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`."
|
3681
|
+
},
|
3682
|
+
{
|
3683
|
+
"const": "custom",
|
3684
|
+
"description": "If chosen, a custom type MUST be provided via `customType`"
|
3443
3685
|
}
|
3444
3686
|
],
|
3445
3687
|
"examples": [
|
@@ -3449,7 +3691,7 @@
|
|
3449
3691
|
"customType": {
|
3450
3692
|
"type": "string",
|
3451
3693
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
3452
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
3694
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
3453
3695
|
"maxLength": 255,
|
3454
3696
|
"examples": [
|
3455
3697
|
"sap:custom-definition-format:v1"
|
@@ -3515,7 +3757,7 @@
|
|
3515
3757
|
"IntegrationDependency": {
|
3516
3758
|
"type": "object",
|
3517
3759
|
"title": "Integration Dependency",
|
3518
|
-
"description": "An [Integration Dependency](
|
3760
|
+
"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
3761
|
"properties": {
|
3520
3762
|
"ordId": {
|
3521
3763
|
"type": "string",
|
@@ -3594,7 +3836,7 @@
|
|
3594
3836
|
},
|
3595
3837
|
"version": {
|
3596
3838
|
"type": "string",
|
3597
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
3839
|
+
"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://spec.openapis.org/oas/v3.1.1.html#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.",
|
3598
3840
|
"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-]+)*))?$",
|
3599
3841
|
"examples": [
|
3600
3842
|
"1.2.3",
|
@@ -4061,7 +4303,12 @@
|
|
4061
4303
|
"properties": {
|
4062
4304
|
"type": {
|
4063
4305
|
"type": "string",
|
4064
|
-
"
|
4306
|
+
"anyOf": [
|
4307
|
+
{
|
4308
|
+
"type": "string",
|
4309
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4310
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4311
|
+
},
|
4065
4312
|
{
|
4066
4313
|
"const": "terms-of-service",
|
4067
4314
|
"description": "Link to human-readable terms of service / use documentation."
|
@@ -4102,7 +4349,7 @@
|
|
4102
4349
|
"customType": {
|
4103
4350
|
"type": "string",
|
4104
4351
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
4105
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
4352
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4106
4353
|
"maxLength": 255,
|
4107
4354
|
"examples": [
|
4108
4355
|
"sap:custom-definition-format:v1"
|
@@ -4136,7 +4383,12 @@
|
|
4136
4383
|
"type": {
|
4137
4384
|
"type": "string",
|
4138
4385
|
"description": "See also: [WADG0001 WebAPI type extension](https://webapi-discovery.github.io/rfcs/rfc0001.html#webapiactions)",
|
4139
|
-
"
|
4386
|
+
"anyOf": [
|
4387
|
+
{
|
4388
|
+
"type": "string",
|
4389
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4390
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4391
|
+
},
|
4140
4392
|
{
|
4141
4393
|
"const": "api-documentation",
|
4142
4394
|
"description": "Link to human-readable documentation describing the API or event resource in more detail."
|
@@ -4177,7 +4429,7 @@
|
|
4177
4429
|
"customType": {
|
4178
4430
|
"type": "string",
|
4179
4431
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
4180
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
4432
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4181
4433
|
"maxLength": 255,
|
4182
4434
|
"examples": [
|
4183
4435
|
"sap:custom-definition-format:v1"
|
@@ -4212,7 +4464,12 @@
|
|
4212
4464
|
"properties": {
|
4213
4465
|
"type": {
|
4214
4466
|
"type": "string",
|
4215
|
-
"
|
4467
|
+
"anyOf": [
|
4468
|
+
{
|
4469
|
+
"type": "string",
|
4470
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4471
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
4472
|
+
},
|
4216
4473
|
{
|
4217
4474
|
"const": "payment",
|
4218
4475
|
"description": "Links to a resource detailing pricing details of the data product."
|
@@ -4241,7 +4498,7 @@
|
|
4241
4498
|
"customType": {
|
4242
4499
|
"type": "string",
|
4243
4500
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
4244
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
4501
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4245
4502
|
"maxLength": 255,
|
4246
4503
|
"examples": [
|
4247
4504
|
"sap:custom-definition-format:v1"
|
@@ -4448,7 +4705,12 @@
|
|
4448
4705
|
"type": {
|
4449
4706
|
"type": "string",
|
4450
4707
|
"description": "Defines the authentication/authorization strategy through which the referenced `resourceDefinitions` are accessible.",
|
4451
|
-
"
|
4708
|
+
"anyOf": [
|
4709
|
+
{
|
4710
|
+
"type": "string",
|
4711
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4712
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customDescription` SHOULD be provided."
|
4713
|
+
},
|
4452
4714
|
{
|
4453
4715
|
"const": "open",
|
4454
4716
|
"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)."
|
@@ -4477,7 +4739,7 @@
|
|
4477
4739
|
"customType": {
|
4478
4740
|
"type": "string",
|
4479
4741
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
4480
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
4742
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4481
4743
|
"maxLength": 255,
|
4482
4744
|
"examples": [
|
4483
4745
|
"sap.xref:open-local-tenant-id:v1"
|
@@ -4515,7 +4777,12 @@
|
|
4515
4777
|
"type": {
|
4516
4778
|
"type": "string",
|
4517
4779
|
"description": "The type of credential exchange strategy.",
|
4518
|
-
"
|
4780
|
+
"anyOf": [
|
4781
|
+
{
|
4782
|
+
"type": "string",
|
4783
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4784
|
+
"description": "Any valid [Specification ID](../index.md#specification-id).\nIf chosen, `customDescription` SHOULD be provided."
|
4785
|
+
},
|
4519
4786
|
{
|
4520
4787
|
"const": "custom",
|
4521
4788
|
"description": "If chosen, `customType` MUST be provided.\nIf chosen, `customDescription` SHOULD be provided."
|
@@ -4525,7 +4792,7 @@
|
|
4525
4792
|
"customType": {
|
4526
4793
|
"type": "string",
|
4527
4794
|
"description": "If the fixed `type` enum values need to be extended, an arbitrary `customType` can be provided.\n\nMUST be a valid [Specification ID](../index.md#specification-id).\n\nMUST only be provided if `type` is set to `custom`.",
|
4528
|
-
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v
|
4795
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4529
4796
|
"maxLength": 255,
|
4530
4797
|
"examples": [
|
4531
4798
|
"sap.xref:credential-exchange:v1"
|
@@ -4576,7 +4843,7 @@
|
|
4576
4843
|
"GroupType": {
|
4577
4844
|
"title": "Group Type",
|
4578
4845
|
"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](
|
4846
|
+
"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
4847
|
"properties": {
|
4581
4848
|
"groupTypeId": {
|
4582
4849
|
"type": "string",
|
@@ -4620,7 +4887,7 @@
|
|
4620
4887
|
"Group": {
|
4621
4888
|
"title": "Group",
|
4622
4889
|
"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](
|
4890
|
+
"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
4891
|
"properties": {
|
4625
4892
|
"groupId": {
|
4626
4893
|
"type": "string",
|
@@ -4833,10 +5100,10 @@
|
|
4833
5100
|
}
|
4834
5101
|
]
|
4835
5102
|
},
|
4836
|
-
"
|
4837
|
-
"title": "
|
5103
|
+
"EntityTypeOrdIdTarget": {
|
5104
|
+
"title": "Entity Type Target (ORD ID)",
|
4838
5105
|
"type": "object",
|
4839
|
-
"description": "
|
5106
|
+
"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
5107
|
"properties": {
|
4841
5108
|
"ordId": {
|
4842
5109
|
"type": "string",
|
@@ -4853,10 +5120,29 @@
|
|
4853
5120
|
],
|
4854
5121
|
"additionalProperties": false
|
4855
5122
|
},
|
4856
|
-
"
|
4857
|
-
"title": "Entity Type Target (
|
5123
|
+
"EntityTypeCorrelationIdTarget": {
|
5124
|
+
"title": "Entity Type Target (Correlation ID)",
|
4858
5125
|
"type": "object",
|
4859
|
-
"description": "Define which entity type is the target of an entity type mapping\n\nEntity types can be referenced using a [
|
5126
|
+
"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).",
|
5127
|
+
"properties": {
|
5128
|
+
"correlationId": {
|
5129
|
+
"type": "string",
|
5130
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+):([a-zA-Z0-9._\\-\\/]+)$",
|
5131
|
+
"maxLength": 255,
|
5132
|
+
"examples": [
|
5133
|
+
"sap.csnexposure:entity:Attachment"
|
5134
|
+
]
|
5135
|
+
}
|
5136
|
+
},
|
5137
|
+
"required": [
|
5138
|
+
"correlationId"
|
5139
|
+
],
|
5140
|
+
"additionalProperties": false
|
5141
|
+
},
|
5142
|
+
"RelatedEntityType": {
|
5143
|
+
"title": "Related Entity Type",
|
5144
|
+
"type": "object",
|
5145
|
+
"description": "Defines which Entity Type is related (via its ORD ID).\nIn the future, this could include stating the relationship type, too.",
|
4860
5146
|
"properties": {
|
4861
5147
|
"ordId": {
|
4862
5148
|
"type": "string",
|
@@ -4873,22 +5159,23 @@
|
|
4873
5159
|
],
|
4874
5160
|
"additionalProperties": false
|
4875
5161
|
},
|
4876
|
-
"
|
4877
|
-
"title": "Entity Type
|
5162
|
+
"ExposedEntityType": {
|
5163
|
+
"title": "Exposed Entity Type",
|
4878
5164
|
"type": "object",
|
4879
|
-
"description": "
|
5165
|
+
"description": "Defines which Entity Type is exposed through (via its ORD ID).",
|
4880
5166
|
"properties": {
|
4881
|
-
"
|
5167
|
+
"ordId": {
|
4882
5168
|
"type": "string",
|
4883
|
-
"
|
5169
|
+
"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.",
|
5170
|
+
"pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
4884
5171
|
"maxLength": 255,
|
4885
5172
|
"examples": [
|
4886
|
-
"sap.
|
5173
|
+
"sap.s4.sot:entityType:BusinessPartner:v1"
|
4887
5174
|
]
|
4888
5175
|
}
|
4889
5176
|
},
|
4890
5177
|
"required": [
|
4891
|
-
"
|
5178
|
+
"ordId"
|
4892
5179
|
],
|
4893
5180
|
"additionalProperties": false
|
4894
5181
|
},
|
@@ -5020,7 +5307,7 @@
|
|
5020
5307
|
},
|
5021
5308
|
"version": {
|
5022
5309
|
"type": "string",
|
5023
|
-
"description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://
|
5310
|
+
"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://spec.openapis.org/oas/v3.1.1.html#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
|
5024
5311
|
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
|
5025
5312
|
"examples": [
|
5026
5313
|
"1.2.3",
|
@@ -5145,10 +5432,11 @@
|
|
5145
5432
|
"1.7",
|
5146
5433
|
"1.8",
|
5147
5434
|
"1.9",
|
5148
|
-
"1.10"
|
5435
|
+
"1.10",
|
5436
|
+
"1.11"
|
5149
5437
|
],
|
5150
5438
|
"examples": [
|
5151
|
-
"1.
|
5439
|
+
"1.11"
|
5152
5440
|
]
|
5153
5441
|
},
|
5154
5442
|
"description": {
|
@@ -5174,7 +5462,12 @@
|
|
5174
5462
|
"policyLevel": {
|
5175
5463
|
"type": "string",
|
5176
5464
|
"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
|
-
"
|
5465
|
+
"anyOf": [
|
5466
|
+
{
|
5467
|
+
"type": "string",
|
5468
|
+
"pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
|
5469
|
+
"description": "Any valid [Specification ID](../index.md#specification-id)."
|
5470
|
+
},
|
5178
5471
|
{
|
5179
5472
|
"const": "none",
|
5180
5473
|
"description": "No policy level chosen. Only the base rules on how to create correct ORD documents apply."
|