@open-resource-discovery/specification 1.14.0 → 1.14.2

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.
@@ -114,6 +114,8 @@
114
114
  ],
115
115
  "default": "none",
116
116
  "x-introduced-in-version": "1.3.0",
117
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
118
+ "x-deprecated-in-version": "1.9.9",
117
119
  "examples": [
118
120
  "sap:core:v1"
119
121
  ]
@@ -124,6 +126,8 @@
124
126
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
125
127
  "maxLength": 255,
126
128
  "x-introduced-in-version": "1.3.0",
129
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
130
+ "x-deprecated-in-version": "1.9.9",
127
131
  "examples": [
128
132
  "sap.xref:customPolicy:v1"
129
133
  ]
@@ -336,6 +340,8 @@
336
340
  ],
337
341
  "default": "none",
338
342
  "x-introduced-in-version": "1.3.0",
343
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
344
+ "x-deprecated-in-version": "1.9.9",
339
345
  "examples": [
340
346
  "sap:core:v1"
341
347
  ]
@@ -346,6 +352,8 @@
346
352
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
347
353
  "maxLength": 255,
348
354
  "x-introduced-in-version": "1.3.0",
355
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
356
+ "x-deprecated-in-version": "1.9.9",
349
357
  "examples": [
350
358
  "sap.xref:customPolicy:v1"
351
359
  ]
@@ -377,6 +385,14 @@
377
385
  "$ref": "#/definitions/Link"
378
386
  }
379
387
  },
388
+ "files": {
389
+ "type": "array",
390
+ "x-introduced-in-version": "1.14.2",
391
+ "description": "Generic list of files with arbitrary meaning and content. Meant to be used for linking PDFs, Word or similar content. This option MUST NOT be used for linking the actual metadata files like OpenAPI, AsyncAPI, CSN, etc.",
392
+ "items": {
393
+ "$ref": "#/definitions/File"
394
+ }
395
+ },
380
396
  "licenseType": {
381
397
  "type": "string",
382
398
  "minLength": 1,
@@ -755,19 +771,19 @@
755
771
  },
756
772
  "visibility": {
757
773
  "type": "string",
758
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
774
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
759
775
  "oneOf": [
760
776
  {
761
777
  "const": "public",
762
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
778
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
763
779
  },
764
780
  {
765
781
  "const": "internal",
766
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
782
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
767
783
  },
768
784
  {
769
785
  "const": "private",
770
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
786
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
771
787
  }
772
788
  ]
773
789
  },
@@ -1005,41 +1021,46 @@
1005
1021
  },
1006
1022
  "visibility": {
1007
1023
  "type": "string",
1008
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
1024
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
1009
1025
  "oneOf": [
1010
1026
  {
1011
1027
  "const": "public",
1012
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
1028
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
1013
1029
  },
1014
1030
  {
1015
1031
  "const": "internal",
1016
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
1032
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
1017
1033
  },
1018
1034
  {
1019
1035
  "const": "private",
1020
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
1036
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
1021
1037
  }
1022
1038
  ]
1023
1039
  },
1024
1040
  "releaseStatus": {
1025
1041
  "type": "string",
1026
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
1042
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
1027
1043
  "oneOf": [
1044
+ {
1045
+ "const": "development",
1046
+ "x-introduced-in-version": "1.14.2",
1047
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
1048
+ },
1028
1049
  {
1029
1050
  "const": "beta",
1030
- "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."
1051
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
1031
1052
  },
1032
1053
  {
1033
1054
  "const": "active",
1034
- "description": "Resource is meant for productive use and provides a stable API contract."
1055
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
1035
1056
  },
1036
1057
  {
1037
1058
  "const": "deprecated",
1038
- "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`."
1059
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
1039
1060
  },
1040
1061
  {
1041
1062
  "const": "sunset",
1042
- "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."
1063
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
1043
1064
  }
1044
1065
  ],
1045
1066
  "examples": [
@@ -1145,32 +1166,32 @@
1145
1166
  },
1146
1167
  {
1147
1168
  "const": "odata-v2",
1148
- "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`."
1169
+ "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`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1149
1170
  },
1150
1171
  {
1151
1172
  "const": "odata-v4",
1152
- "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`."
1173
+ "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`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1153
1174
  },
1154
1175
  {
1155
1176
  "const": "rest",
1156
- "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`."
1177
+ "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`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1157
1178
  },
1158
1179
  {
1159
1180
  "const": "graphql",
1160
- "description": "[GraphQL](https://graphql.org/) API.\nAn API Resource definition of type `graphql-sdl` SHOULD be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `graphql-sdl`, `sap-csn-interop-effective-v1` or `custom`."
1181
+ "description": "[GraphQL](https://graphql.org/) API.\nAn API Resource definition of type `graphql-sdl` SHOULD be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `graphql-sdl`, `sap-csn-interop-effective-v1`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1161
1182
  },
1162
1183
  {
1163
1184
  "const": "delta-sharing",
1164
1185
  "x-introduced-in-version": "1.8.0",
1165
- "description": "[Delta Sharing](https://github.com/delta-io/delta-sharing/blob/main/PROTOCOL.md) Protocol, where one API Resource corresponds to a share.\nFor each API Resource definition: `type` MUST ONLY be set to `sap-csn-interop-effective-v1` or to `custom`.\nFor delta-sharing APIs the resource definition MAY be omitted, as the protocol itself allows for metadata discovery at runtime."
1186
+ "description": "[Delta Sharing](https://github.com/delta-io/delta-sharing/blob/main/PROTOCOL.md) Protocol, where one API Resource corresponds to a share.\nFor each API Resource definition: `type` MUST ONLY be set to `sap-csn-interop-effective-v1`, `custom` or any valid [Specification ID](../index.md#specification-id).\nFor delta-sharing APIs the resource definition MAY be omitted, as the protocol itself allows for metadata discovery at runtime."
1166
1187
  },
1167
1188
  {
1168
1189
  "const": "soap-inbound",
1169
- "description": "[SOAP](https://en.wikipedia.org/wiki/SOAP) API that provides inbound interfaces.\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`."
1190
+ "description": "[SOAP](https://en.wikipedia.org/wiki/SOAP) API that provides inbound interfaces.\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`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1170
1191
  },
1171
1192
  {
1172
1193
  "const": "soap-outbound",
1173
- "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`."
1194
+ "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`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1174
1195
  },
1175
1196
  {
1176
1197
  "const": "mcp",
@@ -1178,7 +1199,7 @@
1178
1199
  },
1179
1200
  {
1180
1201
  "const": "websocket",
1181
- "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`."
1202
+ "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` or any valid [Specification ID](../index.md#specification-id)."
1182
1203
  },
1183
1204
  {
1184
1205
  "const": "a2a",
@@ -1187,11 +1208,13 @@
1187
1208
  },
1188
1209
  {
1189
1210
  "const": "sap-rfc",
1190
- "description": "[SAP RFC](https://help.sap.com/viewer/753088fc00704d0a80e7fbd6803c8adb/202009.000/en-US/4888068ad9134076e10000000a42189d.html) (Remote Function Call) is the standard SAP interface for communication between SAP systems.\nRFC calls a function to be executed in a remote system.\nAn API Resource definition of type `sap-rfc-metadata-v1` MUST be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `sap-rfc-metadata-v1` or `custom`."
1211
+ "x-introduced-in-version": "1.5.0",
1212
+ "description": "[SAP RFC](https://help.sap.com/viewer/753088fc00704d0a80e7fbd6803c8adb/202009.000/en-US/4888068ad9134076e10000000a42189d.html) (Remote Function Call) is the standard SAP interface for communication between SAP systems.\nRFC calls a function to be executed in a remote system.\nAn API Resource definition of type `sap-rfc-metadata-v1` MUST be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `sap-rfc-metadata-v1`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1191
1213
  },
1192
1214
  {
1193
1215
  "const": "sap-sql-api-v1",
1194
- "description": "SAP SQL API that follows the [SQL interface specification for SAP ecosystem](https://github.com/SAP/sql-interface-specification).\nAn API Resource definition of type `sap-sql-api-definition-v1` MUST be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `sap-sql-api-definition-v1`, `sap-csn-interop-effective-v1` or `custom`."
1216
+ "x-introduced-in-version": "1.9.2",
1217
+ "description": "SAP SQL API that follows the [SQL interface specification for SAP ecosystem](https://github.com/SAP/sql-interface-specification).\nAn API Resource definition of type `sap-sql-api-definition-v1` SHOULD be provided.\nFor each API Resource definition: `type` MUST ONLY be set to `sap-sql-api-definition-v1`, `sap-csn-interop-effective-v1`, `custom` or any valid [Specification ID](../index.md#specification-id)."
1195
1218
  },
1196
1219
  {
1197
1220
  "const": "sap-ina-api-v1",
@@ -1333,6 +1356,8 @@
1333
1356
  "entityTypeMappings": {
1334
1357
  "type": "array",
1335
1358
  "x-introduced-in-version": "1.6.0",
1359
+ "x-deprecated-in-version": "1.11.0",
1360
+ "x-deprecation-text": "Use the simplified `exposedEntityTypes` instead.",
1336
1361
  "description": "Describes mappings between the API Models of the described resource to the underlying, conceptual entity types.",
1337
1362
  "items": {
1338
1363
  "$ref": "#/definitions/EntityTypeMapping"
@@ -1626,6 +1651,8 @@
1626
1651
  ],
1627
1652
  "default": "none",
1628
1653
  "x-introduced-in-version": "1.3.0",
1654
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
1655
+ "x-deprecated-in-version": "1.9.9",
1629
1656
  "examples": [
1630
1657
  "sap:core:v1"
1631
1658
  ]
@@ -1636,6 +1663,8 @@
1636
1663
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
1637
1664
  "maxLength": 255,
1638
1665
  "x-introduced-in-version": "1.3.0",
1666
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
1667
+ "x-deprecated-in-version": "1.9.9",
1639
1668
  "examples": [
1640
1669
  "sap.xref:customPolicy:v1"
1641
1670
  ]
@@ -1657,6 +1686,8 @@
1657
1686
  "type": "boolean",
1658
1687
  "description": "Defines whether this ORD resource is **system-instance-aware**.\nThis is the case 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 MUST then fetch the referenced resource definitions for _each_ **system instance** individually.\n\nThis concept is now **deprecated** in favor of the more explicit `perspective` attribute.\nAll resources that are system-instance-aware should ideally be put into a dedicated ORD document with `perspective`: `system-instance`.\n\nFor more details, see [perspectives concept page](../concepts/perspectives.md) or the [specification section](../index.md#perspectives).",
1659
1688
  "default": false,
1689
+ "x-deprecated-in-version": "1.12.0",
1690
+ "x-deprecation-text": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
1660
1691
  "examples": [
1661
1692
  true
1662
1693
  ]
@@ -1835,41 +1866,46 @@
1835
1866
  },
1836
1867
  "visibility": {
1837
1868
  "type": "string",
1838
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
1869
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
1839
1870
  "oneOf": [
1840
1871
  {
1841
1872
  "const": "public",
1842
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
1873
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
1843
1874
  },
1844
1875
  {
1845
1876
  "const": "internal",
1846
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
1877
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
1847
1878
  },
1848
1879
  {
1849
1880
  "const": "private",
1850
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
1881
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
1851
1882
  }
1852
1883
  ]
1853
1884
  },
1854
1885
  "releaseStatus": {
1855
1886
  "type": "string",
1856
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
1887
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
1857
1888
  "oneOf": [
1889
+ {
1890
+ "const": "development",
1891
+ "x-introduced-in-version": "1.14.2",
1892
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
1893
+ },
1858
1894
  {
1859
1895
  "const": "beta",
1860
- "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."
1896
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
1861
1897
  },
1862
1898
  {
1863
1899
  "const": "active",
1864
- "description": "Resource is meant for productive use and provides a stable API contract."
1900
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
1865
1901
  },
1866
1902
  {
1867
1903
  "const": "deprecated",
1868
- "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`."
1904
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
1869
1905
  },
1870
1906
  {
1871
1907
  "const": "sunset",
1872
- "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."
1908
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
1873
1909
  }
1874
1910
  ],
1875
1911
  "examples": [
@@ -2010,6 +2046,8 @@
2010
2046
  "entityTypeMappings": {
2011
2047
  "type": "array",
2012
2048
  "x-introduced-in-version": "1.6.0",
2049
+ "x-deprecated-in-version": "1.11.0",
2050
+ "x-deprecation-text": "Use the simplified `exposedEntityTypes` instead.",
2013
2051
  "description": "Describes mappings between the API Models of the described resource to the underlying, conceptual entity types.",
2014
2052
  "items": {
2015
2053
  "$ref": "#/definitions/EntityTypeMapping"
@@ -2304,6 +2342,8 @@
2304
2342
  ],
2305
2343
  "default": "none",
2306
2344
  "x-introduced-in-version": "1.3.0",
2345
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
2346
+ "x-deprecated-in-version": "1.9.9",
2307
2347
  "examples": [
2308
2348
  "sap:core:v1"
2309
2349
  ]
@@ -2314,6 +2354,8 @@
2314
2354
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
2315
2355
  "maxLength": 255,
2316
2356
  "x-introduced-in-version": "1.3.0",
2357
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
2358
+ "x-deprecated-in-version": "1.9.9",
2317
2359
  "examples": [
2318
2360
  "sap.xref:customPolicy:v1"
2319
2361
  ]
@@ -2335,6 +2377,8 @@
2335
2377
  "type": "boolean",
2336
2378
  "description": "Defines whether this ORD resource is **system-instance-aware**.\nThis is the case 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 MUST then fetch the referenced resource definitions for _each_ **system instance** individually.\n\nThis concept is now **deprecated** in favor of the more explicit `perspective` attribute.\nAll resources that are system-instance-aware should ideally be put into a dedicated ORD document with `perspective`: `system-instance`.\n\nFor more details, see [perspectives concept page](../concepts/perspectives.md) or the [specification section](../index.md#perspectives).",
2337
2379
  "default": false,
2380
+ "x-deprecated-in-version": "1.12.0",
2381
+ "x-deprecation-text": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
2338
2382
  "examples": [
2339
2383
  true
2340
2384
  ]
@@ -2497,41 +2541,46 @@
2497
2541
  },
2498
2542
  "visibility": {
2499
2543
  "type": "string",
2500
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
2544
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
2501
2545
  "oneOf": [
2502
2546
  {
2503
2547
  "const": "public",
2504
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
2548
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
2505
2549
  },
2506
2550
  {
2507
2551
  "const": "internal",
2508
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
2552
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
2509
2553
  },
2510
2554
  {
2511
2555
  "const": "private",
2512
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
2556
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
2513
2557
  }
2514
2558
  ]
2515
2559
  },
2516
2560
  "releaseStatus": {
2517
2561
  "type": "string",
2518
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
2562
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
2519
2563
  "oneOf": [
2564
+ {
2565
+ "const": "development",
2566
+ "x-introduced-in-version": "1.14.2",
2567
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
2568
+ },
2520
2569
  {
2521
2570
  "const": "beta",
2522
- "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."
2571
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
2523
2572
  },
2524
2573
  {
2525
2574
  "const": "active",
2526
- "description": "Resource is meant for productive use and provides a stable API contract."
2575
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
2527
2576
  },
2528
2577
  {
2529
2578
  "const": "deprecated",
2530
- "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`."
2579
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
2531
2580
  },
2532
2581
  {
2533
2582
  "const": "sunset",
2534
- "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."
2583
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
2535
2584
  }
2536
2585
  ],
2537
2586
  "examples": [
@@ -2671,6 +2720,8 @@
2671
2720
  ],
2672
2721
  "default": "none",
2673
2722
  "x-introduced-in-version": "1.3.0",
2723
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
2724
+ "x-deprecated-in-version": "1.9.9",
2674
2725
  "examples": [
2675
2726
  "sap:core:v1"
2676
2727
  ]
@@ -2681,6 +2732,8 @@
2681
2732
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
2682
2733
  "maxLength": 255,
2683
2734
  "x-introduced-in-version": "1.3.0",
2735
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
2736
+ "x-deprecated-in-version": "1.9.9",
2684
2737
  "examples": [
2685
2738
  "sap.xref:customPolicy:v1"
2686
2739
  ]
@@ -2702,6 +2755,8 @@
2702
2755
  "type": "boolean",
2703
2756
  "description": "Defines whether this ORD resource is **system-instance-aware**.\nThis is the case 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 MUST then fetch the referenced resource definitions for _each_ **system instance** individually.\n\nThis concept is now **deprecated** in favor of the more explicit `perspective` attribute.\nAll resources that are system-instance-aware should ideally be put into a dedicated ORD document with `perspective`: `system-instance`.\n\nFor more details, see [perspectives concept page](../concepts/perspectives.md) or the [specification section](../index.md#perspectives).",
2704
2757
  "default": false,
2758
+ "x-deprecated-in-version": "1.12.0",
2759
+ "x-deprecation-text": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
2705
2760
  "examples": [
2706
2761
  true
2707
2762
  ]
@@ -2854,15 +2909,15 @@
2854
2909
  "oneOf": [
2855
2910
  {
2856
2911
  "const": "public",
2857
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
2912
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
2858
2913
  },
2859
2914
  {
2860
2915
  "const": "internal",
2861
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
2916
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
2862
2917
  },
2863
2918
  {
2864
2919
  "const": "private",
2865
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
2920
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
2866
2921
  }
2867
2922
  ]
2868
2923
  },
@@ -2870,21 +2925,26 @@
2870
2925
  "type": "string",
2871
2926
  "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`.",
2872
2927
  "oneOf": [
2928
+ {
2929
+ "const": "development",
2930
+ "x-introduced-in-version": "1.14.2",
2931
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
2932
+ },
2873
2933
  {
2874
2934
  "const": "beta",
2875
- "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."
2935
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
2876
2936
  },
2877
2937
  {
2878
2938
  "const": "active",
2879
- "description": "Resource is meant for productive use and provides a stable API contract."
2939
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
2880
2940
  },
2881
2941
  {
2882
2942
  "const": "deprecated",
2883
- "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`."
2943
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
2884
2944
  },
2885
2945
  {
2886
2946
  "const": "sunset",
2887
- "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."
2947
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
2888
2948
  }
2889
2949
  ],
2890
2950
  "examples": [
@@ -3382,6 +3442,8 @@
3382
3442
  ],
3383
3443
  "default": "none",
3384
3444
  "x-introduced-in-version": "1.3.0",
3445
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
3446
+ "x-deprecated-in-version": "1.9.9",
3385
3447
  "examples": [
3386
3448
  "sap:core:v1"
3387
3449
  ]
@@ -3393,6 +3455,8 @@
3393
3455
  "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
3394
3456
  "maxLength": 255,
3395
3457
  "x-introduced-in-version": "1.3.0",
3458
+ "x-deprecation-text": "ORD now support multiple policy levels. Use `policyLevels` (plural) instead.",
3459
+ "x-deprecated-in-version": "1.9.9",
3396
3460
  "examples": [
3397
3461
  "sap.xref:customPolicy:v1"
3398
3462
  ]
@@ -3415,6 +3479,8 @@
3415
3479
  "type": "boolean",
3416
3480
  "description": "Defines whether this ORD resource is **system-instance-aware**.\nThis is the case 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 MUST then fetch the referenced resource definitions for _each_ **system instance** individually.\n\nThis concept is now **deprecated** in favor of the more explicit `perspective` attribute.\nAll resources that are system-instance-aware should ideally be put into a dedicated ORD document with `perspective`: `system-instance`.\n\nFor more details, see [perspectives concept page](../concepts/perspectives.md) or the [specification section](../index.md#perspectives).",
3417
3481
  "default": false,
3482
+ "x-deprecated-in-version": "1.12.0",
3483
+ "x-deprecation-text": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
3418
3484
  "examples": [
3419
3485
  true
3420
3486
  ]
@@ -3580,27 +3646,11 @@
3580
3646
  "mediaType": {
3581
3647
  "description": "The [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) of the definition serialization format.\nA consuming application can use this information to know which file format parser it needs to use.\nFor example, for OpenAPI 3, it's valid to express the same definition in both YAML and JSON.\n\nIf no Media Type is registered for the referenced file,\n`text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.\n",
3582
3648
  "type": "string",
3583
- "oneOf": [
3584
- {
3585
- "const": "application/json"
3586
- },
3587
- {
3588
- "const": "application/xml"
3589
- },
3590
- {
3591
- "const": "text/yaml"
3592
- },
3593
- {
3594
- "const": "text/plain",
3595
- "description": "For a plain-text format where no other serialization Media Type fits"
3596
- },
3597
- {
3598
- "const": "application/octet-stream",
3599
- "description": "For a binary format where no other serialization Media Type fits"
3600
- }
3601
- ],
3649
+ "pattern": "^(application|text)\\/[a-zA-Z0-9][a-zA-Z0-9.+\\-]*$",
3602
3650
  "examples": [
3603
- "application/json"
3651
+ "application/json",
3652
+ "text/plain",
3653
+ "application/xml"
3604
3654
  ]
3605
3655
  },
3606
3656
  "url": {
@@ -3618,15 +3668,15 @@
3618
3668
  "oneOf": [
3619
3669
  {
3620
3670
  "const": "public",
3621
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
3671
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
3622
3672
  },
3623
3673
  {
3624
3674
  "const": "internal",
3625
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
3675
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
3626
3676
  },
3627
3677
  {
3628
3678
  "const": "private",
3629
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
3679
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
3630
3680
  }
3631
3681
  ]
3632
3682
  },
@@ -3697,27 +3747,11 @@
3697
3747
  "mediaType": {
3698
3748
  "description": "The [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) of the definition serialization format.\nA consuming application can use this information to know which file format parser it needs to use.\nFor example, for OpenAPI 3, it's valid to express the same definition in both YAML and JSON.\n\nIf no Media Type is registered for the referenced file,\n`text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.\n",
3699
3749
  "type": "string",
3700
- "oneOf": [
3701
- {
3702
- "const": "application/json"
3703
- },
3704
- {
3705
- "const": "application/xml"
3706
- },
3707
- {
3708
- "const": "text/yaml"
3709
- },
3710
- {
3711
- "const": "text/plain",
3712
- "description": "For a plain-text format where no other serialization Media Type fits"
3713
- },
3714
- {
3715
- "const": "application/octet-stream",
3716
- "description": "For a binary format where no other serialization Media Type fits"
3717
- }
3718
- ],
3750
+ "pattern": "^(application|text)\\/[a-zA-Z0-9][a-zA-Z0-9.+\\-]*$",
3719
3751
  "examples": [
3720
- "application/json"
3752
+ "application/json",
3753
+ "text/plain",
3754
+ "application/xml"
3721
3755
  ]
3722
3756
  },
3723
3757
  "url": {
@@ -3749,15 +3783,15 @@
3749
3783
  "oneOf": [
3750
3784
  {
3751
3785
  "const": "public",
3752
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
3786
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
3753
3787
  },
3754
3788
  {
3755
3789
  "const": "internal",
3756
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
3790
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
3757
3791
  },
3758
3792
  {
3759
3793
  "const": "private",
3760
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
3794
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
3761
3795
  }
3762
3796
  ]
3763
3797
  }
@@ -3831,10 +3865,7 @@
3831
3865
  "description": {
3832
3866
  "type": "string",
3833
3867
  "minLength": 1,
3834
- "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
3835
- "examples": [
3836
- "SAP S/4HANA Cloud, our next generation cloud ERP suite designed for\nin-memory computing, acts as a digital core, connecting your\nenterprise with people, business networks, the Internet of Things,\nBig Data, and more.\n"
3837
- ]
3868
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links."
3838
3869
  },
3839
3870
  "partOfPackage": {
3840
3871
  "type": "string",
@@ -3879,41 +3910,46 @@
3879
3910
  },
3880
3911
  "visibility": {
3881
3912
  "type": "string",
3882
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
3913
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
3883
3914
  "oneOf": [
3884
3915
  {
3885
3916
  "const": "public",
3886
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
3917
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
3887
3918
  },
3888
3919
  {
3889
3920
  "const": "internal",
3890
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
3921
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
3891
3922
  },
3892
3923
  {
3893
3924
  "const": "private",
3894
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
3925
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
3895
3926
  }
3896
3927
  ]
3897
3928
  },
3898
3929
  "releaseStatus": {
3899
3930
  "type": "string",
3900
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
3931
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
3901
3932
  "oneOf": [
3933
+ {
3934
+ "const": "development",
3935
+ "x-introduced-in-version": "1.14.2",
3936
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
3937
+ },
3902
3938
  {
3903
3939
  "const": "beta",
3904
- "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."
3940
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
3905
3941
  },
3906
3942
  {
3907
3943
  "const": "active",
3908
- "description": "Resource is meant for productive use and provides a stable API contract."
3944
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
3909
3945
  },
3910
3946
  {
3911
3947
  "const": "deprecated",
3912
- "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`."
3948
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
3913
3949
  },
3914
3950
  {
3915
3951
  "const": "sunset",
3916
- "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."
3952
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
3917
3953
  }
3918
3954
  ],
3919
3955
  "examples": [
@@ -4507,10 +4543,7 @@
4507
4543
  "description": {
4508
4544
  "type": "string",
4509
4545
  "minLength": 1,
4510
- "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
4511
- "examples": [
4512
- "SAP S/4HANA Cloud, our next generation cloud ERP suite designed for\nin-memory computing, acts as a digital core, connecting your\nenterprise with people, business networks, the Internet of Things,\nBig Data, and more.\n"
4513
- ]
4546
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links."
4514
4547
  },
4515
4548
  "partOfPackage": {
4516
4549
  "type": "string",
@@ -4555,41 +4588,46 @@
4555
4588
  },
4556
4589
  "visibility": {
4557
4590
  "type": "string",
4558
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
4591
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
4559
4592
  "oneOf": [
4560
4593
  {
4561
4594
  "const": "public",
4562
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
4595
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
4563
4596
  },
4564
4597
  {
4565
4598
  "const": "internal",
4566
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
4599
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
4567
4600
  },
4568
4601
  {
4569
4602
  "const": "private",
4570
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
4603
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
4571
4604
  }
4572
4605
  ]
4573
4606
  },
4574
4607
  "releaseStatus": {
4575
4608
  "type": "string",
4576
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
4609
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
4577
4610
  "oneOf": [
4611
+ {
4612
+ "const": "development",
4613
+ "x-introduced-in-version": "1.14.2",
4614
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
4615
+ },
4578
4616
  {
4579
4617
  "const": "beta",
4580
- "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."
4618
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
4581
4619
  },
4582
4620
  {
4583
4621
  "const": "active",
4584
- "description": "Resource is meant for productive use and provides a stable API contract."
4622
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
4585
4623
  },
4586
4624
  {
4587
4625
  "const": "deprecated",
4588
- "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`."
4626
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
4589
4627
  },
4590
4628
  {
4591
4629
  "const": "sunset",
4592
- "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."
4630
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
4593
4631
  }
4594
4632
  ],
4595
4633
  "examples": [
@@ -4627,6 +4665,54 @@
4627
4665
  ]
4628
4666
  ]
4629
4667
  },
4668
+ "relatedApiResources": {
4669
+ "type": "array",
4670
+ "x-introduced-in-version": "1.14.2",
4671
+ "description": "Optional list of related API Resources.\n\nUse this to indicate which APIs implement, expose, or are otherwise related to this capability.",
4672
+ "items": {
4673
+ "$ref": "#/definitions/RelatedApiResource"
4674
+ },
4675
+ "examples": [
4676
+ [
4677
+ {
4678
+ "ordId": "sap.s4:apiResource:API_BUSINESS_PARTNER:v1",
4679
+ "relationType": "foo.bar:relationName"
4680
+ }
4681
+ ]
4682
+ ]
4683
+ },
4684
+ "relatedEventResources": {
4685
+ "type": "array",
4686
+ "x-introduced-in-version": "1.14.2",
4687
+ "description": "Optional list of related Event Resources.\n\nUse this to indicate which events are emitted, consumed, or otherwise related to this capability.",
4688
+ "items": {
4689
+ "$ref": "#/definitions/RelatedEventResource"
4690
+ },
4691
+ "examples": [
4692
+ [
4693
+ {
4694
+ "ordId": "sap.s4:eventResource:BusinessPartnerEvents:v1",
4695
+ "relationType": "foo.bar:relationName"
4696
+ }
4697
+ ]
4698
+ ]
4699
+ },
4700
+ "relatedCapabilities": {
4701
+ "type": "array",
4702
+ "x-introduced-in-version": "1.14.2",
4703
+ "description": "Optional list of related Capabilities.\n\nUse this to indicate dependencies, extensions, or other relationships between capabilities.",
4704
+ "items": {
4705
+ "$ref": "#/definitions/RelatedCapability"
4706
+ },
4707
+ "examples": [
4708
+ [
4709
+ {
4710
+ "ordId": "sap.foo:capability:baseExtensibility:v1",
4711
+ "relationType": "foo.bar:relationName"
4712
+ }
4713
+ ]
4714
+ ]
4715
+ },
4630
4716
  "definitions": {
4631
4717
  "type": "array",
4632
4718
  "description": "List of available machine-readable definitions, which describe the resource or capability in detail.\nSee also [Resource Definitions](../index.md#resource-definitions) for more context.\n\nEach definition is to be understood as an alternative description format, describing the same resource / capability.\nAs a consequence the same definition type MUST NOT be provided more than once.\nThe exception is when the same definition type is provided more than once, but with a different `visibility`.\n\nIt is RECOMMENDED to provide the definitions as they enable machine-readable use cases.\nIf the definitions are added or changed, the `version` MUST be incremented.\nAn ORD aggregator MAY only (re)fetch the definitions again when the `version` was incremented.",
@@ -4666,6 +4752,8 @@
4666
4752
  "type": "boolean",
4667
4753
  "description": "Defines whether this ORD resource is **system-instance-aware**.\nThis is the case 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 MUST then fetch the referenced resource definitions for _each_ **system instance** individually.\n\nThis concept is now **deprecated** in favor of the more explicit `perspective` attribute.\nAll resources that are system-instance-aware should ideally be put into a dedicated ORD document with `perspective`: `system-instance`.\n\nFor more details, see [perspectives concept page](../concepts/perspectives.md) or the [specification section](../index.md#perspectives).",
4668
4754
  "default": false,
4755
+ "x-deprecated-in-version": "1.12.0",
4756
+ "x-deprecation-text": "Use `perspectives` instead (see [perspectives](../concepts/perspectives) article).",
4669
4757
  "examples": [
4670
4758
  true
4671
4759
  ]
@@ -4726,27 +4814,11 @@
4726
4814
  "mediaType": {
4727
4815
  "description": "The [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) of the definition serialization format.\nA consuming application can use this information to know which file format parser it needs to use.\nFor example, for OpenAPI 3, it's valid to express the same definition in both YAML and JSON.\n\nIf no Media Type is registered for the referenced file,\n`text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.\n",
4728
4816
  "type": "string",
4729
- "oneOf": [
4730
- {
4731
- "const": "application/json"
4732
- },
4733
- {
4734
- "const": "application/xml"
4735
- },
4736
- {
4737
- "const": "text/yaml"
4738
- },
4739
- {
4740
- "const": "text/plain",
4741
- "description": "For a plain-text format where no other serialization Media Type fits"
4742
- },
4743
- {
4744
- "const": "application/octet-stream",
4745
- "description": "For a binary format where no other serialization Media Type fits"
4746
- }
4747
- ],
4817
+ "pattern": "^(application|text)\\/[a-zA-Z0-9][a-zA-Z0-9.+\\-]*$",
4748
4818
  "examples": [
4749
- "application/json"
4819
+ "application/json",
4820
+ "text/plain",
4821
+ "application/xml"
4750
4822
  ]
4751
4823
  },
4752
4824
  "url": {
@@ -4778,15 +4850,15 @@
4778
4850
  "oneOf": [
4779
4851
  {
4780
4852
  "const": "public",
4781
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
4853
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
4782
4854
  },
4783
4855
  {
4784
4856
  "const": "internal",
4785
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
4857
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
4786
4858
  },
4787
4859
  {
4788
4860
  "const": "private",
4789
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
4861
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
4790
4862
  }
4791
4863
  ]
4792
4864
  }
@@ -4859,10 +4931,7 @@
4859
4931
  "description": {
4860
4932
  "type": "string",
4861
4933
  "minLength": 1,
4862
- "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
4863
- "examples": [
4864
- "SAP S/4HANA Cloud, our next generation cloud ERP suite designed for\nin-memory computing, acts as a digital core, connecting your\nenterprise with people, business networks, the Internet of Things,\nBig Data, and more.\n"
4865
- ]
4934
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links."
4866
4935
  },
4867
4936
  "partOfPackage": {
4868
4937
  "type": "string",
@@ -4907,41 +4976,46 @@
4907
4976
  },
4908
4977
  "visibility": {
4909
4978
  "type": "string",
4910
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
4979
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
4911
4980
  "oneOf": [
4912
4981
  {
4913
4982
  "const": "public",
4914
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
4983
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
4915
4984
  },
4916
4985
  {
4917
4986
  "const": "internal",
4918
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
4987
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
4919
4988
  },
4920
4989
  {
4921
4990
  "const": "private",
4922
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
4991
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
4923
4992
  }
4924
4993
  ]
4925
4994
  },
4926
4995
  "releaseStatus": {
4927
4996
  "type": "string",
4928
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
4997
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
4929
4998
  "oneOf": [
4999
+ {
5000
+ "const": "development",
5001
+ "x-introduced-in-version": "1.14.2",
5002
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
5003
+ },
4930
5004
  {
4931
5005
  "const": "beta",
4932
- "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."
5006
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
4933
5007
  },
4934
5008
  {
4935
5009
  "const": "active",
4936
- "description": "Resource is meant for productive use and provides a stable API contract."
5010
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
4937
5011
  },
4938
5012
  {
4939
5013
  "const": "deprecated",
4940
- "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`."
5014
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
4941
5015
  },
4942
5016
  {
4943
5017
  "const": "sunset",
4944
- "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."
5018
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
4945
5019
  }
4946
5020
  ],
4947
5021
  "examples": [
@@ -5059,10 +5133,7 @@
5059
5133
  "description": {
5060
5134
  "type": "string",
5061
5135
  "minLength": 1,
5062
- "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
5063
- "examples": [
5064
- "SAP S/4HANA Cloud, our next generation cloud ERP suite designed for\nin-memory computing, acts as a digital core, connecting your\nenterprise with people, business networks, the Internet of Things,\nBig Data, and more.\n"
5065
- ]
5136
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links."
5066
5137
  },
5067
5138
  "mandatory": {
5068
5139
  "type": "boolean",
@@ -5085,6 +5156,13 @@
5085
5156
  "items": {
5086
5157
  "$ref": "#/definitions/EventResourceIntegrationAspect"
5087
5158
  }
5159
+ },
5160
+ "capabilities": {
5161
+ "type": "array",
5162
+ "description": "List of Capability Dependencies.",
5163
+ "items": {
5164
+ "$ref": "#/definitions/CapabilityIntegrationAspect"
5165
+ }
5088
5166
  }
5089
5167
  },
5090
5168
  "additionalProperties": false,
@@ -5225,6 +5303,37 @@
5225
5303
  "operationId"
5226
5304
  ]
5227
5305
  },
5306
+ "CapabilityIntegrationAspect": {
5307
+ "type": "object",
5308
+ "title": "Capability Integration Aspect",
5309
+ "x-introduced-in-version": "1.14.2",
5310
+ "x-ums-type": "custom",
5311
+ "description": "Capability related integration aspect",
5312
+ "properties": {
5313
+ "ordId": {
5314
+ "type": "string",
5315
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
5316
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(capability):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
5317
+ "maxLength": 255,
5318
+ "examples": [
5319
+ "sap.foo.bar:capability:fieldExtensibility:v1"
5320
+ ]
5321
+ },
5322
+ "minVersion": {
5323
+ "type": "string",
5324
+ "description": "Minimum version of the references resource that the integration requires.\n",
5325
+ "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-]+)*))?$",
5326
+ "examples": [
5327
+ "1.2.3",
5328
+ "1.0.0-alpha.1"
5329
+ ]
5330
+ }
5331
+ },
5332
+ "additionalProperties": false,
5333
+ "required": [
5334
+ "ordId"
5335
+ ]
5336
+ },
5228
5337
  "Vendor": {
5229
5338
  "type": "object",
5230
5339
  "title": "Vendor",
@@ -5311,23 +5420,28 @@
5311
5420
  },
5312
5421
  "releaseStatus": {
5313
5422
  "type": "string",
5314
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
5423
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
5315
5424
  "oneOf": [
5425
+ {
5426
+ "const": "development",
5427
+ "x-introduced-in-version": "1.14.2",
5428
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
5429
+ },
5316
5430
  {
5317
5431
  "const": "beta",
5318
- "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."
5432
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
5319
5433
  },
5320
5434
  {
5321
5435
  "const": "active",
5322
- "description": "Resource is meant for productive use and provides a stable API contract."
5436
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
5323
5437
  },
5324
5438
  {
5325
5439
  "const": "deprecated",
5326
- "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`."
5440
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
5327
5441
  },
5328
5442
  {
5329
5443
  "const": "sunset",
5330
- "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."
5444
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
5331
5445
  }
5332
5446
  ],
5333
5447
  "examples": [
@@ -5388,7 +5502,7 @@
5388
5502
  "description": {
5389
5503
  "type": "string",
5390
5504
  "minLength": 1,
5391
- "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown)",
5505
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).",
5392
5506
  "examples": [
5393
5507
  "This gives you an overview on where to find which kind of APIs in SAP S/4HANA.\n"
5394
5508
  ]
@@ -5406,6 +5520,62 @@
5406
5520
  }
5407
5521
  ]
5408
5522
  },
5523
+ "File": {
5524
+ "type": "object",
5525
+ "title": "File",
5526
+ "x-introduced-in-version": "1.14.2",
5527
+ "description": "File that can be attached on ORD package level.\n",
5528
+ "x-ums-type": "custom",
5529
+ "properties": {
5530
+ "title": {
5531
+ "type": "string",
5532
+ "minLength": 1,
5533
+ "description": "Human readable title of the file.\n\nMUST be unique within the collection of files provided.",
5534
+ "examples": [
5535
+ "Developer Guide for SAP Ariba Portal"
5536
+ ]
5537
+ },
5538
+ "url": {
5539
+ "type": "string",
5540
+ "format": "uri-reference",
5541
+ "description": "[URL](https://tools.ietf.org/html/rfc3986) of the link.\n\nThe file target MAY be relative or absolute.\nIf a relative URL is given, it is relative to the [`describedSystemInstance.baseUrl`](#system-instance_baseurl).\nIf an absolute URL is given, then it MUST be openly accessible.",
5542
+ "examples": [
5543
+ "/ord/v1/Ariba/Files/DeveloperPortal/SAP-Ariba-developer-portal.pdf"
5544
+ ]
5545
+ },
5546
+ "description": {
5547
+ "type": "string",
5548
+ "minLength": 1,
5549
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
5550
+ "examples": [
5551
+ "Includes administrator, quick start, and authentication guides.\n"
5552
+ ]
5553
+ },
5554
+ "mediaType": {
5555
+ "description": "The [Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) of the definition serialization format.\nA consuming application can use this information to know which file format parser it needs to use.\n\nIf no Media Type is registered for the referenced file, `text/plain` MAY be used for arbitrary plain-text and `application/octet-stream` for arbitrary binary data.\n",
5556
+ "type": "string",
5557
+ "pattern": "^(application|text)\\/[a-zA-Z0-9][a-zA-Z0-9.+\\-]*$",
5558
+ "examples": [
5559
+ "application/json",
5560
+ "text/plain",
5561
+ "application/xml"
5562
+ ]
5563
+ }
5564
+ },
5565
+ "required": [
5566
+ "title",
5567
+ "url",
5568
+ "mediaType"
5569
+ ],
5570
+ "examples": [
5571
+ {
5572
+ "url": "/ord/v1/Ariba/Files/DeveloperPortal/SAP-Ariba-developer-portal.pdf",
5573
+ "title": "Developer Guide for SAP Ariba Portal",
5574
+ "description": "Includes administrator, quick start, and authentication guides.",
5575
+ "mediaType": "application/pdf"
5576
+ }
5577
+ ]
5578
+ },
5409
5579
  "PackageLink": {
5410
5580
  "type": "object",
5411
5581
  "title": "Package Link",
@@ -5983,10 +6153,7 @@
5983
6153
  "description": {
5984
6154
  "type": "string",
5985
6155
  "minLength": 1,
5986
- "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
5987
- "examples": [
5988
- "SAP S/4HANA Cloud, our next generation cloud ERP suite designed for\nin-memory computing, acts as a digital core, connecting your\nenterprise with people, business networks, the Internet of Things,\nBig Data, and more.\n"
5989
- ]
6156
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links."
5990
6157
  },
5991
6158
  "labels": {
5992
6159
  "$ref": "#/definitions/Labels"
@@ -6068,10 +6235,7 @@
6068
6235
  "description": {
6069
6236
  "type": "string",
6070
6237
  "minLength": 1,
6071
- "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links.",
6072
- "examples": [
6073
- "SAP S/4HANA Cloud, our next generation cloud ERP suite designed for\nin-memory computing, acts as a digital core, connecting your\nenterprise with people, business networks, the Internet of Things,\nBig Data, and more.\n"
6074
- ]
6238
+ "description": "Full description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description SHOULD not be excessive in length and is not meant to provide full documentation.\nDetailed documentation SHOULD be attached as (typed) links."
6075
6239
  },
6076
6240
  "labels": {
6077
6241
  "$ref": "#/definitions/Labels"
@@ -6179,6 +6343,8 @@
6179
6343
  "title": "Entity Type Mapping",
6180
6344
  "type": "object",
6181
6345
  "x-introduced-in-version": "1.6.0",
6346
+ "x-deprecated-in-version": "1.11.0",
6347
+ "x-deprecation-text": "Use the simplified `relatedEntityTypes` instead.",
6182
6348
  "x-ums-type": "custom",
6183
6349
  "description": "An API or Event resource may optionally define its `entityTypeMappings`.\nThis is used to map and correlate the API models to the underlying, conceptual **entity types**.\n\nIf the mapping from API resource to entity types is not defined,\ncertain use-cases that rely on this explicit connection will not be possible.\n\nThis mapping is meant to be rather fine granular.\nTherefore, the mapping needs to be done on basis of one of the referenced resource definitions,\nas only there we know the details and the actual contents of the API Model of the API resource.\n\nFor the various resource definition formats the selection of API models may need to be expressed differently.\nAs a consequence, there are different types of selectors that are specialized toward certain resource definition formats.\n\nThe target of the mapping is a correlation to an entity type via a [Correlation ID](../index.md#correlation-id)\nor to an [ORD ID](../index.md#ord-id) of an entity type.\nIt is assumed that the entity types are described in more detail or on a different abstraction level via metadata.\nWhen the correlation ID is used, an ORD consumer may need to know how to access the entity type metadata through conventions.\nThis can be determined either by the namespace of the correlation ID,\nor through a defined and known `implementationStandard` that can resolve the `localId` fragment of the correlation ID .\n\nAt SAP, the metadata about entity types could be retrieved via the CSN_EXPOSURE service.\nTo indicate this, the service needs to be implemented and described in ORD with `implementationStandard` set to `sap:csn-exposure:v1`).\n\nODM 2.0 relies on the entity type mappings and uses the the mapping to express the relationship of an API to the\ncorresponding ODM entity. ORD consumers like SAP Business Accelerator Hub consume the mapping to make the relationships navigate-able for customers.",
6184
6350
  "properties": {
@@ -6284,6 +6450,8 @@
6284
6450
  "ApiModelSelectorOData": {
6285
6451
  "title": "Api Model Selector (Odata)",
6286
6452
  "x-introduced-in-version": "1.6.0",
6453
+ "x-deprecated-in-version": "1.11.0",
6454
+ "x-deprecation-text": "Use the simplified `relatedEntityTypes` instead.\n\nFor creating a mapping from API model to Entity Types, consider using the [Entity Relationship](https://sap.github.io/csn-interop-specification/annotations/entity-relationship) annotations.",
6287
6455
  "x-ums-type": "custom",
6288
6456
  "type": "object",
6289
6457
  "description": "API Model Selector for OData, using entity set names for the selection.\n\nMUST only be used if the API Resource provides an API Resource Definition of type `edmx`.",
@@ -6319,6 +6487,8 @@
6319
6487
  "ApiModelSelectorJsonPointer": {
6320
6488
  "title": "Api Model Selector (Json Pointer)",
6321
6489
  "x-introduced-in-version": "1.6.0",
6490
+ "x-deprecated-in-version": "1.11.0",
6491
+ "x-deprecation-text": "Use the simplified `relatedEntityTypes` instead.\n\nFor creating a mapping from API model to Entity Types, consider using the [Entity Relationship](https://sap.github.io/csn-interop-specification/annotations/entity-relationship) annotations.",
6322
6492
  "x-ums-type": "custom",
6323
6493
  "type": "object",
6324
6494
  "description": "Generic API Model Selector for JSON / YAML based resource definitions.\nIt uses a [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901) that points to the\nentity type description within the resource definition.\n\nThe JSON Pointer always to refer to the structure of the document as originally provided, before further post-processing like resolving $ref properties.\n\nMUST only be used if the API Resource provides an API Resource Definition of media type `application/json` or `text/yaml`.",
@@ -6381,6 +6551,8 @@
6381
6551
  "EntityTypeOrdIdTarget": {
6382
6552
  "title": "Entity Type Target (ORD ID)",
6383
6553
  "x-introduced-in-version": "1.6.0",
6554
+ "x-deprecated-in-version": "1.11.0",
6555
+ "x-deprecation-text": "Use the simplified `relatedEntityTypes` instead.",
6384
6556
  "x-ums-type": "custom",
6385
6557
  "type": "object",
6386
6558
  "description": "Define which entity type is the target of an entity type mapping\n\nEntity types can be referenced using a [ORD ID](../index.md#ord-id) of an entity type.",
@@ -6408,6 +6580,8 @@
6408
6580
  "type": "object",
6409
6581
  "description": "Define which entity type is the target of an entity type mapping\n\nEntity types can be referenced using a [Correlation ID](../index.md#correlation-id).",
6410
6582
  "x-introduced-in-version": "1.6.0",
6583
+ "x-deprecated-in-version": "1.11.0",
6584
+ "x-deprecation-text": "Use the simplified `relatedEntityTypes` instead.",
6411
6585
  "x-ums-type": "custom",
6412
6586
  "properties": {
6413
6587
  "correlationId": {
@@ -6445,10 +6619,15 @@
6445
6619
  },
6446
6620
  "relationType": {
6447
6621
  "type": "string",
6448
- "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\".",
6622
+ "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\".\n\nMUST be a valid [Concept ID](../index.md#concept-id).",
6449
6623
  "x-introduced-in-version": "1.12.0",
6450
6624
  "x-feature-status": "beta",
6451
- "oneOf": [
6625
+ "anyOf": [
6626
+ {
6627
+ "type": "string",
6628
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
6629
+ "description": "Any valid [Concept ID](../index.md#concept-id)."
6630
+ },
6452
6631
  {
6453
6632
  "const": "part-of",
6454
6633
  "description": "The described entity type is a composite part of the referenced entity type.\nE.g. a `SalesOrderItem` is part of a `SalesOrder`."
@@ -6459,7 +6638,125 @@
6459
6638
  }
6460
6639
  ],
6461
6640
  "examples": [
6462
- "can-share-identity"
6641
+ "can-share-identity",
6642
+ "foo.bar:relationName"
6643
+ ]
6644
+ }
6645
+ },
6646
+ "required": [
6647
+ "ordId"
6648
+ ],
6649
+ "additionalProperties": false
6650
+ },
6651
+ "RelatedApiResource": {
6652
+ "title": "Related API Resource",
6653
+ "x-introduced-in-version": "1.14.2",
6654
+ "x-ums-type": "embedded",
6655
+ "type": "object",
6656
+ "description": "Defines a relation to an API Resource (via its ORD ID).",
6657
+ "properties": {
6658
+ "ordId": {
6659
+ "type": "string",
6660
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
6661
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
6662
+ "maxLength": 255,
6663
+ "examples": [
6664
+ "sap.s4:apiResource:API_BUSINESS_PARTNER:v1"
6665
+ ],
6666
+ "x-association-target": [
6667
+ "#/definitions/ApiResource/ordId"
6668
+ ]
6669
+ },
6670
+ "relationType": {
6671
+ "type": "string",
6672
+ "description": "Optional type of the relationship as a [Concept ID](../index.md#concept-id).\n\nDefines the semantic meaning of the relationship.\nIf not provided, the relationship has no specific semantics (\"related somehow\").",
6673
+ "anyOf": [
6674
+ {
6675
+ "type": "string",
6676
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
6677
+ "description": "Any valid [Concept ID](../index.md#concept-id)."
6678
+ }
6679
+ ],
6680
+ "examples": [
6681
+ "foo.bar:relationName"
6682
+ ]
6683
+ }
6684
+ },
6685
+ "required": [
6686
+ "ordId"
6687
+ ],
6688
+ "additionalProperties": false
6689
+ },
6690
+ "RelatedEventResource": {
6691
+ "title": "Related Event Resource",
6692
+ "x-introduced-in-version": "1.14.2",
6693
+ "x-ums-type": "embedded",
6694
+ "type": "object",
6695
+ "description": "Defines a relation to an Event Resource (via its ORD ID).",
6696
+ "properties": {
6697
+ "ordId": {
6698
+ "type": "string",
6699
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
6700
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
6701
+ "maxLength": 255,
6702
+ "examples": [
6703
+ "sap.s4:eventResource:BusinessPartnerEvents:v1"
6704
+ ],
6705
+ "x-association-target": [
6706
+ "#/definitions/EventResource/ordId"
6707
+ ]
6708
+ },
6709
+ "relationType": {
6710
+ "type": "string",
6711
+ "description": "Optional type of the relationship as a [Concept ID](../index.md#concept-id).\n\nDefines the semantic meaning of the relationship.\nIf not provided, the relationship has no specific semantics (\"related somehow\").",
6712
+ "anyOf": [
6713
+ {
6714
+ "type": "string",
6715
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
6716
+ "description": "Any valid [Concept ID](../index.md#concept-id)."
6717
+ }
6718
+ ],
6719
+ "examples": [
6720
+ "foo.bar:relationName"
6721
+ ]
6722
+ }
6723
+ },
6724
+ "required": [
6725
+ "ordId"
6726
+ ],
6727
+ "additionalProperties": false
6728
+ },
6729
+ "RelatedCapability": {
6730
+ "title": "Related Capability",
6731
+ "x-introduced-in-version": "1.14.2",
6732
+ "x-ums-type": "embedded",
6733
+ "type": "object",
6734
+ "description": "Defines a relation to another Capability (via its ORD ID).",
6735
+ "properties": {
6736
+ "ordId": {
6737
+ "type": "string",
6738
+ "description": "The ORD ID is a stable, globally unique ID for ORD resources or taxonomy.\n\nIt MUST be a valid [ORD ID](../index.md#ord-id) of the appropriate ORD type.",
6739
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):(capability):([a-zA-Z0-9._\\-]+):(v0|v[1-9][0-9]*)$",
6740
+ "maxLength": 255,
6741
+ "examples": [
6742
+ "sap.foo:capability:fieldExtensibility:v1"
6743
+ ],
6744
+ "x-association-target": [
6745
+ "#/definitions/Capability/ordId"
6746
+ ]
6747
+ },
6748
+ "relationType": {
6749
+ "type": "string",
6750
+ "description": "Optional type of the relationship as a [Concept ID](../index.md#concept-id).\n\nDefines the semantic meaning of the relationship.\nIf not provided, the relationship has no specific semantics (\"related somehow\").",
6751
+ "anyOf": [
6752
+ {
6753
+ "type": "string",
6754
+ "pattern": "^([a-z0-9]+(?:[.][a-z0-9]+)*):([a-zA-Z0-9._\\-\\/]+)$",
6755
+ "description": "Any valid [Concept ID](../index.md#concept-id)."
6756
+ }
6757
+ ],
6758
+ "examples": [
6759
+ "foo.bar:relationName"
6463
6760
  ]
6464
6761
  }
6465
6762
  },
@@ -6555,10 +6852,7 @@
6555
6852
  "description": {
6556
6853
  "type": "string",
6557
6854
  "minLength": 1,
6558
- "description": "Optional description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description of a Tombstone MAY be added to the changelog of the removed resource by an ORD aggregator.",
6559
- "examples": [
6560
- "SAP S/4HANA Cloud, our next generation cloud ERP suite designed for\nin-memory computing, acts as a digital core, connecting your\nenterprise with people, business networks, the Internet of Things,\nBig Data, and more.\n"
6561
- ]
6855
+ "description": "Optional description, notated in [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nThe description of a Tombstone MAY be added to the changelog of the removed resource by an ORD aggregator."
6562
6856
  }
6563
6857
  },
6564
6858
  "required": [
@@ -6667,41 +6961,46 @@
6667
6961
  },
6668
6962
  "visibility": {
6669
6963
  "type": "string",
6670
- "description": "The visibility states who is allowed to \"see\" the described resource or capability.",
6964
+ "description": "Defines metadata access control - which categories of consumers are allowed to discover and access the resource and its metadata.\n\nThis controls who can see that the resource exists and retrieve its metadata level information.\nIt does NOT control runtime access to the resource itself - that is managed separately through authentication and authorization mechanisms.\n\nUse this to prevent exposing internal implementation details to inappropriate consumer audiences.",
6671
6965
  "oneOf": [
6672
6966
  {
6673
6967
  "const": "public",
6674
- "description": "Publicly visible to customers and 3rd parties.\nUsually this includes an contract on the API stability, e.g. the [SAP API Deprecation Policy](https://help.sap.com/viewer/84b35b9c39b247e3ba2a31f02beee46d/Cloud/en-US/5cbfda5a9efe4e97a3e24ddaf7ec5c16.html)."
6968
+ "description": "Metadata can be discovered and accessed by anyone, including customers, partners, and unauthenticated external parties.\n\nPublic resources typically come with stability guarantees, expressed via versioning and follow formal API lifecycle management. For more details see [Version and Lifecycle](../index.md#version-and-lifecycle) section.\nand follow formal API lifecycle management and deprecation policies.\n\nExample: A REST API that customers use to integrate with your SaaS product."
6675
6969
  },
6676
6970
  {
6677
6971
  "const": "internal",
6678
- "description": "Visible to other applications within the same [vendor](#vendor).\nHowever, they are not officially exposed and communicated to customers and 3rd parties.\nThey might not come with the same guarantees on API stability.\n\nInternal resources MUST NOT be made available to consumers without checking the necessary access permissions, e.g., a public API Catalog.\nInternal resources MAY be published through an internal API Catalog if the access permissions are ensured by it."
6972
+ "description": "Metadata can only be discovered and accessed by vendor internal consumers (e.g. applications or services of the same vendor).\nMUST NOT be made available to external parties or vendor customers.\n\nInternal resources are intended for integration between a vendors own applications and services.\nAPI stability and maturity are explicitly defined via the `releaseStatus` property, which is a separate concern from visibility.\n\nInternal resources MUST NOT be made available without checking the necessary access permissions.\nInternal resources MAY be published through an internal API Catalog if access permissions are ensured by it."
6679
6973
  },
6680
6974
  {
6681
6975
  "const": "private",
6682
- "description": "Visible only to the provider application or service, usually within the same system namespace / system type.\n\nPrivate resources MUST NOT be made available to public consumers or consumers outside of the \"private\" scope of the described application."
6976
+ "description": "Metadata should not be discoverable outside the application / service's own deployment scope (e.g., outside of the provider application or the same system namespace / system type).\nUsed for metadata completeness when describing implementation details or dependencies.\n\nPrivate resources usually have no stability guarantees and can change or be removed at any time.\nThese are typically implementation details not meant for consumption by other services.\n\nExample: Services only used within a microservice architecture or APIs that are only used for the own UIs, not for general consumption.\n\nPrivate resources MUST NOT be made discoverable or accessible outside the application / service's own deployment scope."
6683
6977
  }
6684
6978
  ]
6685
6979
  },
6686
6980
  "releaseStatus": {
6687
6981
  "type": "string",
6688
- "description": "The `releaseStatus` specifies the stability of the resource and its external contract.",
6982
+ "description": "Defines the maturity level and stability commitment for the resource's API contract (interface, behavior, data models).\n\nThis indicates whether the resource may undergo backward-incompatible changes. It helps consumers understand the risk\nof depending on the resource and whether it's suitable for production use.\n\nNote: This is independent of `visibility` and does not imply availability guarantees or SLAs - it concerns only the API contract stability.\n\nSee [Lifecycle](../index.md#lifecycle) and [Compatibility](../concepts/compatibility.md) for more details.",
6689
6983
  "oneOf": [
6984
+ {
6985
+ "const": "development",
6986
+ "x-introduced-in-version": "1.14.2",
6987
+ "description": "The resource is unreleased and under active development. The API contract is unstable and subject to\nbreaking changes at any time. Not intended for consumption outside of the development team."
6988
+ },
6690
6989
  {
6691
6990
  "const": "beta",
6692
- "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."
6991
+ "description": "The API contract is released / available to consumers, but has no final stability guarantees.\nBreaking changes may occur at any time without notice or deprecation period.\n\nNot recommended for production use unless you can tolerate breaking changes. Suitable for experimentation, early adopters,\nand feedback gathering. Resources of `beta` status MAY be changed or removed at the provider's discretion."
6693
6992
  },
6694
6993
  {
6695
6994
  "const": "active",
6696
- "description": "Resource is meant for productive use and provides a stable API contract."
6995
+ "description": "The API contract is stable and recommended for production use.\n\nBreaking changes will only be introduced through proper deprecation cycles or new major versions,\nfollowing versioning and compatibility policies. Consumers can rely on active resources with confidence."
6697
6996
  },
6698
6997
  {
6699
6998
  "const": "deprecated",
6700
- "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`."
6999
+ "description": "The resource is still functional but scheduled for removal. No new development should depend on it.\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 (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`."
6701
7000
  },
6702
7001
  {
6703
7002
  "const": "sunset",
6704
- "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."
7003
+ "description": "The resource has been decommissioned and is no longer available at runtime. This entry exists for historical reference only.\n\nIf the status is set to `sunset`, a `Tombstone` MUST be set as well and a `sunsetDate` MUST be provided."
6705
7004
  }
6706
7005
  ],
6707
7006
  "examples": [