diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 9eb265a5f..568e85dac 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -6,10 +6,6 @@ jobs: build: runs-on: ubuntu-latest - strategy: - matrix: - node-version: [20.x] - steps: - uses: actions/checkout@v4 with: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ff97987e6..f01744860 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,3 +38,9 @@ If you are working in a fork, please go to the "Actions" tab of your fork and en ## Developer Certificate of Origin (DCO) Due to legal reasons, contributors will be asked to accept a DCO before they submit the first pull request to this projects, this happens in an automated fashion during the submission process. SAP uses [the standard DCO text of the Linux Foundation](https://developercertificate.org/). + +## Contributing with AI-generated code + +As artificial intelligence evolves, AI-generated code is becoming valuable for many software projects, including open-source initiatives. While we recognize the potential benefits of incorporating AI-generated content into our open-source projects there are certain requirements that need to be reflected and adhered to when making contributions. + +Please see our [guideline for AI-generated code contributions to SAP Open Source Software Projects](https://github.com/SAP/.github/blob/main/CONTRIBUTING_USING_GENAI.md) for these requirements. diff --git a/README.md b/README.md index 6c714988c..f3ca0ac59 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ This repository defines the following SAP vocabularies: - [Communication: Contact information based on vCard](vocabularies/Communication.md) - [DataIntegration: Data Integration](vocabularies/DataIntegration.md) - [DirectEdit: Terms for Direct-Edit User Interfaces](vocabularies/DirectEdit.md) - _experimental_ +- [EntityRelationship: Terms to document relationships outside of the current API context](vocabularies/EntityRelationship.md) - _experimental_ - [Graph: SAP Graph](vocabularies/Graph.md) - _experimental_ - [Hierarchy: Hierarchies](vocabularies/Hierarchy.md) - _experimental_ - [HTML5: Rendering directives for UI5](vocabularies/HTML5.md) diff --git a/package-lock.json b/package-lock.json index b89439285..e1e89346e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ }, "devDependencies": { "eslint": "^8.56.0", - "express": "^4.19.2", + "express": "^4.21.1", "prettier": "^3.2.5" } }, @@ -250,9 +250,9 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -263,7 +263,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -405,9 +405,9 @@ } }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { "node": ">= 0.6" @@ -710,37 +710,37 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -760,6 +760,15 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -806,13 +815,14 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -828,15 +838,27 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", @@ -1262,10 +1284,13 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/methods": { "version": "1.1.2", @@ -1343,10 +1368,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1365,7 +1393,7 @@ }, "node_modules/odata-vocabularies": { "version": "0.5.2", - "resolved": "git+ssh://git@github.com/oasis-tcs/odata-vocabularies.git#a7850482cc83488d37c66c4e907f6a94406e1d05", + "resolved": "git+ssh://git@github.com/oasis-tcs/odata-vocabularies.git#257c94de412b687e0fde157d035719e5c94ca986", "dependencies": { "colors": "^1.4.0", "odata-csdl": "^0.9.5", @@ -1471,6 +1499,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1503,9 +1532,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/prelude-ls": { @@ -1555,12 +1584,13 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -1702,9 +1732,9 @@ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -1747,20 +1777,31 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", diff --git a/package.json b/package.json index afdc05dd3..4f59a954d 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "eslint": "^8.56.0", - "express": "^4.19.2", + "express": "^4.21.1", "prettier": "^3.2.5" }, "scripts": { diff --git a/vocabularies/Analytics.md b/vocabularies/Analytics.md index 757ca5b57..ffa0ab802 100644 --- a/vocabularies/Analytics.md +++ b/vocabularies/Analytics.md @@ -39,7 +39,7 @@ Exactly one of `Property` and `DynamicProperty` must be present Property|Type|Description :-------|:---|:---------- [Property](Analytics.xml#L147)|PropertyPath?|Property that is part of the analytical context -[DynamicProperty](Analytics.xml#L150)|AnnotationPath?|Dynamic property introduced by annotations that is part of the analytical context
Allowed terms: +[DynamicProperty](Analytics.xml#L150)|AnnotationPath?|Dynamic property introduced by annotations that is part of the analytical context
Allowed Terms: [Dimension](Analytics.xml#L159)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The property holds the key of a dimension [Measure](Analytics.xml#L162)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The property holds the numeric value of a measure [AccumulativeMeasure](Analytics.xml#L165)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The measure has non-negative and additive values; it can be used in whole-part charts, e.g. the Donut diff --git a/vocabularies/Common.json b/vocabularies/Common.json index 1d99e8c41..6c9041433 100644 --- a/vocabularies/Common.json +++ b/vocabularies/Common.json @@ -62,6 +62,16 @@ "@Core.Description": "A short, human-readable text suitable for tool tips in UIs", "@Core.IsLanguageDependent": true }, + "DocumentationRef": { + "$Kind": "Term", + "@Common.Experimental": true, + "@Core.Description": "A URI referencing language-dependent documentation for the annotated model element", + "@Core.Example": { + "@odata.type": "https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml#Core.PrimitiveExampleValue", + "Description": "URN scheme to look up the documentation for an object with given type and id in a given system.\n This example looks up the documentation for data element /iwbep/account in system G1Y_000.", + "Value": "urn:sap-com:documentation:key?=type=DTEL&id=%2fiwbep%2faccount&origin=G1Y_000" + } + }, "Text": { "$Kind": "Term", "$Nullable": true, @@ -175,10 +185,8 @@ "$Collection": true, "$Type": "Edm.PropertyPath", "$AppliesTo": ["EntityType"], - "@Core.Revisions": [ - { "Kind": "Deprecated", "Description": "Use term `AlternateKeys` from the OASIS Core vocabulary instead" } - ], - "@Core.Description": "The listed properties form a secondary key. Multiple secondary keys are possible using different qualifiers." + "@Core.Description": "The listed properties form a secondary key", + "@Core.LongDescription": "Multiple secondary keys are possible using different qualifiers.\n Unlike [`Core.AlternateKeys`](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#AlternateKeys),\n secondary keys need not support addressing an entity in a resource path." }, "MinOccurs": { "$Kind": "Term", @@ -241,20 +249,34 @@ "SemanticObjectMapping": { "$Kind": "Term", "$Collection": true, - "$Type": "Common.SemanticObjectMappingType", + "$Type": "Common.SemanticObjectMappingAbstract", "$AppliesTo": ["EntitySet", "EntityType", "Property"], "$BaseTerm": "Common.SemanticObject", "@Core.Description": "Maps properties of the annotated entity type or sibling properties of the annotated property to properties of the Semantic Object", "@Core.LongDescription": "This allows \"renaming\" of properties in the current context to match property names of the Semantic Object, e.g. `SenderPartyID` to `PartyID`. Only properties explicitly listed in the mapping are renamed, all other properties are available for intent-based navigation with their \"local\" name." }, + "SemanticObjectMappingAbstract": { + "$Kind": "ComplexType", + "$Abstract": true, + "@Core.Description": "Maps a property of the Semantic Object to a property of the annotated entity type or a sibling property of the annotated property or a constant value", + "SemanticObjectProperty": { "@Core.Description": "Name of the Semantic Object property" } + }, "SemanticObjectMappingType": { "$Kind": "ComplexType", - "@Core.Description": "Maps a property of the annotated entity type or a sibling property of the annotated property to a property of the Semantic Object", + "$BaseType": "Common.SemanticObjectMappingAbstract", "LocalProperty": { "$Type": "Edm.PropertyPath", "@Core.Description": "Path to a local property that provides the value for the Semantic Object property" - }, - "SemanticObjectProperty": { "@Core.Description": "Name of the Semantic Object property" } + } + }, + "SemanticObjectMappingConstant": { + "$Kind": "ComplexType", + "$BaseType": "Common.SemanticObjectMappingAbstract", + "@Common.Experimental": true, + "Constant": { + "$Type": "Edm.PrimitiveType", + "@Core.Description": "Constant value for the Semantic Object property" + } }, "SemanticObjectUnavailableActions": { "$Kind": "Term", @@ -990,7 +1012,7 @@ "$Type": "Common.QualifiedName", "$Nullable": true, "@Core.Description": "Action that shares a draft document with other users", - "@Core.LongDescription": "The action is bound to the draft document root node and has the following signature:\n\n - `Users`: collection of structure with properties\n\n   - `UserID` of type `String` and\n\n   - `UserAccessRole` of type `String` with possible values `O` (owner, can perform all draft actions), and `E` (editor, can change the draft)\n\n It restricts access to the listed users in their specified roles." + "@Core.LongDescription": "The action is bound to the draft document root node and has the following signature:\n- `Users`: collection of structure with properties\n - `UserID` of type `String` and\n - `UserAccessRole` of type `String` with possible values `O` (owner, can perform all draft actions), and `E` (editor, can change the draft)\n\nIt restricts access to the listed users in their specified roles.\n\nIf this action is present, the client can receive notifications about changes to the\ncollaborative draft by opening a web socket connection at the [`WebSocketBaseURL`](#WebSocketBaseURL)\nfollowed by URL parameters\n- `relatedService` = base URL (relative to server root) of the OData service of the app\n- `draft` = draft UUID." } }, "DraftNode": { @@ -1078,6 +1100,11 @@ "$Type": "Edm.NavigationPropertyPath", "@Core.Description": "Changes to one or more of these entities may affect the targets. An empty path means the annotation target." }, + "SourceEvents": { + "$Collection": true, + "@Common.Experimental": true, + "@Core.Description": "When the service raises one or more of these \"events for side effects\", the targets may be affected" + }, "TargetProperties": { "$Collection": true, "@Core.Description": "These structural properties may be affected if the value of one of the sources changes", @@ -1291,7 +1318,6 @@ "$Type": "Core.Tag", "$DefaultValue": true, "$AppliesTo": ["EntityContainer"], - "@Common.Experimental": true, "@Core.Description": "Sorting and filtering of amounts in multiple currencies needs special consideration", "@Core.LongDescription": "TODO: add link to UX documentation on https://experience.sap.com/fiori-design/" }, @@ -1318,7 +1344,16 @@ "$AppliesTo": ["EntityContainer"], "@Common.Experimental": true, "@Core.IsURL": true, - "@Core.Description": "Base URL for WebSocket connections" + "@Core.Description": "Base URL for WebSocket connections", + "@Core.LongDescription": "This annotation MUST be unqualified." + }, + "WebSocketChannel": { + "$Kind": "Term", + "$Nullable": true, + "$AppliesTo": ["EntityContainer"], + "@Common.Experimental": true, + "@Core.Description": "Channel for WebSocket connections", + "@Core.LongDescription": "Messages sent over the channel follow the [ABAP Push Channel Protocol](https://community.sap.com/t5/application-development-blog-posts/specification-of-the-push-channel-protocol-pcp/ba-p/13137541).\nTo consume a channel, the client opens a web socket connection at the [`WebSocketBaseURL`](#WebSocketBaseURL)\nfollowed by URL parameters\n- parameter name = annotation qualifier, parameter value = channel ID (see below)\n- parameter name = `relatedService`, parameter value = base URL (relative to server root) of the OData service of the app\n\n
Supported qualifiers and channel IDs:\n
`sideEffects`
Notifications about side effects to be triggered by the client (channel ID = non-null annotation value)\n
" }, "callback": { "$Kind": "Term", diff --git a/vocabularies/Common.md b/vocabularies/Common.md index 6b5fe7f2b..590672da7 100644 --- a/vocabularies/Common.md +++ b/vocabularies/Common.md @@ -14,133 +14,156 @@ Term|Type|Description [Label](Common.xml#L65)|String|A short, human-readable text suitable for labels and captions in UIs [Heading](Common.xml#L70)|String|A short, human-readable text suitable for column headings in UIs [QuickInfo](Common.xml#L75)|String|A short, human-readable text suitable for tool tips in UIs -[Text](Common.xml#L80)|String?|A descriptive text for values of the annotated property. Value MUST be a dynamic expression when used as metadata annotation.
Can be annotated with: -[TextFor](Common.xml#L90) *([Experimental](Common.md#Experimental))*|PropertyPath|The annotated property contains a descriptive text for values of the referenced property. -[ExternalID](Common.xml#L96) *([Experimental](Common.md#Experimental))*|String?|A human readable identifier for values of the annotated property or parameter. Value MUST be a dynamic expression when used as metadata annotation.
If the annotated property is (part of) a foreign key of a resource, the external id is a human readable (part of an) identifier of this resource. There is a one-to-one relationship between each possible value of the annotated property and the corresponding external id. The annotation of a parameter refers to a property of the operation binding parameter. -[IsLanguageIdentifier](Common.xml#L114) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|An identifier to distinguish multiple texts in different languages for the same entity -[TextFormat](Common.xml#L119)|[TextFormatType](#TextFormatType)|The annotated property, parameter, or return type contains human-readable text that may contain formatting information -[Timezone](Common.xml#L132) *([Experimental](Common.md#Experimental))*|String?|The point in time represented by the annotated property or parameter shall be interpreted in the given time zone
Time zones shall be specified according to the [IANA](https://www.iana.org/time-zones) standard. If this annotation is absent or null or an empty string, points in time are typically interpreted in the current user's or default time zone. The annotation value can be a path expression resolving to a property that may be tagged with [`IsTimezone`](#IsTimezone). -[IsTimezone](Common.xml#L142) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Annotated property or parameter is a time zone -[IsDigitSequence](Common.xml#L193)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Contains only digits -[IsUpperCase](Common.xml#L198)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Contains just uppercase characters -[IsCurrency](Common.xml#L203)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Annotated property or parameter is a currency code -[IsUnit](Common.xml#L208)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Annotated property or parameter is a unit of measure -[UnitSpecificScale](Common.xml#L212)|PrimitiveType|The number of fractional decimal digits of a currency amount or measured quantity
The annotated property contains a currency code or unit of measure, and the annotation value specifies the default scale of numeric values with that currency code or unit of measure. Can be used in e.g. a list of available currency codes or units of measure, or a list of measuring devices to specify the number of fractional digits captured by that device. -[UnitSpecificPrecision](Common.xml#L217) *([Experimental](Common.md#Experimental))*|PrimitiveType|The number of significant decimal digits of a currency amount or measured quantity
The annotated property contains a currency code or unit of measure, and the annotation value specifies the default precision of numeric values with that currency code or unit of measure. Can be used in e.g. a list of available currency codes or units of measure, or a list of measuring devices to specify the number of significant digits captured by that device. -[SecondaryKey](Common.xml#L223) *(Deprecated)*|\[PropertyPath\]|Use term `AlternateKeys` from the OASIS Core vocabulary instead -[MinOccurs](Common.xml#L235)|Int64|The annotated set or collection contains at least this number of items -[MaxOccurs](Common.xml#L239)|Int64|The annotated set or collection contains at most this number of items -[AssociationEntity](Common.xml#L243)|\[NavigationPropertyPath\]|Entity representing an n:m association with attributes -[DerivedNavigation](Common.xml#L250)|NavigationPropertyPath|Shortcut for a multi-segment navigation, contains the long path with all its segments -[Masked](Common.xml#L256) *(Deprecated)*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Use terms `MaskedValue` instead -[MaskedValue](Common.xml#L271) *([Experimental](Common.md#Experimental))*|String?|Property contains sensitive data that is by default not transferred
By default a masked property is excluded from responses and instead an instance annotation with this term is sent, containing a masked value that can be rendered by user interfaces. -[RevealOnDemand](Common.xml#L280) *([Experimental](Common.md#Experimental))*|Boolean|Unmasked data for this property can be requested with custom query option `masked-values=false` -[SemanticObject](Common.xml#L286)|String?|Name of the Semantic Object represented as this entity type or identified by this property -[SemanticObjectMapping](Common.xml#L289)|\[[SemanticObjectMappingType](#SemanticObjectMappingType)\]|Maps properties of the annotated entity type or sibling properties of the annotated property to properties of the Semantic Object
This allows "renaming" of properties in the current context to match property names of the Semantic Object, e.g. `SenderPartyID` to `PartyID`. Only properties explicitly listed in the mapping are renamed, all other properties are available for intent-based navigation with their "local" name. -[SemanticObjectUnavailableActions](Common.xml#L302)|\[String\]|List of actions that are not available in the current state of the instance of the Semantic Object -[IsInstanceAnnotation](Common.xml#L306)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Term can also be used as instance annotation; AppliesTo of this term specifies where it can be applied -[FilterExpressionRestrictions](Common.xml#L336) *(Deprecated)*|\[[FilterExpressionRestrictionType](#FilterExpressionRestrictionType)\]|Use term Capabilities.FilterRestrictions instead -[FieldControl](Common.xml#L379)|[FieldControlType?](#FieldControlType)|Control state of a property, parameter, or the media stream of a media entity
This term can be used for static field control, providing an enumeration member value in $metadata, as well as dynamically, providing a `Path` expression.
In the dynamic case the property referenced by the `Path` expression MUST be of type `Edm.Byte` to accommodate OData V2 services as well as V4 infrastructures that don't support enumeration types. -[ExceptionCategory](Common.xml#L436) *([Experimental](Common.md#Experimental))*|String|A machine-readable exception category -[Application](Common.xml#L441) *([Experimental](Common.md#Experimental))*|[ApplicationType](#ApplicationType)|... -[Timestamp](Common.xml#L461) *([Experimental](Common.md#Experimental))*|DateTimeOffset|... -[TransactionId](Common.xml#L466) *([Experimental](Common.md#Experimental))*|String|... -[ErrorResolution](Common.xml#L471) *([Experimental](Common.md#Experimental))*|[ErrorResolutionType](#ErrorResolutionType)|Hints for resolving this error -[Messages](Common.xml#L489)|\[ComplexType\]|Collection of end-user messages

The name of the message type is service-specific, its structure components are identified by naming convention, following the names of the OData error response structure.

The minimum structure is

-[additionalTargets](Common.xml#L505) *([Experimental](Common.md#Experimental))*|\[String\]|Additional targets for the message
This instance annotation can be applied to the `error` object and the objects within the `details` array of an OData error response -[longtextUrl](Common.xml#L511)|URL|Location of the message long text
This instance annotation can be applied to the `error` object and the objects within the `details` array of an OData error response -[numericSeverity](Common.xml#L517)|[NumericMessageSeverityType](#NumericMessageSeverityType)|Classifies an end-user message as info, success, warning, or error
This instance annotation can be applied to the `error` object and the objects within the `details` array of an OData error response -[MaximumNumericMessageSeverity](Common.xml#L522) *([Experimental](Common.md#Experimental))*|[NumericMessageSeverityType?](#NumericMessageSeverityType)|The maximum severity of all end-user messages attached to an entity, null if no messages are attached
This metadata annotation can be applied to entity types that are also annotated with term [`Common.Messages`](#Messages) -[IsActionCritical](Common.xml#L551)|Boolean|Criticality of the function or action to enforce a warning or similar before it's executed -[Attributes](Common.xml#L555)|\[PropertyPath\]|Attributes related to this property, which may occur in denormalized entity types -[RelatedRecursiveHierarchy](Common.xml#L559)|AnnotationPath|A recursive hierarchy related to this property. The annotation path must end in Aggregation.RecursiveHierarchy. -[Interval](Common.xml#L563)|[IntervalType](#IntervalType)|An interval with lower and upper boundaries described by two properties -[ResultContext](Common.xml#L586)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated entity type has one or more containment navigation properties. An instance of the annotated entity type provides the context required for determining the target entity sets reached by these containment navigation properties. -[SAPObjectNodeType](Common.xml#L594) *([Experimental](Common.md#Experimental))*|[SAPObjectNodeTypeType](#SAPObjectNodeTypeType)|The SAP Object Node Type represented by the annotated entity type
SAP Object Node Types define the structure of SAP Object Types, which are a generalization of Business Object, Technical Object, Configuration Object, and Analytical Object. -[Composition](Common.xml#L610) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated navigation property represents a logical composition, even though it is non-containment
The entities related via this navigation property have an existential dependency on their composition parent. The entity set of the composition parent MUST contain a NavigationPropertyBinding for this navigation property. -[SAPObjectNodeTypeReference](Common.xml#L619) *([Experimental](Common.md#Experimental))*|String|The entity referenced by the annotated property has the [`SAPObjectNodeType`](#SAPObjectNodeType) with this name
The entity containing the property and the entity referenced by it will in general have different SAP Object Node Types. -[IsNaturalPerson](Common.xml#L627)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated entity type (e.g. `Employee`) or annotation (e.g. `IsImageUrl`) represents a natural person -[ValueList](Common.xml#L633)|[ValueListType](#ValueListType)|Specifies how to get a list of acceptable values for a property or parameter
The value list can be based on user input that is passed in the value list request. The value list can be used for type-ahead and classical pick lists. -[ValueListRelevantQualifiers](Common.xml#L707)|\[[SimpleIdentifier](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)\]|List of qualifiers of relevant ValueList annotations
The value of this annotation is a dynamic expression for calculating the qualifiers of relevant value lists depending on the values of one or more other properties. -[ValueListWithFixedValues](Common.xml#L712)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|If specified as true, there's only one value list mapping and its value list consists of a small number of fixed values
Can be annotated with: -[ValueListShowValuesImmediately](Common.xml#L721) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|A value list with a very small number of fixed values, can decide to show all values immediately -[ValueListForValidation](Common.xml#L726)|String|Contains the qualifier of the ValueList or ValueListMapping that should be used for validation
An empty string identifies the ValueList or ValueListMapping without a qualifier. -[ValueListReferences](Common.xml#L731)|\[URL\]|A list of URLs of CSDL documents containing value list mappings for this parameter or property -[ValueListMapping](Common.xml#L736)|[ValueListMappingType](#ValueListMappingType)|Specifies the mapping between data service properties and value list properties
The value list can be filtered based on user input. It can be used for type-ahead and classical pick lists. There may be many alternative mappings with different qualifiers. -[IsCalendarYear](Common.xml#L848)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a year number as string following the logical pattern (-?)YYYY(Y*) consisting of an optional minus sign for years B.C. followed by at least four digits. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3}) -[IsCalendarHalfyear](Common.xml#L857)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a halfyear number as string following the logical pattern H consisting of a single digit. The string matches the regex pattern [1-2] -[IsCalendarQuarter](Common.xml#L866)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar quarter number as string following the logical pattern Q consisting of a single digit. The string matches the regex pattern [1-4] -[IsCalendarMonth](Common.xml#L875)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar month number as string following the logical pattern MM consisting of two digits. The string matches the regex pattern 0[1-9]\|1[0-2] -[IsCalendarWeek](Common.xml#L884)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar week number as string following the logical pattern WW consisting of two digits. The string matches the regex pattern 0[1-9]\|[1-4][0-9]\|5[0-3] -[IsDayOfCalendarMonth](Common.xml#L893)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Day number relative to a calendar month. Valid values are between 1 and 31. -[IsDayOfCalendarYear](Common.xml#L901)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Day number relative to a calendar year. Valid values are between 1 and 366. -[IsCalendarYearHalfyear](Common.xml#L909)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and halfyear as string following the logical pattern (-?)YYYY(Y*)H consisting of an optional minus sign for years B.C. followed by at least five digits, where the last digit represents the halfyear. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})[1-2] -[IsCalendarYearQuarter](Common.xml#L919)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and quarter as string following the logical pattern (-?)YYYY(Y*)Q consisting of an optional minus sign for years B.C. followed by at least five digits, where the last digit represents the quarter. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})[1-4] -[IsCalendarYearMonth](Common.xml#L929)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and month as string following the logical pattern (-?)YYYY(Y*)MM consisting of an optional minus sign for years B.C. followed by at least six digits, where the last two digits represent the months January to December. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})(0[1-9]\|1[0-2]) -[IsCalendarYearWeek](Common.xml#L940)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and week as string following the logical pattern (-?)YYYY(Y*)WW consisting of an optional minus sign for years B.C. followed by at least six digits, where the last two digits represent week number in the year. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})(0[1-9]\|[1-4][0-9]\|5[0-3]) -[IsCalendarDate](Common.xml#L950)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar date: year, month and day as string following the logical pattern (-?)YYYY(Y*)MMDD consisting of an optional minus sign for years B.C. followed by at least eight digits, where the last four digits represent the months January to December (MM) and the day of the month (DD). The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})(0[1-9]\|1[0-2])(0[1-9]\|[12][0-9]\|3[01]) The regex pattern does not reflect the additional constraint for "Day-of-month Values": The day value must be no more than 30 if month is one of 04, 06, 09, or 11, no more than 28 if month is 02 and year is not divisible by 4, or is divisible by 100 but not by 400, and no more than 29 if month is 02 and year is divisible by 400, or by 4 but not by 100. -[IsFiscalYear](Common.xml#L967)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year number as string following the logical pattern YYYY consisting of four digits. The string matches the regex pattern [1-9][0-9]{3} -[IsFiscalPeriod](Common.xml#L976)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal period as string following the logical pattern PPP consisting of three digits. The string matches the regex pattern [0-9]{3} -[IsFiscalYearPeriod](Common.xml#L985)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year and period as string following the logical pattern YYYYPPP consisting of seven digits, where the last three digits represent the fiscal period in the year. The string matches the regex pattern ([1-9][0-9]{3})([0-9]{3}) -[IsFiscalQuarter](Common.xml#L995)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal quarter number as string following the logical pattern Q consisting of a single digit. The string matches the regex pattern [1-4] -[IsFiscalYearQuarter](Common.xml#L1003)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year and quarter as string following the logical pattern YYYYQ consisting of five digits, where the last digit represents the quarter. The string matches the regex pattern [1-9][0-9]{3}[1-4] -[IsFiscalWeek](Common.xml#L1012)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal week number as string following the logical pattern WW consisting of two digits. The string matches the regex pattern 0[1-9]\|[1-4][0-9]\|5[0-3] -[IsFiscalYearWeek](Common.xml#L1020)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year and week as string following the logical pattern YYYYWW consisting of six digits, where the last two digits represent the week number in the year. The string matches the regex pattern [1-9][0-9]{3}(0[1-9]\|[1-4][0-9]\|5[0-3]) -[IsDayOfFiscalYear](Common.xml#L1029)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Day number relative to a fiscal year. Valid values are between 1 and 371. -[IsFiscalYearVariant](Common.xml#L1036)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year variant -[MutuallyExclusiveTerm](Common.xml#L1044)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Only one term of the group identified with the Qualifier attribute can be applied -[DraftRoot](Common.xml#L1050)|[DraftRootType](#DraftRootType)|Root entities of business documents that support the draft pattern -[DraftNode](Common.xml#L1091)|[DraftNodeType](#DraftNodeType)|Entities in this set are parts of business documents that support the draft pattern -[DraftActivationVia](Common.xml#L1113)|\[[SimpleIdentifier](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)\]|Draft entities in this set are indirectly activated via draft entities in the referenced entity sets -[EditableFieldFor](Common.xml#L1117)|PropertyPath|The annotated property is an editable field for the referenced key property -[SemanticKey](Common.xml#L1147)|\[PropertyPath\]|The listed properties form the semantic key, i.e. they are unique modulo IsActiveEntity -[SideEffects](Common.xml#L1151)|[SideEffectsType](#SideEffectsType)|Describes side-effects of modification operations -[DefaultValuesFunction](Common.xml#L1234)|[QualifiedName](#QualifiedName)|Function to calculate default values based on user input that is only known to the client and "context information" that is already available to the service
The default values function must have a bound overload whose binding parameter type matches the annotation target
- for an entity set: collection of entity type of entity set
- for a navigation property: identical to the type of the navigation property (single- or collection-valued)
- for a bound action/function: identical to the binding parameter type of the annotated action/function
In addition the overload can have non-binding parameters for values that the user has already entered:
- for an entity set or navigation property: each non-binding parameter name and type must match the name and type of a property of the entity to be created
- for an action or function: each non-binding parameter name and type must match the name and type of a non-binding parameter of the action or function to be called
The result type of the default values function is a complex type whose properties correspond in name and type to a subset of
- the properties of the entity to create, or
- the parameters of the action or function to call -[DerivedDefaultValue](Common.xml#L1263) *([Experimental](Common.md#Experimental))*|String|Function import to derive a default value for the property from a given context.
Function import has two parameters of complex types:
- `parameters`, a structure resembling the entity type the parameter entity set related to the entity set of the annotated property
- `properties`, a structure resembling the type of the entity set of the annotated property
The return type must be of the same type as the annotated property.
Arguments passed to the function import are used as context for deriving the default value. The function import returns this default value, or null in case such a value could not be determined. -[FilterDefaultValue](Common.xml#L1284)|PrimitiveType?|A default value for the property to be used in filter expressions. -[FilterDefaultValueHigh](Common.xml#L1288) *([Experimental](Common.md#Experimental))*|PrimitiveType?|A default upper limit for the property to be used in 'less than or equal' filter expressions. -[DerivedFilterDefaultValue](Common.xml#L1293) *([Experimental](Common.md#Experimental))*|String|Function import to derive a default value for the property from a given context in order to use it in filter expressions.
Function import has two parameters of complex types:
- `parameters`, a structure resembling the entity type the parameter entity set related to the entity set of the annotated property
- `properties`, a structure resembling the type of the entity set of the annotated property
The return type must be of the same type as the annotated property.
Arguments passed to the function import are used as context for deriving the default value. The function import returns this default value, or null in case such a value could not be determined. -[SortOrder](Common.xml#L1317)|\[[SortOrderType](#SortOrderType)\]|List of sort criteria
The items of the annotated entity set or the items of the collection of the annotated entity type are sorted by the first entry of the SortOrder collection. Items with same value for this first sort criteria are sorted by the second entry of the SortOrder collection, and so on. -[RecursiveHierarchy](Common.xml#L1377) *(Deprecated)*|[RecursiveHierarchyType](#RecursiveHierarchyType)|Use terms [Aggregation.RecursiveHierarchy](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#RecursiveHierarchy) and [Hierarchy.RecursiveHierarchy](https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.md#RecursiveHierarchy) instead -[CreatedAt](Common.xml#L1425)|DateTimeOffset?|Creation timestamp -[CreatedBy](Common.xml#L1429)|[UserID?](#UserID)|First editor -[ChangedAt](Common.xml#L1433)|DateTimeOffset?|Last modification timestamp -[ChangedBy](Common.xml#L1437)|[UserID?](#UserID)|Last editor -[OriginalProtocolVersion](Common.xml#L1449)|String|Original protocol version of a converted (V4) CSDL document, allowed values `2.0` and `3.0` -[ApplyMultiUnitBehaviorForSortingAndFiltering](Common.xml#L1454) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Sorting and filtering of amounts in multiple currencies needs special consideration
TODO: add link to UX documentation on https://experience.sap.com/fiori-design/ -[mediaUploadLink](Common.xml#L1460) *([Experimental](Common.md#Experimental))*|URL|URL for uploading new media content to a Document Management Service
In contrast to the `@odata.mediaEditLink` this URL allows to upload new media content without directly changing a stream property or media resource. The upload request typically uses HTTP POST with `Content-Type: multipart/form-data` following RFC 7578. The upload request must contain one multipart representing the content of the file. The `name` parameter in the `Content-Disposition` header (as described in RFC 7578) is irrelevant, but the `filename` parameter is expected. If the request succeeds the response will contain a JSON body of `Content-Type: application/json` with a JSON property `readLink`. The newly uploaded media resource can be linked to the stream property by changing the `@odata.mediaReadLink` to the value of this `readLink` in a subsequent PATCH request to the OData entity. -[PrimitivePropertyPath](Common.xml#L1475) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|A term or term property with this tag whose type is (a collection of) `Edm.PropertyPath` MUST resolve to a primitive structural property -[WebSocketBaseURL](Common.xml#L1480) *([Experimental](Common.md#Experimental))*|URL|Base URL for WebSocket connections -[callback](Common.xml#L1486) *([Experimental](Common.md#Experimental))*|[JSON](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.JSON.V1.md#JSON)|Data that the server has embedded within an error response to make a callback to the client
This instance annotation has the format of a [message body](https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_MessageBody) that could be a valid response to the given request. The callback allows the client to adjust the request so that it can be successfully repeated. An example for such a callback is a user interaction to resolve a conflict that was detected by the server, see [`UI.UserInteraction`](UI.md#UserInteraction). +[DocumentationRef](Common.xml#L80) *([Experimental](Common.md#Experimental))*|String|A URI referencing language-dependent documentation for the annotated model element ([Example](Common.xml#L83)) +[Text](Common.xml#L94)|String?|A descriptive text for values of the annotated property. Value MUST be a dynamic expression when used as metadata annotation.
Applicable Annotation Terms: +[TextFor](Common.xml#L104) *([Experimental](Common.md#Experimental))*|PropertyPath|The annotated property contains a descriptive text for values of the referenced property. +[ExternalID](Common.xml#L110) *([Experimental](Common.md#Experimental))*|String?|A human readable identifier for values of the annotated property or parameter. Value MUST be a dynamic expression when used as metadata annotation.
If the annotated property is (part of) a foreign key of a resource, the external id is a human readable (part of an) identifier of this resource. There is a one-to-one relationship between each possible value of the annotated property and the corresponding external id. The annotation of a parameter refers to a property of the operation binding parameter. +[IsLanguageIdentifier](Common.xml#L128) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|An identifier to distinguish multiple texts in different languages for the same entity +[TextFormat](Common.xml#L133)|[TextFormatType](#TextFormatType)|The annotated property, parameter, or return type contains human-readable text that may contain formatting information +[Timezone](Common.xml#L146) *([Experimental](Common.md#Experimental))*|String?|The point in time represented by the annotated property or parameter shall be interpreted in the given time zone
Time zones shall be specified according to the [IANA](https://www.iana.org/time-zones) standard. If this annotation is absent or null or an empty string, points in time are typically interpreted in the current user's or default time zone. The annotation value can be a path expression resolving to a property that may be tagged with [`IsTimezone`](#IsTimezone). +[IsTimezone](Common.xml#L156) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Annotated property or parameter is a time zone +[IsDigitSequence](Common.xml#L207)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Contains only digits +[IsUpperCase](Common.xml#L212)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Contains just uppercase characters +[IsCurrency](Common.xml#L217)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Annotated property or parameter is a currency code +[IsUnit](Common.xml#L222)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Annotated property or parameter is a unit of measure +[UnitSpecificScale](Common.xml#L226)|PrimitiveType|The number of fractional decimal digits of a currency amount or measured quantity
The annotated property contains a currency code or unit of measure, and the annotation value specifies the default scale of numeric values with that currency code or unit of measure. Can be used in e.g. a list of available currency codes or units of measure, or a list of measuring devices to specify the number of fractional digits captured by that device. +[UnitSpecificPrecision](Common.xml#L231) *([Experimental](Common.md#Experimental))*|PrimitiveType|The number of significant decimal digits of a currency amount or measured quantity
The annotated property contains a currency code or unit of measure, and the annotation value specifies the default precision of numeric values with that currency code or unit of measure. Can be used in e.g. a list of available currency codes or units of measure, or a list of measuring devices to specify the number of significant digits captured by that device. +[SecondaryKey](Common.xml#L237)|\[PropertyPath\]|The listed properties form a secondary key
Multiple secondary keys are possible using different qualifiers. Unlike [`Core.AlternateKeys`](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#AlternateKeys), secondary keys need not support addressing an entity in a resource path. +[MinOccurs](Common.xml#L246)|Int64|The annotated set or collection contains at least this number of items +[MaxOccurs](Common.xml#L250)|Int64|The annotated set or collection contains at most this number of items +[AssociationEntity](Common.xml#L254)|\[NavigationPropertyPath\]|Entity representing an n:m association with attributes +[DerivedNavigation](Common.xml#L261)|NavigationPropertyPath|Shortcut for a multi-segment navigation, contains the long path with all its segments +[Masked](Common.xml#L267) *(Deprecated)*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Use terms `MaskedValue` instead +[MaskedValue](Common.xml#L282) *([Experimental](Common.md#Experimental))*|String?|Property contains sensitive data that is by default not transferred
By default a masked property is excluded from responses and instead an instance annotation with this term is sent, containing a masked value that can be rendered by user interfaces. +[RevealOnDemand](Common.xml#L291) *([Experimental](Common.md#Experimental))*|Boolean|Unmasked data for this property can be requested with custom query option `masked-values=false` +[SemanticObject](Common.xml#L297)|String?|Name of the Semantic Object represented as this entity type or identified by this property +[SemanticObjectMapping](Common.xml#L300)|\[[SemanticObjectMappingAbstract](#SemanticObjectMappingAbstract)\]|Maps properties of the annotated entity type or sibling properties of the annotated property to properties of the Semantic Object
This allows "renaming" of properties in the current context to match property names of the Semantic Object, e.g. `SenderPartyID` to `PartyID`. Only properties explicitly listed in the mapping are renamed, all other properties are available for intent-based navigation with their "local" name. +[SemanticObjectUnavailableActions](Common.xml#L321)|\[String\]|List of actions that are not available in the current state of the instance of the Semantic Object +[IsInstanceAnnotation](Common.xml#L325)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Term can also be used as instance annotation; AppliesTo of this term specifies where it can be applied +[FilterExpressionRestrictions](Common.xml#L355) *(Deprecated)*|\[[FilterExpressionRestrictionType](#FilterExpressionRestrictionType)\]|Use term Capabilities.FilterRestrictions instead +[FieldControl](Common.xml#L398)|[FieldControlType?](#FieldControlType)|Control state of a property, parameter, or the media stream of a media entity
This term can be used for static field control, providing an enumeration member value in $metadata, as well as dynamically, providing a `Path` expression.
In the dynamic case the property referenced by the `Path` expression MUST be of type `Edm.Byte` to accommodate OData V2 services as well as V4 infrastructures that don't support enumeration types. +[ExceptionCategory](Common.xml#L455) *([Experimental](Common.md#Experimental))*|String|A machine-readable exception category +[Application](Common.xml#L460) *([Experimental](Common.md#Experimental))*|[ApplicationType](#ApplicationType)|... +[Timestamp](Common.xml#L480) *([Experimental](Common.md#Experimental))*|DateTimeOffset|... +[TransactionId](Common.xml#L485) *([Experimental](Common.md#Experimental))*|String|... +[ErrorResolution](Common.xml#L490) *([Experimental](Common.md#Experimental))*|[ErrorResolutionType](#ErrorResolutionType)|Hints for resolving this error +[Messages](Common.xml#L508)|\[ComplexType\]|Collection of end-user messages

The name of the message type is service-specific, its structure components are identified by naming convention, following the names of the OData error response structure.

The minimum structure is

+[additionalTargets](Common.xml#L524) *([Experimental](Common.md#Experimental))*|\[String\]|Additional targets for the message
This instance annotation can be applied to the `error` object and the objects within the `details` array of an OData error response +[longtextUrl](Common.xml#L530)|URL|Location of the message long text
This instance annotation can be applied to the `error` object and the objects within the `details` array of an OData error response +[numericSeverity](Common.xml#L536)|[NumericMessageSeverityType](#NumericMessageSeverityType)|Classifies an end-user message as info, success, warning, or error
This instance annotation can be applied to the `error` object and the objects within the `details` array of an OData error response +[MaximumNumericMessageSeverity](Common.xml#L541) *([Experimental](Common.md#Experimental))*|[NumericMessageSeverityType?](#NumericMessageSeverityType)|The maximum severity of all end-user messages attached to an entity, null if no messages are attached
This metadata annotation can be applied to entity types that are also annotated with term [`Common.Messages`](#Messages) +[IsActionCritical](Common.xml#L570)|Boolean|Criticality of the function or action to enforce a warning or similar before it's executed +[Attributes](Common.xml#L574)|\[PropertyPath\]|Attributes related to this property, which may occur in denormalized entity types +[RelatedRecursiveHierarchy](Common.xml#L578)|AnnotationPath|A recursive hierarchy related to this property. The annotation path must end in Aggregation.RecursiveHierarchy. +[Interval](Common.xml#L582)|[IntervalType](#IntervalType)|An interval with lower and upper boundaries described by two properties +[ResultContext](Common.xml#L605)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated entity type has one or more containment navigation properties. An instance of the annotated entity type provides the context required for determining the target entity sets reached by these containment navigation properties. +[SAPObjectNodeType](Common.xml#L613) *([Experimental](Common.md#Experimental))*|[SAPObjectNodeTypeType](#SAPObjectNodeTypeType)|The SAP Object Node Type represented by the annotated entity type
SAP Object Node Types define the structure of SAP Object Types, which are a generalization of Business Object, Technical Object, Configuration Object, and Analytical Object. +[Composition](Common.xml#L629) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated navigation property represents a logical composition, even though it is non-containment
The entities related via this navigation property have an existential dependency on their composition parent. The entity set of the composition parent MUST contain a NavigationPropertyBinding for this navigation property. +[SAPObjectNodeTypeReference](Common.xml#L638) *([Experimental](Common.md#Experimental))*|String|The entity referenced by the annotated property has the [`SAPObjectNodeType`](#SAPObjectNodeType) with this name
The entity containing the property and the entity referenced by it will in general have different SAP Object Node Types. +[IsNaturalPerson](Common.xml#L646)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated entity type (e.g. `Employee`) or annotation (e.g. `IsImageUrl`) represents a natural person +[ValueList](Common.xml#L652)|[ValueListType](#ValueListType)|Specifies how to get a list of acceptable values for a property or parameter
The value list can be based on user input that is passed in the value list request. The value list can be used for type-ahead and classical pick lists. +[ValueListRelevantQualifiers](Common.xml#L726)|\[[SimpleIdentifier](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)\]|List of qualifiers of relevant ValueList annotations
The value of this annotation is a dynamic expression for calculating the qualifiers of relevant value lists depending on the values of one or more other properties. +[ValueListWithFixedValues](Common.xml#L731)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|If specified as true, there's only one value list mapping and its value list consists of a small number of fixed values
Applicable Annotation Terms: +[ValueListShowValuesImmediately](Common.xml#L740) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|A value list with a very small number of fixed values, can decide to show all values immediately +[ValueListForValidation](Common.xml#L745)|String|Contains the qualifier of the ValueList or ValueListMapping that should be used for validation
An empty string identifies the ValueList or ValueListMapping without a qualifier. +[ValueListReferences](Common.xml#L750)|\[URL\]|A list of URLs of CSDL documents containing value list mappings for this parameter or property +[ValueListMapping](Common.xml#L755)|[ValueListMappingType](#ValueListMappingType)|Specifies the mapping between data service properties and value list properties
The value list can be filtered based on user input. It can be used for type-ahead and classical pick lists. There may be many alternative mappings with different qualifiers. +[IsCalendarYear](Common.xml#L867)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a year number as string following the logical pattern (-?)YYYY(Y*) consisting of an optional minus sign for years B.C. followed by at least four digits. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3}) +[IsCalendarHalfyear](Common.xml#L876)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a halfyear number as string following the logical pattern H consisting of a single digit. The string matches the regex pattern [1-2] +[IsCalendarQuarter](Common.xml#L885)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar quarter number as string following the logical pattern Q consisting of a single digit. The string matches the regex pattern [1-4] +[IsCalendarMonth](Common.xml#L894)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar month number as string following the logical pattern MM consisting of two digits. The string matches the regex pattern 0[1-9]\|1[0-2] +[IsCalendarWeek](Common.xml#L903)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar week number as string following the logical pattern WW consisting of two digits. The string matches the regex pattern 0[1-9]\|[1-4][0-9]\|5[0-3] +[IsDayOfCalendarMonth](Common.xml#L912)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Day number relative to a calendar month. Valid values are between 1 and 31. +[IsDayOfCalendarYear](Common.xml#L920)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Day number relative to a calendar year. Valid values are between 1 and 366. +[IsCalendarYearHalfyear](Common.xml#L928)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and halfyear as string following the logical pattern (-?)YYYY(Y*)H consisting of an optional minus sign for years B.C. followed by at least five digits, where the last digit represents the halfyear. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})[1-2] +[IsCalendarYearQuarter](Common.xml#L938)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and quarter as string following the logical pattern (-?)YYYY(Y*)Q consisting of an optional minus sign for years B.C. followed by at least five digits, where the last digit represents the quarter. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})[1-4] +[IsCalendarYearMonth](Common.xml#L948)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and month as string following the logical pattern (-?)YYYY(Y*)MM consisting of an optional minus sign for years B.C. followed by at least six digits, where the last two digits represent the months January to December. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})(0[1-9]\|1[0-2]) +[IsCalendarYearWeek](Common.xml#L959)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar year and week as string following the logical pattern (-?)YYYY(Y*)WW consisting of an optional minus sign for years B.C. followed by at least six digits, where the last two digits represent week number in the year. The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})(0[1-9]\|[1-4][0-9]\|5[0-3]) +[IsCalendarDate](Common.xml#L969)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a calendar date: year, month and day as string following the logical pattern (-?)YYYY(Y*)MMDD consisting of an optional minus sign for years B.C. followed by at least eight digits, where the last four digits represent the months January to December (MM) and the day of the month (DD). The string matches the regex pattern -?([1-9][0-9]{3,}\|0[0-9]{3})(0[1-9]\|1[0-2])(0[1-9]\|[12][0-9]\|3[01]) The regex pattern does not reflect the additional constraint for "Day-of-month Values": The day value must be no more than 30 if month is one of 04, 06, 09, or 11, no more than 28 if month is 02 and year is not divisible by 4, or is divisible by 100 but not by 400, and no more than 29 if month is 02 and year is divisible by 400, or by 4 but not by 100. +[IsFiscalYear](Common.xml#L986)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year number as string following the logical pattern YYYY consisting of four digits. The string matches the regex pattern [1-9][0-9]{3} +[IsFiscalPeriod](Common.xml#L995)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal period as string following the logical pattern PPP consisting of three digits. The string matches the regex pattern [0-9]{3} +[IsFiscalYearPeriod](Common.xml#L1004)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year and period as string following the logical pattern YYYYPPP consisting of seven digits, where the last three digits represent the fiscal period in the year. The string matches the regex pattern ([1-9][0-9]{3})([0-9]{3}) +[IsFiscalQuarter](Common.xml#L1014)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal quarter number as string following the logical pattern Q consisting of a single digit. The string matches the regex pattern [1-4] +[IsFiscalYearQuarter](Common.xml#L1022)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year and quarter as string following the logical pattern YYYYQ consisting of five digits, where the last digit represents the quarter. The string matches the regex pattern [1-9][0-9]{3}[1-4] +[IsFiscalWeek](Common.xml#L1031)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal week number as string following the logical pattern WW consisting of two digits. The string matches the regex pattern 0[1-9]\|[1-4][0-9]\|5[0-3] +[IsFiscalYearWeek](Common.xml#L1039)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year and week as string following the logical pattern YYYYWW consisting of six digits, where the last two digits represent the week number in the year. The string matches the regex pattern [1-9][0-9]{3}(0[1-9]\|[1-4][0-9]\|5[0-3]) +[IsDayOfFiscalYear](Common.xml#L1048)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Day number relative to a fiscal year. Valid values are between 1 and 371. +[IsFiscalYearVariant](Common.xml#L1055)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property encodes a fiscal year variant +[MutuallyExclusiveTerm](Common.xml#L1063)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Only one term of the group identified with the Qualifier attribute can be applied +[DraftRoot](Common.xml#L1069)|[DraftRootType](#DraftRootType)|Root entities of business documents that support the draft pattern +[DraftNode](Common.xml#L1113)|[DraftNodeType](#DraftNodeType)|Entities in this set are parts of business documents that support the draft pattern +[DraftActivationVia](Common.xml#L1135)|\[[SimpleIdentifier](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)\]|Draft entities in this set are indirectly activated via draft entities in the referenced entity sets +[EditableFieldFor](Common.xml#L1139)|PropertyPath|The annotated property is an editable field for the referenced key property +[SemanticKey](Common.xml#L1169)|\[PropertyPath\]|The listed properties form the semantic key, i.e. they are unique modulo IsActiveEntity +[SideEffects](Common.xml#L1173)|[SideEffectsType](#SideEffectsType)|Describes side-effects of modification operations +[DefaultValuesFunction](Common.xml#L1260)|[QualifiedName](#QualifiedName)|Function to calculate default values based on user input that is only known to the client and "context information" that is already available to the service
The default values function must have a bound overload whose binding parameter type matches the annotation target
- for an entity set: collection of entity type of entity set
- for a navigation property: identical to the type of the navigation property (single- or collection-valued)
- for a bound action/function: identical to the binding parameter type of the annotated action/function
In addition the overload can have non-binding parameters for values that the user has already entered:
- for an entity set or navigation property: each non-binding parameter name and type must match the name and type of a property of the entity to be created
- for an action or function: each non-binding parameter name and type must match the name and type of a non-binding parameter of the action or function to be called
The result type of the default values function is a complex type whose properties correspond in name and type to a subset of
- the properties of the entity to create, or
- the parameters of the action or function to call +[DerivedDefaultValue](Common.xml#L1289) *([Experimental](Common.md#Experimental))*|String|Function import to derive a default value for the property from a given context.
Function import has two parameters of complex types:
- `parameters`, a structure resembling the entity type the parameter entity set related to the entity set of the annotated property
- `properties`, a structure resembling the type of the entity set of the annotated property
The return type must be of the same type as the annotated property.
Arguments passed to the function import are used as context for deriving the default value. The function import returns this default value, or null in case such a value could not be determined. +[FilterDefaultValue](Common.xml#L1310)|PrimitiveType?|A default value for the property to be used in filter expressions. +[FilterDefaultValueHigh](Common.xml#L1314) *([Experimental](Common.md#Experimental))*|PrimitiveType?|A default upper limit for the property to be used in 'less than or equal' filter expressions. +[DerivedFilterDefaultValue](Common.xml#L1319) *([Experimental](Common.md#Experimental))*|String|Function import to derive a default value for the property from a given context in order to use it in filter expressions.
Function import has two parameters of complex types:
- `parameters`, a structure resembling the entity type the parameter entity set related to the entity set of the annotated property
- `properties`, a structure resembling the type of the entity set of the annotated property
The return type must be of the same type as the annotated property.
Arguments passed to the function import are used as context for deriving the default value. The function import returns this default value, or null in case such a value could not be determined. +[SortOrder](Common.xml#L1343)|\[[SortOrderType](#SortOrderType)\]|List of sort criteria
The items of the annotated entity set or the items of the collection of the annotated entity type are sorted by the first entry of the SortOrder collection. Items with same value for this first sort criteria are sorted by the second entry of the SortOrder collection, and so on. +[RecursiveHierarchy](Common.xml#L1403) *(Deprecated)*|[RecursiveHierarchyType](#RecursiveHierarchyType)|Use terms [Aggregation.RecursiveHierarchy](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#RecursiveHierarchy) and [Hierarchy.RecursiveHierarchy](https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.md#RecursiveHierarchy) instead +[CreatedAt](Common.xml#L1451)|DateTimeOffset?|Creation timestamp +[CreatedBy](Common.xml#L1455)|[UserID?](#UserID)|First editor +[ChangedAt](Common.xml#L1459)|DateTimeOffset?|Last modification timestamp +[ChangedBy](Common.xml#L1463)|[UserID?](#UserID)|Last editor +[OriginalProtocolVersion](Common.xml#L1475)|String|Original protocol version of a converted (V4) CSDL document, allowed values `2.0` and `3.0` +[ApplyMultiUnitBehaviorForSortingAndFiltering](Common.xml#L1480)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Sorting and filtering of amounts in multiple currencies needs special consideration
TODO: add link to UX documentation on https://experience.sap.com/fiori-design/ +[mediaUploadLink](Common.xml#L1485) *([Experimental](Common.md#Experimental))*|URL|URL for uploading new media content to a Document Management Service
In contrast to the `@odata.mediaEditLink` this URL allows to upload new media content without directly changing a stream property or media resource. The upload request typically uses HTTP POST with `Content-Type: multipart/form-data` following RFC 7578. The upload request must contain one multipart representing the content of the file. The `name` parameter in the `Content-Disposition` header (as described in RFC 7578) is irrelevant, but the `filename` parameter is expected. If the request succeeds the response will contain a JSON body of `Content-Type: application/json` with a JSON property `readLink`. The newly uploaded media resource can be linked to the stream property by changing the `@odata.mediaReadLink` to the value of this `readLink` in a subsequent PATCH request to the OData entity. +[PrimitivePropertyPath](Common.xml#L1500) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|A term or term property with this tag whose type is (a collection of) `Edm.PropertyPath` MUST resolve to a primitive structural property +[WebSocketBaseURL](Common.xml#L1505) *([Experimental](Common.md#Experimental))*|URL|Base URL for WebSocket connections
This annotation MUST be unqualified. +[WebSocketChannel](Common.xml#L1513) *([Experimental](Common.md#Experimental))*|String?|Channel for WebSocket connections

Messages sent over the channel follow the ABAP Push Channel Protocol. To consume a channel, the client opens a web socket connection at the WebSocketBaseURL followed by URL parameters

Supported qualifiers and channel IDs:
`sideEffects`
Notifications about side effects to be triggered by the client (channel ID = non-null annotation value)
+[callback](Common.xml#L1529) *([Experimental](Common.md#Experimental))*|[JSON](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.JSON.V1.md#JSON)|Data that the server has embedded within an error response to make a callback to the client
This instance annotation has the format of a [message body](https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_MessageBody) that could be a valid response to the given request. The callback allows the client to adjust the request so that it can be successfully repeated. An example for such a callback is a user interaction to resolve a conflict that was detected by the server, see [`UI.UserInteraction`](UI.md#UserInteraction). -## [TextFormatType](Common.xml#L123) +## [TextFormatType](Common.xml#L137) Member|Value|Description :-----|----:|:---------- -[plain](Common.xml#L124)|0|Plain text, line breaks represented as the character 0x0A -[html](Common.xml#L127)|1|Plain text with markup that can validly appear directly within an HTML DIV element +[plain](Common.xml#L138)|0|Plain text, line breaks represented as the character 0x0A +[html](Common.xml#L141)|1|Plain text with markup that can validly appear directly within an HTML DIV element + + +## [*SemanticObjectMappingAbstract*](Common.xml#L304) +Maps a property of the Semantic Object to a property of the annotated entity type or a sibling property of the annotated property or a constant value + +**Derived Types:** +- [SemanticObjectMappingType](#SemanticObjectMappingType) +- [SemanticObjectMappingConstant](#SemanticObjectMappingConstant) + +Property|Type|Description +:-------|:---|:---------- +[SemanticObjectProperty](Common.xml#L306)|String|Name of the Semantic Object property -## [SemanticObjectMappingType](Common.xml#L293) -Maps a property of the annotated entity type or a sibling property of the annotated property to a property of the Semantic Object +## [SemanticObjectMappingType](Common.xml#L310): [SemanticObjectMappingAbstract](#SemanticObjectMappingAbstract) + + +Property|Type|Description +:-------|:---|:---------- +[*SemanticObjectProperty*](Common.xml#L306)|String|Name of the Semantic Object property +[LocalProperty](Common.xml#L311)|PropertyPath|Path to a local property that provides the value for the Semantic Object property + + +## [SemanticObjectMappingConstant](Common.xml#L315): [SemanticObjectMappingAbstract](#SemanticObjectMappingAbstract) *([Experimental](Common.md#Experimental))* + Property|Type|Description :-------|:---|:---------- -[LocalProperty](Common.xml#L295)|PropertyPath|Path to a local property that provides the value for the Semantic Object property -[SemanticObjectProperty](Common.xml#L298)|String|Name of the Semantic Object property +[*SemanticObjectProperty*](Common.xml#L306)|String|Name of the Semantic Object property +[Constant](Common.xml#L317)|PrimitiveType|Constant value for the Semantic Object property -## [FilterExpressionRestrictionType](Common.xml#L347) *(Deprecated)* +## [FilterExpressionRestrictionType](Common.xml#L366) *(Deprecated)* Use term Capabilities.FilterRestrictions instead -## [FilterExpressionType](Common.xml#L359) *(Deprecated)* +## [FilterExpressionType](Common.xml#L378) *(Deprecated)* Use term Capabilities.FilterRestrictions instead -## [FieldControlType](Common.xml#L384) +## [FieldControlType](Common.xml#L403) Control state of a property When changes are requested, the value of this annotation in the before-image or after-image @@ -148,117 +171,117 @@ When changes are requested, the value of this annotation in the before-image or Member|Value|Description :-----|----:|:---------- -[Mandatory](Common.xml#L390)|7|Property is mandatory from a business perspective

A request that

fails entirely if this annotation is Mandatory in the after-image of the request. The empty string is an empty value. Service-specific rules may consider other values, also of non-string type, empty. Values in draft entities are never considered empty. Mandatory properties SHOULD be decorated in the UI with an asterisk. Null or empty values can also be disallowed by restricting the property value range with the standard type facet Nullable or terms from the Validation vocabulary.

-[Optional](Common.xml#L406)|3|Property may have a value
This value does not make sense as a static annotation value. -[ReadOnly](Common.xml#L410)|1|Property value cannot be changed
A request to change the property to a value that differs from the before-image fails entirely according to [OData-Protocol, section 11.4.3](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_UpdateanEntity) if this annotation is given dynamically as `ReadOnly` in the before-image of the request.
To statically mark a property as read-only use term [Core.Computed](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Computed) instead. -[Inapplicable](Common.xml#L420)|0|Property has no meaning in the current entity state
A request that sets the property to a non-initial non-null value fails entirely if this annotation is `Inapplicable` in the after-image of the request.
This value does not make sense as a static annotation value.
Example for dynamic use: in a travel expense report the property `DestinationCountry` is inapplicable if trip type is domestic, and mandatory if trip type is international. -[Hidden](Common.xml#L430)|0|Deprecated synonym for Inapplicable, do not use
To statically hide a property on a UI use [UI.Hidden](UI.md#Hidden) instead +[Mandatory](Common.xml#L409)|7|Property is mandatory from a business perspective

A request that

fails entirely if this annotation is Mandatory in the after-image of the request. The empty string is an empty value. Service-specific rules may consider other values, also of non-string type, empty. Values in draft entities are never considered empty. Mandatory properties SHOULD be decorated in the UI with an asterisk. Null or empty values can also be disallowed by restricting the property value range with the standard type facet Nullable or terms from the Validation vocabulary.

+[Optional](Common.xml#L425)|3|Property may have a value
This value does not make sense as a static annotation value. +[ReadOnly](Common.xml#L429)|1|Property value cannot be changed
A request to change the property to a value that differs from the before-image fails entirely according to [OData-Protocol, section 11.4.3](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_UpdateanEntity) if this annotation is given dynamically as `ReadOnly` in the before-image of the request.
To statically mark a property as read-only use term [Core.Computed](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Computed) instead. +[Inapplicable](Common.xml#L439)|0|Property has no meaning in the current entity state
A request that sets the property to a non-initial non-null value fails entirely if this annotation is `Inapplicable` in the after-image of the request.
This value does not make sense as a static annotation value.
Example for dynamic use: in a travel expense report the property `DestinationCountry` is inapplicable if trip type is domestic, and mandatory if trip type is international. +[Hidden](Common.xml#L449)|0|Deprecated synonym for Inapplicable, do not use
To statically hide a property on a UI use [UI.Hidden](UI.md#Hidden) instead -## [ApplicationType](Common.xml#L446) *([Experimental](Common.md#Experimental))* +## [ApplicationType](Common.xml#L465) *([Experimental](Common.md#Experimental))* Property|Type|Description :-------|:---|:---------- -[Component](Common.xml#L448)|String?|Software component of service implementation -[ServiceRepository](Common.xml#L451)|String?|... -[ServiceId](Common.xml#L454)|String?|... -[ServiceVersion](Common.xml#L457)|String?|... +[Component](Common.xml#L467)|String?|Software component of service implementation +[ServiceRepository](Common.xml#L470)|String?|... +[ServiceId](Common.xml#L473)|String?|... +[ServiceVersion](Common.xml#L476)|String?|... -## [ErrorResolutionType](Common.xml#L476) *([Experimental](Common.md#Experimental))* +## [ErrorResolutionType](Common.xml#L495) *([Experimental](Common.md#Experimental))* Property|Type|Description :-------|:---|:---------- -[Analysis](Common.xml#L478)|String?|Short hint on how to analyze this error -[Note](Common.xml#L481)|String?|Note for error resolution -[AdditionalNote](Common.xml#L484)|String?|Additional note for error resolution +[Analysis](Common.xml#L497)|String?|Short hint on how to analyze this error +[Note](Common.xml#L500)|String?|Note for error resolution +[AdditionalNote](Common.xml#L503)|String?|Additional note for error resolution -## [NumericMessageSeverityType](Common.xml#L527) +## [NumericMessageSeverityType](Common.xml#L546) **Type:** Byte Classifies an end-user message as info, success, warning, or error Allowed Value|Description :------------|:---------- -[1](Common.xml#L531)|Success - no action required -[2](Common.xml#L535)|Information - no action required -[3](Common.xml#L539)|Warning - action may be required -[4](Common.xml#L543)|Error - action is required +[1](Common.xml#L550)|Success - no action required +[2](Common.xml#L554)|Information - no action required +[3](Common.xml#L558)|Warning - action may be required +[4](Common.xml#L562)|Error - action is required -## [IntervalType](Common.xml#L566) +## [IntervalType](Common.xml#L585) Property|Type|Description :-------|:---|:---------- -[Label](Common.xml#L567) *([Experimental](Common.md#Experimental))*|String?|A short, human-readable text suitable for labels and captions in UIs -[LowerBoundary](Common.xml#L572)|PropertyPath|Property holding the lower interval boundary -[LowerBoundaryIncluded](Common.xml#L575)|Boolean|The lower boundary value is included in the interval -[UpperBoundary](Common.xml#L578)|PropertyPath|Property holding the upper interval boundary -[UpperBoundaryIncluded](Common.xml#L581)|Boolean|The upper boundary value is included in the interval +[Label](Common.xml#L586) *([Experimental](Common.md#Experimental))*|String?|A short, human-readable text suitable for labels and captions in UIs +[LowerBoundary](Common.xml#L591)|PropertyPath|Property holding the lower interval boundary +[LowerBoundaryIncluded](Common.xml#L594)|Boolean|The lower boundary value is included in the interval +[UpperBoundary](Common.xml#L597)|PropertyPath|Property holding the upper interval boundary +[UpperBoundaryIncluded](Common.xml#L600)|Boolean|The upper boundary value is included in the interval -## [SAPObjectNodeTypeType](Common.xml#L602) *([Experimental](Common.md#Experimental))* +## [SAPObjectNodeTypeType](Common.xml#L621) *([Experimental](Common.md#Experimental))* Information about an SAP Object Node Type Property|Type|Description :-------|:---|:---------- -[Name](Common.xml#L605)|String|The name of the SAP Object Node Type +[Name](Common.xml#L624)|String|The name of the SAP Object Node Type -## [ValueListType](Common.xml#L637) +## [ValueListType](Common.xml#L656) Property|Type|Description :-------|:---|:---------- -[Label](Common.xml#L658)|String?|Headline for value list, fallback is the label of the property or parameter -[CollectionPath](Common.xml#L662)|String|Resource path of an OData collection with possible values, relative to CollectionRoot -[CollectionRoot](Common.xml#L665)|String?|Service root of the value list collection; not specified means local to the document containing the annotation -[DistinctValuesSupported](Common.xml#L668)|Boolean|Indicates that the value list supports a 'distinct' aggregation on the value list properties defined via ValueListParameterInOut and ValueListParameterOut -[SearchSupported](Common.xml#L671)|Boolean|Value list supports the $search query option
The value of the target property is used as the search expression instead of in $filter -[FetchValues](Common.xml#L675)|[FetchValuesType?](#FetchValuesType)|Hint on when to fetch values -[PresentationVariantQualifier](Common.xml#L678)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Alternative representation of a value help, e.g. as a bar chart
Qualifier for annotation with term [UI.PresentationVariant](UI.md#PresentationVariant) on the entity set identified via CollectionPath -[SelectionVariantQualifier](Common.xml#L682)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Optional combination of parameters and filters to query the value help entity set
Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath -[Parameters](Common.xml#L686)|\[[ValueListParameter](#ValueListParameter)\]|Instructions on how to construct the value list request and consume response properties +[Label](Common.xml#L677)|String?|Headline for value list, fallback is the label of the property or parameter +[CollectionPath](Common.xml#L681)|String|Resource path of an OData collection with possible values, relative to CollectionRoot +[CollectionRoot](Common.xml#L684)|String?|Service root of the value list collection; not specified means local to the document containing the annotation +[DistinctValuesSupported](Common.xml#L687)|Boolean|Indicates that the value list supports a 'distinct' aggregation on the value list properties defined via ValueListParameterInOut and ValueListParameterOut +[SearchSupported](Common.xml#L690)|Boolean|Value list supports the $search query option
The value of the target property is used as the search expression instead of in $filter +[FetchValues](Common.xml#L694)|[FetchValuesType?](#FetchValuesType)|Hint on when to fetch values +[PresentationVariantQualifier](Common.xml#L697)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Alternative representation of a value help, e.g. as a bar chart
Qualifier for annotation with term [UI.PresentationVariant](UI.md#PresentationVariant) on the entity set identified via CollectionPath +[SelectionVariantQualifier](Common.xml#L701)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Optional combination of parameters and filters to query the value help entity set
Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath +[Parameters](Common.xml#L705)|\[[ValueListParameter](#ValueListParameter)\]|Instructions on how to construct the value list request and consume response properties **Applicable Annotation Terms:** - [QuickInfo](#QuickInfo) -## [FetchValuesType](Common.xml#L691) +## [FetchValuesType](Common.xml#L710) **Type:** Byte Hint on when to fetch values Allowed Value|Description :------------|:---------- -[1](Common.xml#L695)|Fetch values immediately without filter -[2](Common.xml#L699)|Fetch values with a filter +[1](Common.xml#L714)|Fetch values immediately without filter +[2](Common.xml#L718)|Fetch values with a filter -## [ValueListMappingType](Common.xml#L740) +## [ValueListMappingType](Common.xml#L759) Property|Type|Description :-------|:---|:---------- -[Label](Common.xml#L746)|String?|Headline for value list, fallback is the label of the property or parameter -[CollectionPath](Common.xml#L750)|String|Resource path of an OData collection with possible values, relative to the document containing the value list mapping -[DistinctValuesSupported](Common.xml#L753)|Boolean|Indicates that the value list supports a 'distinct' aggregation on the value list properties defined via ValueListParameterInOut and ValueListParameterOut -[FetchValues](Common.xml#L756)|[FetchValuesType?](#FetchValuesType)|Hint on when to fetch values -[PresentationVariantQualifier](Common.xml#L759)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Alternative representation of a value help, e.g. as a bar chart
Qualifier for annotation with term [UI.PresentationVariant](UI.md#PresentationVariant) on the value list entity set identified via CollectionPath in the ValueListReference annotation -[SelectionVariantQualifier](Common.xml#L763)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Optional combination of parameters and filters to query the value help entity set
Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath -[Parameters](Common.xml#L767)|\[[ValueListParameter](#ValueListParameter)\]|Instructions on how to construct the value list request and consume response properties +[Label](Common.xml#L765)|String?|Headline for value list, fallback is the label of the property or parameter +[CollectionPath](Common.xml#L769)|String|Resource path of an OData collection with possible values, relative to the document containing the value list mapping +[DistinctValuesSupported](Common.xml#L772)|Boolean|Indicates that the value list supports a 'distinct' aggregation on the value list properties defined via ValueListParameterInOut and ValueListParameterOut +[FetchValues](Common.xml#L775)|[FetchValuesType?](#FetchValuesType)|Hint on when to fetch values +[PresentationVariantQualifier](Common.xml#L778)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Alternative representation of a value help, e.g. as a bar chart
Qualifier for annotation with term [UI.PresentationVariant](UI.md#PresentationVariant) on the value list entity set identified via CollectionPath in the ValueListReference annotation +[SelectionVariantQualifier](Common.xml#L782)|[SimpleIdentifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier)|Optional combination of parameters and filters to query the value help entity set
Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath +[Parameters](Common.xml#L786)|\[[ValueListParameter](#ValueListParameter)\]|Instructions on how to construct the value list request and consume response properties **Applicable Annotation Terms:** - [QuickInfo](#QuickInfo) -## [*ValueListParameter*](Common.xml#L772) +## [*ValueListParameter*](Common.xml#L791) **Derived Types:** @@ -272,97 +295,97 @@ Property|Type|Description Property|Type|Description :-------|:---|:---------- -[ValueListProperty](Common.xml#L773)|String|Path to property in the value list . Format is identical to PropertyPath annotations. +[ValueListProperty](Common.xml#L792)|String|Path to property in the value list . Format is identical to PropertyPath annotations. -## [ValueListParameterIn](Common.xml#L777): [ValueListParameter](#ValueListParameter) +## [ValueListParameterIn](Common.xml#L796): [ValueListParameter](#ValueListParameter) Property|Type|Description :-------|:---|:---------- -[*ValueListProperty*](Common.xml#L773)|String|Path to property in the value list . Format is identical to PropertyPath annotations. -[LocalDataProperty](Common.xml#L778)|PropertyPath|Path to property that is used to filter the value list with `eq` comparison
In case the property path contains a collection-based navigation or structural property, the filter is a set of `eq` comparisons connected by `or` operators -[InitialValueIsSignificant](Common.xml#L782)|Boolean|Initial value, e.g. empty string, is a valid and significant value +[*ValueListProperty*](Common.xml#L792)|String|Path to property in the value list . Format is identical to PropertyPath annotations. +[LocalDataProperty](Common.xml#L797)|PropertyPath|Path to property that is used to filter the value list with `eq` comparison
In case the property path contains a collection-based navigation or structural property, the filter is a set of `eq` comparisons connected by `or` operators +[InitialValueIsSignificant](Common.xml#L801)|Boolean|Initial value, e.g. empty string, is a valid and significant value -## [ValueListParameterConstant](Common.xml#L786): [ValueListParameter](#ValueListParameter) +## [ValueListParameterConstant](Common.xml#L805): [ValueListParameter](#ValueListParameter) Property|Type|Description :-------|:---|:---------- -[*ValueListProperty*](Common.xml#L773)|String|Path to property in the value list . Format is identical to PropertyPath annotations. -[Constant](Common.xml#L787)|PrimitiveType|Constant value that is used to filter the value list with `eq` comparison, using the same representation as property default values, see [CSDL XML, 7.2.7 Default Value](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_DefaultValue) -[InitialValueIsSignificant](Common.xml#L790) *([Experimental](Common.md#Experimental))*|Boolean|Initial value, e.g. empty string, is a valid and significant value +[*ValueListProperty*](Common.xml#L792)|String|Path to property in the value list . Format is identical to PropertyPath annotations. +[Constant](Common.xml#L806)|PrimitiveType|Constant value that is used to filter the value list with `eq` comparison, using the same representation as property default values, see [CSDL XML, 7.2.7 Default Value](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_DefaultValue) +[InitialValueIsSignificant](Common.xml#L809) *([Experimental](Common.md#Experimental))*|Boolean|Initial value, e.g. empty string, is a valid and significant value -## [ValueListParameterConstants](Common.xml#L795): [ValueListParameter](#ValueListParameter) *([Experimental](Common.md#Experimental))* +## [ValueListParameterConstants](Common.xml#L814): [ValueListParameter](#ValueListParameter) *([Experimental](Common.md#Experimental))* Property|Type|Description :-------|:---|:---------- -[*ValueListProperty*](Common.xml#L773)|String|Path to property in the value list . Format is identical to PropertyPath annotations. -[Constants](Common.xml#L797)|\[PrimitiveType\]|List of constant values that are used to filter the value list with `eq` comparisons connected by `or` operators, using the same representation as property default values, see [CSDL XML, 7.2.7 Default Value](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_DefaultValue). Initial values are significant.
An empty list means a vacuous filter condition +[*ValueListProperty*](Common.xml#L792)|String|Path to property in the value list . Format is identical to PropertyPath annotations. +[Constants](Common.xml#L816)|\[PrimitiveType\]|List of constant values that are used to filter the value list with `eq` comparisons connected by `or` operators, using the same representation as property default values, see [CSDL XML, 7.2.7 Default Value](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_DefaultValue). Initial values are significant.
An empty list means a vacuous filter condition -## [ValueListParameterInOut](Common.xml#L804): [ValueListParameter](#ValueListParameter) +## [ValueListParameterInOut](Common.xml#L823): [ValueListParameter](#ValueListParameter) Property|Type|Description :-------|:---|:---------- -[*ValueListProperty*](Common.xml#L773)|String|Path to property in the value list . Format is identical to PropertyPath annotations. -[LocalDataProperty](Common.xml#L805)|PropertyPath|Path to property that is used to filter the value list with `startswith` comparison and filled from the picked value list item -[InitialValueIsSignificant](Common.xml#L808)|Boolean|Initial value, e.g. empty string, is a valid and significant value +[*ValueListProperty*](Common.xml#L792)|String|Path to property in the value list . Format is identical to PropertyPath annotations. +[LocalDataProperty](Common.xml#L824)|PropertyPath|Path to property that is used to filter the value list with `startswith` comparison and filled from the picked value list item +[InitialValueIsSignificant](Common.xml#L827)|Boolean|Initial value, e.g. empty string, is a valid and significant value **Applicable Annotation Terms:** - [Importance](UI.md#Importance) -## [ValueListParameterOut](Common.xml#L817): [ValueListParameter](#ValueListParameter) +## [ValueListParameterOut](Common.xml#L836): [ValueListParameter](#ValueListParameter) Property|Type|Description :-------|:---|:---------- -[*ValueListProperty*](Common.xml#L773)|String|Path to property in the value list . Format is identical to PropertyPath annotations. -[LocalDataProperty](Common.xml#L818)|PropertyPath|Path to property that is filled from response +[*ValueListProperty*](Common.xml#L792)|String|Path to property in the value list . Format is identical to PropertyPath annotations. +[LocalDataProperty](Common.xml#L837)|PropertyPath|Path to property that is filled from response **Applicable Annotation Terms:** - [Importance](UI.md#Importance) -## [ValueListParameterDisplayOnly](Common.xml#L827): [ValueListParameter](#ValueListParameter) +## [ValueListParameterDisplayOnly](Common.xml#L846): [ValueListParameter](#ValueListParameter) Value list property that is not used to fill the edited entity Property|Type|Description :-------|:---|:---------- -[*ValueListProperty*](Common.xml#L773)|String|Path to property in the value list . Format is identical to PropertyPath annotations. +[*ValueListProperty*](Common.xml#L792)|String|Path to property in the value list . Format is identical to PropertyPath annotations. **Applicable Annotation Terms:** - [Importance](UI.md#Importance) -## [ValueListParameterFilterOnly](Common.xml#L835): [ValueListParameter](#ValueListParameter) *(Deprecated)* +## [ValueListParameterFilterOnly](Common.xml#L854): [ValueListParameter](#ValueListParameter) *(Deprecated)* All filterable properties of the value list can be used to filter -## [DraftRootType](Common.xml#L1055): [DraftNodeType](#DraftNodeType) +## [DraftRootType](Common.xml#L1074): [DraftNodeType](#DraftNodeType) Property|Type|Description :-------|:---|:---------- -[*PreparationAction*](Common.xml#L1097)|[QualifiedName?](#QualifiedName)|Action that prepares a draft document for later activation -[*ValidationFunction*](Common.xml#L1100) *(Deprecated)*|[QualifiedName?](#QualifiedName)|Separate validation without side-effects is not useful -[ActivationAction](Common.xml#L1056)|[QualifiedName](#QualifiedName)|Action that activates a draft document -[DiscardAction](Common.xml#L1059) *([Experimental](Common.md#Experimental))*|[QualifiedName?](#QualifiedName)|Action that discards a draft document -[EditAction](Common.xml#L1063)|[QualifiedName?](#QualifiedName)|Action that creates an edit draft -[NewAction](Common.xml#L1066)|[QualifiedName?](#QualifiedName)|Action that creates a new draft
New drafts may also be created by POSTing an empty entity without any properties to the entity set. -[AdditionalNewActions](Common.xml#L1070) *([Experimental](Common.md#Experimental))*|\[[QualifiedName](#QualifiedName)\]|Additional actions that create a new draft
Additional actions beside the default POST or standard `NewAction` that create a new draft. -[ShareAction](Common.xml#L1075)|[QualifiedName?](#QualifiedName)|Action that shares a draft document with other users
The action is bound to the draft document root node and has the following signature:
- `Users`: collection of structure with properties
  - `UserID` of type `String` and
  - `UserAccessRole` of type `String` with possible values `O` (owner, can perform all draft actions), and `E` (editor, can change the draft)
It restricts access to the listed users in their specified roles. +[*PreparationAction*](Common.xml#L1119)|[QualifiedName?](#QualifiedName)|Action that prepares a draft document for later activation +[*ValidationFunction*](Common.xml#L1122) *(Deprecated)*|[QualifiedName?](#QualifiedName)|Separate validation without side-effects is not useful +[ActivationAction](Common.xml#L1075)|[QualifiedName](#QualifiedName)|Action that activates a draft document +[DiscardAction](Common.xml#L1078) *([Experimental](Common.md#Experimental))*|[QualifiedName?](#QualifiedName)|Action that discards a draft document +[EditAction](Common.xml#L1082)|[QualifiedName?](#QualifiedName)|Action that creates an edit draft +[NewAction](Common.xml#L1085)|[QualifiedName?](#QualifiedName)|Action that creates a new draft
New drafts may also be created by POSTing an empty entity without any properties to the entity set. +[AdditionalNewActions](Common.xml#L1089) *([Experimental](Common.md#Experimental))*|\[[QualifiedName](#QualifiedName)\]|Additional actions that create a new draft
Additional actions beside the default POST or standard `NewAction` that create a new draft. +[ShareAction](Common.xml#L1094)|[QualifiedName?](#QualifiedName)|Action that shares a draft document with other users

The action is bound to the draft document root node and has the following signature:

It restricts access to the listed users in their specified roles.

If this action is present, the client can receive notifications about changes to the collaborative draft by opening a web socket connection at the WebSocketBaseURL followed by URL parameters

-## [DraftNodeType](Common.xml#L1096) +## [DraftNodeType](Common.xml#L1118) **Derived Types:** @@ -370,15 +393,15 @@ Property|Type|Description Property|Type|Description :-------|:---|:---------- -[PreparationAction](Common.xml#L1097)|[QualifiedName?](#QualifiedName)|Action that prepares a draft document for later activation -[ValidationFunction](Common.xml#L1100) *(Deprecated)*|[QualifiedName?](#QualifiedName)|Separate validation without side-effects is not useful +[PreparationAction](Common.xml#L1119)|[QualifiedName?](#QualifiedName)|Action that prepares a draft document for later activation +[ValidationFunction](Common.xml#L1122) *(Deprecated)*|[QualifiedName?](#QualifiedName)|Separate validation without side-effects is not useful -## [SimpleIdentifier](Common.xml#L1121) *(Deprecated)* +## [SimpleIdentifier](Common.xml#L1143) *(Deprecated)* Use type [Core.SimpleIdentifier](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#SimpleIdentifier) instead -## [QualifiedName](Common.xml#L1133) +## [QualifiedName](Common.xml#L1155) **Type:** String The namespace-qualified name of an OData construct in scope @@ -386,7 +409,7 @@ The namespace-qualified name of an OData construct in scope Alias-qualified names are not fully supported, and the use of namespace-qualified names is strongly recommended. -## [ActionOverload](Common.xml#L1138) +## [ActionOverload](Common.xml#L1160) **Type:** String The namespace-qualified name of an action with an optional overload @@ -396,7 +419,7 @@ The namespace-qualified name of an action, optionally followed by parentheses or by empty parentheses to identify the unbound overload, like in the `Target` attribute of an `Annotation`. -## [SideEffectsType](Common.xml#L1154) +## [SideEffectsType](Common.xml#L1176) Changes to the source properties or source entities may have side-effects on the target properties or entities. If neither TargetProperties nor TargetEntities are specified, a change to the source property values may have unforeseeable side-effects. @@ -410,35 +433,36 @@ This can also be used with OData V2 services: the annotation target is a functio Property|Type|Description :-------|:---|:---------- -[SourceProperties](Common.xml#L1166)|\[PropertyPath\]|Changes to the values of one or more of these structural properties may affect the targets -[SourceEntities](Common.xml#L1169)|\[NavigationPropertyPath\]|Changes to one or more of these entities may affect the targets. An empty path means the annotation target. -[TargetProperties](Common.xml#L1172)|\[String\]|These structural properties may be affected if the value of one of the sources changes
The syntax follows closely the syntax rules for `Edm.PropertyPath`, with the addition of `*` as the last path segment meaning all structural properties directly reached via the preceding path -[TargetEntities](Common.xml#L1176)|\[NavigationPropertyPath\]|These entities will be affected if the value of one of the sources changes. All affected entities need to be explicitly listed. An empty path means the annotation target. -[EffectTypes](Common.xml#L1179) *(Deprecated)*|[EffectType?](#EffectType)|All side effects are essentially value changes, differentiation not needed. -[TriggerAction](Common.xml#L1190)|[QualifiedName?](#QualifiedName)|Bound action to trigger side-effects after modifying an entity
Binding parameter type of the trigger action is the entity type annotated with `SideEffects`. The action does not have any additional parameters and does not return anything. It either succeeds with `204 No Content` or it fails with `4xx` or `5xx`. -[Discretionary](Common.xml#L1194) *([Experimental](Common.md#Experimental))*|Boolean|Indicates whether the client can decide if a side-effect should be triggered or not
The value of this property typically a static boolean value. It can be used by clients (e.g. by asking the end user) to decide if the side effect should be triggered or not. This indicator is only allowed in case a trigger action is given as only then the execution control of the side effect is provided to the client. +[SourceProperties](Common.xml#L1188)|\[PropertyPath\]|Changes to the values of one or more of these structural properties may affect the targets +[SourceEntities](Common.xml#L1191)|\[NavigationPropertyPath\]|Changes to one or more of these entities may affect the targets. An empty path means the annotation target. +[SourceEvents](Common.xml#L1194) *([Experimental](Common.md#Experimental))*|\[String\]|When the service raises one or more of these "events for side effects", the targets may be affected +[TargetProperties](Common.xml#L1198)|\[String\]|These structural properties may be affected if the value of one of the sources changes
The syntax follows closely the syntax rules for `Edm.PropertyPath`, with the addition of `*` as the last path segment meaning all structural properties directly reached via the preceding path +[TargetEntities](Common.xml#L1202)|\[NavigationPropertyPath\]|These entities will be affected if the value of one of the sources changes. All affected entities need to be explicitly listed. An empty path means the annotation target. +[EffectTypes](Common.xml#L1205) *(Deprecated)*|[EffectType?](#EffectType)|All side effects are essentially value changes, differentiation not needed. +[TriggerAction](Common.xml#L1216)|[QualifiedName?](#QualifiedName)|Bound action to trigger side-effects after modifying an entity
Binding parameter type of the trigger action is the entity type annotated with `SideEffects`. The action does not have any additional parameters and does not return anything. It either succeeds with `204 No Content` or it fails with `4xx` or `5xx`. +[Discretionary](Common.xml#L1220) *([Experimental](Common.md#Experimental))*|Boolean|Indicates whether the client can decide if a side-effect should be triggered or not
The value of this property typically a static boolean value. It can be used by clients (e.g. by asking the end user) to decide if the side effect should be triggered or not. This indicator is only allowed in case a trigger action is given as only then the execution control of the side effect is provided to the client. -## [EffectType](Common.xml#L1200) *(Deprecated)* +## [EffectType](Common.xml#L1226) *(Deprecated)* All side effects are essentially value changes, differentiation not needed. -## [SortOrderType](Common.xml#L1325) +## [SortOrderType](Common.xml#L1351) Exactly one of `Property`, `DynamicProperty` and `Expression` must be present Property|Type|Description :-------|:---|:---------- -[Property](Common.xml#L1327)|PropertyPath?|Sort property -[DynamicProperty](Common.xml#L1339)|AnnotationPath?|Dynamic property introduced by an annotation and used as sort property
If the annotation referenced by the annotation path does not apply to the same collection of entities as the one being sorted according to the [`UI.PresentationVariant`](UI.md#PresentationVariant) or `Common.SortOrder` annotation, this instance of `UI.PresentationVariant/SortOrder` or `Common.SortOrder` MUST be silently ignored.
Allowed terms: -[Expression](Common.xml#L1353) *([Experimental](Common.md#Experimental))*|PrimitiveType?|Dynamic expression whose primitive result value is used to sort the instances -[Descending](Common.xml#L1357)|Boolean?|Sort direction, ascending if not specified otherwise +[Property](Common.xml#L1353)|PropertyPath?|Sort property +[DynamicProperty](Common.xml#L1365)|AnnotationPath?|Dynamic property introduced by an annotation and used as sort property
If the annotation referenced by the annotation path does not apply to the same collection of entities as the one being sorted according to the [`UI.PresentationVariant`](UI.md#PresentationVariant) or `Common.SortOrder` annotation, this instance of `UI.PresentationVariant/SortOrder` or `Common.SortOrder` MUST be silently ignored.
Allowed Terms: +[Expression](Common.xml#L1379) *([Experimental](Common.md#Experimental))*|PrimitiveType?|Dynamic expression whose primitive result value is used to sort the instances +[Descending](Common.xml#L1383)|Boolean?|Sort direction, ascending if not specified otherwise -## [RecursiveHierarchyType](Common.xml#L1390) *(Deprecated)* +## [RecursiveHierarchyType](Common.xml#L1416) *(Deprecated)* Use terms [Aggregation.RecursiveHierarchy](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#RecursiveHierarchy) and [Hierarchy.RecursiveHierarchy](https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.md#RecursiveHierarchy) instead -## [UserID](Common.xml#L1441) +## [UserID](Common.xml#L1467) **Type:** String User ID diff --git a/vocabularies/Common.xml b/vocabularies/Common.xml index 061342d0c..d8428956e 100644 --- a/vocabularies/Common.xml +++ b/vocabularies/Common.xml @@ -77,6 +77,20 @@ + + + + + + + URN scheme to look up the documentation for an object with given type and id in a given system. + This example looks up the documentation for data element /iwbep/account in system G1Y_000. + + + + + + @@ -221,15 +235,12 @@ - - - - - - - + + + Multiple secondary keys are possible using different qualifiers. + Unlike [`Core.AlternateKeys`](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#AlternateKeys), + secondary keys need not support addressing an entity in a resource path. - @@ -286,17 +297,25 @@ - + - - + + + + + + + - - + + + + + @@ -1076,14 +1095,17 @@ The minimum structure is The action is bound to the draft document root node and has the following signature: +- `Users`: collection of structure with properties + - `UserID` of type `String` and + - `UserAccessRole` of type `String` with possible values `O` (owner, can perform all draft actions), and `E` (editor, can change the draft) - - `Users`: collection of structure with properties +It restricts access to the listed users in their specified roles. -   - `UserID` of type `String` and - -   - `UserAccessRole` of type `String` with possible values `O` (owner, can perform all draft actions), and `E` (editor, can change the draft) - - It restricts access to the listed users in their specified roles. +If this action is present, the client can receive notifications about changes to the +collaborative draft by opening a web socket connection at the [`WebSocketBaseURL`](#WebSocketBaseURL) +followed by URL parameters +- `relatedService` = base URL (relative to server root) of the OData service of the app +- `draft` = draft UUID. @@ -1169,6 +1191,10 @@ This can also be used with OData V2 services: the annotation target is a functio + + + + @@ -1452,7 +1478,6 @@ Upon modification field control logic is invoked so that meta-information like h - @@ -1481,6 +1506,24 @@ If the request succeeds the response will contain a JSON body of `Content-Type: + + This annotation MUST be unqualified. + + + + + + + Messages sent over the channel follow the [ABAP Push Channel Protocol](https://community.sap.com/t5/application-development-blog-posts/specification-of-the-push-channel-protocol-pcp/ba-p/13137541). +To consume a channel, the client opens a web socket connection at the [`WebSocketBaseURL`](#WebSocketBaseURL) +followed by URL parameters +- parameter name = annotation qualifier, parameter value = channel ID (see below) +- parameter name = `relatedService`, parameter value = base URL (relative to server root) of the OData service of the app + +<dl>Supported qualifiers and channel IDs: +<dt>`sideEffects` <dd>Notifications about side effects to be triggered by the client (channel ID = non-null annotation value) +</dl> + diff --git a/vocabularies/EntityRelationship.json b/vocabularies/EntityRelationship.json new file mode 100644 index 000000000..42eaecb22 --- /dev/null +++ b/vocabularies/EntityRelationship.json @@ -0,0 +1,303 @@ +{ + "$Version": "4.0", + "$Reference": { + "https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.json": { + "$Include": [{ "$Namespace": "Org.OData.Core.V1", "$Alias": "Core" }] + }, + "https://sap.github.io/odata-vocabularies/vocabularies/Common.json": { + "$Include": [{ "$Namespace": "com.sap.vocabularies.Common.v1", "$Alias": "Common" }] + } + }, + "com.sap.vocabularies.EntityRelationship.v1": { + "$Alias": "EntityRelationship", + "@Core.Description": "Terms to better document the Entity Relationship model outside of the current API / data model context", + "@Core.Description#Published": "2020-03-03 © Copyright 2020 SAP SE. All rights reserved", + "@Core.Links": [ + { "rel": "alternate", "href": "https://sap.github.io/odata-vocabularies/vocabularies/EntityRelationship.xml" }, + { + "rel": "latest-version", + "href": "https://sap.github.io/odata-vocabularies/vocabularies/EntityRelationship.json" + }, + { + "rel": "describedby", + "href": "https://github.com/sap/odata-vocabularies/blob/main/vocabularies/EntityRelationship.md" + } + ], + "entityType": { + "$Kind": "Term", + "$AppliesTo": ["EntityType"], + "@Common.Experimental": true, + "@Core.Description": "Defines which [ORD Entity Type](https://sap.github.io/open-resource-discovery/details/articles/grouping-and-bundling#entity-type) the current JSON Schema object represents.\nThere could be several JSON Schema objects that are assigned to the same Entity Type.\nOne JSON Schema object can only have one ORD Entity Type assigned, which corresponds to the\napplications own Entity Type definition. The ID scheme for an Entity Type ID is as following:\n\n`entityTypeId := namespace:entityTypeLocalId[:v\"majorVersion\"]`\n " + }, + "propertyType": { + "$Kind": "Term", + "$AppliesTo": ["Property"], + "@Common.Experimental": true, + "@Core.Description": "Logical property type of a property", + "@Core.LongDescription": "Defines the logical Property Type of a property.\nThe reason is to have an ID to relate to the property type independently of the property name and shared\nacross every usage of the same property across APIs where names might be different.\n\nEspecially to state that it can be used as an ID or is part of a composite ID.\n\nA Property Type ID follows the same format and considerations as the Entity Type ID explained above:\n `PropertyTypeId := namespace:propertyTypeLocalId[:v\"majorVersion\"]`\n " + }, + "entityIds": { + "$Kind": "Term", + "$Collection": true, + "$Type": "EntityRelationship.entityId", + "$AppliesTo": ["EntityType"], + "@Common.Experimental": true, + "@Core.Description": "The annotated entity type represents an ODM root entity", + "@Core.LongDescription": "\nDefines a list of IDs, which are available to look up the Entity Type or create a reference to it.\nAn Entity Type can have multiple IDs:\n\n* There can be **alternative IDs** that can also be used to create a reference to the Entity Type\n* Some ID properties form a **composite ID** together and need to be combined to function as a unique ID for references\n* This is indicated by a `propertyTypes` array with more than one Property Type ID entry.\n " + }, + "reference": { + "$Kind": "Term", + "$Type": "EntityRelationship.singleReference", + "$AppliesTo": ["Property"], + "@Core.Description": "Defines references to other Entity Types based on a single ID." + }, + "compositeReferences": { + "$Kind": "Term", + "$Collection": true, + "$Type": "EntityRelationship.compositeReference", + "$AppliesTo": ["EntityType"], + "@Common.Experimental": true, + "@Core.Description": " Defines one or many references to other Entity Types based on a composite IDs." + }, + "temporalIds": { + "$Kind": "Term", + "$Collection": true, + "$Type": "EntityRelationship.temporalId", + "$AppliesTo": ["EntityType"], + "@Common.Experimental": true, + "@Core.Description": "Defines a list of temporal IDs." + }, + "temporalReferences": { + "$Kind": "Term", + "$Collection": true, + "$Type": "EntityRelationship.temporalReference", + "$AppliesTo": ["EntityType"], + "@Common.Experimental": true, + "@Core.Description": "Defines a list of temporal references." + }, + "referencesWithConstantIds": { + "$Kind": "Term", + "$Collection": true, + "$Type": "EntityRelationship.referenceWithConstantId", + "$AppliesTo": ["EntityType"], + "@Common.Experimental": true, + "@Core.Description": "Defines one or many references to other Entity Types based on a composite IDs where some properties of the references are constant values." + }, + "singleReference": { + "$Kind": "ComplexType", + "@Core.Description": "Defines a reference to another Entity Type based on a single ID.", + "name": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional name to describe the semantics of the reference." + }, + "referencedEntityType": { + "$Type": "EntityRelationship.entityTypeID", + "@Core.Description": "ID of the referenced entity type.", + "@Common.Experimental": true + }, + "referencedPropertyType": { + "$Type": "EntityRelationship.propertyTypeID", + "@Core.Description": "ID of the property type used in the references entity to identify the instance.", + "@Common.Experimental": true + } + }, + "entityId": { + "$Kind": "ComplexType", + "@Core.Description": "Defines an ID that can be used to look up the Entity Type or create a reference to it.", + "name": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional name to describe the semantics of the ID." + }, + "description": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional description to describe the semantics of the ID." + }, + "propertyTypes": { + "$Collection": true, + "$Type": "EntityRelationship.propertyTypeID", + "@Common.Experimental": true, + "@Core.Description": "List of property type IDs." + } + }, + "compositeReference": { + "$Kind": "ComplexType", + "@Core.Description": "Defines a single reference to another Entity Type based on a composite ID.", + "name": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional name to describe the semantics of the reference." + }, + "referencedEntityType": { + "$Type": "EntityRelationship.entityTypeID", + "@Core.Description": "ID of the referenced entity type.", + "@Common.Experimental": true + }, + "referencedPropertyType": { + "$Collection": true, + "$Type": "EntityRelationship.referencedPropertyType", + "@Common.Experimental": true, + "@Core.Description": "List of property types the composite ID in the references entity consists of." + } + }, + "referencedPropertyType": { + "$Kind": "ComplexType", + "@Core.Description": "Grouping of the ID in the referenced entity, by its property type ID and the local name in this entity.", + "referencedPropertyType": { + "$Type": "EntityRelationship.propertyTypeID", + "@Common.Experimental": true, + "@Core.Description": "ID of the property type used in the references entity to identify the instance." + }, + "localPropertyName": { + "$Type": "Edm.PropertyPath", + "@Common.Experimental": true, + "@Core.Description": "Name of the property in the local Entity Type." + } + }, + "temporalId": { + "$Kind": "ComplexType", + "@Core.Description": "Defines an ID that includes a temporal interval.", + "name": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional name to describe the semantics of the ID." + }, + "description": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional description to describe the semantics of the ID." + }, + "propertyTypes": { + "$Collection": true, + "$Type": "EntityRelationship.propertyTypeID", + "@Common.Experimental": true, + "@Core.Description": "List of property type IDs that are non-temporal." + }, + "temporalIntervalType": { + "$Type": "EntityRelationship.temporalIntervalTypeEnum", + "@Common.Experimental": true, + "@Core.Description": "Interval which includes the boundaries." + }, + "temporalType": { + "$Type": "EntityRelationship.temporalTypeEnum", + "@Common.Experimental": true, + "@Core.Description": "The temporal ID type, of this temporal ID." + }, + "temporalIntervalStartProperty": { + "$Type": "Edm.PropertyPath", + "@Common.Experimental": true, + "@Core.Description": "Property in the local entity that is used to define the start of the interval." + }, + "temporalIntervalEndProperty": { + "$Type": "Edm.PropertyPath", + "@Common.Experimental": true, + "@Core.Description": "Property in the local entity that is used to define the end of the interval." + } + }, + "temporalIntervalTypeEnum": { + "$Kind": "EnumType", + "CLOSED_CLOSED": 0, + "CLOSED_CLOSED@Core.Description": "Closed, Closed interval including the start and end value.", + "OPEN_OPEN": 1, + "OPEN_OPEN@Core.Description": "Open, Open interval excluding the start and end value.", + "OPEN_CLOSED": 2, + "OPEN_CLOSED@Core.Description": "Open, Closed interval excluding the start and including the end value.", + "CLOSED_OPEN": 3, + "CLOSED_OPEN@Core.Description": "Closed, Open interval including the start and excluding the end value." + }, + "temporalTypeEnum": { + "$Kind": "EnumType", + "DATE": 0, + "DATE@Core.Description": "Date based interval.", + "DATETIME": 1, + "DATETIME@Core.Description": "Date and Time based interval." + }, + "temporalReference": { + "$Kind": "ComplexType", + "@Core.Description": "Defines single temporal reference to another Entity Type.", + "name": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional name to describe the semantics of the reference." + }, + "referencedEntityType": { + "$Type": "EntityRelationship.entityTypeID", + "@Common.Experimental": true, + "@Core.Description": "ID of the referenced entity type." + }, + "referencedPropertyType": { + "$Collection": true, + "$Type": "EntityRelationship.referencedPropertyType", + "@Common.Experimental": true, + "@Core.Description": "List of properties, the composite ID consists of." + }, + "category": { + "$Type": "EntityRelationship.temporalCategoryEnum", + "@Common.Experimental": true, + "@Core.Description": "Category of the temporal reference." + }, + "selectionDateProperty": { + "$Type": "Edm.PropertyPath", + "@Common.Experimental": true, + "@Core.Description": "Property in the local entity that is used to select the right date interval." + } + }, + "temporalCategoryEnum": { + "$Kind": "EnumType", + "TEMPORAL_DATE": 0, + "TEMPORAL_DATE@Core.Description": "Date based temporal reference." + }, + "referenceWithConstantId": { + "$Kind": "ComplexType", + "@Core.Description": "Defines single a reference to another Entity Type based on a composite ID.", + "name": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Optional name to describe the semantics of the reference." + }, + "referencedEntityType": { + "$Type": "EntityRelationship.entityTypeID", + "@Common.Experimental": true, + "@Core.Description": "ID of the referenced entity type." + }, + "referencedPropertyType": { + "$Collection": true, + "$Type": "EntityRelationship.referencedPropertyTypeWithConstantId", + "@Common.Experimental": true, + "@Core.Description": "List of properties, the composite ID consists of." + } + }, + "referencedPropertyTypeWithConstantId": { + "$Kind": "ComplexType", + "@Core.Description": "Grouping of the ID in the referenced entity, by its property type ID and either the local name in this entity or a constant value.", + "referencedPropertyType": { + "$Type": "EntityRelationship.propertyTypeID", + "@Common.Experimental": true, + "@Core.Description": "ID of the property type used in the references entity to identify the instance." + }, + "localPropertyName": { + "$Type": "Edm.PropertyPath", + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "Name of the property in the local Entity Type." + }, + "constantValue": { + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "String serialization of the constant value of the property in the referenced entity." + } + }, + "propertyTypeID": { + "$Kind": "TypeDefinition", + "$UnderlyingType": "Edm.String", + "@Core.Description": "ID of the property type. The reason is to have an ID to relate to the property, especially to state that it can be used as an ID or is part of a composite ID.\n\nA Property Type ID follows the same format and considerations as the Entity Type ID explained above:\n`PropertyTypeId := namespace:propertyTypeLocalId[:v\"majorVersion\"]`\n " + }, + "entityTypeID": { + "$Kind": "TypeDefinition", + "$UnderlyingType": "Edm.String", + "@Core.Description": " ID of the entity type.\nThe ID scheme for an Entity Type ID is as following:\n\n`entityTypeId := namespace:entityTypeLocalId[:v\"majorVersion\"]`\n " + } + } +} diff --git a/vocabularies/EntityRelationship.md b/vocabularies/EntityRelationship.md new file mode 100644 index 000000000..036108615 --- /dev/null +++ b/vocabularies/EntityRelationship.md @@ -0,0 +1,143 @@ +# EntityRelationship Vocabulary +**Namespace: [com.sap.vocabularies.EntityRelationship.v1](EntityRelationship.xml)** + +Terms to better document the Entity Relationship model outside of the current API / data model context + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[entityType](EntityRelationship.xml#L35) *([Experimental](Common.md#Experimental))*|String|Defines which [ORD Entity Type](https://sap.github.io/open-resource-discovery/details/articles/grouping-and-bundling#entity-type) the current JSON Schema object represents. There could be several JSON Schema objects that are assigned to the same Entity Type. One JSON Schema object can only have one ORD Entity Type assigned, which corresponds to the applications own Entity Type definition. The ID scheme for an Entity Type ID is as following:
`entityTypeId := namespace:entityTypeLocalId[:v"majorVersion"]` +[propertyType](EntityRelationship.xml#L48) *([Experimental](Common.md#Experimental))*|String|Logical property type of a property
Defines the logical Property Type of a property. The reason is to have an ID to relate to the property type independently of the property name and shared across every usage of the same property across APIs where names might be different.
Especially to state that it can be used as an ID or is part of a composite ID.
A Property Type ID follows the same format and considerations as the Entity Type ID explained above: `PropertyTypeId := namespace:propertyTypeLocalId[:v"majorVersion"]` +[entityIds](EntityRelationship.xml#L64) *([Experimental](Common.md#Experimental))*|\[[entityId](#entityId)\]|The annotated entity type represents an ODM root entity

Defines a list of IDs, which are available to look up the Entity Type or create a reference to it. An Entity Type can have multiple IDs:

  • There can be alternative IDs that can also be used to create a reference to the Entity Type
  • Some ID properties form a composite ID together and need to be combined to function as a unique ID for references
  • This is indicated by a propertyTypes array with more than one Property Type ID entry.
+[reference](EntityRelationship.xml#L79)|[singleReference](#singleReference)|Defines references to other Entity Types based on a single ID. +[compositeReferences](EntityRelationship.xml#L83) *([Experimental](Common.md#Experimental))*|\[[compositeReference](#compositeReference)\]|Defines one or many references to other Entity Types based on a composite IDs. +[temporalIds](EntityRelationship.xml#L88) *([Experimental](Common.md#Experimental))*|\[[temporalId](#temporalId)\]|Defines a list of temporal IDs. +[temporalReferences](EntityRelationship.xml#L93) *([Experimental](Common.md#Experimental))*|\[[temporalReference](#temporalReference)\]|Defines a list of temporal references. +[referencesWithConstantIds](EntityRelationship.xml#L97) *([Experimental](Common.md#Experimental))*|\[[referenceWithConstantId](#referenceWithConstantId)\]|Defines one or many references to other Entity Types based on a composite IDs where some properties of the references are constant values. + + +## [singleReference](EntityRelationship.xml#L102) +Defines a reference to another Entity Type based on a single ID. + +Property|Type|Description +:-------|:---|:---------- +[name](EntityRelationship.xml#L104) *([Experimental](Common.md#Experimental))*|String?|Optional name to describe the semantics of the reference. +[referencedEntityType](EntityRelationship.xml#L108) *([Experimental](Common.md#Experimental))*|[entityTypeID](#entityTypeID)|ID of the referenced entity type. +[referencedPropertyType](EntityRelationship.xml#L112) *([Experimental](Common.md#Experimental))*|[propertyTypeID](#propertyTypeID)|ID of the property type used in the references entity to identify the instance. + + +## [entityId](EntityRelationship.xml#L118) +Defines an ID that can be used to look up the Entity Type or create a reference to it. + +Property|Type|Description +:-------|:---|:---------- +[name](EntityRelationship.xml#L120) *([Experimental](Common.md#Experimental))*|String?|Optional name to describe the semantics of the ID. +[description](EntityRelationship.xml#L124) *([Experimental](Common.md#Experimental))*|String?|Optional description to describe the semantics of the ID. +[propertyTypes](EntityRelationship.xml#L128) *([Experimental](Common.md#Experimental))*|\[[propertyTypeID](#propertyTypeID)\]|List of property type IDs. + + +## [compositeReference](EntityRelationship.xml#L134) +Defines a single reference to another Entity Type based on a composite ID. + +Property|Type|Description +:-------|:---|:---------- +[name](EntityRelationship.xml#L136) *([Experimental](Common.md#Experimental))*|String?|Optional name to describe the semantics of the reference. +[referencedEntityType](EntityRelationship.xml#L140) *([Experimental](Common.md#Experimental))*|[entityTypeID](#entityTypeID)|ID of the referenced entity type. +[referencedPropertyType](EntityRelationship.xml#L144) *([Experimental](Common.md#Experimental))*|\[[referencedPropertyType](#referencedPropertyType)\]|List of property types the composite ID in the references entity consists of. + + +## [referencedPropertyType](EntityRelationship.xml#L150) +Grouping of the ID in the referenced entity, by its property type ID and the local name in this entity. + +Property|Type|Description +:-------|:---|:---------- +[referencedPropertyType](EntityRelationship.xml#L152) *([Experimental](Common.md#Experimental))*|[propertyTypeID](#propertyTypeID)|ID of the property type used in the references entity to identify the instance. +[localPropertyName](EntityRelationship.xml#L156) *([Experimental](Common.md#Experimental))*|PropertyPath|Name of the property in the local Entity Type. + + +## [temporalId](EntityRelationship.xml#L162) +Defines an ID that includes a temporal interval. + +Property|Type|Description +:-------|:---|:---------- +[name](EntityRelationship.xml#L164) *([Experimental](Common.md#Experimental))*|String?|Optional name to describe the semantics of the ID. +[description](EntityRelationship.xml#L168) *([Experimental](Common.md#Experimental))*|String?|Optional description to describe the semantics of the ID. +[propertyTypes](EntityRelationship.xml#L172) *([Experimental](Common.md#Experimental))*|\[[propertyTypeID](#propertyTypeID)\]|List of property type IDs that are non-temporal. +[temporalIntervalType](EntityRelationship.xml#L176) *([Experimental](Common.md#Experimental))*|[temporalIntervalTypeEnum](#temporalIntervalTypeEnum)|Interval which includes the boundaries. +[temporalType](EntityRelationship.xml#L180) *([Experimental](Common.md#Experimental))*|[temporalTypeEnum](#temporalTypeEnum)|The temporal ID type, of this temporal ID. +[temporalIntervalStartProperty](EntityRelationship.xml#L184) *([Experimental](Common.md#Experimental))*|PropertyPath|Property in the local entity that is used to define the start of the interval. +[temporalIntervalEndProperty](EntityRelationship.xml#L188) *([Experimental](Common.md#Experimental))*|PropertyPath|Property in the local entity that is used to define the end of the interval. + + +## [temporalIntervalTypeEnum](EntityRelationship.xml#L194) + + +Member|Value|Description +:-----|----:|:---------- +[CLOSED_CLOSED](EntityRelationship.xml#L195)|0|Closed, Closed interval including the start and end value. +[OPEN_OPEN](EntityRelationship.xml#L198)|1|Open, Open interval excluding the start and end value. +[OPEN_CLOSED](EntityRelationship.xml#L201)|2|Open, Closed interval excluding the start and including the end value. +[CLOSED_OPEN](EntityRelationship.xml#L204)|3|Closed, Open interval including the start and excluding the end value. + + +## [temporalTypeEnum](EntityRelationship.xml#L209) + + +Member|Value|Description +:-----|----:|:---------- +[DATE](EntityRelationship.xml#L210)|0|Date based interval. +[DATETIME](EntityRelationship.xml#L213)|1|Date and Time based interval. + + +## [temporalReference](EntityRelationship.xml#L218) +Defines single temporal reference to another Entity Type. + +Property|Type|Description +:-------|:---|:---------- +[name](EntityRelationship.xml#L220) *([Experimental](Common.md#Experimental))*|String?|Optional name to describe the semantics of the reference. +[referencedEntityType](EntityRelationship.xml#L224) *([Experimental](Common.md#Experimental))*|[entityTypeID](#entityTypeID)|ID of the referenced entity type. +[referencedPropertyType](EntityRelationship.xml#L228) *([Experimental](Common.md#Experimental))*|\[[referencedPropertyType](#referencedPropertyType)\]|List of properties, the composite ID consists of. +[category](EntityRelationship.xml#L232) *([Experimental](Common.md#Experimental))*|[temporalCategoryEnum](#temporalCategoryEnum)|Category of the temporal reference. +[selectionDateProperty](EntityRelationship.xml#L236) *([Experimental](Common.md#Experimental))*|PropertyPath|Property in the local entity that is used to select the right date interval. + + +## [temporalCategoryEnum](EntityRelationship.xml#L242) + + +Member|Value|Description +:-----|----:|:---------- +[TEMPORAL_DATE](EntityRelationship.xml#L243)|0|Date based temporal reference. + + +## [referenceWithConstantId](EntityRelationship.xml#L248) +Defines single a reference to another Entity Type based on a composite ID. + +Property|Type|Description +:-------|:---|:---------- +[name](EntityRelationship.xml#L250) *([Experimental](Common.md#Experimental))*|String?|Optional name to describe the semantics of the reference. +[referencedEntityType](EntityRelationship.xml#L254) *([Experimental](Common.md#Experimental))*|[entityTypeID](#entityTypeID)|ID of the referenced entity type. +[referencedPropertyType](EntityRelationship.xml#L258) *([Experimental](Common.md#Experimental))*|\[[referencedPropertyTypeWithConstantId](#referencedPropertyTypeWithConstantId)\]|List of properties, the composite ID consists of. + + +## [referencedPropertyTypeWithConstantId](EntityRelationship.xml#L264) +Grouping of the ID in the referenced entity, by its property type ID and either the local name in this entity or a constant value. + +Property|Type|Description +:-------|:---|:---------- +[referencedPropertyType](EntityRelationship.xml#L266) *([Experimental](Common.md#Experimental))*|[propertyTypeID](#propertyTypeID)|ID of the property type used in the references entity to identify the instance. +[localPropertyName](EntityRelationship.xml#L270) *([Experimental](Common.md#Experimental))*|PropertyPath?|Name of the property in the local Entity Type. +[constantValue](EntityRelationship.xml#L274) *([Experimental](Common.md#Experimental))*|String?|String serialization of the constant value of the property in the referenced entity. + + +## [propertyTypeID](EntityRelationship.xml#L280) +**Type:** String + +ID of the property type. The reason is to have an ID to relate to the property, especially to state that it can be used as an ID or is part of a composite ID.
A Property Type ID follows the same format and considerations as the Entity Type ID explained above: `PropertyTypeId := namespace:propertyTypeLocalId[:v"majorVersion"]` + + +## [entityTypeID](EntityRelationship.xml#L290) +**Type:** String + +ID of the entity type. The ID scheme for an Entity Type ID is as following:
`entityTypeId := namespace:entityTypeLocalId[:v"majorVersion"]` diff --git a/vocabularies/EntityRelationship.xml b/vocabularies/EntityRelationship.xml new file mode 100644 index 000000000..26666e3f7 --- /dev/null +++ b/vocabularies/EntityRelationship.xml @@ -0,0 +1,301 @@ + + + + + + + + + + + + + Terms to better document the Entity Relationship model outside of the current API / data model context + + + 2020-03-03 © Copyright 2020 SAP SE. All rights reserved + + + + + + + + + + + + + + + + + + + + + + Defines which [ORD Entity Type](https://sap.github.io/open-resource-discovery/details/articles/grouping-and-bundling#entity-type) the current JSON Schema object represents. +There could be several JSON Schema objects that are assigned to the same Entity Type. +One JSON Schema object can only have one ORD Entity Type assigned, which corresponds to the +applications own Entity Type definition. The ID scheme for an Entity Type ID is as following: + +`entityTypeId := namespace:entityTypeLocalId[:v"majorVersion"]` + + + + + + + + + Defines the logical Property Type of a property. +The reason is to have an ID to relate to the property type independently of the property name and shared +across every usage of the same property across APIs where names might be different. + +Especially to state that it can be used as an ID or is part of a composite ID. + +A Property Type ID follows the same format and considerations as the Entity Type ID explained above: + `PropertyTypeId := namespace:propertyTypeLocalId[:v"majorVersion"]` + + + + + + + + + +Defines a list of IDs, which are available to look up the Entity Type or create a reference to it. +An Entity Type can have multiple IDs: + +* There can be **alternative IDs** that can also be used to create a reference to the Entity Type +* Some ID properties form a **composite ID** together and need to be combined to function as a unique ID for references +* This is indicated by a `propertyTypes` array with more than one Property Type ID entry. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID of the property type. The reason is to have an ID to relate to the property, especially to state that it can be used as an ID or is part of a composite ID. + +A Property Type ID follows the same format and considerations as the Entity Type ID explained above: +`PropertyTypeId := namespace:propertyTypeLocalId[:v"majorVersion"]` + + + + + + + ID of the entity type. +The ID scheme for an Entity Type ID is as following: + +`entityTypeId := namespace:entityTypeLocalId[:v"majorVersion"]` + + + + + + diff --git a/vocabularies/Hierarchy.md b/vocabularies/Hierarchy.md index 3824a4437..b1b047b26 100644 --- a/vocabularies/Hierarchy.md +++ b/vocabularies/Hierarchy.md @@ -10,7 +10,7 @@ Term|Type|Description :---|:---|:---------- [RecursiveHierarchy](Hierarchy.xml#L41) *([Experimental](Common.md#Experimental))*|[RecursiveHierarchyType](#RecursiveHierarchyType)|Hierarchy-specific information in the result set of a hierarchical request
The [base term](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Aggregation.V1.html#RecursiveHierarchy) governs what are the nodes and parents in the hierarchy, whereas this term defines derived information. [RecursiveHierarchyActions](Hierarchy.xml#L155) *([Experimental](Common.md#Experimental))*|[RecursiveHierarchyActionsType](#RecursiveHierarchyActionsType)|Actions for maintaining the recursive hierarchy defined by the [base term](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Aggregation.V1.html#RecursiveHierarchy)
When an annotation with this term is present, the [`ParentNavigationProperty`](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Aggregation.V1.html#RecursiveHierarchyType) in the base term must not have a collection-valued segment prior to its last segment. -[MatchCount](Hierarchy.xml#L209) *([Experimental](Common.md#Experimental))*|Int64|Instance annotation on the result of an `$apply` query option containing the number of matching nodes after hierarchical transformations
The service MAY designate a subset of the `$apply` result as "matching nodes". For requests following the pattern described [here](#RecursiveHierarchyType), this subset is the output set of the `filter` or `search` transformation that occurs as the fourth parameter of the last `ancestors` transformation or occurs nested into it.
For requests not following this pattern, the subset NEED NOT be defined.
This instance annotation is available if [`RecursiveHierarchy/Matched`](#RecursiveHierarchyType) and [`RecursiveHierarchy/MatchedDescendantCount`](#RecursiveHierarchyType) are also available. +[MatchCount](Hierarchy.xml#L209) *([Experimental](Common.md#Experimental))*|Int64|Instance annotation on the result of an `$apply` query option containing the number of matching nodes after hierarchical transformations
The service MAY designate a subset of the `$apply` result as "matching nodes". For requests following the pattern described [here](#RecursiveHierarchyType), this subset is the output set of the `filter` or `search` transformation that occurs as the fourth parameter of the last `ancestors` transformation or occurs nested into it.
For requests not following this pattern, the subset NEED NOT be defined.
This instance annotation is available if [`RecursiveHierarchy/Matched`](#RecursiveHierarchyType) and [`RecursiveHierarchy/MatchedDescendantCount`](#RecursiveHierarchyType) are also available. [RecursiveHierarchySupported](Hierarchy.xml#L293) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Whether the annotated collection acts as a [`RecursiveHierarchy`](#RecursiveHierarchy) with the given qualifier
This tag is applied to a collection with the same qualifier as the [`RecursiveHierarchy`](#RecursiveHierarchy) term which is applied to its entity type. The recursive hierarchy can then only be addressed through a collection where this tag is true. diff --git a/vocabularies/PDF.json b/vocabularies/PDF.json index cd32ff4c2..b32e79742 100644 --- a/vocabularies/PDF.json +++ b/vocabularies/PDF.json @@ -98,6 +98,13 @@ "$DefaultValue": false, "@Core.Description": "Setting the text direction-layout is supported", "@Core.LongDescription": "PDF supports setting the text direction-layout (e.g. left-to-right or right-to-left) in the document description" + }, + "UploadToFileShare": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Common.Experimental": true, + "@Core.Description": "Support of PDF document upload", + "@Core.LongDescription": "A file share connection needs to be configured on the server. \nThe response of a corresponding request is then `301 Moved Permanently` with a `Location` header containing the link to the document on the file share server." } } } diff --git a/vocabularies/PDF.md b/vocabularies/PDF.md index f6a0e0e8f..3b6559f11 100644 --- a/vocabularies/PDF.md +++ b/vocabularies/PDF.md @@ -35,3 +35,4 @@ Property|Type|Description [IANATimezoneFormat](PDF.xml#L102)|Boolean|If this is true, the PDF format supports formatting columns of type `Edm.DateTimeOffset` in a IANA time zone given in the document description [Treeview](PDF.xml#L105) *([Experimental](Common.md#Experimental))*|Boolean|Treeview output supported
If this is true, treeview output is supported for hierarchical data [TextDirectionLayout](PDF.xml#L112)|Boolean|Setting the text direction-layout is supported
PDF supports setting the text direction-layout (e.g. left-to-right or right-to-left) in the document description +[UploadToFileShare](PDF.xml#L118) *([Experimental](Common.md#Experimental))*|Boolean|Support of PDF document upload
A file share connection needs to be configured on the server. The response of a corresponding request is then `301 Moved Permanently` with a `Location` header containing the link to the document on the file share server. diff --git a/vocabularies/PDF.xml b/vocabularies/PDF.xml index 21912e95e..a12551269 100644 --- a/vocabularies/PDF.xml +++ b/vocabularies/PDF.xml @@ -115,6 +115,14 @@ PDF supports setting the text direction-layout (e.g. left-to-right or right-to-left) in the document description
+ + + + + A file share connection needs to be configured on the server. +The response of a corresponding request is then `301 Moved Permanently` with a `Location` header containing the link to the document on the file share server. + + diff --git a/vocabularies/PersonalData.json b/vocabularies/PersonalData.json index c8ae689fe..95339f4ce 100644 --- a/vocabularies/PersonalData.json +++ b/vocabularies/PersonalData.json @@ -94,8 +94,8 @@ { "@Common.Experimental": true, "Value": "PurposeID", - "@Core.Description": "The unique identifier for the purpose of a consent", - "@Core.LongDescription": "The purpose of a consent is the information that specifies the reason and the goal for\n the processing of a specific set of personal data. As a rule, the purpose\n references the relevant legal basis for the processing of personal data." + "@Core.Description": "The unique identifier for the purpose of a processing of personal data", + "@Core.LongDescription": "Any processing of personal data is based on specified, explicit, and legitimate purposes, and data are not further processed in a manner that is incompatible with those purposes. The purposes are defined by the data controller or joint data controllers.\n " }, { "Value": "ContractRelatedID", @@ -103,10 +103,12 @@ "@Core.LongDescription": "Examples:\n\n - Sales Contract ID\n\n - Purchase Contract ID\n\n - Service Contract ID\n " }, { - "@Common.Experimental": true, "Value": "LegalEntityID", "@Core.Description": "The unique identifier of a legal entity", - "@Core.LongDescription": "A legal entity is a corporation, an association, or any other organization of legal capacity, which has statutory rights and responsibilities." + "@Core.LongDescription": "A legal entity is a corporation, an association, or any other organization of legal capacity, which has statutory rights and responsibilities.", + "@Core.Revisions": [ + { "Kind": "Deprecated", "Description": "Deprecated in favor of [`DataControllerID`](#DataControllerID)" } + ] }, { "@Common.Experimental": true, @@ -119,6 +121,24 @@ "Value": "EndOfBusinessDate", "@Core.Description": "Defines the end of active business and the start of residence time and retention period", "@Core.LongDescription": "End of business is the point in time when the processing of a set of personal data is no longer required for the active business,\n for example, when a contract is fulfilled. After this has been reached and a customer-defined residence period has passed, the data is blocked and can only be accessed\n by users with special authorizations (for example, tax auditors).\n All fields of type `Edm.Date` or `Edm.DateTimeOffset` on which the end of business determination depends should be annotated." + }, + { + "@Common.Experimental": true, + "Value": "DataControllerID", + "@Core.Description": "The unique identifier of a data controller", + "@Core.LongDescription": "The unique identifier of a legal entity which alone or jointly with others determines the purposes and means of the processing of personal data. \n The Data Controller is fully responsible (and accountable) that data protection and privacy principles (such as purpose limitation or data minimization), defined in the European General Data Protection Regulation (GDPR) or any other data protection legislation, are adhered to when processing personal data. The DataControllerID succeeds the LegalEntityID." + }, + { + "@Common.Experimental": true, + "Value": "BlockingDate", + "@Core.Description": "Defines a date that marks when the provider of the data will block these", + "@Core.LongDescription": "Defines a date that marks when the provider of the data will block these. This is the point in time when the processing of a set of personal data is no longer required for the active business, for example, when a contract is fulfilled. After it has been reached, the data is blocked in the source and can only be displayed by users with special authorizations (for example, tax auditors); however, it is not allowed to create/change/copy/follow-up blocked data. Consumers of the data should consider if there is an additional purpose to process the data beyond the defined blocking date." + }, + { + "@Common.Experimental": true, + "Value": "EndOfRetentionDate", + "@Core.Description": "Defines the date when the provider destroys the data", + "@Core.LongDescription": "Defines a date that marks when the provider of the data can destroy these. Consumers of the data should consider if there is an additional purpose (or a legal hold) to process the data beyond the defined destruction date." } ] }, @@ -128,7 +148,7 @@ "$DefaultValue": true, "$AppliesTo": ["Property"], "@Core.Description": "Property contains potentially personal data", - "@Core.LongDescription": "Personal data is information relating to an identified or identifiable natural person (data subject).\n\nNote: properties annotated with [`FieldSemantics`](#FieldSemantics) need not be additionally annotated with this term.\n\nSee also: [What is personal data?](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en)" + "@Core.LongDescription": "Personal data describes any information which is related to an identified or identifiable natural person (data subject). An identifiable person is one who can be identified, directly or indirectly, in particular by a reference to an identifier such as a name, an identification number, location data, an online identifier, or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural, or social identity of that natural person. Note: properties annotated with [`FieldSemantics`](#FieldSemantics) need not be additionally annotated with this term.\n " }, "IsPotentiallySensitive": { "$Kind": "Term", @@ -136,7 +156,7 @@ "$DefaultValue": true, "$AppliesTo": ["Property"], "@Core.Description": "Property contains potentially sensitive personal data", - "@Core.LongDescription": "Sensitive data is a colloquial term usually including the following data:\n- Special categories of personal data such as data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, or trade union membership, and the processing of genetic data, biometric data, data concerning health or sex life or sexual orientation\n- Personal data subject to professional secrecy\n- Personal data relating to criminal or administrative offences\n- Personal data concerning bank or credit card accounts\n\nSee also: [What personal data is considered sensitive?](https://ec.europa.eu/info/law/law-topic/data-protection/reform/rules-business-and-organisations/legal-grounds-processing-data/sensitive-data/what-personal-data-considered-sensitive_en)" + "@Core.LongDescription": "Sensitive personal data is a category of personal data that needs special handling. The determination which personal data is sensitive may differ for different legal areas or industries. Examples of sensitive personal data:\n - Special categories of personal data, such as data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, trade union membership, genetic data, biometric data, data concerning health or sex life or sexual orientation.\n - Personal data subject to professional secrecy. \n - Personal data relating to criminal or administrative offences.\n - Personal data concerning insurances and bank or credit card accounts.\n " } } } diff --git a/vocabularies/PersonalData.md b/vocabularies/PersonalData.md index 674e07b3f..9dcdeef62 100644 --- a/vocabularies/PersonalData.md +++ b/vocabularies/PersonalData.md @@ -31,8 +31,8 @@ Term|Type|Description [DataSubjectRole](PersonalData.xml#L61)|String?|Role of the data subjects in this set (e.g. employee, customer)
Values are application-specific. Can be a static value or a `Path` expression If the role varies per entity [DataSubjectRoleDescription](PersonalData.xml#L68)|String?|Language-dependent description of the role of the data subjects in this set (e.g. employee, customer)
Values are application-specific. Can be a static value or a `Path` expression If the role varies per entity [FieldSemantics](PersonalData.xml#L111)|[FieldSemanticsType](#FieldSemanticsType)|Primary meaning of the personal data contained in the annotated property
Changes to values of annotated properties are tracked in the audit log. Use this annotation also on fields that are already marked as contact or address data. -[IsPotentiallyPersonal](PersonalData.xml#L195)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property contains potentially personal data
Personal data is information relating to an identified or identifiable natural person (data subject).
Note: properties annotated with [`FieldSemantics`](#FieldSemantics) need not be additionally annotated with this term.
See also: [What is personal data?](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) -[IsPotentiallySensitive](PersonalData.xml#L206)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property contains potentially sensitive personal data

Sensitive data is a colloquial term usually including the following data:

See also: What personal data is considered sensitive?

+[IsPotentiallyPersonal](PersonalData.xml#L226)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property contains potentially personal data
Personal data describes any information which is related to an identified or identifiable natural person (data subject). An identifiable person is one who can be identified, directly or indirectly, in particular by a reference to an identifier such as a name, an identification number, location data, an online identifier, or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural, or social identity of that natural person. Note: properties annotated with [`FieldSemantics`](#FieldSemantics) need not be additionally annotated with this term. +[IsPotentiallySensitive](PersonalData.xml#L234)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Property contains potentially sensitive personal data
Sensitive personal data is a category of personal data that needs special handling. The determination which personal data is sensitive may differ for different legal areas or industries. Examples of sensitive personal data: - Special categories of personal data, such as data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, trade union membership, genetic data, biometric data, data concerning health or sex life or sexual orientation. - Personal data subject to professional secrecy. - Personal data relating to criminal or administrative offences. - Personal data concerning insurances and bank or credit card accounts. ## [EntitySemanticsType](PersonalData.xml#L76) @@ -57,8 +57,11 @@ Allowed Value|Description [DataSubjectID](PersonalData.xml#L119)|The unique identifier for a data subject [DataSubjectIDType](PersonalData.xml#L123) *([Experimental](Common.md#Experimental))*|The type of ID identifying the data subject and which is allocated when creating a consent record, e.g. an e-mail address or a phone number. [ConsentID](PersonalData.xml#L128) *([Experimental](Common.md#Experimental))*|The unique identifier for a consent
A consent is the action of the data subject confirming that the usage of his or her personal data shall be allowed for a given purpose. A consent functionality allows the storage of a consent record in relation to a specific purpose and shows if a data subject has granted, withdrawn, or denied consent. -[PurposeID](PersonalData.xml#L140) *([Experimental](Common.md#Experimental))*|The unique identifier for the purpose of a consent
The purpose of a consent is the information that specifies the reason and the goal for the processing of a specific set of personal data. As a rule, the purpose references the relevant legal basis for the processing of personal data. -[ContractRelatedID](PersonalData.xml#L150)|The unique identifier for transactional data that is related to a contract that requires processing of personal data
Examples:
- Sales Contract ID
- Purchase Contract ID
- Service Contract ID -[LegalEntityID](PersonalData.xml#L164) *([Experimental](Common.md#Experimental))*|The unique identifier of a legal entity
A legal entity is a corporation, an association, or any other organization of legal capacity, which has statutory rights and responsibilities. -[UserID](PersonalData.xml#L172) *([Experimental](Common.md#Experimental))*|The unique identifier of a user
A user is an individual who interacts with the services supplied by a system. -[EndOfBusinessDate](PersonalData.xml#L180) *([Experimental](Common.md#Experimental))*|Defines the end of active business and the start of residence time and retention period
End of business is the point in time when the processing of a set of personal data is no longer required for the active business, for example, when a contract is fulfilled. After this has been reached and a customer-defined residence period has passed, the data is blocked and can only be accessed by users with special authorizations (for example, tax auditors). All fields of type `Edm.Date` or `Edm.DateTimeOffset` on which the end of business determination depends should be annotated. +[PurposeID](PersonalData.xml#L140) *([Experimental](Common.md#Experimental))*|The unique identifier for the purpose of a processing of personal data
Any processing of personal data is based on specified, explicit, and legitimate purposes, and data are not further processed in a manner that is incompatible with those purposes. The purposes are defined by the data controller or joint data controllers. +[ContractRelatedID](PersonalData.xml#L149)|The unique identifier for transactional data that is related to a contract that requires processing of personal data
Examples:
- Sales Contract ID
- Purchase Contract ID
- Service Contract ID +[LegalEntityID](PersonalData.xml#L163) *(Deprecated)*|Deprecated in favor of [`DataControllerID`](#DataControllerID) +[UserID](PersonalData.xml#L178) *([Experimental](Common.md#Experimental))*|The unique identifier of a user
A user is an individual who interacts with the services supplied by a system. +[EndOfBusinessDate](PersonalData.xml#L186) *([Experimental](Common.md#Experimental))*|Defines the end of active business and the start of residence time and retention period
End of business is the point in time when the processing of a set of personal data is no longer required for the active business, for example, when a contract is fulfilled. After this has been reached and a customer-defined residence period has passed, the data is blocked and can only be accessed by users with special authorizations (for example, tax auditors). All fields of type `Edm.Date` or `Edm.DateTimeOffset` on which the end of business determination depends should be annotated. +[DataControllerID](PersonalData.xml#L197) *([Experimental](Common.md#Experimental))*|The unique identifier of a data controller
The unique identifier of a legal entity which alone or jointly with others determines the purposes and means of the processing of personal data. The Data Controller is fully responsible (and accountable) that data protection and privacy principles (such as purpose limitation or data minimization), defined in the European General Data Protection Regulation (GDPR) or any other data protection legislation, are adhered to when processing personal data. The DataControllerID succeeds the LegalEntityID. +[BlockingDate](PersonalData.xml#L206) *([Experimental](Common.md#Experimental))*|Defines a date that marks when the provider of the data will block these
Defines a date that marks when the provider of the data will block these. This is the point in time when the processing of a set of personal data is no longer required for the active business, for example, when a contract is fulfilled. After it has been reached, the data is blocked in the source and can only be displayed by users with special authorizations (for example, tax auditors); however, it is not allowed to create/change/copy/follow-up blocked data. Consumers of the data should consider if there is an additional purpose to process the data beyond the defined blocking date. +[EndOfRetentionDate](PersonalData.xml#L214) *([Experimental](Common.md#Experimental))*|Defines the date when the provider destroys the data
Defines a date that marks when the provider of the data can destroy these. Consumers of the data should consider if there is an additional purpose (or a legal hold) to process the data beyond the defined destruction date. diff --git a/vocabularies/PersonalData.xml b/vocabularies/PersonalData.xml index ebf25f405..b0ea5c223 100644 --- a/vocabularies/PersonalData.xml +++ b/vocabularies/PersonalData.xml @@ -140,11 +140,10 @@ Terms for contact and address information are defined in the [Communication voca - + - The purpose of a consent is the information that specifies the reason and the goal for - the processing of a specific set of personal data. As a rule, the purpose - references the relevant legal basis for the processing of personal data. + Any processing of personal data is based on specified, explicit, and legitimate purposes, and data are not further processed in a manner that is incompatible with those purposes. The purposes are defined by the data controller or joint data controllers. + @@ -162,12 +161,19 @@ Terms for contact and address information are defined in the [Communication voca - A legal entity is a corporation, an association, or any other organization of legal capacity, which has statutory rights and responsibilities. + + + + + + + + @@ -188,6 +194,31 @@ Terms for contact and address information are defined in the [Communication voca All fields of type `Edm.Date` or `Edm.DateTimeOffset` on which the end of business determination depends should be annotated. + + + + + + The unique identifier of a legal entity which alone or jointly with others determines the purposes and means of the processing of personal data. + The Data Controller is fully responsible (and accountable) that data protection and privacy principles (such as purpose limitation or data minimization), defined in the European General Data Protection Regulation (GDPR) or any other data protection legislation, are adhered to when processing personal data. The DataControllerID succeeds the LegalEntityID. + + + + + + + + Defines a date that marks when the provider of the data will block these. This is the point in time when the processing of a set of personal data is no longer required for the active business, for example, when a contract is fulfilled. After it has been reached, the data is blocked in the source and can only be displayed by users with special authorizations (for example, tax auditors); however, it is not allowed to create/change/copy/follow-up blocked data. Consumers of the data should consider if there is an additional purpose to process the data beyond the defined blocking date. + + + + + + + + Defines a date that marks when the provider of the data can destroy these. Consumers of the data should consider if there is an additional purpose (or a legal hold) to process the data beyond the defined destruction date. + + @@ -195,24 +226,20 @@ Terms for contact and address information are defined in the [Communication voca - Personal data is information relating to an identified or identifiable natural person (data subject). - -Note: properties annotated with [`FieldSemantics`](#FieldSemantics) need not be additionally annotated with this term. - -See also: [What is personal data?](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) + Personal data describes any information which is related to an identified or identifiable natural person (data subject). An identifiable person is one who can be identified, directly or indirectly, in particular by a reference to an identifier such as a name, an identification number, location data, an online identifier, or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural, or social identity of that natural person. Note: properties annotated with [`FieldSemantics`](#FieldSemantics) need not be additionally annotated with this term. + - Sensitive data is a colloquial term usually including the following data: -- Special categories of personal data such as data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, or trade union membership, and the processing of genetic data, biometric data, data concerning health or sex life or sexual orientation -- Personal data subject to professional secrecy -- Personal data relating to criminal or administrative offences -- Personal data concerning bank or credit card accounts - -See also: [What personal data is considered sensitive?](https://ec.europa.eu/info/law/law-topic/data-protection/reform/rules-business-and-organisations/legal-grounds-processing-data/sensitive-data/what-personal-data-considered-sensitive_en) + Sensitive personal data is a category of personal data that needs special handling. The determination which personal data is sensitive may differ for different legal areas or industries. Examples of sensitive personal data: + - Special categories of personal data, such as data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, trade union membership, genetic data, biometric data, data concerning health or sex life or sexual orientation. + - Personal data subject to professional secrecy. + - Personal data relating to criminal or administrative offences. + - Personal data concerning insurances and bank or credit card accounts. + diff --git a/vocabularies/UI.json b/vocabularies/UI.json index fc795acbd..e6914f9e4 100644 --- a/vocabularies/UI.json +++ b/vocabularies/UI.json @@ -134,7 +134,7 @@ "FieldGroup": { "$Kind": "Term", "$Type": "UI.FieldGroupType", - "$AppliesTo": ["EntityType", "Action", "Function", "FunctionImport"], + "$AppliesTo": ["EntityType", "Action", "Function", "ActionImport", "FunctionImport"], "@Core.Description": "Group of fields with an optional label", "@UI.ThingPerspective": true }, @@ -648,8 +648,9 @@ }, "Actions": { "$Collection": true, - "$Type": "UI.DataFieldForActionAbstract", - "@Core.Description": "Available actions" + "$Type": "UI.DataFieldAbstract", + "@Core.Description": "Available actions and action groups", + "@Validation.DerivedTypeConstraint": ["UI.DataFieldForActionAbstract", "UI.DataFieldForActionGroup"] } }, "ChartType": { @@ -829,7 +830,7 @@ "$Kind": "Term", "$Collection": true, "$Type": "UI.CriticalityLabelType", - "$AppliesTo": ["Property", "EntityType"], + "$AppliesTo": ["Property", "EntityType", "TypeDefinition"], "@Common.Experimental": true, "@Core.Description": "\n Assign labels to criticalities. This information can be used for semantic coloring.\n When applied to a property, a label for a criticality must be provided, if more than one value of the annotated property has been assigned to the same criticality.\n There must be no more than one label per criticality.\n " }, @@ -883,6 +884,14 @@ "$AppliesTo": ["EntityType"], "@Core.Description": "Facets that reference UI.FieldGroup annotations to group filterable fields" }, + "OperationParameterFacets": { + "$Kind": "Term", + "$Collection": true, + "$Type": "UI.ReferenceFacet", + "$AppliesTo": ["Action", "Function", "ActionImport", "FunctionImport"], + "@Common.Experimental": true, + "@Core.Description": "Facets that reference UI.FieldGroup annotations to group action or function parameters" + }, "Facet": { "$Kind": "ComplexType", "$Abstract": true, @@ -1226,7 +1235,7 @@ "$Kind": "Term", "$Type": "Core.Tag", "$DefaultValue": true, - "$AppliesTo": ["Property", "Term"], + "$AppliesTo": ["Property", "Term", "TypeDefinition"], "@Core.Description": "Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image", "@Core.RequiresType": "Edm.String", "@Validation.ApplicableTerms": ["Common.IsNaturalPerson"] @@ -1235,7 +1244,7 @@ "$Kind": "Term", "$Type": "Core.Tag", "$DefaultValue": true, - "$AppliesTo": ["Property", "EntityType"], + "$AppliesTo": ["Property", "EntityType", "TypeDefinition"], "@Common.Experimental": true, "@Core.Description": "Properties annotated with this term MUST be a stream property annotated with a MIME type image. Entity types annotated with this term MUST be a media entity type annotated with a MIME type image.", "@Core.RequiresType": "Edm.Stream", @@ -1245,7 +1254,7 @@ "$Kind": "Term", "$Type": "Core.Tag", "$DefaultValue": true, - "$AppliesTo": ["Property", "PropertyValue", "Parameter"], + "$AppliesTo": ["Property", "PropertyValue", "Parameter", "TypeDefinition"], "@Core.Description": "Properties and parameters annotated with this annotation should be rendered as multi-line text (e.g. text area)", "@Core.RequiresType": "Edm.String" }, @@ -1306,6 +1315,20 @@ "TextOnly": 3, "TextOnly@Core.Description": "Only text is represented, code/ID is hidden (e.g. for UUIDs)" }, + "DateTimeStyle": { + "$Kind": "Term", + "$Nullable": true, + "$AppliesTo": ["Property", "Parameter"], + "@Common.Experimental": true, + "@Core.Description": "The temporal value represented by the annotated property or parameter shall be shown on the UI in the given style", + "@Core.LongDescription": "Requires type `Edm.Date`, `Edm.TimeOfDay`, or `Edm.DateTimeOffset`.\n If this annotation is absent or null or an empty string, temporal values are shown in a default style.", + "@Validation.AllowedValues": [ + { "Value": "short", "@Core.Description": "7/25/24, 1:11 PM" }, + { "Value": "medium", "@Core.Description": "Jul 25, 2024, 1:11:51 PM" }, + { "Value": "long", "@Core.Description": "July 25, 2024 at 1:11:51 PM GMT+2" }, + { "Value": "full", "@Core.Description": "Thursday, July 25, 2024 at 1:11:51 PM Central European Summer Time" } + ] + }, "Note": { "$Kind": "Term", "$Type": "UI.NoteType", @@ -1557,6 +1580,11 @@ "$BaseType": "UI.DataFieldAbstract", "@Common.Experimental": true, "@Core.Description": "Collection of OData actions and intent based navigations", + "ID": { + "$Nullable": true, + "@Core.Description": "Identifier of an action group. ID should be stable, as long as the perceived semantics of the action group is unchanged.", + "@Core.LongDescription": "The ID should be unique among all action groups used in all data fields of one entity type / set." + }, "Actions": { "$Collection": true, "$Type": "UI.DataFieldForActionAbstract", @@ -1717,7 +1745,7 @@ "RecommendationList": { "$Kind": "Term", "$Type": "UI.RecommendationListType", - "$AppliesTo": ["Property", "Parameter"], + "$AppliesTo": ["Property", "Parameter", "TypeDefinition"], "@Core.Description": "Specifies how to get a list of recommended values for a property or parameter", "@Core.LongDescription": "Intelligent systems can help users by recommending input the user may \"prefer\"." }, @@ -1791,7 +1819,7 @@ "DoNotCheckScaleOfMeasuredQuantity": { "$Kind": "Term", "$Type": "Edm.Boolean", - "$AppliesTo": ["Property"], + "$AppliesTo": ["Property", "TypeDefinition"], "@Common.Experimental": true, "@Core.Description": "Do not check the number of fractional digits of the annotated measured quantity", "@Core.LongDescription": "The annotated property contains a measured quantity, and the user may enter more fractional digits than defined for the corresponding unit of measure.\n\nThis switches off the validation of user input with respect to decimals." @@ -1800,7 +1828,7 @@ "$Kind": "Term", "$Type": "UI.UserInteractionType", "$AppliesTo": ["NavigationProperty"], - "@Core.Description": "When the annotated navigation property or its `odata.navigationLink` occurs in a response,\n the UI shall use the addressed entity or collection to interact with the user\n and then repeat the corresponding request with the additional information obtained from the user", + "@Core.Description": "When the annotated navigation property or its `odata.navigationLink` occurs in a response,\n the UI shall use the addressed entity or collection to interact with the user\n and optionally repeat the corresponding request with the additional information obtained from the user", "@Core.LongDescription": "If the response is an [error response](https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_ErrorResponse),\n the annotated navigation property MAY occur in a [`Common.callback`](Common.md#callback) instance annotation.\n A navigation property thus annotated may be interpreted as not belonging to the object model\n but containing auxiliary information that is not always needed. See also [this example](../examples/UI.UserInteraction-sample.md)." }, "UserInteractionSimple": { @@ -1841,20 +1869,27 @@ "@Core.LongDescription": "This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list,\n but one that was sent by the server rather than requested by the user.\n If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request,\n the UI shall invoke that action instead of repeating the request." } }, - "UserInteractionChooseSingle": { + "UserInteractionMandatory": { "$Kind": "ComplexType", + "$Abstract": true, "$BaseType": "UI.UserInteractionType", + "@Core.Description": "The user interaction is mandatory for the corresponding request to be executed", + "@Core.LongDescription": "After the user action, the request is repeated with the additional information obtained from the user.\n If the user action is aborted, the request has had no effect." + }, + "UserInteractionChooseSingle": { + "$Kind": "ComplexType", + "$BaseType": "UI.UserInteractionMandatory", "@Core.Description": "The user shall choose a single entry from the collection and its properties shall be inserted into the repeated request" }, "UserInteractionChooseMultiple": { "$Kind": "ComplexType", - "$BaseType": "UI.UserInteractionType", + "$BaseType": "UI.UserInteractionMandatory", "@Core.Description": "The user shall choose zero or more entries from the collection and a collection of their properties shall be inserted into the repeated request", "@Core.LongDescription": "The properties referenced by `UI.UserInteraction/Parameters/LocalDataProperty` belong to a collection\n that contains one instance per chosen entry." }, "UserInteractionResolveConflict": { "$Kind": "ComplexType", - "$BaseType": "UI.UserInteractionChooseMultiple", + "$BaseType": "UI.UserInteractionMandatory", "@Core.Description": "The user shall resolve a conflict between the entries in the collection and the entire collection shall be inserted into the repeated request" }, "UserInteractionConfirm": { diff --git a/vocabularies/UI.md b/vocabularies/UI.md index 4ade50cbf..75977c1c6 100644 --- a/vocabularies/UI.md +++ b/vocabularies/UI.md @@ -29,57 +29,59 @@ Term|Type|Description [ConnectedFields](UI.xml#L171)|[ConnectedFieldsType](#ConnectedFieldsType)|Group of semantically connected fields with a representation template and an optional label ([Example](UI.xml#L173)) [GeoLocations](UI.xml#L236)|\[[GeoLocationType](#GeoLocationType)\]|Collection of geographic locations [GeoLocation](UI.xml#L240)|[GeoLocationType](#GeoLocationType)|Geographic location -[Contacts](UI.xml#L260)|\[AnnotationPath\]|Collection of contacts
Each collection item MUST reference an annotation of a Communication.Contact
Allowed terms: +[Contacts](UI.xml#L260)|\[AnnotationPath\]|Collection of contacts
Each collection item MUST reference an annotation of a Communication.Contact
Allowed Terms: [MediaResource](UI.xml#L271)|[MediaResourceType](#MediaResourceType)|Properties that describe a media resource
Either `Url` or `Stream` MUST be present, and never both. [DataPoint](UI.xml#L351)|[DataPointType](#DataPointType)|Visualization of a single point of data, typically a number; may also be textual, e.g. a status value [KPI](UI.xml#L659)|[KPIType](#KPIType)|A Key Performance Indicator (KPI) bundles a SelectionVariant and a DataPoint, and provides details for progressive disclosure [Chart](UI.xml#L705)|[ChartDefinitionType](#ChartDefinitionType)|Visualization of multiple data points -[ValueCriticality](UI.xml#L929) *([Experimental](Common.md#Experimental))*|\[[ValueCriticalityType](#ValueCriticalityType)\]|Assign criticalities to primitive values. This information can be used for semantic coloring. -[CriticalityLabels](UI.xml#L942) *([Experimental](Common.md#Experimental))*|\[[CriticalityLabelType](#CriticalityLabelType)\]|Assign labels to criticalities. This information can be used for semantic coloring. When applied to a property, a label for a criticality must be provided, if more than one value of the annotated property has been assigned to the same criticality. There must be no more than one label per criticality. -[SelectionFields](UI.xml#L963)|\[PropertyPath\]|Properties that might be relevant for filtering a collection of entities of this type -[Facets](UI.xml#L970)|\[[Facet](#Facet)\]|Collection of facets -[HeaderFacets](UI.xml#L974)|\[[Facet](#Facet)\]|Facets for additional object header information -[QuickViewFacets](UI.xml#L978)|\[[Facet](#Facet)\]|Facets that may be used for a quick overview of the object -[QuickCreateFacets](UI.xml#L982)|\[[Facet](#Facet)\]|Facets that may be used for a (quick) create of the object -[FilterFacets](UI.xml#L986)|\[[ReferenceFacet](#ReferenceFacet)\]|Facets that reference UI.FieldGroup annotations to group filterable fields -[SelectionPresentationVariant](UI.xml#L1059)|[SelectionPresentationVariantType](#SelectionPresentationVariantType)|A SelectionPresentationVariant bundles a Selection Variant and a Presentation Variant -[PresentationVariant](UI.xml#L1083)|[PresentationVariantType](#PresentationVariantType)|Defines how the result of a queried collection of entities is shaped and how this result is displayed -[SelectionVariant](UI.xml#L1200)|[SelectionVariantType](#SelectionVariantType)|A SelectionVariant denotes a combination of parameters and filters to query the annotated entity set -[ThingPerspective](UI.xml#L1356)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated term is a Thing Perspective -[IsSummary](UI.xml#L1359)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|This Facet and all included Facets are the summary of the thing. At most one Facet of a thing can be tagged with this term -[PartOfPreview](UI.xml#L1363)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|This record and all included structural elements are part of the Thing preview
This term can be applied e.g. to UI.Facet and UI.DataField -[Map](UI.xml#L1367)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Target MUST reference a UI.GeoLocation, Communication.Address or a collection of these -[Gallery](UI.xml#L1371)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Target MUST reference a UI.MediaResource -[IsImageURL](UI.xml#L1376)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image
Can be annotated with: -[IsImage](UI.xml#L1386) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties annotated with this term MUST be a stream property annotated with a MIME type image. Entity types annotated with this term MUST be a media entity type annotated with a MIME type image.
Can be annotated with: -[MultiLineText](UI.xml#L1397)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties and parameters annotated with this annotation should be rendered as multi-line text (e.g. text area) -[Placeholder](UI.xml#L1402)|String|A short, human-readable text that gives a hint or an example to help the user with data entry -[InputMask](UI.xml#L1407) *([Experimental](Common.md#Experimental))*|[InputMaskType](#InputMaskType)|Properties or parameters annotated with this term will get a mask in edit mode
Input masks improve readability and help to enter data correctly. So, masks can be especially useful for input fields that have a fixed pattern, e.g. DUNS numbers or similar. [Here](../examples/UI.InputMask-sample.xml) you can find an example for this annotation -[TextArrangement](UI.xml#L1441)|[TextArrangementType](#TextArrangementType)|Describes the arrangement of a code or ID value and its text

This term annotates one of the following:

  1. a Common.Text annotation of the code or ID property where the annotation value is the text
  2. an entity type, this has the same effect as annotating all Common.Text annotations of properties of that entity type.
-[Note](UI.xml#L1464) *([Experimental](Common.md#Experimental))*|[NoteType](#NoteType)|Visualization of a note attached to an entity
Administrative data is given by the annotations [`Common.CreatedBy`](Common.md#CreatedBy), [`Common.CreatedAt`](Common.md#CreatedAt), [`Common.ChangedBy`](Common.md#ChangedBy), [`Common.ChangedAt`](Common.md#ChangedAt) on the same entity type. -[Importance](UI.xml#L1517)|[ImportanceType](#ImportanceType)|Expresses the importance of e.g. a DataField or an annotation -[Hidden](UI.xml#L1532)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties or facets (see UI.Facet) annotated with this term will not be rendered if the annotation evaluates to true.
Hidden properties usually carry technical information that is used for application control and is of no direct interest to end users. The annotation value may be an expression to dynamically hide or render the annotated feature. If a navigation property is annotated with `Hidden` true, all subsequent parts are hidden - independent of their own potential `Hidden` annotations. -[IsCopyAction](UI.xml#L1540) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated [`DataFieldForAction`](#DataFieldForAction) record references an action that deep-copies an instance of the annotated entity type
The referenced action MUST be bound to the annotated entity type and MUST create a new instance of the same entity type as a deep copy of the bound instance. Upon successful completion, the response MUST contain a `Location` header that contains the edit URL or read URL of the created entity, and the response MUST be either `201 Created` and a representation of the created entity, or `204 No Content` if the request included a `Prefer` header with a value of `return=minimal` and did not include the system query options `$select` and `$expand`. -[IsAIOperation](UI.xml#L1552) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated operation is powered by AI
This term allows making end-users aware that the annotated operation uses AI functionality to process the selected application data. -[CreateHidden](UI.xml#L1560)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|EntitySets annotated with this term can control the visibility of the Create operation dynamically
The annotation value should be a path to another property from a related entity. -[UpdateHidden](UI.xml#L1565)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|EntitySets annotated with this term can control the visibility of the Edit/Save operation dynamically
The annotation value should be a path to another property from the same or a related entity. -[DeleteHidden](UI.xml#L1570)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|EntitySets annotated with this term can control the visibility of the Delete operation dynamically
The annotation value should be a path to another property from the same or a related entity. -[HiddenFilter](UI.xml#L1575)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties annotated with this term will not be rendered as filter criteria if the annotation evaluates to true.
Properties annotated with `HiddenFilter` are intended as parts of a `$filter` expression that cannot be directly influenced by end users. The properties will be rendered in all other places, e.g. table columns or form fields. This is in contrast to properties annotated with [Hidden](#Hidden) that are not rendered at all. If a navigation property is annotated with `HiddenFilter` true, all subsequent parts are hidden in filter - independent of their own potential `HiddenFilter` annotations. -[AdaptationHidden](UI.xml#L1584) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties or entities annotated with this term can't be used for UI adaptation/configuration/personalization
The tagged elements can only be used in UI based on metadata, annnotations or code. -[DataFieldDefault](UI.xml#L1590)|[DataFieldAbstract](#DataFieldAbstract)|Default representation of a property as a datafield, e.g. when the property is added as a table column or form field via personalization
Only concrete subtypes of [DataFieldAbstract](#DataFieldAbstract) can be used for a DataFieldDefault. For type [DataField](#DataField) and its subtypes the annotation target SHOULD be the same property that is referenced via a path expression in the `Value` of the datafield. -[Criticality](UI.xml#L1815)|[CriticalityType](#CriticalityType)|Service-calculated criticality, alternative to UI.CriticalityCalculation -[CriticalityCalculation](UI.xml#L1819)|[CriticalityCalculationType](#CriticalityCalculationType)|Parameters for client-calculated criticality, alternative to UI.Criticality -[Emphasized](UI.xml#L1823) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Highlight something that is of special interest
The usage of a property or operation should be highlighted as it's of special interest for the end user -[OrderBy](UI.xml#L1829) *([Experimental](Common.md#Experimental))*|PropertyPath|Sort by the referenced property instead of by the annotated property
Example: annotated property `SizeCode` has string values XS, S, M, L, XL, referenced property SizeOrder has numeric values -2, -1, 0, 1, 2. Numeric ordering by SizeOrder will be more understandable than lexicographic ordering by SizeCode. -[ParameterDefaultValue](UI.xml#L1835)|PrimitiveType?|Define default values for action parameters
For unbound actions the default value can either be a constant expression, or a dynamic expression using absolute paths, e.g. singletons or function import results. Whereas for bound actions the bound entity and its properties and associated properties can be used as default values -[RecommendationState](UI.xml#L1841)|[RecommendationStateType](#RecommendationStateType)|Indicates whether a field contains or has a recommended value
Intelligent systems can help users by recommending input the user may "prefer". -[RecommendationList](UI.xml#L1871)|[RecommendationListType](#RecommendationListType)|Specifies how to get a list of recommended values for a property or parameter
Intelligent systems can help users by recommending input the user may "prefer". -[Recommendations](UI.xml#L1903) *([Experimental](Common.md#Experimental))*|ComplexType|Recommendations for an entity
This complex-typed annotation contains structural properties corresponding via name equality to non-key structural primitive properties of the entity type for which recommendations are available. The type of such a property is a collection of a informal specialization of [`PropertyRecommendationType`](#PropertyRecommendationType). (The specializiations are called "informal" because they may omit the property `RecommendedFieldDescription`.)
Clients retrieve the recommendations with a GET request that includes this annotation in a `$select` clause. The recommendations MAY be computed asynchronously, see [this diagram](../docs/recommendations.md). -[ExcludeFromNavigationContext](UI.xml#L1949)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The contents of this property must not be propagated to the app-to-app navigation context -[DoNotCheckScaleOfMeasuredQuantity](UI.xml#L1953) *([Experimental](Common.md#Experimental))*|Boolean|Do not check the number of fractional digits of the annotated measured quantity
The annotated property contains a measured quantity, and the user may enter more fractional digits than defined for the corresponding unit of measure.
This switches off the validation of user input with respect to decimals. -[UserInteraction](UI.xml#L1963)|[UserInteractionType](#UserInteractionType)|When the annotated navigation property or its `odata.navigationLink` occurs in a response, the UI shall use the addressed entity or collection to interact with the user and then repeat the corresponding request with the additional information obtained from the user
If the response is an [error response](https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_ErrorResponse), the annotated navigation property MAY occur in a [`Common.callback`](Common.md#callback) instance annotation. A navigation property thus annotated may be interpreted as not belonging to the object model but containing auxiliary information that is not always needed. See also [this example](../examples/UI.UserInteraction-sample.md). -[UserInteractionSimple](UI.xml#L1976)|\[Untyped\]|When this instance annotation occurs in a response, the UI shall let the user choose from the collection and then repeat the corresponding request with the annotated property set to the chosen value
If the response is an [error response](https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_ErrorResponse), the instance annotation MAY occur in a [`Common.callback`](Common.md#callback) instance annotation. -[LeadingEntitySet](UI.xml#L2036) *([Experimental](Common.md#Experimental))*|String|The referenced entity set is the preferred starting point for UIs using this service +[ValueCriticality](UI.xml#L935) *([Experimental](Common.md#Experimental))*|\[[ValueCriticalityType](#ValueCriticalityType)\]|Assign criticalities to primitive values. This information can be used for semantic coloring. +[CriticalityLabels](UI.xml#L948) *([Experimental](Common.md#Experimental))*|\[[CriticalityLabelType](#CriticalityLabelType)\]|Assign labels to criticalities. This information can be used for semantic coloring. When applied to a property, a label for a criticality must be provided, if more than one value of the annotated property has been assigned to the same criticality. There must be no more than one label per criticality. +[SelectionFields](UI.xml#L969)|\[PropertyPath\]|Properties that might be relevant for filtering a collection of entities of this type +[Facets](UI.xml#L976)|\[[Facet](#Facet)\]|Collection of facets +[HeaderFacets](UI.xml#L980)|\[[Facet](#Facet)\]|Facets for additional object header information +[QuickViewFacets](UI.xml#L984)|\[[Facet](#Facet)\]|Facets that may be used for a quick overview of the object +[QuickCreateFacets](UI.xml#L988)|\[[Facet](#Facet)\]|Facets that may be used for a (quick) create of the object +[FilterFacets](UI.xml#L992)|\[[ReferenceFacet](#ReferenceFacet)\]|Facets that reference UI.FieldGroup annotations to group filterable fields +[OperationParameterFacets](UI.xml#L996) *([Experimental](Common.md#Experimental))*|\[[ReferenceFacet](#ReferenceFacet)\]|Facets that reference UI.FieldGroup annotations to group action or function parameters +[SelectionPresentationVariant](UI.xml#L1070)|[SelectionPresentationVariantType](#SelectionPresentationVariantType)|A SelectionPresentationVariant bundles a Selection Variant and a Presentation Variant +[PresentationVariant](UI.xml#L1094)|[PresentationVariantType](#PresentationVariantType)|Defines how the result of a queried collection of entities is shaped and how this result is displayed +[SelectionVariant](UI.xml#L1211)|[SelectionVariantType](#SelectionVariantType)|A SelectionVariant denotes a combination of parameters and filters to query the annotated entity set +[ThingPerspective](UI.xml#L1367)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated term is a Thing Perspective +[IsSummary](UI.xml#L1370)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|This Facet and all included Facets are the summary of the thing. At most one Facet of a thing can be tagged with this term +[PartOfPreview](UI.xml#L1374)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|This record and all included structural elements are part of the Thing preview
This term can be applied e.g. to UI.Facet and UI.DataField +[Map](UI.xml#L1378)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Target MUST reference a UI.GeoLocation, Communication.Address or a collection of these +[Gallery](UI.xml#L1382)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Target MUST reference a UI.MediaResource +[IsImageURL](UI.xml#L1387)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image
Applicable Annotation Terms: +[IsImage](UI.xml#L1397) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties annotated with this term MUST be a stream property annotated with a MIME type image. Entity types annotated with this term MUST be a media entity type annotated with a MIME type image.
Applicable Annotation Terms: +[MultiLineText](UI.xml#L1408)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties and parameters annotated with this annotation should be rendered as multi-line text (e.g. text area) +[Placeholder](UI.xml#L1413)|String|A short, human-readable text that gives a hint or an example to help the user with data entry +[InputMask](UI.xml#L1418) *([Experimental](Common.md#Experimental))*|[InputMaskType](#InputMaskType)|Properties or parameters annotated with this term will get a mask in edit mode
Input masks improve readability and help to enter data correctly. So, masks can be especially useful for input fields that have a fixed pattern, e.g. DUNS numbers or similar. [Here](../examples/UI.InputMask-sample.xml) you can find an example for this annotation +[TextArrangement](UI.xml#L1452)|[TextArrangementType](#TextArrangementType)|Describes the arrangement of a code or ID value and its text

This term annotates one of the following:

  1. a Common.Text annotation of the code or ID property where the annotation value is the text
  2. an entity type, this has the same effect as annotating all Common.Text annotations of properties of that entity type.
+[DateTimeStyle](UI.xml#L1475) *([Experimental](Common.md#Experimental))*|String?|The temporal value represented by the annotated property or parameter shall be shown on the UI in the given style
Requires type `Edm.Date`, `Edm.TimeOfDay`, or `Edm.DateTimeOffset`. If this annotation is absent or null or an empty string, temporal values are shown in a default style.
Allowed Values:
[short](UI.xml#L1484)
7/25/24, 1:11 PM
[medium](UI.xml#L1488)
Jul 25, 2024, 1:11:51 PM
[long](UI.xml#L1492)
July 25, 2024 at 1:11:51 PM GMT+2
[full](UI.xml#L1496)
Thursday, July 25, 2024 at 1:11:51 PM Central European Summer Time
+[Note](UI.xml#L1504) *([Experimental](Common.md#Experimental))*|[NoteType](#NoteType)|Visualization of a note attached to an entity
Administrative data is given by the annotations [`Common.CreatedBy`](Common.md#CreatedBy), [`Common.CreatedAt`](Common.md#CreatedAt), [`Common.ChangedBy`](Common.md#ChangedBy), [`Common.ChangedAt`](Common.md#ChangedAt) on the same entity type. +[Importance](UI.xml#L1557)|[ImportanceType](#ImportanceType)|Expresses the importance of e.g. a DataField or an annotation +[Hidden](UI.xml#L1572)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties or facets (see UI.Facet) annotated with this term will not be rendered if the annotation evaluates to true.
Hidden properties usually carry technical information that is used for application control and is of no direct interest to end users. The annotation value may be an expression to dynamically hide or render the annotated feature. If a navigation property is annotated with `Hidden` true, all subsequent parts are hidden - independent of their own potential `Hidden` annotations. +[IsCopyAction](UI.xml#L1580) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated [`DataFieldForAction`](#DataFieldForAction) record references an action that deep-copies an instance of the annotated entity type
The referenced action MUST be bound to the annotated entity type and MUST create a new instance of the same entity type as a deep copy of the bound instance. Upon successful completion, the response MUST contain a `Location` header that contains the edit URL or read URL of the created entity, and the response MUST be either `201 Created` and a representation of the created entity, or `204 No Content` if the request included a `Prefer` header with a value of `return=minimal` and did not include the system query options `$select` and `$expand`. +[IsAIOperation](UI.xml#L1592) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The annotated operation is powered by AI
This term allows making end-users aware that the annotated operation uses AI functionality to process the selected application data. +[CreateHidden](UI.xml#L1600)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|EntitySets annotated with this term can control the visibility of the Create operation dynamically
The annotation value should be a path to another property from a related entity. +[UpdateHidden](UI.xml#L1605)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|EntitySets annotated with this term can control the visibility of the Edit/Save operation dynamically
The annotation value should be a path to another property from the same or a related entity. +[DeleteHidden](UI.xml#L1610)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|EntitySets annotated with this term can control the visibility of the Delete operation dynamically
The annotation value should be a path to another property from the same or a related entity. +[HiddenFilter](UI.xml#L1615)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties annotated with this term will not be rendered as filter criteria if the annotation evaluates to true.
Properties annotated with `HiddenFilter` are intended as parts of a `$filter` expression that cannot be directly influenced by end users. The properties will be rendered in all other places, e.g. table columns or form fields. This is in contrast to properties annotated with [Hidden](#Hidden) that are not rendered at all. If a navigation property is annotated with `HiddenFilter` true, all subsequent parts are hidden in filter - independent of their own potential `HiddenFilter` annotations. +[AdaptationHidden](UI.xml#L1624) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Properties or entities annotated with this term can't be used for UI adaptation/configuration/personalization
The tagged elements can only be used in UI based on metadata, annnotations or code. +[DataFieldDefault](UI.xml#L1630)|[DataFieldAbstract](#DataFieldAbstract)|Default representation of a property as a datafield, e.g. when the property is added as a table column or form field via personalization
Only concrete subtypes of [DataFieldAbstract](#DataFieldAbstract) can be used for a DataFieldDefault. For type [DataField](#DataField) and its subtypes the annotation target SHOULD be the same property that is referenced via a path expression in the `Value` of the datafield. +[Criticality](UI.xml#L1861)|[CriticalityType](#CriticalityType)|Service-calculated criticality, alternative to UI.CriticalityCalculation +[CriticalityCalculation](UI.xml#L1865)|[CriticalityCalculationType](#CriticalityCalculationType)|Parameters for client-calculated criticality, alternative to UI.Criticality +[Emphasized](UI.xml#L1869) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|Highlight something that is of special interest
The usage of a property or operation should be highlighted as it's of special interest for the end user +[OrderBy](UI.xml#L1875) *([Experimental](Common.md#Experimental))*|PropertyPath|Sort by the referenced property instead of by the annotated property
Example: annotated property `SizeCode` has string values XS, S, M, L, XL, referenced property SizeOrder has numeric values -2, -1, 0, 1, 2. Numeric ordering by SizeOrder will be more understandable than lexicographic ordering by SizeCode. +[ParameterDefaultValue](UI.xml#L1881)|PrimitiveType?|Define default values for action parameters
For unbound actions the default value can either be a constant expression, or a dynamic expression using absolute paths, e.g. singletons or function import results. Whereas for bound actions the bound entity and its properties and associated properties can be used as default values +[RecommendationState](UI.xml#L1887)|[RecommendationStateType](#RecommendationStateType)|Indicates whether a field contains or has a recommended value
Intelligent systems can help users by recommending input the user may "prefer". +[RecommendationList](UI.xml#L1917)|[RecommendationListType](#RecommendationListType)|Specifies how to get a list of recommended values for a property or parameter
Intelligent systems can help users by recommending input the user may "prefer". +[Recommendations](UI.xml#L1949) *([Experimental](Common.md#Experimental))*|ComplexType|Recommendations for an entity
This complex-typed annotation contains structural properties corresponding via name equality to non-key structural primitive properties of the entity type for which recommendations are available. The type of such a property is a collection of a informal specialization of [`PropertyRecommendationType`](#PropertyRecommendationType). (The specializiations are called "informal" because they may omit the property `RecommendedFieldDescription`.)
Clients retrieve the recommendations with a GET request that includes this annotation in a `$select` clause. The recommendations MAY be computed asynchronously, see [this diagram](../docs/recommendations.md). +[ExcludeFromNavigationContext](UI.xml#L1995)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|The contents of this property must not be propagated to the app-to-app navigation context +[DoNotCheckScaleOfMeasuredQuantity](UI.xml#L1999) *([Experimental](Common.md#Experimental))*|Boolean|Do not check the number of fractional digits of the annotated measured quantity
The annotated property contains a measured quantity, and the user may enter more fractional digits than defined for the corresponding unit of measure.
This switches off the validation of user input with respect to decimals. +[UserInteraction](UI.xml#L2009)|[UserInteractionType](#UserInteractionType)|When the annotated navigation property or its `odata.navigationLink` occurs in a response, the UI shall use the addressed entity or collection to interact with the user and optionally repeat the corresponding request with the additional information obtained from the user
If the response is an [error response](https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_ErrorResponse), the annotated navigation property MAY occur in a [`Common.callback`](Common.md#callback) instance annotation. A navigation property thus annotated may be interpreted as not belonging to the object model but containing auxiliary information that is not always needed. See also [this example](../examples/UI.UserInteraction-sample.md). +[UserInteractionSimple](UI.xml#L2022)|\[Untyped\]
Allowed Derived Types:|When this instance annotation occurs in a response, the UI shall let the user choose from the collection and then repeat the corresponding request with the annotated property set to the chosen value
If the response is an [error response](https://docs.oasis-open.org/odata/odata-json-format/v4.01/odata-json-format-v4.01.html#sec_ErrorResponse), the instance annotation MAY occur in a [`Common.callback`](Common.md#callback) instance annotation. +[LeadingEntitySet](UI.xml#L2089) *([Experimental](Common.md#Experimental))*|String|The referenced entity set is the preferred starting point for UIs using this service ## [HeaderInfoType](UI.xml#L68) @@ -89,8 +91,8 @@ Property|Type|Description :-------|:---|:---------- [TypeName](UI.xml#L69)|String|Name of the main entity type [TypeNamePlural](UI.xml#L73)|String|Plural form of the name of the main entity type -[Title](UI.xml#L77)|[DataFieldAbstract?](#DataFieldAbstract)|Title, e.g. for overview pages
This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). -[Description](UI.xml#L87)|[DataFieldAbstract?](#DataFieldAbstract)|Description, e.g. for overview pages
This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). +[Title](UI.xml#L77)|[DataFieldAbstract?](#DataFieldAbstract)
Allowed Derived Types:|Title, e.g. for overview pages
This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). +[Description](UI.xml#L87)|[DataFieldAbstract?](#DataFieldAbstract)
Allowed Derived Types:|Description, e.g. for overview pages
This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). [Image](UI.xml#L97) *([Experimental](Common.md#Experimental))*|Stream?|Image for an instance of the entity type. If the property has a valid value, it can be used for the visualization of the instance. If it is not available or not valid the value of the property `ImageUrl` can be used instead. [ImageUrl](UI.xml#L101)|URL?|Image URL for an instance of the entity type. If the property has a valid value, it can be used for the visualization of the instance. If it is not available or not valid the value of the property `TypeImageUrl` can be used instead. [TypeImageUrl](UI.xml#L105)|URL?|Image URL for the entity type @@ -145,8 +147,8 @@ Property|Type|Description Property|Type|Description :-------|:---|:---------- -[Url](UI.xml#L277)|URL?|URL of media resource
Can be annotated with: -[Stream](UI.xml#L286) *([Experimental](Common.md#Experimental))*|Stream?|Stream of media resource
Can be annotated with: +[Url](UI.xml#L277)|URL?|URL of media resource
Applicable Annotation Terms: +[Stream](UI.xml#L286) *([Experimental](Common.md#Experimental))*|Stream?|Stream of media resource
Applicable Annotation Terms: [ContentType](UI.xml#L295)|MediaType?|Content type, such as application/pdf, video/x-flv, image/jpeg [ByteSize](UI.xml#L299)|Int64?|Resource size in bytes [ChangedAt](UI.xml#L302)|DateTimeOffset?|Date of last change @@ -163,7 +165,7 @@ Either `Url` or `Stream` MUST be present, and never both. Property|Type|Description :-------|:---|:---------- [Url](UI.xml#L318)|URL|URL of image -[Stream](UI.xml#L322) *([Experimental](Common.md#Experimental))*|Stream?|Stream of image
Can be annotated with: +[Stream](UI.xml#L322) *([Experimental](Common.md#Experimental))*|Stream?|Stream of image
Applicable Annotation Terms: [Width](UI.xml#L331)|String?|Width of image [Height](UI.xml#L334)|String?|Height of image @@ -176,7 +178,7 @@ Property|Type|Description [Title](UI.xml#L356)|String?|Title of the data point [Description](UI.xml#L360)|String?|Short description [LongDescription](UI.xml#L364)|String?|Full description -[Value](UI.xml#L368)|PrimitiveType|Numeric value
The value is typically provided via a `Path` construct. The path MUST lead to a direct property of the same entity type or a property of a complex property (recursively) of that entity type, navigation segments are not allowed.
It could be annotated with either `UoM.ISOCurrency` or `UoM.Unit`. Percentage values are annotated with `UoM.Unit = '%'`. A renderer should take an optional `Common.Text` annotation into consideration. +[Value](UI.xml#L368)|PrimitiveType|Numeric value
The value is typically provided via a `Path` construct. The path MUST lead to a direct property of the same entity type or a property of a complex property (recursively) of that entity type, navigation segments are not allowed.
It could be annotated with either `UoM.ISOCurrency` or `UoM.Unit`. Percentage values are annotated with `UoM.Unit = '%'`. A renderer should take an optional `Common.Text` annotation into consideration. [TargetValue](UI.xml#L380)|PrimitiveType?|Target value [ForecastValue](UI.xml#L383)|PrimitiveType?|Forecast value [MinimumValue](UI.xml#L386)|Decimal?|Minimum value (for output rendering) @@ -186,7 +188,7 @@ Property|Type|Description [SampleSize](UI.xml#L398)|PrimitiveType?|Sample size used for the determination of the data point; should contain just integer value as Edm.Byte, Edm.SByte, Edm.Intxx, and Edm.Decimal with scale 0. [ReferencePeriod](UI.xml#L405)|[ReferencePeriod?](#ReferencePeriod)|Reference period [Criticality](UI.xml#L408)|[CriticalityType?](#CriticalityType)|Service-calculated criticality, alternative to CriticalityCalculation -[CriticalityLabels](UI.xml#L411)|AnnotationPath?|Custom labels for the criticality legend. Annotation path MUST end in UI.CriticalityLabels
Allowed terms: +[CriticalityLabels](UI.xml#L411)|AnnotationPath?|Custom labels for the criticality legend. Annotation path MUST end in UI.CriticalityLabels
Allowed Terms: [CriticalityRepresentation](UI.xml#L419) *([Experimental](Common.md#Experimental))*|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon [CriticalityCalculation](UI.xml#L423)|[CriticalityCalculationType?](#CriticalityCalculationType)|Parameters for client-calculated criticality, alternative to Criticality [Trend](UI.xml#L426)|[TrendType?](#TrendType)|Service-calculated trend, alternative to TrendCalculation @@ -400,178 +402,178 @@ Property|Type|Description [ChartType](UI.xml#L718)|[ChartType](#ChartType)|Chart type [AxisScaling](UI.xml#L721)|[ChartAxisScalingType?](#ChartAxisScalingType)|Describes the scale of the chart value axes [Measures](UI.xml#L724)|\[PropertyPath\]|Measures of the chart, e.g. size and color in a bubble chart -[DynamicMeasures](UI.xml#L728)|\[AnnotationPath\]|Dynamic properties introduced by annotations and used as measures of the chart
If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being visualized according to the `UI.Chart` annotation, the annotation path MUST be silently ignored.
Allowed terms: +[DynamicMeasures](UI.xml#L728)|\[AnnotationPath\]|Dynamic properties introduced by annotations and used as measures of the chart
If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being visualized according to the `UI.Chart` annotation, the annotation path MUST be silently ignored.
Allowed Terms: [MeasureAttributes](UI.xml#L741)|\[[ChartMeasureAttributeType](#ChartMeasureAttributeType)\]|Describes Attributes for Measures. All Measures used in this collection must also be part of the Measures Property. [Dimensions](UI.xml#L746)|\[PropertyPath\]|Dimensions of the chart, e.g. x- and y-axis of a bubble chart [DimensionAttributes](UI.xml#L749)|\[[ChartDimensionAttributeType](#ChartDimensionAttributeType)\]|Describes Attributes for Dimensions. All Dimensions used in this collection must also be part of the Dimensions Property. -[Actions](UI.xml#L754)|\[[DataFieldForActionAbstract](#DataFieldForActionAbstract)\]|Available actions +[Actions](UI.xml#L754)|\[[DataFieldAbstract](#DataFieldAbstract)\]
Allowed Derived Types:|Available actions and action groups -## [ChartType](UI.xml#L759) +## [ChartType](UI.xml#L765) Member|Value|Description :-----|----:|:---------- -[Column](UI.xml#L760)|0| -[ColumnStacked](UI.xml#L761)|1| -[ColumnDual](UI.xml#L762)|2| -[ColumnStackedDual](UI.xml#L763)|3| -[ColumnStacked100](UI.xml#L764)|4| -[ColumnStackedDual100](UI.xml#L765)|5| -[Bar](UI.xml#L766)|6| -[BarStacked](UI.xml#L767)|7| -[BarDual](UI.xml#L768)|8| -[BarStackedDual](UI.xml#L769)|9| -[BarStacked100](UI.xml#L770)|10| -[BarStackedDual100](UI.xml#L771)|11| -[Area](UI.xml#L772)|12| -[AreaStacked](UI.xml#L773)|13| -[AreaStacked100](UI.xml#L774)|14| -[HorizontalArea](UI.xml#L775)|15| -[HorizontalAreaStacked](UI.xml#L776)|16| -[HorizontalAreaStacked100](UI.xml#L777)|17| -[Line](UI.xml#L778)|18| -[LineDual](UI.xml#L779)|19| -[Combination](UI.xml#L780)|20| -[CombinationStacked](UI.xml#L781)|21| -[CombinationDual](UI.xml#L782)|22| -[CombinationStackedDual](UI.xml#L783)|23| -[HorizontalCombinationStacked](UI.xml#L784)|24| -[Pie](UI.xml#L785)|25| -[Donut](UI.xml#L786)|26| -[Scatter](UI.xml#L787)|27| -[Bubble](UI.xml#L788)|28| -[Radar](UI.xml#L789)|29| -[HeatMap](UI.xml#L790)|30| -[TreeMap](UI.xml#L791)|31| -[Waterfall](UI.xml#L792)|32| -[Bullet](UI.xml#L793)|33| -[VerticalBullet](UI.xml#L794)|34| -[HorizontalWaterfall](UI.xml#L795)|35| -[HorizontalCombinationDual](UI.xml#L796)|36| -[HorizontalCombinationStackedDual](UI.xml#L797)|37| -[Donut100](UI.xml#L798) *([Experimental](Common.md#Experimental))*|38| +[Column](UI.xml#L766)|0| +[ColumnStacked](UI.xml#L767)|1| +[ColumnDual](UI.xml#L768)|2| +[ColumnStackedDual](UI.xml#L769)|3| +[ColumnStacked100](UI.xml#L770)|4| +[ColumnStackedDual100](UI.xml#L771)|5| +[Bar](UI.xml#L772)|6| +[BarStacked](UI.xml#L773)|7| +[BarDual](UI.xml#L774)|8| +[BarStackedDual](UI.xml#L775)|9| +[BarStacked100](UI.xml#L776)|10| +[BarStackedDual100](UI.xml#L777)|11| +[Area](UI.xml#L778)|12| +[AreaStacked](UI.xml#L779)|13| +[AreaStacked100](UI.xml#L780)|14| +[HorizontalArea](UI.xml#L781)|15| +[HorizontalAreaStacked](UI.xml#L782)|16| +[HorizontalAreaStacked100](UI.xml#L783)|17| +[Line](UI.xml#L784)|18| +[LineDual](UI.xml#L785)|19| +[Combination](UI.xml#L786)|20| +[CombinationStacked](UI.xml#L787)|21| +[CombinationDual](UI.xml#L788)|22| +[CombinationStackedDual](UI.xml#L789)|23| +[HorizontalCombinationStacked](UI.xml#L790)|24| +[Pie](UI.xml#L791)|25| +[Donut](UI.xml#L792)|26| +[Scatter](UI.xml#L793)|27| +[Bubble](UI.xml#L794)|28| +[Radar](UI.xml#L795)|29| +[HeatMap](UI.xml#L796)|30| +[TreeMap](UI.xml#L797)|31| +[Waterfall](UI.xml#L798)|32| +[Bullet](UI.xml#L799)|33| +[VerticalBullet](UI.xml#L800)|34| +[HorizontalWaterfall](UI.xml#L801)|35| +[HorizontalCombinationDual](UI.xml#L802)|36| +[HorizontalCombinationStackedDual](UI.xml#L803)|37| +[Donut100](UI.xml#L804) *([Experimental](Common.md#Experimental))*|38| -## [ChartAxisScalingType](UI.xml#L804) +## [ChartAxisScalingType](UI.xml#L810) Property|Type|Description :-------|:---|:---------- -[ScaleBehavior](UI.xml#L805)|[ChartAxisScaleBehaviorType](#ChartAxisScaleBehaviorType)|Scale is fixed or adapts automatically to rendered values -[AutoScaleBehavior](UI.xml#L808)|[ChartAxisAutoScaleBehaviorType?](#ChartAxisAutoScaleBehaviorType)|Settings for automatic scaling -[FixedScaleMultipleStackedMeasuresBoundaryValues](UI.xml#L811)|[FixedScaleMultipleStackedMeasuresBoundaryValuesType?](#FixedScaleMultipleStackedMeasuresBoundaryValuesType)|Boundary values for fixed scaling of a stacking chart type with multiple measures +[ScaleBehavior](UI.xml#L811)|[ChartAxisScaleBehaviorType](#ChartAxisScaleBehaviorType)|Scale is fixed or adapts automatically to rendered values +[AutoScaleBehavior](UI.xml#L814)|[ChartAxisAutoScaleBehaviorType?](#ChartAxisAutoScaleBehaviorType)|Settings for automatic scaling +[FixedScaleMultipleStackedMeasuresBoundaryValues](UI.xml#L817)|[FixedScaleMultipleStackedMeasuresBoundaryValuesType?](#FixedScaleMultipleStackedMeasuresBoundaryValuesType)|Boundary values for fixed scaling of a stacking chart type with multiple measures -## [ChartAxisScaleBehaviorType](UI.xml#L816) +## [ChartAxisScaleBehaviorType](UI.xml#L822) Member|Value|Description :-----|----:|:---------- -[AutoScale](UI.xml#L817)|0|Value axes scale automatically -[FixedScale](UI.xml#L820)|1|Fixed minimum and maximum values are applied, which are derived from the @UI.MeasureAttributes.DataPoint/MinimumValue and .../MaximumValue annotation by default. For stacking chart types with multiple measures, they are taken from ChartAxisScalingType/FixedScaleMultipleStackedMeasuresBoundaryValues. +[AutoScale](UI.xml#L823)|0|Value axes scale automatically +[FixedScale](UI.xml#L826)|1|Fixed minimum and maximum values are applied, which are derived from the @UI.MeasureAttributes.DataPoint/MinimumValue and .../MaximumValue annotation by default. For stacking chart types with multiple measures, they are taken from ChartAxisScalingType/FixedScaleMultipleStackedMeasuresBoundaryValues. -## [ChartAxisAutoScaleBehaviorType](UI.xml#L829) +## [ChartAxisAutoScaleBehaviorType](UI.xml#L835) Property|Type|Description :-------|:---|:---------- -[ZeroAlwaysVisible](UI.xml#L830)|Boolean|Forces the value axis to always display the zero value -[DataScope](UI.xml#L833)|[ChartAxisAutoScaleDataScopeType](#ChartAxisAutoScaleDataScopeType)|Determines the automatic scaling +[ZeroAlwaysVisible](UI.xml#L836)|Boolean|Forces the value axis to always display the zero value +[DataScope](UI.xml#L839)|[ChartAxisAutoScaleDataScopeType](#ChartAxisAutoScaleDataScopeType)|Determines the automatic scaling -## [ChartAxisAutoScaleDataScopeType](UI.xml#L838) +## [ChartAxisAutoScaleDataScopeType](UI.xml#L844) Member|Value|Description :-----|----:|:---------- -[DataSet](UI.xml#L839)|0|Minimum and maximum axes values are determined from the entire data set -[VisibleData](UI.xml#L842)|1|Minimum and maximum axes values are determined from the currently visible data. Scrolling will change the scale. +[DataSet](UI.xml#L845)|0|Minimum and maximum axes values are determined from the entire data set +[VisibleData](UI.xml#L848)|1|Minimum and maximum axes values are determined from the currently visible data. Scrolling will change the scale. -## [FixedScaleMultipleStackedMeasuresBoundaryValuesType](UI.xml#L847) +## [FixedScaleMultipleStackedMeasuresBoundaryValuesType](UI.xml#L853) Property|Type|Description :-------|:---|:---------- -[MinimumValue](UI.xml#L848)|Decimal|Minimum value on value axes -[MaximumValue](UI.xml#L851)|Decimal|Maximum value on value axes +[MinimumValue](UI.xml#L854)|Decimal|Minimum value on value axes +[MaximumValue](UI.xml#L857)|Decimal|Maximum value on value axes -## [ChartDimensionAttributeType](UI.xml#L856) +## [ChartDimensionAttributeType](UI.xml#L862) Property|Type|Description :-------|:---|:---------- -[Dimension](UI.xml#L857)|PropertyPath?| -[Role](UI.xml#L858)|[ChartDimensionRoleType?](#ChartDimensionRoleType)| -[HierarchyLevel](UI.xml#L859) *([Experimental](Common.md#Experimental))*|Int32?|For a dimension with a hierarchy, members are selected from this level. The root node of the hierarchy is at level 0. -[ValuesForSequentialColorLevels](UI.xml#L863) *([Experimental](Common.md#Experimental))*|\[String\]|All values in this collection should be assigned to levels of the same color. -[EmphasizedValues](UI.xml#L867) *([Experimental](Common.md#Experimental))*|\[String\]|All values in this collection should be emphasized. -[EmphasisLabels](UI.xml#L871) *([Experimental](Common.md#Experimental))*|[EmphasisLabelType?](#EmphasisLabelType)|Assign a label to values with an emphasized representation. This is required, if more than one emphasized value has been specified. +[Dimension](UI.xml#L863)|PropertyPath?| +[Role](UI.xml#L864)|[ChartDimensionRoleType?](#ChartDimensionRoleType)| +[HierarchyLevel](UI.xml#L865) *([Experimental](Common.md#Experimental))*|Int32?|For a dimension with a hierarchy, members are selected from this level. The root node of the hierarchy is at level 0. +[ValuesForSequentialColorLevels](UI.xml#L869) *([Experimental](Common.md#Experimental))*|\[String\]|All values in this collection should be assigned to levels of the same color. +[EmphasizedValues](UI.xml#L873) *([Experimental](Common.md#Experimental))*|\[String\]|All values in this collection should be emphasized. +[EmphasisLabels](UI.xml#L877) *([Experimental](Common.md#Experimental))*|[EmphasisLabelType?](#EmphasisLabelType)|Assign a label to values with an emphasized representation. This is required, if more than one emphasized value has been specified. -## [ChartMeasureAttributeType](UI.xml#L877) +## [ChartMeasureAttributeType](UI.xml#L883) Exactly one of `Measure` and `DynamicMeasure` must be present Property|Type|Description :-------|:---|:---------- -[Measure](UI.xml#L879)|PropertyPath?| -[DynamicMeasure](UI.xml#L882)|AnnotationPath?|Dynamic property introduced by an annotation and used as a measure in a chart
If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being visualized according to the `UI.Chart` annotation, the annotation path MUST be silently ignored.
Allowed terms: -[Role](UI.xml#L895)|[ChartMeasureRoleType?](#ChartMeasureRoleType)| -[DataPoint](UI.xml#L896)|AnnotationPath?|Annotation path MUST end in @UI.DataPoint and the data point's Value MUST be the same property as in Measure
Allowed terms: -[UseSequentialColorLevels](UI.xml#L904) *([Experimental](Common.md#Experimental))*|Boolean|All measures for which this setting is true should be assigned to levels of the same color. +[Measure](UI.xml#L885)|PropertyPath?| +[DynamicMeasure](UI.xml#L888)|AnnotationPath?|Dynamic property introduced by an annotation and used as a measure in a chart
If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being visualized according to the `UI.Chart` annotation, the annotation path MUST be silently ignored.
Allowed Terms: +[Role](UI.xml#L901)|[ChartMeasureRoleType?](#ChartMeasureRoleType)| +[DataPoint](UI.xml#L902)|AnnotationPath?|Annotation path MUST end in @UI.DataPoint and the data point's Value MUST be the same property as in Measure
Allowed Terms: +[UseSequentialColorLevels](UI.xml#L910) *([Experimental](Common.md#Experimental))*|Boolean|All measures for which this setting is true should be assigned to levels of the same color. -## [ChartDimensionRoleType](UI.xml#L910) +## [ChartDimensionRoleType](UI.xml#L916) Member|Value|Description :-----|----:|:---------- -[Category](UI.xml#L911)|0| -[Series](UI.xml#L912)|1| -[Category2](UI.xml#L913)|2| +[Category](UI.xml#L917)|0| +[Series](UI.xml#L918)|1| +[Category2](UI.xml#L919)|2| -## [ChartMeasureRoleType](UI.xml#L916) +## [ChartMeasureRoleType](UI.xml#L922) Member|Value|Description :-----|----:|:---------- -[Axis1](UI.xml#L917)|0| -[Axis2](UI.xml#L918)|1| -[Axis3](UI.xml#L919)|2| +[Axis1](UI.xml#L923)|0| +[Axis2](UI.xml#L924)|1| +[Axis3](UI.xml#L925)|2| -## [EmphasisLabelType](UI.xml#L922) *([Experimental](Common.md#Experimental))* +## [EmphasisLabelType](UI.xml#L928) *([Experimental](Common.md#Experimental))* Assigns a label to the set of emphasized values and optionally also for non-emphasized values. This information can be used for semantic coloring. Property|Type|Description :-------|:---|:---------- -[EmphasizedValuesLabel](UI.xml#L925)|String| -[NonEmphasizedValuesLabel](UI.xml#L926)|String?| +[EmphasizedValuesLabel](UI.xml#L931)|String| +[NonEmphasizedValuesLabel](UI.xml#L932)|String?| -## [ValueCriticalityType](UI.xml#L933) *([Experimental](Common.md#Experimental))* +## [ValueCriticalityType](UI.xml#L939) *([Experimental](Common.md#Experimental))* Assigns a fixed criticality to a primitive value. This information can be used for semantic coloring. Property|Type|Description :-------|:---|:---------- -[Value](UI.xml#L936)|PrimitiveType?|MUST be a fixed value of primitive type -[Criticality](UI.xml#L939)|[CriticalityType?](#CriticalityType)| +[Value](UI.xml#L942)|PrimitiveType?|MUST be a fixed value of primitive type +[Criticality](UI.xml#L945)|[CriticalityType?](#CriticalityType)| -## [CriticalityLabelType](UI.xml#L953) *([Experimental](Common.md#Experimental))* +## [CriticalityLabelType](UI.xml#L959) *([Experimental](Common.md#Experimental))* Assigns a label to a criticality. This information can be used for semantic coloring. Property|Type|Description :-------|:---|:---------- -[Criticality](UI.xml#L956)|[CriticalityType](#CriticalityType)| -[Label](UI.xml#L957)|String|Criticality label +[Criticality](UI.xml#L962)|[CriticalityType](#CriticalityType)| +[Label](UI.xml#L963)|String|Criticality label -## [*Facet*](UI.xml#L990) +## [*Facet*](UI.xml#L1001) Abstract base type for facets **Derived Types:** @@ -581,8 +583,8 @@ Abstract base type for facets Property|Type|Description :-------|:---|:---------- -[Label](UI.xml#L998)|String?|Facet label -[ID](UI.xml#L1002)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. +[Label](UI.xml#L1009)|String?|Facet label +[ID](UI.xml#L1013)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. **Applicable Annotation Terms:** @@ -590,14 +592,14 @@ Property|Type|Description - [PartOfPreview](#PartOfPreview) -## [CollectionFacet](UI.xml#L1006): [Facet](#Facet) +## [CollectionFacet](UI.xml#L1017): [Facet](#Facet) Collection of facets Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L998)|String?|Facet label -[*ID*](UI.xml#L1002)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. -[Facets](UI.xml#L1008)|\[[Facet](#Facet)\]|Nested facets. An empty collection may be used as a placeholder for content added via extension points. +[*Label*](UI.xml#L1009)|String?|Facet label +[*ID*](UI.xml#L1013)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. +[Facets](UI.xml#L1019)|\[[Facet](#Facet)\]|Nested facets. An empty collection may be used as a placeholder for content added via extension points. **Applicable Annotation Terms:** @@ -605,14 +607,14 @@ Property|Type|Description - [PartOfPreview](#PartOfPreview) -## [ReferenceFacet](UI.xml#L1012): [Facet](#Facet) +## [ReferenceFacet](UI.xml#L1023): [Facet](#Facet) Facet that refers to a thing perspective, e.g. LineItem Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L998)|String?|Facet label -[*ID*](UI.xml#L1002)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. -[Target](UI.xml#L1014)|AnnotationPath|Referenced information: Communication.Contact, Communication.Address, or a term that is tagged with UI.ThingPerspective, e.g. UI.StatusInfo, UI.LineItem, UI.Identification, UI.FieldGroup, UI.Badge
Allowed terms: +[*Label*](UI.xml#L1009)|String?|Facet label +[*ID*](UI.xml#L1013)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. +[Target](UI.xml#L1025)|AnnotationPath|Referenced information: Communication.Contact, Communication.Address, or a term that is tagged with UI.ThingPerspective, e.g. UI.StatusInfo, UI.LineItem, UI.Identification, UI.FieldGroup, UI.Badge
Allowed Terms: **Applicable Annotation Terms:** @@ -620,15 +622,15 @@ Property|Type|Description - [PartOfPreview](#PartOfPreview) -## [ReferenceURLFacet](UI.xml#L1041): [Facet](#Facet) +## [ReferenceURLFacet](UI.xml#L1052): [Facet](#Facet) Facet that refers to a URL Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L998)|String?|Facet label -[*ID*](UI.xml#L1002)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. -[Url](UI.xml#L1043)|URL|URL of referenced information
Can be annotated with: -[UrlContentType](UI.xml#L1052)|MediaType?|Media type of referenced information +[*Label*](UI.xml#L1009)|String?|Facet label +[*ID*](UI.xml#L1013)|String?|Unique identifier of a facet. ID should be stable, as long as the perceived semantics of the facet is unchanged. +[Url](UI.xml#L1054)|URL|URL of referenced information
Applicable Annotation Terms: +[UrlContentType](UI.xml#L1063)|MediaType?|Media type of referenced information **Applicable Annotation Terms:** @@ -636,51 +638,51 @@ Property|Type|Description - [PartOfPreview](#PartOfPreview) -## [SelectionPresentationVariantType](UI.xml#L1065) +## [SelectionPresentationVariantType](UI.xml#L1076) Property|Type|Description :-------|:---|:---------- -[ID](UI.xml#L1066)|String?|Optional identifier to reference this variant from an external context -[Text](UI.xml#L1071)|String?|Name of the bundling variant -[SelectionVariant](UI.xml#L1075)|[SelectionVariantType](#SelectionVariantType)|Selection variant, either specified inline or referencing another annotation via Path -[PresentationVariant](UI.xml#L1078)|[PresentationVariantType](#PresentationVariantType)|Presentation variant, either specified inline or referencing another annotation via Path +[ID](UI.xml#L1077)|String?|Optional identifier to reference this variant from an external context +[Text](UI.xml#L1082)|String?|Name of the bundling variant +[SelectionVariant](UI.xml#L1086)|[SelectionVariantType](#SelectionVariantType)|Selection variant, either specified inline or referencing another annotation via Path +[PresentationVariant](UI.xml#L1089)|[PresentationVariantType](#PresentationVariantType)|Presentation variant, either specified inline or referencing another annotation via Path -## [PresentationVariantType](UI.xml#L1089) +## [PresentationVariantType](UI.xml#L1100) Property|Type|Description :-------|:---|:---------- -[ID](UI.xml#L1090)|String?|Optional identifier to reference this variant from an external context -[Text](UI.xml#L1093)|String?|Name of the presentation variant -[MaxItems](UI.xml#L1097)|Int32?|Maximum number of items that should be included in the result -[SortOrder](UI.xml#L1100)|\[[SortOrderType](Common.md#SortOrderType)\]|Collection can be provided inline or as a reference to a Common.SortOrder annotation via Path -[GroupBy](UI.xml#L1103)|\[PropertyPath\]|Sequence of groupable properties p1, p2, ... defining how the result is composed of instances representing groups, one for each combination of value properties in the queried collection. The sequence specifies a certain level of aggregation for the queried collection, and every group instance will provide aggregated values for properties that are aggregatable. Moreover, the series of sub-sequences (p1), (p1, p2), ... forms a leveled hierarchy, which may become relevant in combination with `InitialExpansionLevel`. -[TotalBy](UI.xml#L1112)|\[PropertyPath\]|Sub-sequence q1, q2, ... of properties p1, p2, ... specified in GroupBy. With this, additional levels of aggregation are requested in addition to the most granular level defined by GroupBy: Every element in the series of sub-sequences (q1), (q1, q2), ... introduces an additional aggregation level included in the result. -[Total](UI.xml#L1119)|\[PropertyPath\]|Aggregatable properties for which aggregated values should be provided for the additional aggregation levels specified in TotalBy. -[DynamicTotal](UI.xml#L1125)|\[AnnotationPath\]|Dynamic properties introduced by annotations for which aggregated values should be provided for the additional aggregation levels specified in TotalBy
If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being presented according to the `UI.PresentationVariant` annotation, the annotation path MUST be silently ignored.
Allowed terms: -[IncludeGrandTotal](UI.xml#L1138)|Boolean|Result should include a grand total for the properties specified in Total -[InitialExpansionLevel](UI.xml#L1141)|Int32|Level up to which the hierarchy defined for the queried collection should be expanded initially. The hierarchy may be implicitly imposed by the sequence of the GroupBy, or by an explicit hierarchy annotation. -[Visualizations](UI.xml#L1147)|\[AnnotationPath\]|Lists available visualization types. Currently supported types are `UI.LineItem`, `UI.Chart`, and `UI.DataPoint`. For each type, no more than a single annotation is meaningful. Multiple instances of the same visualization type shall be modeled with different presentation variants. A reference to `UI.Lineitem` should always be part of the collection (least common denominator for renderers). The first entry of the collection is the default visualization.
Allowed terms: -[RecursiveHierarchyQualifier](UI.xml#L1164) *([Experimental](Common.md#Experimental))*|[HierarchyQualifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#HierarchyQualifier)|Qualifier of the recursive hierarchy that should be applied to the Visualization -[RequestAtLeast](UI.xml#L1168)|\[PropertyPath\]|Properties that should always be included in the result of the queried collection
Properties in `RequestAtLeast` must occur either in the `$select` clause of an OData request or among the grouping properties in an `$apply=groupby((grouping properties),...)` clause of an aggregating OData request. -[SelectionFields](UI.xml#L1191) *([Experimental](Common.md#Experimental))*|\[PropertyPath\]|Properties that should be presented for filtering a collection of entities. Can be provided inline or as a reference to a `UI.SelectionFields` annotation via Path. +[ID](UI.xml#L1101)|String?|Optional identifier to reference this variant from an external context +[Text](UI.xml#L1104)|String?|Name of the presentation variant +[MaxItems](UI.xml#L1108)|Int32?|Maximum number of items that should be included in the result +[SortOrder](UI.xml#L1111)|\[[SortOrderType](Common.md#SortOrderType)\]|Collection can be provided inline or as a reference to a Common.SortOrder annotation via Path +[GroupBy](UI.xml#L1114)|\[PropertyPath\]|Sequence of groupable properties p1, p2, ... defining how the result is composed of instances representing groups, one for each combination of value properties in the queried collection. The sequence specifies a certain level of aggregation for the queried collection, and every group instance will provide aggregated values for properties that are aggregatable. Moreover, the series of sub-sequences (p1), (p1, p2), ... forms a leveled hierarchy, which may become relevant in combination with `InitialExpansionLevel`. +[TotalBy](UI.xml#L1123)|\[PropertyPath\]|Sub-sequence q1, q2, ... of properties p1, p2, ... specified in GroupBy. With this, additional levels of aggregation are requested in addition to the most granular level defined by GroupBy: Every element in the series of sub-sequences (q1), (q1, q2), ... introduces an additional aggregation level included in the result. +[Total](UI.xml#L1130)|\[PropertyPath\]|Aggregatable properties for which aggregated values should be provided for the additional aggregation levels specified in TotalBy. +[DynamicTotal](UI.xml#L1136)|\[AnnotationPath\]|Dynamic properties introduced by annotations for which aggregated values should be provided for the additional aggregation levels specified in TotalBy
If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being presented according to the `UI.PresentationVariant` annotation, the annotation path MUST be silently ignored.
Allowed Terms: +[IncludeGrandTotal](UI.xml#L1149)|Boolean|Result should include a grand total for the properties specified in Total +[InitialExpansionLevel](UI.xml#L1152)|Int32|Level up to which the hierarchy defined for the queried collection should be expanded initially. The hierarchy may be implicitly imposed by the sequence of the GroupBy, or by an explicit hierarchy annotation. +[Visualizations](UI.xml#L1158)|\[AnnotationPath\]|Lists available visualization types. Currently supported types are `UI.LineItem`, `UI.Chart`, and `UI.DataPoint`. For each type, no more than a single annotation is meaningful. Multiple instances of the same visualization type shall be modeled with different presentation variants. A reference to `UI.Lineitem` should always be part of the collection (least common denominator for renderers). The first entry of the collection is the default visualization.
Allowed Terms: +[RecursiveHierarchyQualifier](UI.xml#L1175) *([Experimental](Common.md#Experimental))*|[HierarchyQualifier?](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#HierarchyQualifier)|Qualifier of the recursive hierarchy that should be applied to the Visualization +[RequestAtLeast](UI.xml#L1179)|\[PropertyPath\]|Properties that should always be included in the result of the queried collection
Properties in `RequestAtLeast` must occur either in the `$select` clause of an OData request or among the grouping properties in an `$apply=groupby((grouping properties),...)` clause of an aggregating OData request. +[SelectionFields](UI.xml#L1202) *([Experimental](Common.md#Experimental))*|\[PropertyPath\]|Properties that should be presented for filtering a collection of entities. Can be provided inline or as a reference to a `UI.SelectionFields` annotation via Path. -## [SelectionVariantType](UI.xml#L1205) +## [SelectionVariantType](UI.xml#L1216) Property|Type|Description :-------|:---|:---------- -[ID](UI.xml#L1206)|String?|May contain identifier to reference this instance from an external context -[Text](UI.xml#L1211)|String?|Name of the selection variant -[Parameters](UI.xml#L1215)|\[[ParameterAbstract](#ParameterAbstract)\]|Parameters of the selection variant -[FilterExpression](UI.xml#L1218)|String?|Filter string for query part of URL, without `$filter=` -[SelectOptions](UI.xml#L1223)|\[[SelectOptionType](#SelectOptionType)\]|ABAP Select Options Pattern +[ID](UI.xml#L1217)|String?|May contain identifier to reference this instance from an external context +[Text](UI.xml#L1222)|String?|Name of the selection variant +[Parameters](UI.xml#L1226)|\[[ParameterAbstract](#ParameterAbstract)\]|Parameters of the selection variant +[FilterExpression](UI.xml#L1229)|String?|Filter string for query part of URL, without `$filter=` +[SelectOptions](UI.xml#L1234)|\[[SelectOptionType](#SelectOptionType)\]|ABAP Select Options Pattern -## [*ParameterAbstract*](UI.xml#L1230) +## [*ParameterAbstract*](UI.xml#L1241) Key property of a parameter entity type **Derived Types:** @@ -688,128 +690,128 @@ Key property of a parameter entity type - [IntervalParameter](#IntervalParameter) -## [Parameter](UI.xml#L1233): [ParameterAbstract](#ParameterAbstract) +## [Parameter](UI.xml#L1244): [ParameterAbstract](#ParameterAbstract) Single-valued parameter Property|Type|Description :-------|:---|:---------- -[PropertyName](UI.xml#L1235)|PropertyPath|Path to a key property of a parameter entity type -[PropertyValue](UI.xml#L1238)|PrimitiveType|Value for the key property +[PropertyName](UI.xml#L1246)|PropertyPath|Path to a key property of a parameter entity type +[PropertyValue](UI.xml#L1249)|PrimitiveType|Value for the key property -## [IntervalParameter](UI.xml#L1242): [ParameterAbstract](#ParameterAbstract) +## [IntervalParameter](UI.xml#L1253): [ParameterAbstract](#ParameterAbstract) Interval parameter formed with a 'from' and a 'to' property Property|Type|Description :-------|:---|:---------- -[PropertyNameFrom](UI.xml#L1244)|PropertyPath|Path to the 'from' property of a parameter entity type -[PropertyValueFrom](UI.xml#L1247)|PrimitiveType|Value for the 'from' property -[PropertyNameTo](UI.xml#L1250)|PropertyPath|Path to the 'to' property of a parameter entity type -[PropertyValueTo](UI.xml#L1253)|PrimitiveType|Value for the 'to' property +[PropertyNameFrom](UI.xml#L1255)|PropertyPath|Path to the 'from' property of a parameter entity type +[PropertyValueFrom](UI.xml#L1258)|PrimitiveType|Value for the 'from' property +[PropertyNameTo](UI.xml#L1261)|PropertyPath|Path to the 'to' property of a parameter entity type +[PropertyValueTo](UI.xml#L1264)|PrimitiveType|Value for the 'to' property -## [SelectOptionType](UI.xml#L1258) +## [SelectOptionType](UI.xml#L1269) List of value ranges for a single property Exactly one of `PropertyName` and `DynamicPropertyName` must be present Property|Type|Description :-------|:---|:---------- -[PropertyName](UI.xml#L1261)|PropertyPath?|Path to the property -[DynamicPropertyName](UI.xml#L1273)|AnnotationPath?|Dynamic property introduced by annotations for which value ranges are specified
If the annotation referenced by the annotation path does not apply to the same collection of entities as the one being filtered according to the `UI.SelectionVariant` annotation, this instance of `UI.SelectionVariant/SelectOptions` MUST be silently ignored. For an example, see the `UI.SelectionVariant` annotation in the [example](../examples/DynamicProperties-sample.xml).
Allowed terms: -[Ranges](UI.xml#L1287)|\[[SelectionRangeType](#SelectionRangeType)\]|List of value ranges +[PropertyName](UI.xml#L1272)|PropertyPath?|Path to the property +[DynamicPropertyName](UI.xml#L1284)|AnnotationPath?|Dynamic property introduced by annotations for which value ranges are specified
If the annotation referenced by the annotation path does not apply to the same collection of entities as the one being filtered according to the `UI.SelectionVariant` annotation, this instance of `UI.SelectionVariant/SelectOptions` MUST be silently ignored. For an example, see the `UI.SelectionVariant` annotation in the [example](../examples/DynamicProperties-sample.xml).
Allowed Terms: +[Ranges](UI.xml#L1298)|\[[SelectionRangeType](#SelectionRangeType)\]|List of value ranges -## [SelectionRangeType](UI.xml#L1292) +## [SelectionRangeType](UI.xml#L1303) Value range. If the range option only requires a single value, the value must be in the property Low Property|Type|Description :-------|:---|:---------- -[Sign](UI.xml#L1296)|[SelectionRangeSignType](#SelectionRangeSignType)|Include or exclude values -[Option](UI.xml#L1299)|[SelectionRangeOptionType](#SelectionRangeOptionType)|Comparison operator -[Low](UI.xml#L1302)|PrimitiveType|Single value or lower interval boundary -[High](UI.xml#L1305)|PrimitiveType?|Upper interval boundary +[Sign](UI.xml#L1307)|[SelectionRangeSignType](#SelectionRangeSignType)|Include or exclude values +[Option](UI.xml#L1310)|[SelectionRangeOptionType](#SelectionRangeOptionType)|Comparison operator +[Low](UI.xml#L1313)|PrimitiveType|Single value or lower interval boundary +[High](UI.xml#L1316)|PrimitiveType?|Upper interval boundary -## [SelectionRangeSignType](UI.xml#L1310) +## [SelectionRangeSignType](UI.xml#L1321) Member|Value|Description :-----|----:|:---------- -[I](UI.xml#L1311)|0|Inclusive -[E](UI.xml#L1314)|1|Exclusive +[I](UI.xml#L1322)|0|Inclusive +[E](UI.xml#L1325)|1|Exclusive -## [SelectionRangeOptionType](UI.xml#L1319) +## [SelectionRangeOptionType](UI.xml#L1330) Comparison operator Member|Value|Description :-----|----:|:---------- -[EQ](UI.xml#L1321)|0|Equal to -[BT](UI.xml#L1324)|1|Between -[CP](UI.xml#L1327)|2|Contains pattern -[LE](UI.xml#L1330)|3|Less than or equal to -[GE](UI.xml#L1333)|4|Greater than or equal to -[NE](UI.xml#L1336)|5|Not equal to -[NB](UI.xml#L1339)|6|Not between -[NP](UI.xml#L1342)|7|Does not contain pattern -[GT](UI.xml#L1345)|8|Greater than -[LT](UI.xml#L1348)|9|Less than +[EQ](UI.xml#L1332)|0|Equal to +[BT](UI.xml#L1335)|1|Between +[CP](UI.xml#L1338)|2|Contains pattern +[LE](UI.xml#L1341)|3|Less than or equal to +[GE](UI.xml#L1344)|4|Greater than or equal to +[NE](UI.xml#L1347)|5|Not equal to +[NB](UI.xml#L1350)|6|Not between +[NP](UI.xml#L1353)|7|Does not contain pattern +[GT](UI.xml#L1356)|8|Greater than +[LT](UI.xml#L1359)|9|Less than -## [InputMaskType](UI.xml#L1416) *([Experimental](Common.md#Experimental))* +## [InputMaskType](UI.xml#L1427) *([Experimental](Common.md#Experimental))* Property|Type|Description :-------|:---|:---------- -[Mask](UI.xml#L1418)|String|The mask to be applied to the property or the parameter -[PlaceholderSymbol](UI.xml#L1421)|String|A single character symbol to be shown where the user can type a character -[Rules](UI.xml#L1424)|\[[InputMaskRuleType](#InputMaskRuleType)\]|Rules that define valid values for one symbol in the mask
The following rules are defined as default and don't need to be listed here: * = ., C = [a-zA-Z], 9 = [0-9] +[Mask](UI.xml#L1429)|String|The mask to be applied to the property or the parameter +[PlaceholderSymbol](UI.xml#L1432)|String|A single character symbol to be shown where the user can type a character +[Rules](UI.xml#L1435)|\[[InputMaskRuleType](#InputMaskRuleType)\]|Rules that define valid values for one symbol in the mask
The following rules are defined as default and don't need to be listed here: * = ., C = [a-zA-Z], 9 = [0-9] -## [InputMaskRuleType](UI.xml#L1431) *([Experimental](Common.md#Experimental))* +## [InputMaskRuleType](UI.xml#L1442) *([Experimental](Common.md#Experimental))* Property|Type|Description :-------|:---|:---------- -[MaskSymbol](UI.xml#L1433)|String|A symbol in the mask that stands for a regular expression which must be matched by the user input in every position where this symbol occurs -[RegExp](UI.xml#L1436)|String|Regular expression that defines the valid values for the mask symbol +[MaskSymbol](UI.xml#L1444)|String|A symbol in the mask that stands for a regular expression which must be matched by the user input in every position where this symbol occurs +[RegExp](UI.xml#L1447)|String|Regular expression that defines the valid values for the mask symbol -## [TextArrangementType](UI.xml#L1449) +## [TextArrangementType](UI.xml#L1460) Member|Value|Description :-----|----:|:---------- -[TextFirst](UI.xml#L1450)|0|Text is first, followed by the code/ID (e.g. in parentheses) -[TextLast](UI.xml#L1453)|1|Code/ID is first, followed by the text (e.g. separated by a dash) -[TextSeparate](UI.xml#L1456)|2|Code/ID and text are represented separately (code/ID will be shown and text can be visualized in a separate place) -[TextOnly](UI.xml#L1459)|3|Only text is represented, code/ID is hidden (e.g. for UUIDs) +[TextFirst](UI.xml#L1461)|0|Text is first, followed by the code/ID (e.g. in parentheses) +[TextLast](UI.xml#L1464)|1|Code/ID is first, followed by the text (e.g. separated by a dash) +[TextSeparate](UI.xml#L1467)|2|Code/ID and text are represented separately (code/ID will be shown and text can be visualized in a separate place) +[TextOnly](UI.xml#L1470)|3|Only text is represented, code/ID is hidden (e.g. for UUIDs) -## [NoteType](UI.xml#L1476) *([Experimental](Common.md#Experimental))* +## [NoteType](UI.xml#L1516) *([Experimental](Common.md#Experimental))* Property|Type|Description :-------|:---|:---------- -[Title](UI.xml#L1478)|String?|Title of the note
The title of a note is hidden with an annotation `@UI.Note/Title/@UI.Hidden`, not with an annotation on the property targeted by `@UI.Note/Title`.
Can be annotated with: -[Content](UI.xml#L1490)|String|Content of the note, as a string
The property targeted by `@UI.Note/Content` must be annotated with `Core.MediaType` and may be annotated with `Common.SAPObjectNodeTypeReference`. When it is tagged with `Core.IsLanguageDependent`, another property of the same entity type that is tagged with [`Common.IsLanguageIdentifier`](Common.md#IsLanguageIdentifier) determines the language of the note.
Can be annotated with: -[Type](UI.xml#L1506)|String|A type used for grouping notes -[MaximalLength](UI.xml#L1509)|Int32?|Type-specific maximal length of the content of the note -[MultipleNotes](UI.xml#L1512)|Boolean|Whether the type allows multiple notes for one object +[Title](UI.xml#L1518)|String?|Title of the note
The title of a note is hidden with an annotation `@UI.Note/Title/@UI.Hidden`, not with an annotation on the property targeted by `@UI.Note/Title`.
Applicable Annotation Terms: +[Content](UI.xml#L1530)|String|Content of the note, as a string
The property targeted by `@UI.Note/Content` must be annotated with `Core.MediaType` and may be annotated with `Common.SAPObjectNodeTypeReference`. When it is tagged with `Core.IsLanguageDependent`, another property of the same entity type that is tagged with [`Common.IsLanguageIdentifier`](Common.md#IsLanguageIdentifier) determines the language of the note.
Applicable Annotation Terms: +[Type](UI.xml#L1546)|String|A type used for grouping notes +[MaximalLength](UI.xml#L1549)|Int32?|Type-specific maximal length of the content of the note +[MultipleNotes](UI.xml#L1552)|Boolean|Whether the type allows multiple notes for one object -## [ImportanceType](UI.xml#L1520) +## [ImportanceType](UI.xml#L1560) Member|Value|Description :-----|----:|:---------- -[High](UI.xml#L1521)|0|High importance -[Medium](UI.xml#L1524)|1|Medium importance -[Low](UI.xml#L1527)|2|Low importance +[High](UI.xml#L1561)|0|High importance +[Medium](UI.xml#L1564)|1|Medium importance +[Low](UI.xml#L1567)|2|Low importance -## [*DataFieldAbstract*](UI.xml#L1595) +## [*DataFieldAbstract*](UI.xml#L1635) Elementary building block that represents a piece of data and/or allows triggering an action By using the applicable terms UI.Hidden, UI.Importance or HTML5.CssDefaults, the visibility, the importance and @@ -830,10 +832,10 @@ By using the applicable terms UI.Hidden, UI.Importance or HTML5.CssDefaults, the Property|Type|Description :-------|:---|:---------- -[Label](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[Criticality](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[CriticalityRepresentation](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[IconUrl](UI.xml#L1621)|URL?|Optional icon +[Label](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[Criticality](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[CriticalityRepresentation](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[IconUrl](UI.xml#L1661)|URL?|Optional icon **Applicable Annotation Terms:** @@ -845,26 +847,26 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [CriticalityRepresentationType](UI.xml#L1627) +## [CriticalityRepresentationType](UI.xml#L1667) Member|Value|Description :-----|----:|:---------- -[WithIcon](UI.xml#L1628)|0|Criticality is represented with an icon -[WithoutIcon](UI.xml#L1631)|1|Criticality is represented without icon, e.g. only via text color -[OnlyIcon](UI.xml#L1634) *([Experimental](Common.md#Experimental))*|2|Criticality is represented only by using an icon +[WithIcon](UI.xml#L1668)|0|Criticality is represented with an icon +[WithoutIcon](UI.xml#L1671)|1|Criticality is represented without icon, e.g. only via text color +[OnlyIcon](UI.xml#L1674) *([Experimental](Common.md#Experimental))*|2|Criticality is represented only by using an icon -## [DataFieldForAnnotation](UI.xml#L1640): [DataFieldAbstract](#DataFieldAbstract) +## [DataFieldForAnnotation](UI.xml#L1680): [DataFieldAbstract](#DataFieldAbstract) A structured piece of data described by an annotation Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Target](UI.xml#L1642)|AnnotationPath|Target MUST reference an annotation of terms Communication.Contact, Communication.Address, UI.DataPoint, UI.Chart, UI.FieldGroup, or UI.ConnectedFields
Allowed terms: +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Target](UI.xml#L1682)|AnnotationPath|Target MUST reference an annotation of terms Communication.Contact, Communication.Address, UI.DataPoint, UI.Chart, UI.FieldGroup, or UI.ConnectedFields
Allowed Terms: **Applicable Annotation Terms:** @@ -876,7 +878,7 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [*DataFieldForActionAbstract*](UI.xml#L1657): [DataFieldAbstract](#DataFieldAbstract) +## [*DataFieldForActionAbstract*](UI.xml#L1697): [DataFieldAbstract](#DataFieldAbstract) Triggers an action **Derived Types:** @@ -885,12 +887,12 @@ Triggers an action Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Inline](UI.xml#L1659)|Boolean|Action should be placed close to (or even inside) the visualized term -[Determining](UI.xml#L1662)|Boolean|Determines whether the action completes a process step (e.g. approve, reject). +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Inline](UI.xml#L1699)|Boolean|Action should be placed close to (or even inside) the visualized term +[Determining](UI.xml#L1702)|Boolean|Determines whether the action completes a process step (e.g. approve, reject). **Applicable Annotation Terms:** @@ -902,21 +904,21 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataFieldForAction](UI.xml#L1667): [DataFieldForActionAbstract](#DataFieldForActionAbstract) +## [DataFieldForAction](UI.xml#L1707): [DataFieldForActionAbstract](#DataFieldForActionAbstract) Triggers an OData action The action is NOT tied to a data value (in contrast to [DataFieldWithAction](#DataFieldWithAction)). Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[*Inline*](UI.xml#L1659)|Boolean|Action should be placed close to (or even inside) the visualized term -[*Determining*](UI.xml#L1662)|Boolean|Determines whether the action completes a process step (e.g. approve, reject). -[Action](UI.xml#L1670)|[ActionName](#ActionName)|Name of an Action, Function, ActionImport, or FunctionImport in scope -[InvocationGrouping](UI.xml#L1673)|[OperationGroupingType?](#OperationGroupingType)|Expresses how invocations of this action on multiple instances should be grouped +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[*Inline*](UI.xml#L1699)|Boolean|Action should be placed close to (or even inside) the visualized term +[*Determining*](UI.xml#L1702)|Boolean|Determines whether the action completes a process step (e.g. approve, reject). +[Action](UI.xml#L1710)|[ActionName](#ActionName)|Name of an Action, Function, ActionImport, or FunctionImport in scope +[InvocationGrouping](UI.xml#L1713)|[OperationGroupingType?](#OperationGroupingType)|Expresses how invocations of this action on multiple instances should be grouped **Applicable Annotation Terms:** @@ -928,16 +930,16 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [OperationGroupingType](UI.xml#L1677) +## [OperationGroupingType](UI.xml#L1717) Member|Value|Description :-----|----:|:---------- -[Isolated](UI.xml#L1678)|0|Invoke each action in isolation from other actions -[ChangeSet](UI.xml#L1681)|1|Group all actions into a single change set +[Isolated](UI.xml#L1718)|0|Invoke each action in isolation from other actions +[ChangeSet](UI.xml#L1721)|1|Group all actions into a single change set -## [DataFieldForIntentBasedNavigation](UI.xml#L1686): [DataFieldForActionAbstract](#DataFieldForActionAbstract) +## [DataFieldForIntentBasedNavigation](UI.xml#L1726): [DataFieldForActionAbstract](#DataFieldForActionAbstract) Triggers intent-based UI navigation The navigation intent is expressed as a Semantic Object and optionally an Action on that object. @@ -946,17 +948,17 @@ It is NOT tied to a data value (in contrast to [DataFieldWithIntentBasedNavigati Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[*Inline*](UI.xml#L1659)|Boolean|Action should be placed close to (or even inside) the visualized term -[*Determining*](UI.xml#L1662)|Boolean|Determines whether the action completes a process step (e.g. approve, reject). -[SemanticObject](UI.xml#L1693)|String|Name of the Semantic Object -[Action](UI.xml#L1696)|String?|Name of the Action on the Semantic Object. If not specified, let user choose which of the available actions to trigger. -[NavigationAvailable](UI.xml#L1699)|Boolean|The navigation intent is for that user with the selected context and parameters available -[RequiresContext](UI.xml#L1702)|Boolean|Determines whether a context needs to be passed to the target of this navigation. -[Mapping](UI.xml#L1705)|\[[SemanticObjectMappingType](Common.md#SemanticObjectMappingType)\]|Maps properties of the annotated entity type to properties of the Semantic Object +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[*Inline*](UI.xml#L1699)|Boolean|Action should be placed close to (or even inside) the visualized term +[*Determining*](UI.xml#L1702)|Boolean|Determines whether the action completes a process step (e.g. approve, reject). +[SemanticObject](UI.xml#L1733)|String|Name of the Semantic Object +[Action](UI.xml#L1736)|String?|Name of the Action on the Semantic Object. If not specified, let user choose which of the available actions to trigger. +[NavigationAvailable](UI.xml#L1739)|Boolean|The navigation intent is for that user with the selected context and parameters available +[RequiresContext](UI.xml#L1742)|Boolean|Determines whether a context needs to be passed to the target of this navigation. +[Mapping](UI.xml#L1745)|\[[SemanticObjectMappingType](Common.md#SemanticObjectMappingType)\]|Maps properties of the annotated entity type to properties of the Semantic Object **Applicable Annotation Terms:** @@ -968,16 +970,17 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataFieldForActionGroup](UI.xml#L1710): [DataFieldAbstract](#DataFieldAbstract) *([Experimental](Common.md#Experimental))* +## [DataFieldForActionGroup](UI.xml#L1750): [DataFieldAbstract](#DataFieldAbstract) *([Experimental](Common.md#Experimental))* Collection of OData actions and intent based navigations Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Actions](UI.xml#L1713)|\[[DataFieldForActionAbstract](#DataFieldForActionAbstract)\]|Collection of data fields that refer to actions or intent based navigations +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[ID](UI.xml#L1753)|String?|Identifier of an action group. ID should be stable, as long as the perceived semantics of the action group is unchanged.
The ID should be unique among all action groups used in all data fields of one entity type / set. +[Actions](UI.xml#L1759)|\[[DataFieldForActionAbstract](#DataFieldForActionAbstract)\]|Collection of data fields that refer to actions or intent based navigations **Applicable Annotation Terms:** @@ -989,7 +992,7 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataField](UI.xml#L1718): [DataFieldAbstract](#DataFieldAbstract) +## [DataField](UI.xml#L1764): [DataFieldAbstract](#DataFieldAbstract) A piece of data **Derived Types:** @@ -1001,11 +1004,11 @@ A piece of data Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Value](UI.xml#L1720)|Untyped|The data field's value +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Value](UI.xml#L1766)|Untyped
Allowed Derived Types:|The data field's value **Applicable Annotation Terms:** @@ -1017,19 +1020,19 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataFieldWithAction](UI.xml#L1747): [DataField](#DataField) +## [DataFieldWithAction](UI.xml#L1793): [DataField](#DataField) A piece of data that allows triggering an OData action The action is tied to a data value. This is in contrast to [DataFieldForAction](#DataFieldForAction) which is not tied to a specific data value. Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Value](UI.xml#L1750)|PrimitiveType|The data field's value -[Action](UI.xml#L1751)|[ActionName](#ActionName)|Name of an Action, Function, ActionImport, or FunctionImport in scope +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Value](UI.xml#L1796)|PrimitiveType|The data field's value +[Action](UI.xml#L1797)|[ActionName](#ActionName)|Name of an Action, Function, ActionImport, or FunctionImport in scope **Applicable Annotation Terms:** @@ -1041,7 +1044,7 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataFieldWithIntentBasedNavigation](UI.xml#L1756): [DataField](#DataField) +## [DataFieldWithIntentBasedNavigation](UI.xml#L1802): [DataField](#DataField) A piece of data that allows triggering intent-based UI navigation The navigation intent is expressed as a Semantic Object and optionally an Action on that object. @@ -1051,14 +1054,14 @@ This is in contrast to [DataFieldForIntentBasedNavigation](#DataFieldForIntentBa Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Value](UI.xml#L1764)|PrimitiveType|The data field's value -[SemanticObject](UI.xml#L1765)|String|Name of the Semantic Object -[Action](UI.xml#L1768)|String?|Name of the Action on the Semantic Object. If not specified, let user choose which of the available actions to trigger. -[Mapping](UI.xml#L1771)|\[[SemanticObjectMappingType](Common.md#SemanticObjectMappingType)\]|Maps properties of the annotated entity type to properties of the Semantic Object +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Value](UI.xml#L1810)|PrimitiveType|The data field's value +[SemanticObject](UI.xml#L1811)|String|Name of the Semantic Object +[Action](UI.xml#L1814)|String?|Name of the Action on the Semantic Object. If not specified, let user choose which of the available actions to trigger. +[Mapping](UI.xml#L1817)|\[[SemanticObjectMappingType](Common.md#SemanticObjectMappingType)\]|Maps properties of the annotated entity type to properties of the Semantic Object **Applicable Annotation Terms:** @@ -1070,19 +1073,19 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataFieldWithNavigationPath](UI.xml#L1776): [DataField](#DataField) +## [DataFieldWithNavigationPath](UI.xml#L1822): [DataField](#DataField) A piece of data that allows navigating to related data It should be rendered as a hyperlink Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Value](UI.xml#L1779)|PrimitiveType|The data field's value -[Target](UI.xml#L1780)|NavigationPropertyPath|Contains either a navigation property or a term cast, where term is of type Edm.EntityType or a concrete entity type or a collection of these types +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Value](UI.xml#L1825)|PrimitiveType|The data field's value +[Target](UI.xml#L1826)|NavigationPropertyPath|Contains either a navigation property or a term cast, where term is of type Edm.EntityType or a concrete entity type or a collection of these types **Applicable Annotation Terms:** @@ -1094,20 +1097,20 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataFieldWithUrl](UI.xml#L1787): [DataField](#DataField) +## [DataFieldWithUrl](UI.xml#L1833): [DataField](#DataField) A piece of data that allows navigating to other information on the Web It should be rendered as a hyperlink Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Value](UI.xml#L1790)|PrimitiveType|The data field's value -[Url](UI.xml#L1791)|URL|Target of the hyperlink
Can be annotated with: -[UrlContentType](UI.xml#L1800)|MediaType?|Media type of the hyperlink target, e.g. `video/mp4` +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Value](UI.xml#L1836)|PrimitiveType|The data field's value +[Url](UI.xml#L1837)|URL|Target of the hyperlink
Applicable Annotation Terms: +[UrlContentType](UI.xml#L1846)|MediaType?|Media type of the hyperlink target, e.g. `video/mp4` **Applicable Annotation Terms:** @@ -1119,17 +1122,17 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [DataFieldWithActionGroup](UI.xml#L1806): [DataField](#DataField) *([Experimental](Common.md#Experimental))* +## [DataFieldWithActionGroup](UI.xml#L1852): [DataField](#DataField) *([Experimental](Common.md#Experimental))* Collection of OData actions and intent based navigations Property|Type|Description :-------|:---|:---------- -[*Label*](UI.xml#L1611)|String?|A short, human-readable text suitable for labels and captions in UIs -[*Criticality*](UI.xml#L1615)|[CriticalityType?](#CriticalityType)|Criticality of the data field value -[*CriticalityRepresentation*](UI.xml#L1618)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon -[*IconUrl*](UI.xml#L1621)|URL?|Optional icon -[Value](UI.xml#L1809)|PrimitiveType|The data field's value -[Actions](UI.xml#L1810)|\[[DataField](#DataField)\]|Collection of data fields that are either [DataFieldWithAction](#DataFieldWithAction), [DataFieldWithIntentBasedNavigation](#DataFieldWithIntentBasedNavigation), [DataFieldWithNavigationPath](#DataFieldWithNavigationPath), or [DataFieldWithUrl](#DataFieldWithUrl) +[*Label*](UI.xml#L1651)|String?|A short, human-readable text suitable for labels and captions in UIs +[*Criticality*](UI.xml#L1655)|[CriticalityType?](#CriticalityType)|Criticality of the data field value +[*CriticalityRepresentation*](UI.xml#L1658)|[CriticalityRepresentationType?](#CriticalityRepresentationType)|Decides if criticality is visualized in addition by means of an icon +[*IconUrl*](UI.xml#L1661)|URL?|Optional icon +[Value](UI.xml#L1855)|PrimitiveType|The data field's value +[Actions](UI.xml#L1856)|\[[DataField](#DataField)\]|Collection of data fields that are either [DataFieldWithAction](#DataFieldWithAction), [DataFieldWithIntentBasedNavigation](#DataFieldWithIntentBasedNavigation), [DataFieldWithNavigationPath](#DataFieldWithNavigationPath), or [DataFieldWithUrl](#DataFieldWithUrl) **Applicable Annotation Terms:** @@ -1141,7 +1144,7 @@ Property|Type|Description - [FieldControl](Common.md#FieldControl) -## [RecommendationStateType](UI.xml#L1848) +## [RecommendationStateType](UI.xml#L1894) **Type:** Byte Indicates whether a field contains or has a recommended value @@ -1150,96 +1153,110 @@ Editable fields for which a recommendation has been pre-filled or that have reco Allowed Value|Description :------------|:---------- -[0](UI.xml#L1855)|regular - with human or default input, no recommendation -[1](UI.xml#L1859)|highlighted - without human input and with recommendation -[2](UI.xml#L1863)|warning - with human or default input and with recommendation +[0](UI.xml#L1901)|regular - with human or default input, no recommendation +[1](UI.xml#L1905)|highlighted - without human input and with recommendation +[2](UI.xml#L1909)|warning - with human or default input and with recommendation -## [RecommendationListType](UI.xml#L1878) +## [RecommendationListType](UI.xml#L1924) Reference to a recommendation list A recommendation consists of one or more values for editable fields plus a rank between 0.0 and 9.9, with 9.9 being the best recommendation. Property|Type|Description :-------|:---|:---------- -[CollectionPath](UI.xml#L1883)|String|Resource path of a collection of recommended values -[RankProperty](UI.xml#L1886)|String|Name of the property within the collection of recommended values that describes the rank of the recommendation -[Binding](UI.xml#L1889)|\[[RecommendationBinding](#RecommendationBinding)\]|List of pairs of a local property and recommended value property +[CollectionPath](UI.xml#L1929)|String|Resource path of a collection of recommended values +[RankProperty](UI.xml#L1932)|String|Name of the property within the collection of recommended values that describes the rank of the recommendation +[Binding](UI.xml#L1935)|\[[RecommendationBinding](#RecommendationBinding)\]|List of pairs of a local property and recommended value property -## [RecommendationBinding](UI.xml#L1894) +## [RecommendationBinding](UI.xml#L1940) Property|Type|Description :-------|:---|:---------- -[LocalDataProperty](UI.xml#L1895)|PropertyPath|Path to editable property for which recommended values exist -[ValueListProperty](UI.xml#L1898)|String|Path to property in the collection of recommended values. Format is identical to PropertyPath annotations. +[LocalDataProperty](UI.xml#L1941)|PropertyPath|Path to editable property for which recommended values exist +[ValueListProperty](UI.xml#L1944)|String|Path to property in the collection of recommended values. Format is identical to PropertyPath annotations. -## [*PropertyRecommendationType*](UI.xml#L1916) *([Experimental](Common.md#Experimental))* +## [*PropertyRecommendationType*](UI.xml#L1962) *([Experimental](Common.md#Experimental))* Base type containing recommendations for an entity type property Property|Type|Description :-------|:---|:---------- -[RecommendedFieldValue](UI.xml#L1919)|PrimitiveType|Recommended value
In informal specializations of this base type, this property is specialized to the primitive type of the entity type property. If the recommendation has a description, this property has a [`Common.Text`](Common.md#Text) annotation that evaluates to the `RecommendedFieldDescription` property. -[RecommendedFieldDescription](UI.xml#L1928)|String?|Description of the recommended value
In informal specializations of this base type, this property is specialized to the string type of the text property corresponding to the entity type property. It is omitted from informal specializations for recommendations without description. -[RecommendedFieldScoreValue](UI.xml#L1935)|Decimal?|Confidence score of the recommended value -[RecommendedFieldIsSuggestion](UI.xml#L1938)|Boolean|Whether the recommended value shall be suggested in the input field
For any collection of a specialization of `PropertyRecommendationType` in a property containing [`Recommendations`](#Recommendations), this flag can be true in at most one instance of the collection, and only if the `RecommendedFieldScoreValue` exceeds a certain threshold. +[RecommendedFieldValue](UI.xml#L1965)|PrimitiveType|Recommended value
In informal specializations of this base type, this property is specialized to the primitive type of the entity type property. If the recommendation has a description, this property has a [`Common.Text`](Common.md#Text) annotation that evaluates to the `RecommendedFieldDescription` property. +[RecommendedFieldDescription](UI.xml#L1974)|String?|Description of the recommended value
In informal specializations of this base type, this property is specialized to the string type of the text property corresponding to the entity type property. It is omitted from informal specializations for recommendations without description. +[RecommendedFieldScoreValue](UI.xml#L1981)|Decimal?|Confidence score of the recommended value +[RecommendedFieldIsSuggestion](UI.xml#L1984)|Boolean|Whether the recommended value shall be suggested in the input field
For any collection of a specialization of `PropertyRecommendationType` in a property containing [`Recommendations`](#Recommendations), this flag can be true in at most one instance of the collection, and only if the `RecommendedFieldScoreValue` exceeds a certain threshold. -## [*UserInteractionType*](UI.xml#L2007) +## [*UserInteractionType*](UI.xml#L2053) Derived types can add more properties that govern the user interaction and the repeating of the request **Derived Types:** -- [UserInteractionChooseSingle](#UserInteractionChooseSingle) -- [UserInteractionChooseMultiple](#UserInteractionChooseMultiple) +- *[UserInteractionMandatory](#UserInteractionMandatory)* + - [UserInteractionChooseSingle](#UserInteractionChooseSingle) + - [UserInteractionChooseMultiple](#UserInteractionChooseMultiple) - [UserInteractionResolveConflict](#UserInteractionResolveConflict) - [UserInteractionConfirm](#UserInteractionConfirm) Property|Type|Description :-------|:---|:---------- -[Parameters](UI.xml#L2009)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. +[Parameters](UI.xml#L2055)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. + + +## [*UserInteractionMandatory*](UI.xml#L2065): [UserInteractionType](#UserInteractionType) +The user interaction is mandatory for the corresponding request to be executed + +After the user action, the request is repeated with the additional information obtained from the user. + If the user action is aborted, the request has had no effect. + +**Derived Types:** +- [UserInteractionChooseSingle](#UserInteractionChooseSingle) +- [UserInteractionChooseMultiple](#UserInteractionChooseMultiple) +- [UserInteractionResolveConflict](#UserInteractionResolveConflict) + +Property|Type|Description +:-------|:---|:---------- +[*Parameters*](UI.xml#L2055)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. -## [UserInteractionChooseSingle](UI.xml#L2019): [UserInteractionType](#UserInteractionType) +## [UserInteractionChooseSingle](UI.xml#L2072): [UserInteractionMandatory](#UserInteractionMandatory) The user shall choose a single entry from the collection and its properties shall be inserted into the repeated request Property|Type|Description :-------|:---|:---------- -[*Parameters*](UI.xml#L2009)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. +[*Parameters*](UI.xml#L2055)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. -## [UserInteractionChooseMultiple](UI.xml#L2022): [UserInteractionType](#UserInteractionType) +## [UserInteractionChooseMultiple](UI.xml#L2075): [UserInteractionMandatory](#UserInteractionMandatory) The user shall choose zero or more entries from the collection and a collection of their properties shall be inserted into the repeated request The properties referenced by `UI.UserInteraction/Parameters/LocalDataProperty` belong to a collection that contains one instance per chosen entry. -**Derived Types:** -- [UserInteractionResolveConflict](#UserInteractionResolveConflict) - Property|Type|Description :-------|:---|:---------- -[*Parameters*](UI.xml#L2009)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. +[*Parameters*](UI.xml#L2055)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. -## [UserInteractionResolveConflict](UI.xml#L2029): [UserInteractionChooseMultiple](#UserInteractionChooseMultiple) +## [UserInteractionResolveConflict](UI.xml#L2082): [UserInteractionMandatory](#UserInteractionMandatory) The user shall resolve a conflict between the entries in the collection and the entire collection shall be inserted into the repeated request Property|Type|Description :-------|:---|:---------- -[*Parameters*](UI.xml#L2009)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. +[*Parameters*](UI.xml#L2055)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. -## [UserInteractionConfirm](UI.xml#L2032): [UserInteractionType](#UserInteractionType) +## [UserInteractionConfirm](UI.xml#L2085): [UserInteractionType](#UserInteractionType) The entity or collection is a preview of the effects of the request and the user shall confirm whether to repeat the request in "effective" mode Property|Type|Description :-------|:---|:---------- -[*Parameters*](UI.xml#L2009)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. +[*Parameters*](UI.xml#L2055)|\[[ValueListParameterOut](Common.md#ValueListParameterOut)\]|Instructions how to fill properties with the additional information obtained from the user
This property is handled like [`Common.ValueListType/Parameters`](Common.md#ValueListType), as if the target of the annotated navigation property was a value list, but one that was sent by the server rather than requested by the user. If `UI.UserInteraction/Parameters/LocalDataProperty` points to a parameter of an action that was not invoked by the request, the UI shall invoke that action instead of repeating the request. -## [ActionName](UI.xml#L2041) +## [ActionName](UI.xml#L2094) **Type:** String Name of an Action, Function, ActionImport, or FunctionImport in scope diff --git a/vocabularies/UI.xml b/vocabularies/UI.xml index 389400169..c516a9281 100644 --- a/vocabularies/UI.xml +++ b/vocabularies/UI.xml @@ -154,7 +154,7 @@ a collection of business object instances, e.g. as a list or table. - + @@ -751,8 +751,14 @@ The trend is Describes Attributes for Dimensions. All Dimensions used in this collection must also be part of the Dimensions Property. - - + + + + + UI.DataFieldForActionAbstract + UI.DataFieldForActionGroup + + @@ -939,7 +945,7 @@ The trend is - + @@ -987,6 +993,11 @@ The trend is + + + + + @@ -1373,7 +1384,7 @@ The trend is - + @@ -1383,7 +1394,7 @@ The trend is - + @@ -1394,7 +1405,7 @@ The trend is - + @@ -1461,6 +1472,35 @@ So, masks can be especially useful for input fields that have a fixed pattern, e + + + + + Requires type `Edm.Date`, `Edm.TimeOfDay`, or `Edm.DateTimeOffset`. + If this annotation is absent or null or an empty string, temporal values are shown in a default style. + + + + + + + + + + + + + + + + + + + + + + + @@ -1536,7 +1576,7 @@ So, masks can be especially useful for input fields that have a fixed pattern, e The annotation value may be an expression to dynamically hide or render the annotated feature. If a navigation property is annotated with `Hidden` true, all subsequent parts are hidden - independent of their own potential `Hidden` annotations. - + @@ -1710,6 +1750,12 @@ It is NOT tied to a data value (in contrast to [DataFieldWithIntentBasedNavigati + + + + The ID should be unique among all action groups used in all data fields of one entity type / set. + + @@ -1868,7 +1914,7 @@ This is in contrast to [DataFieldForIntentBasedNavigation](#DataFieldForIntentBa - + Intelligent systems can help users by recommending input the user may "prefer". @@ -1903,7 +1949,7 @@ This is in contrast to [DataFieldForIntentBasedNavigation](#DataFieldForIntentBa - + This complex-typed annotation contains structural properties corresponding via name equality to non-key structural primitive properties of the entity type for which recommendations are available. The type of such a property is a collection of a informal specialization of [`PropertyRecommendationType`](#PropertyRecommendationType). @@ -1911,7 +1957,7 @@ The type of such a property is a collection of a informal specialization of [`Pr Clients retrieve the recommendations with a GET request that includes this annotation in a `$select` clause. The recommendations MAY be computed asynchronously, see [this diagram](../docs/recommendations.md). - + @@ -1950,7 +1996,7 @@ The recommendations MAY be computed asynchronously, see [this diagram](../docs/r - +