@open-resource-discovery/specification 1.11.0 → 1.12.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.
@@ -73,7 +73,7 @@
73
73
  },
74
74
  "version": {
75
75
  "type": "string",
76
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
76
+ "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://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.",
77
77
  "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
78
78
  "examples": [
79
79
  "1.2.3",
@@ -254,6 +254,9 @@
254
254
  {
255
255
  "const": "Sourcing and Procurement"
256
256
  },
257
+ {
258
+ "const": "Strategy, Compliance, and Governance"
259
+ },
257
260
  {
258
261
  "const": "Supply Chain"
259
262
  },
@@ -294,6 +297,9 @@
294
297
  {
295
298
  "const": "Aerospace and Defense"
296
299
  },
300
+ {
301
+ "const": "Agribusiness"
302
+ },
297
303
  {
298
304
  "const": "Automotive"
299
305
  },
@@ -303,24 +309,39 @@
303
309
  {
304
310
  "const": "Chemicals"
305
311
  },
312
+ {
313
+ "const": "Consumer Industries"
314
+ },
306
315
  {
307
316
  "const": "Consumer Products"
308
317
  },
309
318
  {
310
319
  "const": "Defense and Security"
311
320
  },
321
+ {
322
+ "const": "Discrete Industries"
323
+ },
324
+ {
325
+ "const": "Energy and Natural Resources"
326
+ },
312
327
  {
313
328
  "const": "Engineering Construction and Operations"
314
329
  },
315
330
  {
316
- "const": "Healthcare"
331
+ "const": "Financial Services"
317
332
  },
318
333
  {
319
- "const": "Higher Education and Research"
334
+ "const": "Future Cities"
335
+ },
336
+ {
337
+ "const": "Healthcare"
320
338
  },
321
339
  {
322
340
  "const": "High Tech"
323
341
  },
342
+ {
343
+ "const": "Higher Education and Research"
344
+ },
324
345
  {
325
346
  "const": "Industrial Machinery and Components"
326
347
  },
@@ -348,9 +369,15 @@
348
369
  {
349
370
  "const": "Public Sector"
350
371
  },
372
+ {
373
+ "const": "Public Services"
374
+ },
351
375
  {
352
376
  "const": "Retail"
353
377
  },
378
+ {
379
+ "const": "Service Industries"
380
+ },
354
381
  {
355
382
  "const": "Sports and Entertainment"
356
383
  },
@@ -491,7 +518,7 @@
491
518
  },
492
519
  "version": {
493
520
  "type": "string",
494
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
521
+ "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.",
495
522
  "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-]+)*))?$",
496
523
  "examples": [
497
524
  "1.2.3",
@@ -503,7 +530,7 @@
503
530
  "type": "string",
504
531
  "format": "date-time",
505
532
  "x-introduced-in-version": "1.4.0",
506
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
533
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
507
534
  "examples": [
508
535
  "2022-12-19T15:47:04+00:00"
509
536
  ]
@@ -750,7 +777,7 @@
750
777
  },
751
778
  "version": {
752
779
  "type": "string",
753
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
780
+ "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.",
754
781
  "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-]+)*))?$",
755
782
  "examples": [
756
783
  "1.2.3",
@@ -761,7 +788,7 @@
761
788
  "type": "string",
762
789
  "format": "date-time",
763
790
  "x-introduced-in-version": "1.4.0",
764
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
791
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
765
792
  "examples": [
766
793
  "2022-12-19T15:47:04+00:00"
767
794
  ]
@@ -788,17 +815,21 @@
788
815
  "type": "string",
789
816
  "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
790
817
  "oneOf": [
818
+ {
819
+ "const": "beta",
820
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
821
+ },
791
822
  {
792
823
  "const": "active",
793
824
  "description": "Resource is meant for productive use and provides a stable API contract."
794
825
  },
795
826
  {
796
- "const": "beta",
797
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
827
+ "const": "deprecated",
828
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
798
829
  },
799
830
  {
800
- "const": "deprecated",
801
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
831
+ "const": "sunset",
832
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
802
833
  }
803
834
  ],
804
835
  "examples": [
@@ -817,7 +848,7 @@
817
848
  "deprecationDate": {
818
849
  "type": "string",
819
850
  "format": "date-time",
820
- "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually decommissioned / removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
851
+ "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually sunset, aka. decommissioned / removed / archived.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
821
852
  "examples": [
822
853
  "2020-12-08T15:47:04+00:00"
823
854
  ]
@@ -825,7 +856,7 @@
825
856
  "sunsetDate": {
826
857
  "type": "string",
827
858
  "format": "date-time",
828
- "description": "The sunset date defines when the resource is scheduled to be decommissioned/removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
859
+ "description": "The sunset date defines when the resource is scheduled to be decommissioned / removed / archived.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
829
860
  "examples": [
830
861
  "2022-01-08T15:47:04+00:00"
831
862
  ]
@@ -898,15 +929,15 @@
898
929
  },
899
930
  {
900
931
  "const": "odata-v2",
901
- "description": "[OData Version 2.0](https://www.odata.org/documentation/odata-version-2-0/) API.\nAn API Resource definition of type `edmx` MUST be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `edmx`, `csdl-json`, `openapi-v2`, `openapi-v3`, `sap-csn-interop-effective-v1` or `custom`."
932
+ "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`."
902
933
  },
903
934
  {
904
935
  "const": "odata-v4",
905
- "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`."
936
+ "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`."
906
937
  },
907
938
  {
908
939
  "const": "rest",
909
- "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`."
940
+ "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`."
910
941
  },
911
942
  {
912
943
  "const": "graphql",
@@ -925,6 +956,10 @@
925
956
  "const": "soap-outbound",
926
957
  "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`."
927
958
  },
959
+ {
960
+ "const": "mcp",
961
+ "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."
962
+ },
928
963
  {
929
964
  "const": "websocket",
930
965
  "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`."
@@ -1010,7 +1045,7 @@
1010
1045
  "customImplementationStandard": {
1011
1046
  "type": "string",
1012
1047
  "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`.",
1013
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
1048
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
1014
1049
  "maxLength": 255,
1015
1050
  "examples": [
1016
1051
  "sap.xref:some-api-contract:v1"
@@ -1025,7 +1060,7 @@
1025
1060
  },
1026
1061
  "compatibleWith": {
1027
1062
  "type": "array",
1028
- "description": "Declares this API is a compatible implementation of the referenced API contract(s).\nThis is also sometimes known as [Service Provider Interface](https://en.wikipedia.org/wiki/Service_provider_interface).\n\nMUST be a valid reference to an (usually external) [API Resource](#api-resource) ORD ID.\n\nAll APIs that share the same `compatibleWith` value MAY be treated the same or similar by a consumer client.",
1063
+ "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.",
1029
1064
  "items": {
1030
1065
  "type": "string",
1031
1066
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$"
@@ -1206,6 +1241,9 @@
1206
1241
  {
1207
1242
  "const": "Sourcing and Procurement"
1208
1243
  },
1244
+ {
1245
+ "const": "Strategy, Compliance, and Governance"
1246
+ },
1209
1247
  {
1210
1248
  "const": "Supply Chain"
1211
1249
  },
@@ -1246,6 +1284,9 @@
1246
1284
  {
1247
1285
  "const": "Aerospace and Defense"
1248
1286
  },
1287
+ {
1288
+ "const": "Agribusiness"
1289
+ },
1249
1290
  {
1250
1291
  "const": "Automotive"
1251
1292
  },
@@ -1255,24 +1296,39 @@
1255
1296
  {
1256
1297
  "const": "Chemicals"
1257
1298
  },
1299
+ {
1300
+ "const": "Consumer Industries"
1301
+ },
1258
1302
  {
1259
1303
  "const": "Consumer Products"
1260
1304
  },
1261
1305
  {
1262
1306
  "const": "Defense and Security"
1263
1307
  },
1308
+ {
1309
+ "const": "Discrete Industries"
1310
+ },
1311
+ {
1312
+ "const": "Energy and Natural Resources"
1313
+ },
1264
1314
  {
1265
1315
  "const": "Engineering Construction and Operations"
1266
1316
  },
1267
1317
  {
1268
- "const": "Healthcare"
1318
+ "const": "Financial Services"
1269
1319
  },
1270
1320
  {
1271
- "const": "Higher Education and Research"
1321
+ "const": "Future Cities"
1322
+ },
1323
+ {
1324
+ "const": "Healthcare"
1272
1325
  },
1273
1326
  {
1274
1327
  "const": "High Tech"
1275
1328
  },
1329
+ {
1330
+ "const": "Higher Education and Research"
1331
+ },
1276
1332
  {
1277
1333
  "const": "Industrial Machinery and Components"
1278
1334
  },
@@ -1300,9 +1356,15 @@
1300
1356
  {
1301
1357
  "const": "Public Sector"
1302
1358
  },
1359
+ {
1360
+ "const": "Public Services"
1361
+ },
1303
1362
  {
1304
1363
  "const": "Retail"
1305
1364
  },
1365
+ {
1366
+ "const": "Service Industries"
1367
+ },
1306
1368
  {
1307
1369
  "const": "Sports and Entertainment"
1308
1370
  },
@@ -1420,8 +1482,10 @@
1420
1482
  },
1421
1483
  "systemInstanceAware": {
1422
1484
  "type": "boolean",
1423
- "description": "Defines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
1485
+ "description": "All resources that are [system instance aware](../index.md#def-system-instance-aware) should now be put together in one ORD document that has `perspective`: `system-instance`.\nAll resources that are [system instance unaware](../index.md#def-system-instance-unaware) should now be put together in one ORD document that has `perspective`: `system-version`.\n\nDefines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
1424
1486
  "default": false,
1487
+ "x-deprecated-in-version": "1.12.0",
1488
+ "x-deprecated": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
1425
1489
  "examples": [
1426
1490
  true
1427
1491
  ]
@@ -1586,7 +1650,7 @@
1586
1650
  },
1587
1651
  "version": {
1588
1652
  "type": "string",
1589
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
1653
+ "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.",
1590
1654
  "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-]+)*))?$",
1591
1655
  "examples": [
1592
1656
  "1.2.3",
@@ -1597,7 +1661,7 @@
1597
1661
  "type": "string",
1598
1662
  "format": "date-time",
1599
1663
  "x-introduced-in-version": "1.4.0",
1600
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
1664
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
1601
1665
  "examples": [
1602
1666
  "2022-12-19T15:47:04+00:00"
1603
1667
  ]
@@ -1624,17 +1688,21 @@
1624
1688
  "type": "string",
1625
1689
  "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
1626
1690
  "oneOf": [
1691
+ {
1692
+ "const": "beta",
1693
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
1694
+ },
1627
1695
  {
1628
1696
  "const": "active",
1629
1697
  "description": "Resource is meant for productive use and provides a stable API contract."
1630
1698
  },
1631
1699
  {
1632
- "const": "beta",
1633
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
1700
+ "const": "deprecated",
1701
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
1634
1702
  },
1635
1703
  {
1636
- "const": "deprecated",
1637
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
1704
+ "const": "sunset",
1705
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
1638
1706
  }
1639
1707
  ],
1640
1708
  "examples": [
@@ -1653,7 +1721,7 @@
1653
1721
  "deprecationDate": {
1654
1722
  "type": "string",
1655
1723
  "format": "date-time",
1656
- "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually decommissioned / removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
1724
+ "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually sunset, aka. decommissioned / removed / archived.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
1657
1725
  "examples": [
1658
1726
  "2020-12-08T15:47:04+00:00"
1659
1727
  ]
@@ -1661,7 +1729,7 @@
1661
1729
  "sunsetDate": {
1662
1730
  "type": "string",
1663
1731
  "format": "date-time",
1664
- "description": "The sunset date defines when the resource is scheduled to be decommissioned/removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
1732
+ "description": "The sunset date defines when the resource is scheduled to be decommissioned / removed / archived.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
1665
1733
  "examples": [
1666
1734
  "2022-01-08T15:47:04+00:00"
1667
1735
  ]
@@ -1723,7 +1791,7 @@
1723
1791
  "customImplementationStandard": {
1724
1792
  "type": "string",
1725
1793
  "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`.",
1726
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
1794
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
1727
1795
  "maxLength": 255,
1728
1796
  "examples": [
1729
1797
  "sap.xref:some-event-contract:v1"
@@ -1865,6 +1933,9 @@
1865
1933
  {
1866
1934
  "const": "Sourcing and Procurement"
1867
1935
  },
1936
+ {
1937
+ "const": "Strategy, Compliance, and Governance"
1938
+ },
1868
1939
  {
1869
1940
  "const": "Supply Chain"
1870
1941
  },
@@ -1905,6 +1976,9 @@
1905
1976
  {
1906
1977
  "const": "Aerospace and Defense"
1907
1978
  },
1979
+ {
1980
+ "const": "Agribusiness"
1981
+ },
1908
1982
  {
1909
1983
  "const": "Automotive"
1910
1984
  },
@@ -1914,24 +1988,39 @@
1914
1988
  {
1915
1989
  "const": "Chemicals"
1916
1990
  },
1991
+ {
1992
+ "const": "Consumer Industries"
1993
+ },
1917
1994
  {
1918
1995
  "const": "Consumer Products"
1919
1996
  },
1920
1997
  {
1921
1998
  "const": "Defense and Security"
1922
1999
  },
2000
+ {
2001
+ "const": "Discrete Industries"
2002
+ },
2003
+ {
2004
+ "const": "Energy and Natural Resources"
2005
+ },
1923
2006
  {
1924
2007
  "const": "Engineering Construction and Operations"
1925
2008
  },
1926
2009
  {
1927
- "const": "Healthcare"
2010
+ "const": "Financial Services"
1928
2011
  },
1929
2012
  {
1930
- "const": "Higher Education and Research"
2013
+ "const": "Future Cities"
2014
+ },
2015
+ {
2016
+ "const": "Healthcare"
1931
2017
  },
1932
2018
  {
1933
2019
  "const": "High Tech"
1934
2020
  },
2021
+ {
2022
+ "const": "Higher Education and Research"
2023
+ },
1935
2024
  {
1936
2025
  "const": "Industrial Machinery and Components"
1937
2026
  },
@@ -1959,9 +2048,15 @@
1959
2048
  {
1960
2049
  "const": "Public Sector"
1961
2050
  },
2051
+ {
2052
+ "const": "Public Services"
2053
+ },
1962
2054
  {
1963
2055
  "const": "Retail"
1964
2056
  },
2057
+ {
2058
+ "const": "Service Industries"
2059
+ },
1965
2060
  {
1966
2061
  "const": "Sports and Entertainment"
1967
2062
  },
@@ -2079,8 +2174,10 @@
2079
2174
  },
2080
2175
  "systemInstanceAware": {
2081
2176
  "type": "boolean",
2082
- "description": "Defines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
2177
+ "description": "All resources that are [system instance aware](../index.md#def-system-instance-aware) should now be put together in one ORD document that has `perspective`: `system-instance`.\nAll resources that are [system instance unaware](../index.md#def-system-instance-unaware) should now be put together in one ORD document that has `perspective`: `system-version`.\n\nDefines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
2083
2178
  "default": false,
2179
+ "x-deprecated-in-version": "1.12.0",
2180
+ "x-deprecated": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
2084
2181
  "examples": [
2085
2182
  true
2086
2183
  ]
@@ -2235,7 +2332,7 @@
2235
2332
  },
2236
2333
  "version": {
2237
2334
  "type": "string",
2238
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
2335
+ "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.",
2239
2336
  "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-]+)*))?$",
2240
2337
  "examples": [
2241
2338
  "1.2.3",
@@ -2246,7 +2343,7 @@
2246
2343
  "type": "string",
2247
2344
  "format": "date-time",
2248
2345
  "x-introduced-in-version": "1.4.0",
2249
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
2346
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
2250
2347
  "examples": [
2251
2348
  "2022-12-19T15:47:04+00:00"
2252
2349
  ]
@@ -2273,17 +2370,21 @@
2273
2370
  "type": "string",
2274
2371
  "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
2275
2372
  "oneOf": [
2373
+ {
2374
+ "const": "beta",
2375
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
2376
+ },
2276
2377
  {
2277
2378
  "const": "active",
2278
2379
  "description": "Resource is meant for productive use and provides a stable API contract."
2279
2380
  },
2280
2381
  {
2281
- "const": "beta",
2282
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
2382
+ "const": "deprecated",
2383
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
2283
2384
  },
2284
2385
  {
2285
- "const": "deprecated",
2286
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
2386
+ "const": "sunset",
2387
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
2287
2388
  }
2288
2389
  ],
2289
2390
  "examples": [
@@ -2293,7 +2394,7 @@
2293
2394
  "deprecationDate": {
2294
2395
  "type": "string",
2295
2396
  "format": "date-time",
2296
- "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually decommissioned / removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2397
+ "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually sunset, aka. decommissioned / removed / archived.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2297
2398
  "examples": [
2298
2399
  "2020-12-08T15:47:04+00:00"
2299
2400
  ]
@@ -2301,7 +2402,7 @@
2301
2402
  "sunsetDate": {
2302
2403
  "type": "string",
2303
2404
  "format": "date-time",
2304
- "description": "The sunset date defines when the resource is scheduled to be decommissioned/removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2405
+ "description": "The sunset date defines when the resource is scheduled to be decommissioned / removed / archived.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2305
2406
  "examples": [
2306
2407
  "2022-01-08T15:47:04+00:00"
2307
2408
  ]
@@ -2471,8 +2572,10 @@
2471
2572
  },
2472
2573
  "systemInstanceAware": {
2473
2574
  "type": "boolean",
2474
- "description": "Defines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
2575
+ "description": "All resources that are [system instance aware](../index.md#def-system-instance-aware) should now be put together in one ORD document that has `perspective`: `system-instance`.\nAll resources that are [system instance unaware](../index.md#def-system-instance-unaware) should now be put together in one ORD document that has `perspective`: `system-version`.\n\nDefines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
2475
2576
  "default": false,
2577
+ "x-deprecated-in-version": "1.12.0",
2578
+ "x-deprecated": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
2476
2579
  "examples": [
2477
2580
  true
2478
2581
  ]
@@ -2614,7 +2717,7 @@
2614
2717
  },
2615
2718
  "version": {
2616
2719
  "type": "string",
2617
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
2720
+ "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.",
2618
2721
  "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-]+)*))?$",
2619
2722
  "examples": [
2620
2723
  "1.2.3",
@@ -2625,7 +2728,7 @@
2625
2728
  "type": "string",
2626
2729
  "format": "date-time",
2627
2730
  "x-introduced-in-version": "1.4.0",
2628
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
2731
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
2629
2732
  "examples": [
2630
2733
  "2022-12-19T15:47:04+00:00"
2631
2734
  ]
@@ -2652,17 +2755,21 @@
2652
2755
  "type": "string",
2653
2756
  "description": "The `releaseStatus` specifies the stability towards incompatible changes in the future.\nIn the context of data products, it it covers only properties on the data product level.\nAPIs that are part of the input and output ports have their own independent `releaseStatus` and `version`.",
2654
2757
  "oneOf": [
2758
+ {
2759
+ "const": "beta",
2760
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
2761
+ },
2655
2762
  {
2656
2763
  "const": "active",
2657
2764
  "description": "Resource is meant for productive use and provides a stable API contract."
2658
2765
  },
2659
2766
  {
2660
- "const": "beta",
2661
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
2767
+ "const": "deprecated",
2768
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
2662
2769
  },
2663
2770
  {
2664
- "const": "deprecated",
2665
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
2771
+ "const": "sunset",
2772
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
2666
2773
  }
2667
2774
  ],
2668
2775
  "examples": [
@@ -2721,7 +2828,7 @@
2721
2828
  "x-feature-status": "beta",
2722
2829
  "type": "string",
2723
2830
  "format": "date-time",
2724
- "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually decommissioned / removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2831
+ "description": "The deprecation date defines when the resource has been set as deprecated.\nThis is not to be confused with the `sunsetDate` which defines when the resource will be actually sunset, aka. decommissioned / removed / archived.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2725
2832
  "examples": [
2726
2833
  "2020-12-08T15:47:04+00:00"
2727
2834
  ]
@@ -2730,7 +2837,7 @@
2730
2837
  "x-feature-status": "beta",
2731
2838
  "type": "string",
2732
2839
  "format": "date-time",
2733
- "description": "The sunset date defines when the resource is scheduled to be decommissioned/removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2840
+ "description": "The sunset date defines when the resource is scheduled to be decommissioned / removed / archived.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
2734
2841
  "examples": [
2735
2842
  "2022-01-08T15:47:04+00:00"
2736
2843
  ]
@@ -2903,6 +3010,9 @@
2903
3010
  {
2904
3011
  "const": "Aerospace and Defense"
2905
3012
  },
3013
+ {
3014
+ "const": "Agribusiness"
3015
+ },
2906
3016
  {
2907
3017
  "const": "Automotive"
2908
3018
  },
@@ -2912,24 +3022,39 @@
2912
3022
  {
2913
3023
  "const": "Chemicals"
2914
3024
  },
3025
+ {
3026
+ "const": "Consumer Industries"
3027
+ },
2915
3028
  {
2916
3029
  "const": "Consumer Products"
2917
3030
  },
2918
3031
  {
2919
3032
  "const": "Defense and Security"
2920
3033
  },
3034
+ {
3035
+ "const": "Discrete Industries"
3036
+ },
3037
+ {
3038
+ "const": "Energy and Natural Resources"
3039
+ },
2921
3040
  {
2922
3041
  "const": "Engineering Construction and Operations"
2923
3042
  },
2924
3043
  {
2925
- "const": "Healthcare"
3044
+ "const": "Financial Services"
2926
3045
  },
2927
3046
  {
2928
- "const": "Higher Education and Research"
3047
+ "const": "Future Cities"
3048
+ },
3049
+ {
3050
+ "const": "Healthcare"
2929
3051
  },
2930
3052
  {
2931
3053
  "const": "High Tech"
2932
3054
  },
3055
+ {
3056
+ "const": "Higher Education and Research"
3057
+ },
2933
3058
  {
2934
3059
  "const": "Industrial Machinery and Components"
2935
3060
  },
@@ -2957,9 +3082,15 @@
2957
3082
  {
2958
3083
  "const": "Public Sector"
2959
3084
  },
3085
+ {
3086
+ "const": "Public Services"
3087
+ },
2960
3088
  {
2961
3089
  "const": "Retail"
2962
3090
  },
3091
+ {
3092
+ "const": "Service Industries"
3093
+ },
2963
3094
  {
2964
3095
  "const": "Sports and Entertainment"
2965
3096
  },
@@ -3030,6 +3161,9 @@
3030
3161
  {
3031
3162
  "const": "Sourcing and Procurement"
3032
3163
  },
3164
+ {
3165
+ "const": "Strategy, Compliance, and Governance"
3166
+ },
3033
3167
  {
3034
3168
  "const": "Supply Chain"
3035
3169
  },
@@ -3166,8 +3300,10 @@
3166
3300
  "systemInstanceAware": {
3167
3301
  "x-feature-status": "beta",
3168
3302
  "type": "boolean",
3169
- "description": "Defines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
3303
+ "description": "All resources that are [system instance aware](../index.md#def-system-instance-aware) should now be put together in one ORD document that has `perspective`: `system-instance`.\nAll resources that are [system instance unaware](../index.md#def-system-instance-unaware) should now be put together in one ORD document that has `perspective`: `system-version`.\n\nDefines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
3170
3304
  "default": false,
3305
+ "x-deprecated-in-version": "1.12.0",
3306
+ "x-deprecated": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
3171
3307
  "examples": [
3172
3308
  true
3173
3309
  ]
@@ -3259,11 +3395,15 @@
3259
3395
  },
3260
3396
  {
3261
3397
  "const": "openapi-v2",
3262
- "description": "[OpenAPI 2 / Swagger 2](https://swagger.io/specification/v2/) API Definition for [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) APIs.\nThe `mediaType` MUST be be set to either `application/json` or `text/yaml`."
3398
+ "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`."
3263
3399
  },
3264
3400
  {
3265
3401
  "const": "openapi-v3",
3266
- "description": "[OpenAPI 3](https://swagger.io/specification/) 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`."
3402
+ "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."
3403
+ },
3404
+ {
3405
+ "const": "openapi-v3.1+",
3406
+ "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`."
3267
3407
  },
3268
3408
  {
3269
3409
  "const": "raml-v1",
@@ -3315,7 +3455,7 @@
3315
3455
  "customType": {
3316
3456
  "type": "string",
3317
3457
  "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`.",
3318
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
3458
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3319
3459
  "maxLength": 255,
3320
3460
  "examples": [
3321
3461
  "sap:custom-definition-format:v1"
@@ -3414,7 +3554,7 @@
3414
3554
  "customType": {
3415
3555
  "type": "string",
3416
3556
  "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`.",
3417
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
3557
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3418
3558
  "maxLength": 255,
3419
3559
  "examples": [
3420
3560
  "sap:custom-definition-format:v1"
@@ -3653,7 +3793,7 @@
3653
3793
  "customType": {
3654
3794
  "type": "string",
3655
3795
  "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`.",
3656
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
3796
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3657
3797
  "maxLength": 255,
3658
3798
  "examples": [
3659
3799
  "sap:custom-definition-format:v1"
@@ -3720,7 +3860,7 @@
3720
3860
  },
3721
3861
  "version": {
3722
3862
  "type": "string",
3723
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
3863
+ "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.",
3724
3864
  "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-]+)*))?$",
3725
3865
  "examples": [
3726
3866
  "1.2.3",
@@ -3731,7 +3871,7 @@
3731
3871
  "type": "string",
3732
3872
  "format": "date-time",
3733
3873
  "x-introduced-in-version": "1.4.0",
3734
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
3874
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
3735
3875
  "examples": [
3736
3876
  "2022-12-19T15:47:04+00:00"
3737
3877
  ]
@@ -3758,17 +3898,21 @@
3758
3898
  "type": "string",
3759
3899
  "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
3760
3900
  "oneOf": [
3901
+ {
3902
+ "const": "beta",
3903
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
3904
+ },
3761
3905
  {
3762
3906
  "const": "active",
3763
3907
  "description": "Resource is meant for productive use and provides a stable API contract."
3764
3908
  },
3765
3909
  {
3766
- "const": "beta",
3767
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
3910
+ "const": "deprecated",
3911
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
3768
3912
  },
3769
3913
  {
3770
- "const": "deprecated",
3771
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
3914
+ "const": "sunset",
3915
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
3772
3916
  }
3773
3917
  ],
3774
3918
  "examples": [
@@ -3845,8 +3989,10 @@
3845
3989
  },
3846
3990
  "systemInstanceAware": {
3847
3991
  "type": "boolean",
3848
- "description": "Defines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
3992
+ "description": "All resources that are [system instance aware](../index.md#def-system-instance-aware) should now be put together in one ORD document that has `perspective`: `system-instance`.\nAll resources that are [system instance unaware](../index.md#def-system-instance-unaware) should now be put together in one ORD document that has `perspective`: `system-version`.\n\nDefines whether this ORD resource is **system instance aware**.\nThis is the case (and relevant) when the referenced resource definitions are potentially different between **system instances**.\n\nIf this behavior applies, `systemInstanceAware` MUST be set to true.\nAn ORD aggregator that represents a system instance aware perspective MUST fetch the referenced resource definitions,\nnot just once per system type, but once per **system instance**.",
3849
3993
  "default": false,
3994
+ "x-deprecated-in-version": "1.12.0",
3995
+ "x-deprecated": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
3850
3996
  "examples": [
3851
3997
  true
3852
3998
  ]
@@ -3898,7 +4044,7 @@
3898
4044
  "customType": {
3899
4045
  "type": "string",
3900
4046
  "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`.",
3901
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
4047
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3902
4048
  "maxLength": 255,
3903
4049
  "examples": [
3904
4050
  "sap:custom-definition-format:v1"
@@ -4062,7 +4208,7 @@
4062
4208
  },
4063
4209
  "version": {
4064
4210
  "type": "string",
4065
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
4211
+ "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.",
4066
4212
  "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-]+)*))?$",
4067
4213
  "examples": [
4068
4214
  "1.2.3",
@@ -4073,7 +4219,7 @@
4073
4219
  "type": "string",
4074
4220
  "format": "date-time",
4075
4221
  "x-introduced-in-version": "1.4.0",
4076
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
4222
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
4077
4223
  "examples": [
4078
4224
  "2022-12-19T15:47:04+00:00"
4079
4225
  ]
@@ -4100,17 +4246,21 @@
4100
4246
  "type": "string",
4101
4247
  "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
4102
4248
  "oneOf": [
4249
+ {
4250
+ "const": "beta",
4251
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
4252
+ },
4103
4253
  {
4104
4254
  "const": "active",
4105
4255
  "description": "Resource is meant for productive use and provides a stable API contract."
4106
4256
  },
4107
4257
  {
4108
- "const": "beta",
4109
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
4258
+ "const": "deprecated",
4259
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
4110
4260
  },
4111
4261
  {
4112
- "const": "deprecated",
4113
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
4262
+ "const": "sunset",
4263
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
4114
4264
  }
4115
4265
  ],
4116
4266
  "examples": [
@@ -4120,7 +4270,7 @@
4120
4270
  "sunsetDate": {
4121
4271
  "type": "string",
4122
4272
  "format": "date-time",
4123
- "description": "The sunset date defines when the resource is scheduled to be decommissioned/removed.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
4273
+ "description": "The sunset date defines when the resource is scheduled to be decommissioned / removed / archived.\n\nIf the `releaseStatus` is set to `deprecated`, the `sunsetDate` SHOULD be provided (if already known).\nOnce the sunset date is known and ready to be communicated externally, it MUST be provided here.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).",
4124
4274
  "examples": [
4125
4275
  "2022-01-08T15:47:04+00:00"
4126
4276
  ]
@@ -4458,17 +4608,21 @@
4458
4608
  "type": "string",
4459
4609
  "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
4460
4610
  "oneOf": [
4611
+ {
4612
+ "const": "beta",
4613
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
4614
+ },
4461
4615
  {
4462
4616
  "const": "active",
4463
4617
  "description": "Resource is meant for productive use and provides a stable API contract."
4464
4618
  },
4465
4619
  {
4466
- "const": "beta",
4467
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
4620
+ "const": "deprecated",
4621
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
4468
4622
  },
4469
4623
  {
4470
- "const": "deprecated",
4471
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
4624
+ "const": "sunset",
4625
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
4472
4626
  }
4473
4627
  ],
4474
4628
  "examples": [
@@ -4601,7 +4755,7 @@
4601
4755
  "customType": {
4602
4756
  "type": "string",
4603
4757
  "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`.",
4604
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
4758
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
4605
4759
  "maxLength": 255,
4606
4760
  "examples": [
4607
4761
  "sap:custom-definition-format:v1"
@@ -4682,7 +4836,7 @@
4682
4836
  "customType": {
4683
4837
  "type": "string",
4684
4838
  "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`.",
4685
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
4839
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
4686
4840
  "maxLength": 255,
4687
4841
  "examples": [
4688
4842
  "sap:custom-definition-format:v1"
@@ -4752,7 +4906,7 @@
4752
4906
  "customType": {
4753
4907
  "type": "string",
4754
4908
  "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`.",
4755
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
4909
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
4756
4910
  "maxLength": 255,
4757
4911
  "examples": [
4758
4912
  "sap:custom-definition-format:v1"
@@ -4909,7 +5063,7 @@
4909
5063
  "properties": {
4910
5064
  "version": {
4911
5065
  "type": "string",
4912
- "description": "The version number of the system instance (run-time) or the version of the described static system type.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.",
5066
+ "description": "The version of the system instance (run-time) or the version of the described system-version perspective.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\n\nMUST be provided if the ORD document is `perspective`: `system-version`.\n\nFor continuous-delivery systems, the version MAY be fixed to the same value, e.g. `1.0.0`, but be aware that phased rollouts may benefit from a more precise versioning like adding a build number.",
4913
5067
  "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-]+)*))?$",
4914
5068
  "examples": [
4915
5069
  "1.2.3",
@@ -5004,7 +5158,7 @@
5004
5158
  "customType": {
5005
5159
  "type": "string",
5006
5160
  "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`.",
5007
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
5161
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
5008
5162
  "maxLength": 255,
5009
5163
  "examples": [
5010
5164
  "sap.xref:open-local-tenant-id:v1"
@@ -5059,7 +5213,7 @@
5059
5213
  "customType": {
5060
5214
  "type": "string",
5061
5215
  "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`.",
5062
- "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):v([0-9]+)$",
5216
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
5063
5217
  "maxLength": 255,
5064
5218
  "examples": [
5065
5219
  "sap.xref:credential-exchange:v1"
@@ -5451,7 +5605,7 @@
5451
5605
  "x-introduced-in-version": "1.9.0",
5452
5606
  "x-ums-type": "embedded",
5453
5607
  "type": "object",
5454
- "description": "Defines which Entity Type is related (via its ORD ID).\nIn the future, this could include stating the relationship type, too.",
5608
+ "description": "Defines the relation between Entity Types (via its ORD ID).",
5455
5609
  "properties": {
5456
5610
  "ordId": {
5457
5611
  "type": "string",
@@ -5463,6 +5617,31 @@
5463
5617
  ],
5464
5618
  "x-association-target": [
5465
5619
  "#/definitions/EntityType/ordId"
5620
+ ],
5621
+ "x-reverse-relationship": {
5622
+ "propertyName": "inverseRelatedEntityTypes",
5623
+ "description": "Entity types that defined a relationship to this entity type",
5624
+ "min": 0,
5625
+ "max": "*"
5626
+ }
5627
+ },
5628
+ "relationType": {
5629
+ "type": "string",
5630
+ "description": "Optional type of the relationship, which defines a stricter semantic what the relationship implies.\n\nIf not provided, the relationship type has no semantics, it's \"related somehow\".",
5631
+ "x-introduced-in-version": "1.12.0",
5632
+ "x-feature-status": "beta",
5633
+ "oneOf": [
5634
+ {
5635
+ "const": "part-of",
5636
+ "description": "The described entity type is a composite part of the referenced entity type.\nE.g. a `SalesOrderItem` is part of a `SalesOrder`."
5637
+ },
5638
+ {
5639
+ "const": "can-share-identity",
5640
+ "description": "The related entity types can potentially share the same identity in their instance data / be ID mapped.\n\nE.g. a `BusinessPartner` can share the same identity as a `NaturalPerson`."
5641
+ }
5642
+ ],
5643
+ "examples": [
5644
+ "can-share-identity"
5466
5645
  ]
5467
5646
  }
5468
5647
  },
@@ -5500,7 +5679,7 @@
5500
5679
  "type": "object",
5501
5680
  "title": "Tombstone",
5502
5681
  "x-ums-type": "ignore",
5503
- "description": "A tombstone indicates that a previously published ORD resource or taxonomy has been removed / decommissioned.\nThis MUST be indicated explicitly, so ORD aggregators and consumers can learn about the removal.\n\nExactly one of the IDs MUST be provided to state which ORD resource or taxonomy item the Tombstone addresses.\n\nIt MUST be kept sufficiently long so that all ORD aggregators can learn about the tombstone.\nAfter that it MAY be removed.",
5682
+ "description": "A tombstone indicates that a previously published ORD resource or taxonomy has been removed / decommissioned / archived.\nThis MUST be indicated explicitly, so ORD aggregators and consumers can learn about the removal.\n\nExactly one of the IDs MUST be provided to state which ORD resource or taxonomy item the Tombstone addresses.\n\nThe tombstone MUST be kept sufficiently long (at least 31 days) so that all ORD aggregators can learn about the tombstone.",
5504
5683
  "properties": {
5505
5684
  "ordId": {
5506
5685
  "type": "string",
@@ -5659,7 +5838,7 @@
5659
5838
  },
5660
5839
  "version": {
5661
5840
  "type": "string",
5662
- "description": "The complete [SemVer](https://semver.org/) version string.\n\nIt MUST follow the [Semantic Versioning 2.0.0](https://semver.org/) standard.\nIt SHOULD be changed if the ORD information or referenced resource definitions changed.\nIt SHOULD express minor and patch changes that don't lead to incompatible changes.\n\nWhen the `version` major version changes, the [ORD ID](../index.md#ord-id) `<majorVersion>` fragment MUST be updated to be identical.\nIn case that a resource definition file also contains a version number (e.g. [OpenAPI `info`.`version`](https://swagger.io/specification/#info-object)), it MUST be equal with the resource `version` to avoid inconsistencies.\n\nIf the resource has been extended by the user, the change MUST be indicated via `lastUpdate`.\nThe `version` MUST not be bumped for changes in extensions.\n\nThe general [Version and Lifecycle](../index.md#version-and-lifecycle) flow MUST be followed.\n\nNote: A change is only relevant for a version increment, if it affects the ORD resource or ORD taxonomy directly.\nFor example: If a resource within a `Package` changes, but the package itself did not, the package version does not need to be incremented.",
5841
+ "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.",
5663
5842
  "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-]+)*))?$",
5664
5843
  "examples": [
5665
5844
  "1.2.3",
@@ -5670,7 +5849,7 @@
5670
5849
  "type": "string",
5671
5850
  "format": "date-time",
5672
5851
  "x-introduced-in-version": "1.4.0",
5673
- "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `systemInstanceAware`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
5852
+ "description": "Optional, but RECOMMENDED indicator when (date-time) the last change to the resource (including its definitions) happened.\n\nThe date format MUST comply with [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6).\n\nWhen retrieved from an ORD aggregator, `lastUpdate` will be reliable there and reflect either the provider based update time or the aggregator processing time.\nTherefore consumers MAY rely on it to detect changes to the metadata and the attached resource definition files.\n\nIf the resource has attached definitions, either the `version` or `lastUpdate` property MUST be defined and updated to let the ORD aggregator know that they need to be fetched again.\n\nTogether with `perspectives`, this property SHOULD be used to optimize the metadata crawling process of the ORD aggregators.",
5674
5853
  "examples": [
5675
5854
  "2022-12-19T15:47:04+00:00"
5676
5855
  ]
@@ -5697,17 +5876,21 @@
5697
5876
  "type": "string",
5698
5877
  "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
5699
5878
  "oneOf": [
5879
+ {
5880
+ "const": "beta",
5881
+ "description": "The contract for the resource is beta and may not be meant for productive use.\nResources of `beta` status MAY be changed or deleted at the providers discretion."
5882
+ },
5700
5883
  {
5701
5884
  "const": "active",
5702
5885
  "description": "Resource is meant for productive use and provides a stable API contract."
5703
5886
  },
5704
5887
  {
5705
- "const": "beta",
5706
- "description": "The contract for the resource is beta and MAY not be meant for productive use.\nIn the SAP context, `beta` APIs may be changed or deleted at SAPs discretion."
5888
+ "const": "deprecated",
5889
+ "description": "Resource has been deprecated.\n\nIf the `releaseStatus` is set to `deprecated`, the `deprecationDate` SHOULD be provided.\n\nIf successor resources exist, they MUST be referenced through `successors`.\n\nA deprecated resource MAY be sunset (aka. decommissioned / removed) in the future, through setting a `Tombstone`.\nOnce the resource is sunset, its description MAY be removed from ORD, but could also be kept with `releaseStatus` set to `sunset`."
5707
5890
  },
5708
5891
  {
5709
- "const": "deprecated",
5710
- "description": "Resource has been deprecated.\n\nIf successor resources exist, they MUST be referenced through `successors`.\nIf it is deprecated without defining its `successors`, a `sunsetDate` SHOULD be provided.\n\nA deprecated resource MAY be decommissioned (removed) in the future, through setting a `Tombstone`.\nOnce the resource is decommissioned, it MUST be removed from ORD (which is why there is no release status for decommissioned)."
5892
+ "const": "sunset",
5893
+ "description": "Resource has been sunset, but is still described.\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
5711
5894
  }
5712
5895
  ],
5713
5896
  "examples": [
@@ -5789,10 +5972,11 @@
5789
5972
  "1.8",
5790
5973
  "1.9",
5791
5974
  "1.10",
5792
- "1.11"
5975
+ "1.11",
5976
+ "1.12"
5793
5977
  ],
5794
5978
  "examples": [
5795
- "1.11"
5979
+ "1.12"
5796
5980
  ]
5797
5981
  },
5798
5982
  "description": {
@@ -5803,16 +5987,42 @@
5803
5987
  "This ORD document contains all APIs that are system instance aware and have APIs that\ncan change their behavior at runtime.\n"
5804
5988
  ]
5805
5989
  },
5990
+ "perspective": {
5991
+ "type": "string",
5992
+ "x-introduced-in-version": "1.12.0",
5993
+ "x-feature-status": "beta",
5994
+ "description": "With ORD it's possible to describe a system from a static or a dynamic [perspective](../index.md#perspectives) (for more details, follow the link).\n\nIt is strongly RECOMMENDED to mark all static ORD documents with perspective `system-version`.\n\nIt is RECOMMENDED to describe dynamic metadata in both static system-version perspective and additionally describe the system-instance perspective where it diverges from the static metadata.\n\nIf not provided, this defaults to `system-instance`, which is the most precise description but also the most costly to replicate.\n\nPlease read the [article on perspectives](../concepts/perspectives) for more explanations.",
5995
+ "oneOf": [
5996
+ {
5997
+ "const": "system-version",
5998
+ "description": "Describes the static [system-version](../index.md#def-system-version) perspective, usually known at deploy-time.\n\nIf chosen, `describedSystemVersion`.`version` MUST be provided, too.\n\nThis perspective describes how a system of a particular type and version generally look like.\nThe latest system-version MAY also be interpreted as the [system-type](../index.md#def-system-type) perspective."
5999
+ },
6000
+ {
6001
+ "const": "system-instance",
6002
+ "description": "Describes the complete dynamic [system-instance](../index.md#def-system-instance) (tenant) perspective as known at run-time.\nThis allows to also reflect tenant specific extensions, customizations and runtime configuration.\n\nIf provided, it will completely override the static system-version perspective when metadata about system instances is requested."
6003
+ },
6004
+ {
6005
+ "const": "system-independent",
6006
+ "description": "Describes content that is independent of [system-versions](../index.md#def-system-version) or [system-instances](../index.md#def-system-instance).\nThis content is always static and has independent visibility and lifecycle from the systems in a particular landscape.\nThe \"system-independent\" content MUST NOT be overridden via system-version or system-instance perspective metadata.\n\nExamples are: Vendors, products, globally aligned entity types, groups and group types (taxonomy), which are usually shared by multiple systems."
6007
+ }
6008
+ ],
6009
+ "default": "system instance",
6010
+ "examples": [
6011
+ "system-instance"
6012
+ ]
6013
+ },
5806
6014
  "describedSystemInstance": {
5807
6015
  "$ref": "#/definitions/SystemInstance",
5808
- "description": "Information on the [system instance](../index.md#def-system-instance) that this ORD document describes."
6016
+ "description": "Information on the [system-instance](../index.md#def-system-instance) that this ORD document describes.\n\nWhether this information is required or recommended to add, depends on the requirements of the ORD aggregator."
5809
6017
  },
5810
6018
  "describedSystemType": {
5811
6019
  "$ref": "#/definitions/SystemType",
6020
+ "x-introduced-in-version": "1.10.0",
5812
6021
  "description": "Information on the [system type](../index.md#def-system-type) that this ORD document describes."
5813
6022
  },
5814
6023
  "describedSystemVersion": {
5815
6024
  "$ref": "#/definitions/SystemVersion",
6025
+ "x-introduced-in-version": "1.10.0",
5816
6026
  "description": "Information on the [system version](../index.md#def-system-version) that this ORD document describes."
5817
6027
  },
5818
6028
  "policyLevel": {
@@ -5970,7 +6180,7 @@
5970
6180
  },
5971
6181
  "tombstones": {
5972
6182
  "type": "array",
5973
- "description": "List of ORD information (resources or taxonomy) that have been \"tombstoned\"/removed.\nThis MUST be indicated explicitly, so that ORD aggregators and consumers can learn about the removal.\n\nA tombstone entry MAY be removed after a grace period of 31 days.",
6183
+ "description": "List of ORD information (resources or taxonomy) that have been \"tombstoned\", indicating removal or archival.\nThis MUST be indicated explicitly, just removing the ORD information itself is not sufficient.\n\nA tombstone entry MAY be removed after a grace period of 31 days.",
5974
6184
  "items": {
5975
6185
  "$ref": "#/definitions/Tombstone"
5976
6186
  }