diff --git a/README.md b/README.md index 8fc49525..4c8bbd15 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ This repository defines the following SAP vocabularies: - [Hierarchy: Hierarchies](vocabularies/Hierarchy.md) - _experimental_ - [HTML5: Rendering directives for UI5](vocabularies/HTML5.md) - [ODM: One Domain Model](vocabularies/ODM.md) - _experimental_ +- [PDF: PDF response format](vocabularies/PDF.md) - _experimental_ - [PersonalData: Personal data / GDPR](vocabularies/PersonalData.md) - [Session: Sticky Sessions](vocabularies/Session.md) - [UI: Representing data in user interfaces](vocabularies/UI.md) diff --git a/examples/DynamicProperties-sample.json b/examples/DynamicProperties-sample.json index 227c8ee4..c3606894 100644 --- a/examples/DynamicProperties-sample.json +++ b/examples/DynamicProperties-sample.json @@ -35,9 +35,6 @@ ], "Order": {}, "Country": {}, - "NumberOfItems": { - "$Type": "Edm.Int16" - }, "Amount": { "$Type": "Edm.Decimal", "$Nullable": true, @@ -46,12 +43,12 @@ }, "$Annotations": { "self.Sales": { - "@Analytics.AggregatedProperty#sum": { + "@Analytics.AggregatedProperty#sumAmount": { "Name": "Total", "AggregationMethod": "sum", "AggregatableProperty": "Amount" }, - "@Analytics.AggregatedProperty#max": { + "@Analytics.AggregatedProperty#maxAmount": { "Name": "Maximum", "AggregationMethod": "max", "AggregatableProperty": "Amount" @@ -61,18 +58,15 @@ "Dimensions": [ "Country" ], - "Measures": [ - "NumberOfItems" - ], "DynamicMeasures": [ - "@Analytics.AggregatedProperty#sum", + "@Analytics.AggregatedProperty#sumAmount", "/self.Container/me/SalesOrders@Aggregation.CustomAggregate#WeightedAverage" ] }, "@UI.SelectionVariant": { "SelectOptions": [ { - "DynamicPropertyName": "@Analytics.AggregatedProperty#sum", + "DynamicPropertyName": "@Analytics.AggregatedProperty#sumAmount", "Ranges": [ { "Sign": "I", @@ -89,7 +83,7 @@ "Property": "Country" }, { - "DynamicProperty": "@Analytics.AggregatedProperty#sum", + "DynamicProperty": "@Analytics.AggregatedProperty#sumAmount", "Descending": true }, { diff --git a/examples/DynamicProperties-sample.xml b/examples/DynamicProperties-sample.xml index f0d4dac0..7987864e 100644 --- a/examples/DynamicProperties-sample.xml +++ b/examples/DynamicProperties-sample.xml @@ -18,12 +18,11 @@ - - + @@ -31,7 +30,7 @@ - + @@ -47,14 +46,9 @@ Country - - - NumberOfItems - - - @Analytics.AggregatedProperty#sum + @Analytics.AggregatedProperty#sumAmount /self.Container/me/SalesOrders@Aggregation.CustomAggregate#WeightedAverage @@ -69,7 +63,7 @@ - + @@ -93,7 +87,7 @@ - + diff --git a/examples/PDF.Features-examples.json b/examples/PDF.Features-examples.json new file mode 100644 index 00000000..8fff9c9d --- /dev/null +++ b/examples/PDF.Features-examples.json @@ -0,0 +1,46 @@ +{ + "$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/PDF.json": { + "$Include": [ + { + "$Namespace": "com.sap.vocabularies.PDF.v1", + "$Alias": "PDF" + } + ] + } + }, + "PDF.examples": { + "Container": { + "$Kind": "EntityContainer", + "@Core.Description": "Imagine some entity sets here" + }, + "$Annotations": { + "PDF.examples/Container": { + "@PDF.Features": { + "DocumentDescriptionReference": "../../../../default/iwbep/common/0001/$metadata", + "DocumentDescriptionCollection": "MyDocumentDescriptions", + "ArchiveFormat": true, + "Signature": true, + "CoverPage": true, + "FontSize": true, + "FontName": true, + "Margin": true, + "Border": true, + "FitToPage": false, + "ResultSizeDefault": 5000, + "ResultSizeMaximum": 50000 + } + } + } + }, + "$EntityContainer": "PDF.examples.Container" +} \ No newline at end of file diff --git a/examples/PDF.Features-examples.xml b/examples/PDF.Features-examples.xml new file mode 100644 index 00000000..7da451e2 --- /dev/null +++ b/examples/PDF.Features-examples.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/UI.IsCopyAction-sample.json b/examples/UI.IsCopyAction-sample.json new file mode 100644 index 00000000..0e437ba8 --- /dev/null +++ b/examples/UI.IsCopyAction-sample.json @@ -0,0 +1,85 @@ +{ + "$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/UI.json": { + "$Include": [ + { + "$Namespace": "com.sap.vocabularies.UI.v1", + "$Alias": "UI" + } + ] + } + }, + "UI.examples": { + "$Alias": "this", + "container": { + "$Kind": "EntityContainer", + "SalesOrder": { + "$Collection": true, + "$Type": "this.SalesOrder_Type" + } + }, + "SalesOrder_Type": { + "$Kind": "EntityType", + "$Key": [ + "SalesOrder" + ], + "SalesOrder": { + "$MaxLength": 10 + }, + "canBeCopied": { + "$Type": "Edm.Boolean", + "$Nullable": true + }, + "hideCopyButton": { + "$Type": "Edm.Boolean", + "$Nullable": true + } + }, + "Copy": [ + { + "$Kind": "Action", + "$IsBound": true, + "$Parameter": [ + { + "$Name": "it", + "$Type": "this.SalesOrder_Type", + "$Nullable": true + } + ], + "$ReturnType": { + "$Type": "this.SalesOrder_Type", + "$Nullable": true + } + } + ], + "$Annotations": { + "this.Copy": { + "@Core.OperationAvailable": { + "$Path": "it/canBeCopied" + } + }, + "this.SalesOrder_Type": { + "@UI.LineItem": [ + { + "@odata.type": "https://sap.github.io/odata-vocabularies/vocabularies/UI.xml#UI.DataFieldForAction", + "@UI.Hidden": { + "$Path": "hideCopyButton" + }, + "@UI.IsCopyAction": true, + "Action": "this.Copy" + } + ] + } + } + }, + "$EntityContainer": "UI.examples.container" +} \ No newline at end of file diff --git a/examples/UI.IsCopyAction-sample.xml b/examples/UI.IsCopyAction-sample.xml new file mode 100644 index 00000000..1a8529a1 --- /dev/null +++ b/examples/UI.IsCopyAction-sample.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/transform.js b/lib/transform.js index f4facc96..c3e51f44 100644 --- a/lib/transform.js +++ b/lib/transform.js @@ -18,7 +18,7 @@ fs.readdirSync(vocabFolder) const xml = fs.readFileSync(vocabFolder + xmlfile, "utf8"); let json; try { - json = csdl.xml2json(xml, true); + json = csdl.xml2json(xml, { strict: true, lineNumbers: true }); } catch (e) { console.error( colors.red( @@ -62,7 +62,7 @@ fs.readdirSync(exampleFolder) const xml = fs.readFileSync(exampleFolder + xmlfile, "utf8"); let json; try { - json = csdl.xml2json(xml, false); + json = csdl.xml2json(xml, { strict: true }); } catch (e) { console.error( colors.red( diff --git a/package-lock.json b/package-lock.json index 8650286a..74b2930e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,46 +9,40 @@ "version": "0.0.0", "dependencies": { "colors": "^1.4.0", - "odata-csdl": "^0.4.3", + "odata-csdl": "^0.6.0", "odata-vocabularies": "github:oasis-tcs/odata-vocabularies" }, "devDependencies": { - "eslint": "^8.9.0" + "eslint": "^8.23.0" } }, "node_modules/@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -59,16 +53,74 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -132,6 +184,15 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -148,6 +209,18 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -202,7 +275,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/cross-spawn": { @@ -220,9 +293,9 @@ } }, "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -242,6 +315,18 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -267,13 +352,15 @@ } }, "node_modules/eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", + "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.1.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -283,30 +370,32 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", + "find-up": "^5.0.0", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -368,17 +457,20 @@ } }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { @@ -429,6 +521,34 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -438,9 +558,18 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -453,6 +582,34 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -467,33 +624,27 @@ } }, "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -517,9 +668,9 @@ } }, "node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -531,6 +682,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -568,7 +745,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" @@ -577,7 +754,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -593,7 +770,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -611,10 +788,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", "dev": true }, "node_modules/js-yaml": { @@ -638,7 +830,7 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/levn": { @@ -654,16 +846,53 @@ "node": ">= 0.8.0" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -672,6 +901,11 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -681,55 +915,39 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/odata-csdl": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/odata-csdl/-/odata-csdl-0.4.3.tgz", - "integrity": "sha512-d7GWZ9lAP4YVyFc+LVZgcEzdi1E6lgusGwX7oSTCRKiMv1xf4Y2CKhb5A2DOCVhyYclrhsoGD/Q5bOSwTLip+g==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/odata-csdl/-/odata-csdl-0.6.0.tgz", + "integrity": "sha512-EfrscnkyLWaW3zW5xXxzf0yR3tnMvfOHEM7dB/BwH33UjHzaIsBB1DaQI/7f5j5WXKteC+j+kDuSyYPjGw1NAw==", "dependencies": { "colors": "^1.4.0", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "sax": "^1.2.4" }, "bin": { "odata-csdl-xml2json": "lib/cli.js" } }, - "node_modules/odata-csdl/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/odata-csdl/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "node_modules/odata-vocabularies": { - "version": "0.4.4", - "resolved": "git+ssh://git@github.com/oasis-tcs/odata-vocabularies.git#b15966cdbf427174c4f967dbbe4e35aaeded4358", - "integrity": "sha512-j7UeWLaSTula+A2g27RhBL/Bkz7DXfsc+CJh13tigecpE+Ud2MYjolFMh56fbn+QNqCoP5cvFNA83m1mG0YDkA==", + "version": "0.4.8", + "resolved": "git+ssh://git@github.com/oasis-tcs/odata-vocabularies.git#1233a0021ea36dfff9715f1d5a36309f08b3dcfa", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "colors": "^1.4.0", - "minimist": "^1.2.5", - "odata-csdl": "^0.4.0" + "minimist": "^1.2.6", + "odata-csdl": "^0.6.0" }, "bin": { "odata-vocab2md": "lib/cli.js" } }, - "node_modules/odata-vocabularies/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -752,6 +970,36 @@ "node": ">= 0.8.0" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -764,10 +1012,19 @@ "node": ">=6" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -782,6 +1039,27 @@ "node": ">=8" } }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -800,6 +1078,26 @@ "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -821,6 +1119,16 @@ "node": ">=4" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -836,6 +1144,34 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -857,6 +1193,15 @@ "node": ">=8" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -896,9 +1241,21 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -932,12 +1289,6 @@ "punycode": "^2.1.0" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -965,40 +1316,44 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { "@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } } }, "@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -1006,16 +1361,54 @@ "minimatch": "^3.0.4" } }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-jsx": { @@ -1058,6 +1451,12 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1074,6 +1473,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1113,7 +1521,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "cross-spawn": { @@ -1128,9 +1536,9 @@ } }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -1142,6 +1550,15 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -1158,13 +1575,15 @@ "dev": true }, "eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", + "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.1.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1174,30 +1593,32 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", + "find-up": "^5.0.0", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" } }, "eslint-scope": { @@ -1234,13 +1655,13 @@ "dev": true }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -1280,6 +1701,30 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1289,9 +1734,18 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -1301,6 +1755,25 @@ "flat-cache": "^3.0.4" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -1312,33 +1785,27 @@ } }, "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -1353,14 +1820,34 @@ } }, "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1386,13 +1873,13 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -1408,7 +1895,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-glob": { @@ -1420,10 +1907,22 @@ "is-extglob": "^2.1.1" } }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", "dev": true }, "js-yaml": { @@ -1444,7 +1943,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "levn": { @@ -1457,21 +1956,51 @@ "type-check": "~0.4.0" } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1481,52 +2010,32 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "odata-csdl": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/odata-csdl/-/odata-csdl-0.4.3.tgz", - "integrity": "sha512-d7GWZ9lAP4YVyFc+LVZgcEzdi1E6lgusGwX7oSTCRKiMv1xf4Y2CKhb5A2DOCVhyYclrhsoGD/Q5bOSwTLip+g==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/odata-csdl/-/odata-csdl-0.6.0.tgz", + "integrity": "sha512-EfrscnkyLWaW3zW5xXxzf0yR3tnMvfOHEM7dB/BwH33UjHzaIsBB1DaQI/7f5j5WXKteC+j+kDuSyYPjGw1NAw==", "requires": { "colors": "^1.4.0", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "sax": "^1.2.4" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - } } }, "odata-vocabularies": { - "version": "git+ssh://git@github.com/oasis-tcs/odata-vocabularies.git#b15966cdbf427174c4f967dbbe4e35aaeded4358", - "integrity": "sha512-j7UeWLaSTula+A2g27RhBL/Bkz7DXfsc+CJh13tigecpE+Ud2MYjolFMh56fbn+QNqCoP5cvFNA83m1mG0YDkA==", + "version": "git+ssh://git@github.com/oasis-tcs/odata-vocabularies.git#1233a0021ea36dfff9715f1d5a36309f08b3dcfa", "from": "odata-vocabularies@github:oasis-tcs/odata-vocabularies", "requires": { "colors": "^1.4.0", - "minimist": "^1.2.5", - "odata-csdl": "^0.4.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - } + "minimist": "^1.2.6", + "odata-csdl": "^0.6.0" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -1546,6 +2055,24 @@ "word-wrap": "^1.2.3" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1555,10 +2082,16 @@ "callsites": "^3.0.0" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { @@ -1567,6 +2100,18 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -1579,6 +2124,12 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -1591,6 +2142,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -1600,6 +2157,20 @@ "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1615,6 +2186,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -1642,9 +2219,18 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -1669,12 +2255,6 @@ "punycode": "^2.1.0" } }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1693,7 +2273,13 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index f2440bfa..d211ce39 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,11 @@ ], "dependencies": { "colors": "^1.4.0", - "odata-csdl": "^0.4.3", + "odata-csdl": "^0.6.0", "odata-vocabularies": "github:oasis-tcs/odata-vocabularies" }, "devDependencies": { - "eslint": "^8.9.0" + "eslint": "^8.23.0" }, "scripts": { "build": "node lib/transform.js" diff --git a/vocabularies/Analytics.json b/vocabularies/Analytics.json index 770a46a4..74b435b1 100644 --- a/vocabularies/Analytics.json +++ b/vocabularies/Analytics.json @@ -100,13 +100,11 @@ "RolledUpPropertyCount": { "$Kind": "Term", "$Type": "Edm.Int16", - "$Nullable": true, "@Common.Experimental": true, "@Core.Description": "Number of properties in the entity instance that have been aggregated away" }, "DrillURL": { "$Kind": "Term", - "$Nullable": true, "$AppliesTo": [ "EntityType" ], diff --git a/vocabularies/Analytics.md b/vocabularies/Analytics.md index c9409572..3d8974de 100644 --- a/vocabularies/Analytics.md +++ b/vocabularies/Analytics.md @@ -11,8 +11,8 @@ Term|Type|Description [Dimension](./Analytics.xml#L41:~:text=Deprecated in favor of [`AnalyticalContext/Dimension`](#AnalyticalContext) [Measure](./Analytics.xml#L53:~:text=Deprecated in favor of [`AnalyticalContext/Measure`](#AnalyticalContext) [AccumulativeMeasure](./Analytics.xml#L65:~:text=Deprecated in favor of [`AnalyticalContext/AccumulativeMeasure`](#AnalyticalContext) -[RolledUpPropertyCount](./Analytics.xml#L77:~:text=Number of properties in the entity instance that have been aggregated away -[DrillURL](./Analytics.xml#L83:~:text=URL to retrieve more detailed data related to a node of a recursive hierarchy. Annotations with this term MUST include a qualifier to select the hierarchy for which the drill URL is provided. +[RolledUpPropertyCount](./Analytics.xml#L77:~:text=Number of properties in the entity instance that have been aggregated away +[DrillURL](./Analytics.xml#L83:~:text=URL to retrieve more detailed data related to a node of a recursive hierarchy. Annotations with this term MUST include a qualifier to select the hierarchy for which the drill URL is provided. [PlanningAction](./Analytics.xml#L95:~:text=Processes or generates plan data. Its logic may have side-effects on entity sets. [AggregatedProperties](./Analytics.xml#L103:~:text=Deprecated in favor of [`AggregatedProperty`](#AggregatedProperty) [AggregatedProperty](./Analytics.xml#L121:~:text=Dynamic property for aggregate expression with specified aggregation method defined on the annotated entity type. diff --git a/vocabularies/Analytics.xml b/vocabularies/Analytics.xml index 335ea831..c63ee788 100644 --- a/vocabularies/Analytics.xml +++ b/vocabularies/Analytics.xml @@ -74,13 +74,13 @@ - + - + diff --git a/vocabularies/Common.json b/vocabularies/Common.json index b4f880d3..2e835805 100644 --- a/vocabularies/Common.json +++ b/vocabularies/Common.json @@ -32,6 +32,14 @@ "$Alias": "UI" } ] + }, + "https://sap.github.io/odata-vocabularies/vocabularies/Analytics.json": { + "$Include": [ + { + "$Namespace": "com.sap.vocabularies.Analytics.v1", + "$Alias": "Analytics" + } + ] } }, "com.sap.vocabularies.Common.v1": { @@ -433,9 +441,11 @@ "$DefaultValue": "Optional", "$AppliesTo": [ "Property", - "Record" + "Parameter", + "Record", + "EntityType" ], - "@Core.Description": "Control state of a property", + "@Core.Description": "Control state of a property, parameter, or the media stream of a media entity", "@Core.LongDescription": "This term can be used for static field control, providing an enumeration member value in $metadata, as well as dynamically, providing a `Path` expression.\n\nIn 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.", "@Common.IsInstanceAnnotation": true }, @@ -1399,20 +1409,17 @@ "DefaultValuesFunction": { "$Kind": "Term", "$Type": "Common.QualifiedName", - "$Nullable": true, "$AppliesTo": [ "EntitySet", "NavigationProperty", "Action", "Function" ], - "@Common.Experimental": true, "@Core.Description": "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", "@Core.LongDescription": "\n The default values function must have a bound overload whose binding parameter type matches the annotation target\n\n - for an entity set: collection of entity type of entity set\n\n - for a navigation property: identical to the type of the navigation property (single- or collection-valued)\n\n - for a bound action/function: identical to the binding parameter type of the annotated action/function\n\n In addition the overload can have non-binding parameters for values that the user has already entered:\n\n - 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\n\n - 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\n\n The result type of the default values function is a complex type whose properties correspond in name and type to a subset of\n\n - the properties of the entity to create, or\n\n - the parameters of the action or function to call\n " }, "DerivedDefaultValue": { "$Kind": "Term", - "$Nullable": true, "$AppliesTo": [ "Property" ], @@ -1441,7 +1448,6 @@ }, "DerivedFilterDefaultValue": { "$Kind": "Term", - "$Nullable": true, "$AppliesTo": [ "Property" ], @@ -1495,10 +1501,22 @@ "$Kind": "Term", "$Type": "Common.RecursiveHierarchyType", "$BaseTerm": "Aggregation.RecursiveHierarchy", + "@Core.Revisions": [ + { + "Kind": "Deprecated", + "Description": "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" + } + ], "@Core.Description": "Defines a recursive hierarchy." }, "RecursiveHierarchyType": { "$Kind": "ComplexType", + "@Core.Revisions": [ + { + "Kind": "Deprecated", + "Description": "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" + } + ], "ExternalNodeKeyProperty": { "$Type": "Edm.PropertyPath", "$Nullable": true, @@ -1584,14 +1602,15 @@ "mediaUploadLink": { "$Kind": "Term", "$AppliesTo": [ - "Property" + "Property", + "EntityType" ], "@Common.Experimental": true, "@Common.IsInstanceAnnotation": true, "@Core.RequiresType": "Edm.Stream", "@Core.IsURL": true, "@Core.Description": "URL for uploading new media content to a Document Management Service", - "@Core.LongDescription": "In contrast to the `@odata.mediaEditLink` this URL allows to upload new media content without directly changing a stream property.\nThe upload request typically uses HTTP POST with `Content-Type: multipart/form-data` following RFC 7578.\nThe 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.\nIf 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." + "@Core.LongDescription": "In contrast to the `@odata.mediaEditLink` this URL allows to upload new media content without directly changing a stream property or media resource.\nThe upload request typically uses HTTP POST with `Content-Type: multipart/form-data` following RFC 7578.\nThe 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.\nIf 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": { "$Kind": "Term", diff --git a/vocabularies/Common.md b/vocabularies/Common.md index 9ae99f47..2048e334 100644 --- a/vocabularies/Common.md +++ b/vocabularies/Common.md @@ -8,237 +8,237 @@ Common terms for all SAP vocabularies Term|Type|Description :---|:---|:---------- -[Experimental](./Common.xml#L40:~:text=Terms, types, and properties annotated with this term are experimental and can be changed incompatibly or removed completely any time without prior warning.
Do not use or rely on experimental terms, types, and properties in production environments. -[ServiceVersion](./Common.xml#L51:~:text=1 for first version of a service, incremented when schema changes incompatibly and service is published with a different URI -[ServiceSchemaVersion](./Common.xml#L54:~:text=0 for first schema version within a service version, incremented when schema changes compatibly -[Label](./Common.xml#L59:~:text=A short, human-readable text suitable for labels and captions in UIs -[Heading](./Common.xml#L64:~:text=A short, human-readable text suitable for column headings in UIs -[QuickInfo](./Common.xml#L69:~:text=A short, human-readable text suitable for tool tips in UIs -[Text](./Common.xml#L74:~:text=A descriptive text for values of the annotated property. Value MUST be a dynamic expression when used as metadata annotation. -[TextFor](./Common.xml#L79:~:text=The annotated property contains a descriptive text for values of the referenced property. -[ExternalID](./Common.xml#L85:~:text=A human readable identifier for values of the annotated property. 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. -[IsLanguageIdentifier](./Common.xml#L99:~:text=An identifier to distinguish multiple texts in different languages for the same entity -[TextFormat](./Common.xml#L104:~:text=The annotated property, parameter, or return type contains human-readable text that may contain formatting information -[Timezone](./Common.xml#L117:~:text=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. -[IsDigitSequence](./Common.xml#L173:~:text=Contains only digits -[IsUpperCase](./Common.xml#L178:~:text=Contains just uppercase characters -[IsCurrency](./Common.xml#L183:~:text=Annotated property or parameter is a currency code -[IsUnit](./Common.xml#L188:~:text=Annotated property or parameter is a unit of measure -[UnitSpecificScale](./Common.xml#L192:~:text=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#L197:~:text=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#L203:~:text=Use term `AlternateKeys` from the OASIS Core vocabulary instead -[MinOccurs](./Common.xml#L215:~:text=The annotated set or collection contains at least this number of items -[MaxOccurs](./Common.xml#L219:~:text=The annotated set or collection contains at most this number of items -[skip](./Common.xml#L223:~:text=The server assumed this value for $skip when it determined the annotated collection
The server determines a value for $skip, e.g., if the request contains the `sap-skiplocation` query option. -[AssociationEntity](./Common.xml#L231:~:text=Entity representing an n:m association with attributes -[DerivedNavigation](./Common.xml#L238:~:text=Shortcut for a multi-segment navigation, contains the long path with all its segments -[Masked](./Common.xml#L244:~:text=Use terms `MaskedValue` instead -[MaskedValue](./Common.xml#L259:~:text=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#L268:~:text=Unmasked data for this property can be requested with custom query option `masked-values=false` -[SemanticObject](./Common.xml#L274:~:text=Name of the Semantic Object represented as this entity type or identified by this property -[SemanticObjectMapping](./Common.xml#L277:~:text=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#L290:~:text=List of actions that are not available in the current state of the instance of the Semantic Object -[IsInstanceAnnotation](./Common.xml#L294:~:text=Term can also be used as instance annotation; AppliesTo of this term specifies where it can be applied -[FilterExpressionRestrictions](./Common.xml#L324:~:text=Use term Capabilities.FilterRestrictions instead -[FieldControl](./Common.xml#L367:~:text=Control state of a property
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#L400:~:text=A machine-readable exception category -[Application](./Common.xml#L405:~:text=... -[Timestamp](./Common.xml#L425:~:text=... -[TransactionId](./Common.xml#L430:~:text=... -[ErrorResolution](./Common.xml#L435:~:text=Hints for resolving this error -[Messages](./Common.xml#L453:~:text=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
- `code: Edm.String`
- `message: Edm.String`
- `target: Edm.String nullable`
- `additionalTargets: Collection(Edm.String)`
- `transition: Edm.Boolean`
- `numericSeverity: Edm.Byte`
- `longtextUrl: Edm.String nullable` -[additionalTargets](./Common.xml#L476:~:text=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#L482:~:text=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#L488:~:text=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#L493:~:text=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#L522:~:text=Criticality of the function or action to enforce a warning or similar before it's executed -[Attributes](./Common.xml#L526:~:text=Attributes related to this property, which may occur in denormalized entity types -[RelatedRecursiveHierarchy](./Common.xml#L530:~:text=A recursive hierarchy related to this property. The annotation path must end in Aggregation.RecursiveHierarchy. -[Interval](./Common.xml#L534:~:text=An interval with lower and upper boundaries described by two properties -[ResultContext](./Common.xml#L552:~:text=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#L560:~:text=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#L576:~:text=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#L585:~:text=The name of the SAP Object Node Type referenced by the annotated property -[IsNaturalPerson](./Common.xml#L590:~:text=The annotated entity type (e.g. `Employee`) or annotation (e.g. `IsImageUrl`) represents a natural person -[ValueList](./Common.xml#L596:~:text=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#L670:~:text=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#L676:~:text=If specified as true, there's only one value list mapping and its value list consists of a small number of fixed values -[ValueListForValidation](./Common.xml#L680:~:text=Contains the qualifier of the ValueList or ValueListMapping that should be used for validation -[ValueListReferences](./Common.xml#L685:~:text=A list of URLs of CSDL documents containing value list mappings for this parameter or property -[ValueListMapping](./Common.xml#L690:~:text=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#L791:~:text=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#L800:~:text=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#L809:~:text=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#L818:~:text=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#L827:~:text=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#L836:~:text=Day number relative to a calendar month. Valid values are between 1 and 31. -[IsDayOfCalendarYear](./Common.xml#L844:~:text=Day number relative to a calendar year. Valid values are between 1 and 366. -[IsCalendarYearHalfyear](./Common.xml#L852:~:text=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#L862:~:text=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#L872:~:text=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#L883:~:text=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#L893:~:text=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#L910:~:text=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#L919:~:text=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#L928:~:text=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#L938:~:text=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#L946:~:text=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#L955:~:text=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#L963:~:text=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#L972:~:text=Day number relative to a fiscal year. Valid values are between 1 and 371. -[IsFiscalYearVariant](./Common.xml#L979:~:text=Property encodes a fiscal year variant -[MutuallyExclusiveTerm](./Common.xml#L987:~:text=Only one term of the group identified with the Qualifier attribute can be applied -[DraftRoot](./Common.xml#L993:~:text=Root entities of business documents that support the draft pattern -[DraftNode](./Common.xml#L1034:~:text=Entities in this set are parts of business documents that support the draft pattern -[DraftActivationVia](./Common.xml#L1056:~:text=Draft entities in this set are indirectly activated via draft entities in the referenced entity sets -[EditableFieldFor](./Common.xml#L1060:~:text=The annotated property is an editable field for the referenced key property -[SemanticKey](./Common.xml#L1082:~:text=The listed properties form the semantic key, i.e. they are unique modulo IsActiveEntity -[SideEffects](./Common.xml#L1086:~:text=Describes side-effects of modification operations -[DefaultValuesFunction](./Common.xml#L1174:~:text=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#L1204:~:text=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#L1225:~:text=A default value for the property to be used in filter expressions. -[FilterDefaultValueHigh](./Common.xml#L1229:~:text=A default upper limit for the property to be used in 'less than or equal' filter expressions. -[DerivedFilterDefaultValue](./Common.xml#L1234:~:text=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#L1258:~:text=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#L1314:~:text=Defines a recursive hierarchy. -[CreatedAt](./Common.xml#L1346:~:text=Creation timestamp -[CreatedBy](./Common.xml#L1350:~:text=First editor -[ChangedAt](./Common.xml#L1354:~:text=Last modification timestamp -[ChangedBy](./Common.xml#L1358:~:text=Last editor -[OriginalProtocolVersion](./Common.xml#L1370:~:text=Original protocol version of a converted (V4) CSDL document, allowed values `2.0` and `3.0` -[ApplyMultiUnitBehaviorForSortingAndFiltering](./Common.xml#L1375:~:text=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#L1381:~:text=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. 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#L1396:~:text=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#L1401:~:text=Base URL for WebSocket connections - -## [TextFormatType](./Common.xml#L108:~:text=Terms, types, and properties annotated with this term are experimental and can be changed incompatibly or removed completely any time without prior warning.
Do not use or rely on experimental terms, types, and properties in production environments. +[ServiceVersion](./Common.xml#L54:~:text=1 for first version of a service, incremented when schema changes incompatibly and service is published with a different URI +[ServiceSchemaVersion](./Common.xml#L57:~:text=0 for first schema version within a service version, incremented when schema changes compatibly +[Label](./Common.xml#L62:~:text=A short, human-readable text suitable for labels and captions in UIs +[Heading](./Common.xml#L67:~:text=A short, human-readable text suitable for column headings in UIs +[QuickInfo](./Common.xml#L72:~:text=A short, human-readable text suitable for tool tips in UIs +[Text](./Common.xml#L77:~:text=A descriptive text for values of the annotated property. Value MUST be a dynamic expression when used as metadata annotation. +[TextFor](./Common.xml#L82:~:text=The annotated property contains a descriptive text for values of the referenced property. +[ExternalID](./Common.xml#L88:~:text=A human readable identifier for values of the annotated property. 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. +[IsLanguageIdentifier](./Common.xml#L102:~:text=An identifier to distinguish multiple texts in different languages for the same entity +[TextFormat](./Common.xml#L107:~:text=The annotated property, parameter, or return type contains human-readable text that may contain formatting information +[Timezone](./Common.xml#L120:~:text=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. +[IsDigitSequence](./Common.xml#L176:~:text=Contains only digits +[IsUpperCase](./Common.xml#L181:~:text=Contains just uppercase characters +[IsCurrency](./Common.xml#L186:~:text=Annotated property or parameter is a currency code +[IsUnit](./Common.xml#L191:~:text=Annotated property or parameter is a unit of measure +[UnitSpecificScale](./Common.xml#L195:~:text=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#L200:~:text=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#L206:~:text=Use term `AlternateKeys` from the OASIS Core vocabulary instead +[MinOccurs](./Common.xml#L218:~:text=The annotated set or collection contains at least this number of items +[MaxOccurs](./Common.xml#L222:~:text=The annotated set or collection contains at most this number of items +[skip](./Common.xml#L226:~:text=The server assumed this value for $skip when it determined the annotated collection
The server determines a value for $skip, e.g., if the request contains the `sap-skiplocation` query option. +[AssociationEntity](./Common.xml#L234:~:text=Entity representing an n:m association with attributes +[DerivedNavigation](./Common.xml#L241:~:text=Shortcut for a multi-segment navigation, contains the long path with all its segments +[Masked](./Common.xml#L247:~:text=Use terms `MaskedValue` instead +[MaskedValue](./Common.xml#L262:~:text=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#L271:~:text=Unmasked data for this property can be requested with custom query option `masked-values=false` +[SemanticObject](./Common.xml#L277:~:text=Name of the Semantic Object represented as this entity type or identified by this property +[SemanticObjectMapping](./Common.xml#L280:~:text=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#L293:~:text=List of actions that are not available in the current state of the instance of the Semantic Object +[IsInstanceAnnotation](./Common.xml#L297:~:text=Term can also be used as instance annotation; AppliesTo of this term specifies where it can be applied +[FilterExpressionRestrictions](./Common.xml#L327:~:text=Use term Capabilities.FilterRestrictions instead +[FieldControl](./Common.xml#L370:~:text=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#L403:~:text=A machine-readable exception category +[Application](./Common.xml#L408:~:text=... +[Timestamp](./Common.xml#L428:~:text=... +[TransactionId](./Common.xml#L433:~:text=... +[ErrorResolution](./Common.xml#L438:~:text=Hints for resolving this error +[Messages](./Common.xml#L456:~:text=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
- `code: Edm.String`
- `message: Edm.String`
- `target: Edm.String nullable`
- `additionalTargets: Collection(Edm.String)`
- `transition: Edm.Boolean`
- `numericSeverity: Edm.Byte`
- `longtextUrl: Edm.String nullable` +[additionalTargets](./Common.xml#L479:~:text=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#L485:~:text=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#L491:~:text=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#L496:~:text=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#L525:~:text=Criticality of the function or action to enforce a warning or similar before it's executed +[Attributes](./Common.xml#L529:~:text=Attributes related to this property, which may occur in denormalized entity types +[RelatedRecursiveHierarchy](./Common.xml#L533:~:text=A recursive hierarchy related to this property. The annotation path must end in Aggregation.RecursiveHierarchy. +[Interval](./Common.xml#L537:~:text=An interval with lower and upper boundaries described by two properties +[ResultContext](./Common.xml#L555:~:text=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#L563:~:text=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#L579:~:text=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#L588:~:text=The name of the SAP Object Node Type referenced by the annotated property +[IsNaturalPerson](./Common.xml#L593:~:text=The annotated entity type (e.g. `Employee`) or annotation (e.g. `IsImageUrl`) represents a natural person +[ValueList](./Common.xml#L599:~:text=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#L673:~:text=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#L679:~:text=If specified as true, there's only one value list mapping and its value list consists of a small number of fixed values +[ValueListForValidation](./Common.xml#L683:~:text=Contains the qualifier of the ValueList or ValueListMapping that should be used for validation +[ValueListReferences](./Common.xml#L688:~:text=A list of URLs of CSDL documents containing value list mappings for this parameter or property +[ValueListMapping](./Common.xml#L693:~:text=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#L794:~:text=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#L803:~:text=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#L812:~:text=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#L821:~:text=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#L830:~:text=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#L839:~:text=Day number relative to a calendar month. Valid values are between 1 and 31. +[IsDayOfCalendarYear](./Common.xml#L847:~:text=Day number relative to a calendar year. Valid values are between 1 and 366. +[IsCalendarYearHalfyear](./Common.xml#L855:~:text=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#L865:~:text=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#L875:~:text=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#L886:~:text=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#L896:~:text=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#L913:~:text=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#L922:~:text=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#L931:~:text=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#L941:~:text=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#L949:~:text=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#L958:~:text=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#L966:~:text=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#L975:~:text=Day number relative to a fiscal year. Valid values are between 1 and 371. +[IsFiscalYearVariant](./Common.xml#L982:~:text=Property encodes a fiscal year variant +[MutuallyExclusiveTerm](./Common.xml#L990:~:text=Only one term of the group identified with the Qualifier attribute can be applied +[DraftRoot](./Common.xml#L996:~:text=Root entities of business documents that support the draft pattern +[DraftNode](./Common.xml#L1037:~:text=Entities in this set are parts of business documents that support the draft pattern +[DraftActivationVia](./Common.xml#L1059:~:text=Draft entities in this set are indirectly activated via draft entities in the referenced entity sets +[EditableFieldFor](./Common.xml#L1063:~:text=The annotated property is an editable field for the referenced key property +[SemanticKey](./Common.xml#L1085:~:text=The listed properties form the semantic key, i.e. they are unique modulo IsActiveEntity +[SideEffects](./Common.xml#L1089:~:text=Describes side-effects of modification operations +[DefaultValuesFunction](./Common.xml#L1177:~:text=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#L1206:~:text=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#L1227:~:text=A default value for the property to be used in filter expressions. +[FilterDefaultValueHigh](./Common.xml#L1231:~:text=A default upper limit for the property to be used in 'less than or equal' filter expressions. +[DerivedFilterDefaultValue](./Common.xml#L1236:~:text=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#L1260:~:text=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#L1316:~:text=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#L1364:~:text=Creation timestamp +[CreatedBy](./Common.xml#L1368:~:text=First editor +[ChangedAt](./Common.xml#L1372:~:text=Last modification timestamp +[ChangedBy](./Common.xml#L1376:~:text=Last editor +[OriginalProtocolVersion](./Common.xml#L1388:~:text=Original protocol version of a converted (V4) CSDL document, allowed values `2.0` and `3.0` +[ApplyMultiUnitBehaviorForSortingAndFiltering](./Common.xml#L1393:~:text=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#L1399:~:text=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#L1414:~:text=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#L1419:~:text=Base URL for WebSocket connections + +## [TextFormatType](./Common.xml#L111:~:text=[SemanticObjectMappingType](./Common.xml#L281:~:text=[SemanticObjectMappingType](./Common.xml#L284:~:text=[FilterExpressionRestrictionType](./Common.xml#L335:~:text=[FilterExpressionRestrictionType](./Common.xml#L338:~:text=[FilterExpressionType](./Common.xml#L347:~:text=[FilterExpressionType](./Common.xml#L350:~:text=[FieldControlType](./Common.xml#L372:~:text=[FieldControlType](./Common.xml#L375:~:text=This annotation value does not imply any restrictions on the value range of the property. For restricting the value range use e.g. the standard type facet `Nullable` with a value of `false` to exclude the `null` value, or terms from the [Validation vocabulary](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Validation.V1.md). -[Optional](./Common.xml#L378:~:text=This value does not make sense as a static annotation value. -[ReadOnly](./Common.xml#L382:~:text=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#L386:~:text=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#L394:~:text=To statically hide a property on a UI use [UI.Hidden](UI.md#Hidden) instead +[Mandatory](./Common.xml#L377:~:text=This annotation value does not imply any restrictions on the value range of the property. For restricting the value range use e.g. the standard type facet `Nullable` with a value of `false` to exclude the `null` value, or terms from the [Validation vocabulary](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Validation.V1.md). +[Optional](./Common.xml#L381:~:text=This value does not make sense as a static annotation value. +[ReadOnly](./Common.xml#L385:~:text=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#L389:~:text=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#L397:~:text=To statically hide a property on a UI use [UI.Hidden](UI.md#Hidden) instead -## [ApplicationType](./Common.xml#L410:~:text=[ApplicationType](./Common.xml#L413:~:text=[ErrorResolutionType](./Common.xml#L440:~:text=[ErrorResolutionType](./Common.xml#L443:~:text=[NumericMessageSeverityType](./Common.xml#L498:~:text=[NumericMessageSeverityType](./Common.xml#L501:~:text=[IntervalType](./Common.xml#L537:~:text=[IntervalType](./Common.xml#L540:~:text=[SAPObjectNodeTypeType](./Common.xml#L568:~:text=[SAPObjectNodeTypeType](./Common.xml#L571:~:text=[ValueListType](./Common.xml#L600:~:text=[ValueListType](./Common.xml#L603:~:text=The value of the target property is used as the search expression instead of in $filter -[FetchValues](./Common.xml#L638:~:text=Qualifier for annotation with term [UI.PresentationVariant](UI.md#PresentationVariant) on the entity set identified via CollectionPath -[SelectionVariantQualifier](./Common.xml#L645:~:text=Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath -[Parameters](./Common.xml#L649:~:text=The value of the target property is used as the search expression instead of in $filter +[FetchValues](./Common.xml#L641:~:text=Qualifier for annotation with term [UI.PresentationVariant](UI.md#PresentationVariant) on the entity set identified via CollectionPath +[SelectionVariantQualifier](./Common.xml#L648:~:text=Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath +[Parameters](./Common.xml#L652:~:text=[FetchValuesType](./Common.xml#L654:~:text=[FetchValuesType](./Common.xml#L657:~:text=[ValueListMappingType](./Common.xml#L694:~:text=[ValueListMappingType](./Common.xml#L697:~:text=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#L717:~:text=Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath -[Parameters](./Common.xml#L721:~:text=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#L720:~:text=Qualifier for annotation with term [UI.SelectionVariant](UI.md#SelectionVariant) on the entity set identified via CollectionPath +[Parameters](./Common.xml#L724:~:text=[*ValueListParameter*](./Common.xml#L726:~:text=[*ValueListParameter*](./Common.xml#L729:~:text=[ValueListParameterIn](./Common.xml#L731:~:text=[ValueListParameterIn](./Common.xml#L734:~:text=[ValueListParameterConstant](./Common.xml#L740:~:text=[ValueListParameterConstant](./Common.xml#L743:~:text=[ValueListParameterInOut](./Common.xml#L746:~:text=[ValueListParameterInOut](./Common.xml#L749:~:text=[ValueListParameterOut](./Common.xml#L760:~:text=[ValueListParameterOut](./Common.xml#L763:~:text=[ValueListParameterDisplayOnly](./Common.xml#L770:~:text=[ValueListParameterDisplayOnly](./Common.xml#L773:~:text=[ValueListParameterFilterOnly](./Common.xml#L778:~:text=[ValueListParameterFilterOnly](./Common.xml#L781:~:text=[DraftRootType](./Common.xml#L998:~:text=[DraftRootType](./Common.xml#L1001:~:text=New drafts may also be created by POSTing an empty entity without any properties to the entity set. -[AdditionalNewActions](./Common.xml#L1013:~:text=Additional actions beside the default POST or standard `NewAction` that create a new draft. -[ShareAction](./Common.xml#L1018:~:text=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#L1043:~:text=New drafts may also be created by POSTing an empty entity without any properties to the entity set. +[AdditionalNewActions](./Common.xml#L1016:~:text=Additional actions beside the default POST or standard `NewAction` that create a new draft. +[ShareAction](./Common.xml#L1021:~:text=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. -## [DraftNodeType](./Common.xml#L1039:~:text=[DraftNodeType](./Common.xml#L1042:~:text=[SimpleIdentifier](./Common.xml#L1064:~:text=[SimpleIdentifier](./Common.xml#L1067:~:text=[QualifiedName](./Common.xml#L1068:~:text=[QualifiedName](./Common.xml#L1071:~:text=[ActionOverload](./Common.xml#L1072:~:text=[ActionOverload](./Common.xml#L1075:~:text=[SideEffectsType](./Common.xml#L1089:~:text=[SideEffectsType](./Common.xml#L1092:~:text=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#L1111:~:text=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`. -[TriggeredIndicator](./Common.xml#L1129:~:text=The value of this property typically is a Path expression pointing to a boolean property. It can be used by clients to defer expensive refresh calls until they are actually needed and instead just request the referenced indicator property. Servers can choose to return indicator properties even if not explicitly requested. -[Discretionary](./Common.xml#L1134:~:text=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#L1140:~:text=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#L1114:~:text=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`. +[TriggeredIndicator](./Common.xml#L1132:~:text=The value of this property typically is a Path expression pointing to a boolean property. It can be used by clients to defer expensive refresh calls until they are actually needed and instead just request the referenced indicator property. Servers can choose to return indicator properties even if not explicitly requested. +[Discretionary](./Common.xml#L1137:~:text=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#L1143:~:text=[SortOrderType](./Common.xml#L1266:~:text=[SortOrderType](./Common.xml#L1268:~:text=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:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#CustomAggregate) -[Descending](./Common.xml#L1294:~:text=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:
- [AggregatedProperty](Analytics.md#AggregatedProperty)
- [CustomAggregate](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#CustomAggregate) +[Descending](./Common.xml#L1296:~:text=[RecursiveHierarchyType](./Common.xml#L1319:~:text=[RecursiveHierarchyType](./Common.xml#L1329:~:text=[UserID](./Common.xml#L1362:~:text=[UserID](./Common.xml#L1380:~:text= + + + @@ -364,8 +367,8 @@ - - + + @@ -1171,8 +1174,7 @@ Upon modification field control logic is invoked so that meta-information like h - - + 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 @@ -1201,7 +1203,7 @@ Upon modification field control logic is invoked so that meta-information like h - + Function import to derive a default value for the property from a given context. @@ -1222,16 +1224,16 @@ Upon modification field control logic is invoked so that meta-information like h - + - + - + Function import to derive a default value for the property from a given context in order to use it in filter expressions. @@ -1312,11 +1314,27 @@ Upon modification field control logic is invoked so that meta-information like h --> + + + + + + + + Defines a recursive hierarchy. + + + + + + + + @@ -1378,14 +1396,14 @@ Upon modification field control logic is invoked so that meta-information like h - + - In contrast to the `@odata.mediaEditLink` this URL allows to upload new media content without directly changing a stream property. + 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. diff --git a/vocabularies/Communication.xml b/vocabularies/Communication.xml index 7273b2bb..9a2cdf62 100644 --- a/vocabularies/Communication.xml +++ b/vocabularies/Communication.xml @@ -37,7 +37,7 @@ These terms are inspired by
- + @@ -121,7 +121,7 @@ These terms are inspired by
- + @@ -280,7 +280,7 @@ These terms are inspired by - + @@ -323,7 +323,7 @@ These terms are inspired by
- + @@ -348,7 +348,7 @@ These terms are inspired by
- + diff --git a/vocabularies/DataIntegration.json b/vocabularies/DataIntegration.json index 0302b335..3277de61 100644 --- a/vocabularies/DataIntegration.json +++ b/vocabularies/DataIntegration.json @@ -39,7 +39,6 @@ }, "OriginalDataType": { "$Kind": "Term", - "$Nullable": true, "$AppliesTo": [ "Property" ], @@ -49,9 +48,16 @@ "@DataIntegration.OriginalDataType": "CHAR(000010)" } }, + "OriginalName": { + "$Kind": "Term", + "@Core.Description": "Original name of the annotated model element in its source model", + "@Core.LongDescription": "The provider of an OData service maps its local names to Edm identifiers, which may require removing or replacing characters that are not allowed.", + "@Core.Example": { + "@DataIntegration.OriginalName": "what::is-in.a/name?" + } + }, "ConversionExit": { "$Kind": "Term", - "$Nullable": true, "$AppliesTo": [ "Property" ], @@ -63,7 +69,6 @@ }, "SourceSystem": { "$Kind": "Term", - "$Nullable": true, "$AppliesTo": [ "Container" ], @@ -83,7 +88,6 @@ "DeltaMethod": { "$Kind": "Term", "$Type": "DataIntegration.DeltaMethodType", - "$Nullable": true, "$AppliesTo": [ "EntitySet" ], diff --git a/vocabularies/DataIntegration.md b/vocabularies/DataIntegration.md index aafda45f..5108deb2 100644 --- a/vocabularies/DataIntegration.md +++ b/vocabularies/DataIntegration.md @@ -9,16 +9,17 @@ Terms for Data Integration Term|Type|Description :---|:---|:---------- [Extractable](./DataIntegration.xml#L32:~:text=Defines if entity set is extractable -[OriginalDataType](./DataIntegration.xml#L35:~:text=Original data type of the annotated property in its source system ([Example](./DataIntegration.xml#L38))
The provider of an OData service maps its local type definitions to Edm types. Sometimes, specific type information is lost. This additional annotation gives the consumer hints about the type original type definition. -[ConversionExit](./DataIntegration.xml#L44:~:text=Identifier that describes the special output conversion of the annotated property in the source system ([Example](./DataIntegration.xml#L47))
The provider of an OData service maps its local type definitions to Edm types. Sometimes, specific type information is lost. This additional annotation gives the consumer hints about the type original type definition. -[SourceSystem](./DataIntegration.xml#L53:~:text=Identifier that classifies the type of the source system
The original type name used in annotation OriginalDataType depend are specific to different source system. Sourc system type ABAP uses other type names as source system type HANA. -[DeltaMethod](./DataIntegration.xml#L68:~:text=Defines which delta method the entity set supports. Only evaluated if Capabilities.ChangeTracking/Supported is true +[OriginalDataType](./DataIntegration.xml#L36:~:text=Original data type of the annotated property in its source system ([Example](./DataIntegration.xml#L39))
The provider of an OData service maps its local type definitions to Edm types. Sometimes, specific type information is lost. This additional annotation gives the consumer hints about the type original type definition. +[OriginalName](./DataIntegration.xml#L46:~:text=Original name of the annotated model element in its source model ([Example](./DataIntegration.xml#L49))
The provider of an OData service maps its local names to Edm identifiers, which may require removing or replacing characters that are not allowed. +[ConversionExit](./DataIntegration.xml#L56:~:text=Identifier that describes the special output conversion of the annotated property in the source system ([Example](./DataIntegration.xml#L59))
The provider of an OData service maps its local type definitions to Edm types. Sometimes, specific type information is lost. This additional annotation gives the consumer hints about the type original type definition. +[SourceSystem](./DataIntegration.xml#L66:~:text=Identifier that classifies the type of the source system
The original type name used in annotation OriginalDataType depend are specific to different source system. Sourc system type ABAP uses other type names as source system type HANA. +[DeltaMethod](./DataIntegration.xml#L83:~:text=Defines which delta method the entity set supports. Only evaluated if Capabilities.ChangeTracking/Supported is true -## [DeltaMethodType](./DataIntegration.xml#L57:~:text=[DeltaMethodType](./DataIntegration.xml#L71:~:text=
- + + @@ -41,7 +42,18 @@ - + + + + + + + + + + + + @@ -50,10 +62,12 @@ - + + + @@ -65,9 +79,11 @@ - + + + diff --git a/vocabularies/Graph.json b/vocabularies/Graph.json index ea72d955..3d800a29 100644 --- a/vocabularies/Graph.json +++ b/vocabularies/Graph.json @@ -9,6 +9,14 @@ } ] }, + "https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.JSON.V1.json": { + "$Include": [ + { + "$Namespace": "Org.OData.JSON.V1", + "$Alias": "JSON" + } + ] + }, "https://sap.github.io/odata-vocabularies/vocabularies/Common.json": { "$Include": [ { @@ -37,57 +45,45 @@ "href": "https://github.com/sap/odata-vocabularies/blob/main/vocabularies/Graph.md" } ], - "links": { + "traceId": { "$Kind": "Term", - "$Collection": true, - "$Type": "Graph.link", - "$AppliesTo": [ - "EntityType" - ], "@Common.Experimental": true, - "@Core.Description": "Navigation links" + "@Common.IsInstanceAnnotation": true, + "@Core.Description": "The traceId contains a unique string that is preserved across multiple requests and log files. It is used in error responses to help diagnose problems by correlating log entries." }, - "link": { - "$Kind": "ComplexType", + "Details": { + "$Kind": "Term", + "$Type": "Graph.DetailsType", "@Common.Experimental": true, - "@Core.Description": "Navigation link", - "title": { - "$Nullable": true, - "@Core.Description": "Title of the navigation link" - }, - "alias": { - "$Nullable": true, - "@Core.Description": "Name of the virtual navigation property" - }, - "target": { - "$Nullable": true, - "@Core.Description": "Name of the target entity set" - }, - "parameters": { - "$Collection": true, - "$Type": "Graph.binding", - "@Core.Description": "Map of parameter names in the target operation to property paths in the annotated entity type" - }, - "filter": { - "$Collection": true, - "$Type": "Graph.binding", - "@Core.Description": "Map of single-valued property paths in the target entity to property paths in the annotated entity type", - "@Core.LongDescription": "Used to construct a `$filter` expression and triggers the `Read` (list) operation on the target entity set" - } + "@Common.IsInstanceAnnotation": true, + "@Core.Description": "Graph-specific details for error responses" }, - "binding": { + "DetailsType": { "$Kind": "ComplexType", "@Common.Experimental": true, - "source": { - "$Type": "Edm.PropertyPath", + "@Core.Description": "Graph-specific details for error responses", + "url": { "$Nullable": true, - "@Core.Description": "Path to primitive property in the annotated entity type" + "@Common.Experimental": true, + "@Core.IsURL": true, + "@Core.Description": "URL sent to the business system tenant" }, - "target": { - "$Type": "Edm.PropertyPath", + "body": { + "$Type": "JSON.JSON", "$Nullable": true, - "@Core.Description": "Path to primitive property in the target entity set" + "@Common.Experimental": true, + "@Core.Description": "Request body sent to the business system tenant" } + }, + "CompositionRoot": { + "$Kind": "Term", + "$Type": "Core.Tag", + "$DefaultValue": true, + "$AppliesTo": [ + "EntityType" + ], + "@Common.Experimental": true, + "@Core.Description": "The annotated entity type is the root type of a composition tree." } } } \ No newline at end of file diff --git a/vocabularies/Graph.md b/vocabularies/Graph.md index b7e2920f..86754ac3 100644 --- a/vocabularies/Graph.md +++ b/vocabularies/Graph.md @@ -8,23 +8,14 @@ Terms for SAP Graph Term|Type|Description :---|:---|:---------- -[links](./Graph.xml#L36:~:text=Navigation links +[traceId](./Graph.xml#L39:~:text=The traceId contains a unique string that is preserved across multiple requests and log files. It is used in error responses to help diagnose problems by correlating log entries. +[Details](./Graph.xml#L45:~:text=Graph-specific details for error responses +[CompositionRoot](./Graph.xml#L64:~:text=The annotated entity type is the root type of a composition tree. -## [link](./Graph.xml#L41:~:text=[DetailsType](./Graph.xml#L50:~:text=Used to construct a `$filter` expression and triggers the `Read` (list) operation on the target entity set - -## [binding](./Graph.xml#L62:~:text= + + + @@ -33,41 +36,35 @@ - + - + + - + - - - - - - - - - - - - + + + + + + + + + + - - - + + + - + - - - - - - - + + diff --git a/vocabularies/Hierarchy.json b/vocabularies/Hierarchy.json index 43aaa105..68d91ea9 100644 --- a/vocabularies/Hierarchy.json +++ b/vocabularies/Hierarchy.json @@ -47,31 +47,21 @@ "RecursiveHierarchy": { "$Kind": "Term", "$Type": "Hierarchy.RecursiveHierarchyType", - "$Nullable": true, "$AppliesTo": [ - "EntityType", - "ComplexType" + "EntityType" ], "$BaseTerm": "Aggregation.RecursiveHierarchy", "@Common.Experimental": true, - "@Core.Description": "Defines a recursive hierarchy." + "@Core.Description": "Defines a recursive hierarchy", + "@Core.LongDescription": "The [base term](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Aggregation.V1.html#RecursiveHierarchy)\n governs what are the nodes and parents in the hierarchy, whereas this annotation designates properties that contain derived information." }, "RecursiveHierarchyType": { "$Kind": "ComplexType", "@Common.Experimental": true, - "ParentNodeProperty": { - "$Type": "Edm.PropertyPath", - "@Core.Description": "Property holding the parent hierarchy node value" - }, "ExternalKeyProperty": { "$Type": "Edm.PropertyPath", "@Core.Description": "Property holding the external key value for a node" }, - "ValueProperty": { - "$Type": "Edm.PropertyPath", - "$Nullable": true, - "@Core.Description": "Property for whose values the hierarchy is defined" - }, "DescendantCountProperty": { "$Type": "Edm.PropertyPath", "$Nullable": true, diff --git a/vocabularies/Hierarchy.md b/vocabularies/Hierarchy.md index 5f44a091..ace35fa8 100644 --- a/vocabularies/Hierarchy.md +++ b/vocabularies/Hierarchy.md @@ -8,17 +8,15 @@ Terms for Hierarchies Term|Type|Description :---|:---|:---------- -[RecursiveHierarchy](./Hierarchy.xml#L38:~:text=Defines a recursive hierarchy. +[RecursiveHierarchy](./Hierarchy.xml#L38:~:text=Defines a recursive hierarchy
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 annotation designates properties that contain derived information. -## [RecursiveHierarchyType](./Hierarchy.xml#L42:~:text=[RecursiveHierarchyType](./Hierarchy.xml#L46:~:text=The descendant count of a node is the number of its descendants in the hierarchy structure of the result considering only those nodes matching any specified $filter and $search. A property holding descendant counts has an integer data type. -[DrillStateProperty](./Hierarchy.xml#L57:~:text=The drill state is indicated by one of the following string values: `collapsed`, `expanded`, `leaf`. For an expanded node, its children are included in the result collection. For a collapsed node, the children are included in the entity set, but they are not part of the result collection. Retrieving them requires a relaxed filter expression or a separate request filtering on the parent node ID with the ID of the collapsed node. A leaf does not have any child in the entity set. -[SiblingRankProperty](./Hierarchy.xml#L61:~:text=The sibling rank of a node is the index of the node in the sequence of all nodes with the same parent created by preorder traversal of the hierarchy structure after evaluating the $filter expression in the request excluding any conditions on key properties. The first sibling is at position 0. -[PreorderRankProperty](./Hierarchy.xml#L65:~:text=The preorder rank of a node expresses its position in the sequence of nodes created from preorder traversal of the hierarchy structure after evaluating the $filter expression in the request excluding any conditions on key properties. The first node in preorder traversal has rank 0. +[ExternalKeyProperty](./Hierarchy.xml#L48:~:text=The descendant count of a node is the number of its descendants in the hierarchy structure of the result considering only those nodes matching any specified $filter and $search. A property holding descendant counts has an integer data type. +[DrillStateProperty](./Hierarchy.xml#L55:~:text=The drill state is indicated by one of the following string values: `collapsed`, `expanded`, `leaf`. For an expanded node, its children are included in the result collection. For a collapsed node, the children are included in the entity set, but they are not part of the result collection. Retrieving them requires a relaxed filter expression or a separate request filtering on the parent node ID with the ID of the collapsed node. A leaf does not have any child in the entity set. +[SiblingRankProperty](./Hierarchy.xml#L59:~:text=The sibling rank of a node is the index of the node in the sequence of all nodes with the same parent created by preorder traversal of the hierarchy structure after evaluating the $filter expression in the request excluding any conditions on key properties. The first sibling is at position 0. +[PreorderRankProperty](./Hierarchy.xml#L63:~:text=The preorder rank of a node expresses its position in the sequence of nodes created from preorder traversal of the hierarchy structure after evaluating the $filter expression in the request excluding any conditions on key properties. The first node in preorder traversal has rank 0. diff --git a/vocabularies/Hierarchy.xml b/vocabularies/Hierarchy.xml index d852ae72..ff587ed9 100644 --- a/vocabularies/Hierarchy.xml +++ b/vocabularies/Hierarchy.xml @@ -35,21 +35,19 @@ - + - + + + 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 annotation designates properties that contain derived information. + - - - - - - diff --git a/vocabularies/PDF.json b/vocabularies/PDF.json new file mode 100644 index 00000000..98b17023 --- /dev/null +++ b/vocabularies/PDF.json @@ -0,0 +1,115 @@ +{ + "$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.PDF.v1": { + "$Alias": "PDF", + "@Common.Experimental": true, + "@Core.Description": "Terms for PDF response format", + "@Core.LongDescription": "The PDF vocabulary provides information about the PDF format of a response", + "@Core.Description#Published": "2021-10-27 © Copyright 2021 SAP SE. All rights reserved", + "@Core.Links": [ + { + "rel": "alternate", + "href": "https://sap.github.io/odata-vocabularies/vocabularies/PDF.xml" + }, + { + "rel": "latest-version", + "href": "https://sap.github.io/odata-vocabularies/vocabularies/PDF.json" + }, + { + "rel": "describedby", + "href": "https://github.com/sap/odata-vocabularies/blob/main/vocabularies/PDF.md" + } + ], + "Features": { + "$Kind": "Term", + "$Type": "PDF.FeaturesType", + "$AppliesTo": [ + "EntityContainer" + ], + "@Common.Experimental": true, + "@Core.Description": "Features for the PDF" + }, + "FeaturesType": { + "$Kind": "ComplexType", + "@Common.Experimental": true, + "DocumentDescriptionReference": { + "@Core.IsURL": true, + "@Core.Description": "Reference of the Service for the DocumentDescription" + }, + "DocumentDescriptionCollection": { + "@Core.Description": "Name of entity set containing the DocumentDescription" + }, + "ArchiveFormat": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "PDFA conformant format" + }, + "Signature": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "Signing the document" + }, + "CoverPage": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "Cover Page" + }, + "FontName": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "Font name" + }, + "FontSize": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "Font size" + }, + "Margin": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "Margin size" + }, + "Border": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "Border size of the table" + }, + "FitToPage": { + "$Type": "Edm.Boolean", + "$DefaultValue": false, + "@Core.Description": "Fit to page", + "@Core.LongDescription": "If this option is selected, the font size is automatically selected in such a way that all columns of a table fit on one page. Other layout options like margin, border and composite cell spacing are adapted accordingly, with respect to the chose scaling factor." + }, + "ResultSizeDefault": { + "$Type": "Edm.Int32", + "$Nullable": true, + "@Core.Description": "Default result size", + "@Core.LongDescription": " Default result size for PDF documents. Used if $top has not been provided." + }, + "ResultSizeMaximum": { + "$Type": "Edm.Int32", + "$Nullable": true, + "@Core.Description": "Maximum result size", + "@Core.LongDescription": "Max result size for PDF documents. Used if $top has been provided and $top > ResultSizeMaximum" + } + } + } +} \ No newline at end of file diff --git a/vocabularies/PDF.md b/vocabularies/PDF.md new file mode 100644 index 00000000..07df4c80 --- /dev/null +++ b/vocabularies/PDF.md @@ -0,0 +1,31 @@ +# PDF Vocabulary +**Namespace: [com.sap.vocabularies.PDF.v1](PDF.xml)** + +Terms for PDF response format + +The PDF vocabulary provides information about the PDF format of a response + + +## Terms + +Term|Type|Description +:---|:---|:---------- +[Features](./PDF.xml#L39:~:text=Features for the PDF + +## [FeaturesType](./PDF.xml#L44:~:text=If this option is selected, the font size is automatically selected in such a way that all columns of a table fit on one page. Other layout options like margin, border and composite cell spacing are adapted accordingly, with respect to the chose scaling factor. +[ResultSizeDefault](./PDF.xml#L80:~:text=Default result size for PDF documents. Used if $top has not been provided. +[ResultSizeMaximum](./PDF.xml#L86:~:text=Max result size for PDF documents. Used if $top has been provided and $top > ResultSizeMaximum diff --git a/vocabularies/PDF.xml b/vocabularies/PDF.xml new file mode 100644 index 00000000..06e9eb23 --- /dev/null +++ b/vocabularies/PDF.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + Terms for PDF response format + + + The PDF vocabulary provides information about the PDF format of a response + + + 2021-10-27 © Copyright 2021 SAP SE. All rights reserved + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If this option is selected, the font size is automatically selected in such a way that all columns of a table fit on one page. Other layout options like margin, border and composite cell spacing are adapted accordingly, with respect to the chose scaling factor. + + + + + + Default result size for PDF documents. Used if $top has not been provided. + + + + + + Max result size for PDF documents. Used if $top has been provided and $top > ResultSizeMaximum + + + + + + + diff --git a/vocabularies/PersonalData.json b/vocabularies/PersonalData.json index 01d98d2b..dd695ba0 100644 --- a/vocabularies/PersonalData.json +++ b/vocabularies/PersonalData.json @@ -48,7 +48,6 @@ "EntitySemantics": { "$Kind": "Term", "$Type": "PersonalData.EntitySemanticsType", - "$Nullable": true, "$AppliesTo": [ "EntitySet" ], @@ -100,7 +99,6 @@ "FieldSemantics": { "$Kind": "Term", "$Type": "PersonalData.FieldSemanticsType", - "$Nullable": true, "$AppliesTo": [ "Property" ], diff --git a/vocabularies/PersonalData.md b/vocabularies/PersonalData.md index 6aed7470..84112cad 100644 --- a/vocabularies/PersonalData.md +++ b/vocabularies/PersonalData.md @@ -27,10 +27,10 @@ Terms for contact and address information are defined in the [Communication voca Term|Type|Description :---|:---|:---------- -[EntitySemantics](./PersonalData.xml#L58:~:text=Primary meaning of the entities in the annotated entity set +[EntitySemantics](./PersonalData.xml#L58:~:text=Primary meaning of the entities in the annotated entity set [DataSubjectRole](./PersonalData.xml#L61:~:text=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#L69:~:text=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#L113:~:text=Primary meaning of the personal data contained in the annotated property
Changes to values of annotated properties are tracked in the audit log.
*TODO: cross-check with Wolfgang Koch: this annotation SHOULD NOT be necessary on fields that are already marked as being contact data (name, phone number, email address, birthday, ...) or address data (street, city, ...)* +[FieldSemantics](./PersonalData.xml#L113:~:text=Primary meaning of the personal data contained in the annotated property
Changes to values of annotated properties are tracked in the audit log.
*TODO: cross-check with Wolfgang Koch: this annotation SHOULD NOT be necessary on fields that are already marked as being contact data (name, phone number, email address, birthday, ...) or address data (street, city, ...)* [IsPotentiallyPersonal](./PersonalData.xml#L186:~:text=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#L197:~:text=Property contains potentially sensitive personal data
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) diff --git a/vocabularies/PersonalData.xml b/vocabularies/PersonalData.xml index 1908a5bc..05f64862 100644 --- a/vocabularies/PersonalData.xml +++ b/vocabularies/PersonalData.xml @@ -55,10 +55,10 @@ Terms for contact and address information are defined in the [Communication voca
- + - + @@ -66,7 +66,7 @@ Terms for contact and address information are defined in the [Communication voca Can be a static value or a `Path` expression If the role varies per entity - + @@ -110,7 +110,7 @@ Terms for contact and address information are defined in the [Communication voca - + diff --git a/vocabularies/UI.json b/vocabularies/UI.json index 5e841ede..79a1d30c 100644 --- a/vocabularies/UI.json +++ b/vocabularies/UI.json @@ -1,5 +1,5 @@ { - "$Version": "4.0", + "$Version": "4.01", "$Reference": { "https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.json": { "$Include": [ @@ -17,6 +17,14 @@ } ] }, + "https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Aggregation.V1.json": { + "$Include": [ + { + "$Namespace": "Org.OData.Aggregation.V1", + "$Alias": "Aggregation" + } + ] + }, "https://sap.github.io/odata-vocabularies/vocabularies/Communication.json": { "$Include": [ { @@ -40,6 +48,14 @@ "$Alias": "HTML5" } ] + }, + "https://sap.github.io/odata-vocabularies/vocabularies/Analytics.json": { + "$Include": [ + { + "$Namespace": "com.sap.vocabularies.Analytics.v1", + "$Alias": "Analytics" + } + ] } }, "com.sap.vocabularies.UI.v1": { @@ -64,7 +80,6 @@ "HeaderInfo": { "$Kind": "Term", "$Type": "UI.HeaderInfoType", - "$Nullable": true, "$AppliesTo": [ "EntityType" ], @@ -101,10 +116,16 @@ "UI.DataFieldForAnnotation" ] }, + "Image": { + "$Type": "Edm.Stream", + "$Nullable": true, + "@Common.Experimental": true, + "@Core.Description": "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": { "$Nullable": true, "@Core.IsURL": true, - "@Core.Description": "Image URL for an instance of the entity type. If the property ImageUrl has a valid value, it can be used for the visualization of the instance. If it is not available or not valid the property TypeImageUrl can be used instead." + "@Core.Description": "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": { "$Nullable": true, @@ -114,7 +135,7 @@ "Initials": { "$Nullable": true, "@Common.Experimental": true, - "@Core.Description": "Latin letters to be used in case no ImageUrl or TypeImageUrl is present" + "@Core.Description": "Latin letters to be used in case no `Image`, `ImageUrl`, or `TypeImageUrl` is present" } }, "Identification": { @@ -130,7 +151,6 @@ "Badge": { "$Kind": "Term", "$Type": "UI.BadgeType", - "$Nullable": true, "$AppliesTo": [ "EntityType" ], @@ -150,7 +170,7 @@ "ImageUrl": { "$Nullable": true, "@Core.IsURL": true, - "@Core.Description": "Image URL for an instance of the entity type. If the property ImageUrl has a valid value, it can be used for the visualization of the instance. If it is not available or not valid the property TypeImageUrl can be used instead." + "@Core.Description": "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": { "$Nullable": true, @@ -191,7 +211,6 @@ "FieldGroup": { "$Kind": "Term", "$Type": "UI.FieldGroupType", - "$Nullable": true, "$AppliesTo": [ "EntityType", "Action", @@ -217,7 +236,6 @@ "ConnectedFields": { "$Kind": "Term", "$Type": "UI.ConnectedFieldsType", - "$Nullable": true, "$AppliesTo": [ "EntityType" ], @@ -228,13 +246,13 @@ "Template": "{MaterialName} - {MaterialClassName}", "Data": { "MaterialName": { - "@odata.type": "#UI.DataField", + "@type": "#UI.DataField", "Value": { "$Path": "Material" } }, "MaterialClassName": { - "@odata.type": "#UI.DataField", + "@type": "#UI.DataField", "Value": { "$Path": "MaterialClass" } @@ -278,7 +296,6 @@ "GeoLocation": { "$Kind": "Term", "$Type": "UI.GeoLocationType", - "$Nullable": true, "$AppliesTo": [ "EntityType" ], @@ -327,7 +344,6 @@ "MediaResource": { "$Kind": "Term", "$Type": "UI.MediaResourceType", - "$Nullable": true, "$AppliesTo": [ "EntityType" ], @@ -699,7 +715,6 @@ "KPI": { "$Kind": "Term", "$Type": "UI.KPIType", - "$Nullable": true, "$AppliesTo": [ "EntitySet", "EntityType" @@ -763,7 +778,6 @@ "Chart": { "$Kind": "Term", "$Type": "UI.ChartDefinitionType", - "$Nullable": true, "$AppliesTo": [ "EntityType" ], @@ -1195,7 +1209,6 @@ "SelectionPresentationVariant": { "$Kind": "Term", "$Type": "UI.SelectionPresentationVariantType", - "$Nullable": true, "$AppliesTo": [ "EntitySet", "EntityType" @@ -1226,7 +1239,6 @@ "PresentationVariant": { "$Kind": "Term", "$Type": "UI.PresentationVariantType", - "$Nullable": true, "$AppliesTo": [ "EntitySet", "EntityType" @@ -1317,7 +1329,6 @@ "SelectionVariant": { "$Kind": "Term", "$Type": "UI.SelectionVariantType", - "$Nullable": true, "$AppliesTo": [ "EntitySet", "EntityType" @@ -1541,10 +1552,11 @@ "$Type": "Core.Tag", "$DefaultValue": true, "$AppliesTo": [ - "Property" + "Property", + "EntityType" ], "@Common.Experimental": true, - "@Core.Description": "Properties annotated with this term MUST be a stream property annotated with a MIME type image", + "@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", "@Validation.ApplicableTerms": [ "Common.IsNaturalPerson" @@ -1556,9 +1568,10 @@ "$DefaultValue": true, "$AppliesTo": [ "Property", - "PropertyValue" + "PropertyValue", + "Parameter" ], - "@Core.Description": "Properties annotated with this annotation should be rendered as multi-line text (e.g. text area)", + "@Core.Description": "Properties and parameters annotated with this annotation should be rendered as multi-line text (e.g. text area)", "@Core.RequiresType": "Edm.String" }, "Placeholder": { @@ -1573,7 +1586,6 @@ "TextArrangement": { "$Kind": "Term", "$Type": "UI.TextArrangementType", - "$Nullable": true, "$AppliesTo": [ "Annotation", "EntityType" @@ -1595,7 +1607,6 @@ "Importance": { "$Kind": "Term", "$Type": "UI.ImportanceType", - "$Nullable": true, "$AppliesTo": [ "Annotation", "Record" @@ -1624,6 +1635,18 @@ "@Core.Description": "Properties or facets (see UI.Facet) annotated with this term will not be rendered if the annotation evaluates to true.", "@Core.LongDescription": "Hidden properties usually carry technical information that is used for application control and is of no direct interest to end users.\n 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": { + "$Kind": "Term", + "$Type": "Core.Tag", + "$DefaultValue": true, + "$AppliesTo": [ + "Record" + ], + "@Common.Experimental": true, + "@Core.RequiresType": "UI.DataFieldForAction", + "@Core.Description": "The annotated [`DataFieldForAction`](#DataFieldForAction) record references an action that deep-copies an instance of the annotated entity type", + "@Core.LongDescription": "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.\nUpon successful completion, the response MUST contain a `Location` header that contains the edit URL or read URL of the created entity,\nand the response MUST be either `201 Created` and a representation of the created entity,\nor `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`." + }, "CreateHidden": { "$Kind": "Term", "$Type": "Core.Tag", @@ -1668,7 +1691,6 @@ "DataFieldDefault": { "$Kind": "Term", "$Type": "UI.DataFieldAbstract", - "$Nullable": true, "$AppliesTo": [ "Property" ], @@ -1816,8 +1838,27 @@ "$BaseType": "UI.DataFieldAbstract", "@Core.Description": "A piece of data", "Value": { - "$Type": "Edm.PrimitiveType", + "$Type": "Edm.Untyped", "@Core.Description": "The data field's value", + "@Validation.DerivedTypeConstraint": [ + "Edm.PrimitiveType", + "Collection(Edm.Binary)", + "Collection(Edm.Boolean)", + "Collection(Edm.Byte)", + "Collection(Edm.Date)", + "Collection(Edm.DateTimeOffset)", + "Collection(Edm.Decimal)", + "Collection(Edm.Double)", + "Collection(Edm.Duration)", + "Collection(Edm.Guid)", + "Collection(Edm.Int16)", + "Collection(Edm.Int32)", + "Collection(Edm.Int64)", + "Collection(Edm.SByte)", + "Collection(Edm.Single)", + "Collection(Edm.String)", + "Collection(Edm.TimeOfDay)" + ], "@Core.IsLanguageDependent": true } }, @@ -1826,6 +1867,9 @@ "$BaseType": "UI.DataField", "@Core.Description": "A piece of data that allows triggering an OData action", "@Core.LongDescription": "The action is tied to a data value which should be rendered as a hyperlink. This is in contrast to [DataFieldForAction](#DataFieldForAction)) which is not tied to a specific data value.", + "Value": { + "$Type": "Edm.PrimitiveType" + }, "Action": { "$Type": "Common.QualifiedName", "@Core.Description": "Qualified name of an Action, Function, ActionImport or FunctionImport in scope" @@ -1836,6 +1880,9 @@ "$BaseType": "UI.DataField", "@Core.Description": "A piece of data that allows triggering intent-based UI navigation", "@Core.LongDescription": "The navigation intent is is expressed as a Semantic Object and optionally an Action on that object.\n\nIt is tied to a data value which should be rendered as a hyperlink.\nThis is in contrast to [DataFieldForIntentBasedNavigation](#DataFieldForIntentBasedNavigation) which is not tied to a specific data value.", + "Value": { + "$Type": "Edm.PrimitiveType" + }, "SemanticObject": { "@Core.Description": "Name of the Semantic Object" }, @@ -1854,6 +1901,9 @@ "$BaseType": "UI.DataField", "@Core.Description": "A piece of data that allows navigating to related data", "@Core.LongDescription": "It should be rendered as a hyperlink", + "Value": { + "$Type": "Edm.PrimitiveType" + }, "Target": { "$Type": "Edm.NavigationPropertyPath", "@Core.Description": "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" @@ -1864,6 +1914,9 @@ "$BaseType": "UI.DataField", "@Core.Description": "A piece of data that allows navigating to other information on the Web", "@Core.LongDescription": "It should be rendered as a hyperlink", + "Value": { + "$Type": "Edm.PrimitiveType" + }, "Url": { "@Core.Description": "Target of the hyperlink", "@Core.IsURL": true @@ -1879,16 +1932,18 @@ "$BaseType": "UI.DataField", "@Common.Experimental": true, "@Core.Description": "Collection of OData actions and intent based navigations", + "Value": { + "$Type": "Edm.PrimitiveType" + }, "Actions": { "$Collection": true, "$Type": "UI.DataField", - "@Core.Description": "Collection of data fields that are either DataFieldWithAction](#DataFieldWithAction), [DataFieldWithIntentBasedNavigation](#DataFieldWithIntentBasedNavigation), [DataFieldWithNavigationPath](#DataFieldWithNavigationPath), or [DataFieldWithUrl](#DataFieldWithUrl)" + "@Core.Description": "Collection of data fields that are either [DataFieldWithAction](#DataFieldWithAction), [DataFieldWithIntentBasedNavigation](#DataFieldWithIntentBasedNavigation), [DataFieldWithNavigationPath](#DataFieldWithNavigationPath), or [DataFieldWithUrl](#DataFieldWithUrl)" } }, "Criticality": { "$Kind": "Term", "$Type": "UI.CriticalityType", - "$Nullable": true, "$AppliesTo": [ "Annotation" ], @@ -1897,7 +1952,6 @@ "CriticalityCalculation": { "$Kind": "Term", "$Type": "UI.CriticalityCalculationType", - "$Nullable": true, "$AppliesTo": [ "Annotation" ], @@ -1917,7 +1971,6 @@ "OrderBy": { "$Kind": "Term", "$Type": "Edm.PropertyPath", - "$Nullable": true, "$AppliesTo": [ "Property" ], @@ -1938,7 +1991,6 @@ "RecommendationState": { "$Kind": "Term", "$Type": "UI.RecommendationStateType", - "$Nullable": true, "@Core.Description": "Indicates whether a field contains or has a recommended value", "@Core.LongDescription": "Intelligent systems can help users by recommending input the user may \"prefer\"." }, @@ -1965,7 +2017,6 @@ "RecommendationList": { "$Kind": "Term", "$Type": "UI.RecommendationListType", - "$Nullable": true, "$AppliesTo": [ "Property", "Parameter" @@ -2017,6 +2068,14 @@ "@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." + }, + "LeadingEntitySet": { + "$Kind": "Term", + "$AppliesTo": [ + "EntityContainer" + ], + "@Common.Experimental": true, + "@Core.Description": "The referenced entity set is the preferred starting point for UIs using this service" } } } \ No newline at end of file diff --git a/vocabularies/UI.md b/vocabularies/UI.md index b374373a..181a9eb3 100644 --- a/vocabularies/UI.md +++ b/vocabularies/UI.md @@ -20,200 +20,203 @@ a collection of business object instances, e.g. as a list or table. Term|Type|Description :---|:---|:---------- -[HeaderInfo](./UI.xml#L58:~:text=Information for the header area of an entity representation. HeaderInfo is mandatory for main entity types of the model -[Identification](./UI.xml#L105:~:text=Collection of fields identifying the object -[Badge](./UI.xml#L110:~:text=Information usually displayed in the form of a business card -[LineItem](./UI.xml#L137:~:text=Collection of data fields for representation in a table or list -[StatusInfo](./UI.xml#L142:~:text=Collection of data fields describing the status of an entity -[FieldGroup](./UI.xml#L147:~:text=Group of fields with an optional label -[ConnectedFields](./UI.xml#L161:~:text=Group of semantically connected fields with a representation template and an optional label ([Example](./UI.xml#L163)) -[GeoLocations](./UI.xml#L226:~:text=Collection of geographic locations -[GeoLocation](./UI.xml#L230:~:text=Geographic location -[Contacts](./UI.xml#L250:~:text=Collection of contacts
Each collection item MUST reference an annotation of a Communication.Contact
Allowed terms:
- [Contact](Communication.md#Contact) -[MediaResource](./UI.xml#L261:~:text=Properties that describe a media resource -[DataPoint](./UI.xml#L315:~:text=Visualization of a single point of data, typically a number; may also be textual, e.g. a status value -[KPI](./UI.xml#L623:~:text=A Key Performance Indicator (KPI) bundles a SelectionVariant and a DataPoint, and provides details for progressive disclosure -[Chart](./UI.xml#L669:~:text=Visualization of multiple data points -[ValueCriticality](./UI.xml#L893:~:text=Assign criticalities to primitive values. This information can be used for semantic coloring. -[CriticalityLabels](./UI.xml#L906:~:text=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#L927:~:text=Properties that might be relevant for filtering a collection of entities of this type -[Facets](./UI.xml#L935:~:text=Collection of facets -[HeaderFacets](./UI.xml#L939:~:text=Facets for additional object header information -[QuickViewFacets](./UI.xml#L943:~:text=Facets that may be used for a quick overview of the object -[QuickCreateFacets](./UI.xml#L947:~:text=Facets that may be used for a (quick) create of the object -[FilterFacets](./UI.xml#L951:~:text=Facets that reference UI.FieldGroup annotations to group filterable fields -[SelectionPresentationVariant](./UI.xml#L1018:~:text=A SelectionPresentationVariant bundles a Selection Variant and a Presentation Variant -[PresentationVariant](./UI.xml#L1042:~:text=Defines how the result of a queried collection of entities is shaped and how this result is displayed -[SelectionVariant](./UI.xml#L1155:~:text=A SelectionVariant denotes a combination of parameters and filters to query the annotated entity set -[ThingPerspective](./UI.xml#L1311:~:text=The annotated term is a Thing Perspective -[IsSummary](./UI.xml#L1314:~:text=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#L1318:~:text=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#L1322:~:text=Target MUST reference a UI.GeoLocation, Communication.Address or a collection of these -[Gallery](./UI.xml#L1326:~:text=Target MUST reference a UI.MediaResource -[IsImageURL](./UI.xml#L1331:~:text=Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image
Can be annotated with:
- [IsNaturalPerson](Common.md#IsNaturalPerson) -[IsImage](./UI.xml#L1341:~:text=Properties annotated with this term MUST be a stream property annotated with a MIME type image
Can be annotated with:
- [IsNaturalPerson](Common.md#IsNaturalPerson) -[MultiLineText](./UI.xml#L1352:~:text=Properties annotated with this annotation should be rendered as multi-line text (e.g. text area) -[Placeholder](./UI.xml#L1357:~:text=A short, human-readable text that gives a hint or an example to help the user with data entry -[TextArrangement](./UI.xml#L1363:~:text=Describes the arrangement of a code or ID value and its text
If used for a single property the Common.Text annotation is annotated -[Importance](./UI.xml#L1382:~:text=Expresses the importance of e.g. a DataField or an annotation -[Hidden](./UI.xml#L1397:~:text=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. -[CreateHidden](./UI.xml#L1405:~:text=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#L1410:~:text=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#L1415:~:text=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#L1420:~:text=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. -[DataFieldDefault](./UI.xml#L1429:~:text=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#L1621:~:text=Service-calculated criticality, alternative to UI.CriticalityCalculation -[CriticalityCalculation](./UI.xml#L1625:~:text=Parameters for client-calculated criticality, alternative to UI.Criticality -[Emphasized](./UI.xml#L1629:~:text=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#L1635:~:text=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#L1641:~:text=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#L1647:~:text=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#L1677:~:text=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". -[ExcludeFromNavigationContext](./UI.xml#L1709:~:text=The contents of this property must not be propagated to the app-to-app navigation context -[DoNotCheckScaleOfMeasuredQuantity](./UI.xml#L1713:~:text=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. - -## [HeaderInfoType](./UI.xml#L62:~:text=Information for the header area of an entity representation. HeaderInfo is mandatory for main entity types of the model +[Identification](./UI.xml#L115:~:text=Collection of fields identifying the object +[Badge](./UI.xml#L120:~:text=Information usually displayed in the form of a business card +[LineItem](./UI.xml#L147:~:text=Collection of data fields for representation in a table or list +[StatusInfo](./UI.xml#L152:~:text=Collection of data fields describing the status of an entity +[FieldGroup](./UI.xml#L157:~:text=Group of fields with an optional label +[ConnectedFields](./UI.xml#L171:~:text=Group of semantically connected fields with a representation template and an optional label ([Example](./UI.xml#L173)) +[GeoLocations](./UI.xml#L236:~:text=Collection of geographic locations +[GeoLocation](./UI.xml#L240:~:text=Geographic location +[Contacts](./UI.xml#L260:~:text=Collection of contacts
Each collection item MUST reference an annotation of a Communication.Contact
Allowed terms:
- [Contact](Communication.md#Contact) +[MediaResource](./UI.xml#L271:~:text=Properties that describe a media resource +[DataPoint](./UI.xml#L325:~:text=Visualization of a single point of data, typically a number; may also be textual, e.g. a status value +[KPI](./UI.xml#L633:~:text=A Key Performance Indicator (KPI) bundles a SelectionVariant and a DataPoint, and provides details for progressive disclosure +[Chart](./UI.xml#L679:~:text=Visualization of multiple data points +[ValueCriticality](./UI.xml#L903:~:text=Assign criticalities to primitive values. This information can be used for semantic coloring. +[CriticalityLabels](./UI.xml#L916:~:text=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#L937:~:text=Properties that might be relevant for filtering a collection of entities of this type +[Facets](./UI.xml#L945:~:text=Collection of facets +[HeaderFacets](./UI.xml#L949:~:text=Facets for additional object header information +[QuickViewFacets](./UI.xml#L953:~:text=Facets that may be used for a quick overview of the object +[QuickCreateFacets](./UI.xml#L957:~:text=Facets that may be used for a (quick) create of the object +[FilterFacets](./UI.xml#L961:~:text=Facets that reference UI.FieldGroup annotations to group filterable fields +[SelectionPresentationVariant](./UI.xml#L1028:~:text=A SelectionPresentationVariant bundles a Selection Variant and a Presentation Variant +[PresentationVariant](./UI.xml#L1052:~:text=Defines how the result of a queried collection of entities is shaped and how this result is displayed +[SelectionVariant](./UI.xml#L1165:~:text=A SelectionVariant denotes a combination of parameters and filters to query the annotated entity set +[ThingPerspective](./UI.xml#L1321:~:text=The annotated term is a Thing Perspective +[IsSummary](./UI.xml#L1324:~:text=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#L1328:~:text=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#L1332:~:text=Target MUST reference a UI.GeoLocation, Communication.Address or a collection of these +[Gallery](./UI.xml#L1336:~:text=Target MUST reference a UI.MediaResource +[IsImageURL](./UI.xml#L1341:~:text=Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image
Can be annotated with:
- [IsNaturalPerson](Common.md#IsNaturalPerson) +[IsImage](./UI.xml#L1351:~:text=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:
- [IsNaturalPerson](Common.md#IsNaturalPerson) +[MultiLineText](./UI.xml#L1362:~:text=Properties and parameters annotated with this annotation should be rendered as multi-line text (e.g. text area) +[Placeholder](./UI.xml#L1367:~:text=A short, human-readable text that gives a hint or an example to help the user with data entry +[TextArrangement](./UI.xml#L1373:~:text=Describes the arrangement of a code or ID value and its text
If used for a single property the Common.Text annotation is annotated +[Importance](./UI.xml#L1392:~:text=Expresses the importance of e.g. a DataField or an annotation +[Hidden](./UI.xml#L1407:~:text=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#L1415:~:text=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`. +[CreateHidden](./UI.xml#L1427:~:text=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#L1432:~:text=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#L1437:~:text=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#L1442:~:text=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. +[DataFieldDefault](./UI.xml#L1451:~:text=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#L1669:~:text=Service-calculated criticality, alternative to UI.CriticalityCalculation +[CriticalityCalculation](./UI.xml#L1673:~:text=Parameters for client-calculated criticality, alternative to UI.Criticality +[Emphasized](./UI.xml#L1677:~:text=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#L1683:~:text=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#L1689:~:text=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#L1695:~:text=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#L1725:~:text=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". +[ExcludeFromNavigationContext](./UI.xml#L1757:~:text=The contents of this property must not be propagated to the app-to-app navigation context +[DoNotCheckScaleOfMeasuredQuantity](./UI.xml#L1761:~:text=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. +[LeadingEntitySet](./UI.xml#L1771:~:text=The referenced entity set is the preferred starting point for UIs using this service + +## [HeaderInfoType](./UI.xml#L68:~:text=This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). -[Description](./UI.xml#L81:~:text=This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). -[ImageUrl](./UI.xml#L91:~:text=This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). +[Description](./UI.xml#L87:~:text=This can be a [DataField](#DataField) and any of its children, or a [DataFieldForAnnotation](#DataFieldForAnnotation) targeting [ConnectedFields](#ConnectedFields). +[Image](./UI.xml#L97:~:text=[BadgeType](./UI.xml#L114:~:text=[BadgeType](./UI.xml#L124:~:text=[FieldGroupType](./UI.xml#L151:~:text=[FieldGroupType](./UI.xml#L161:~:text=[ConnectedFieldsType](./UI.xml#L188:~:text=[ConnectedFieldsType](./UI.xml#L198:~:text=Template variables are identifiers enclosed in curly braces, e.g. `{MaterialName} - {MaterialClassName}`. The `Data` collection assigns values to the template variables. -[Data](./UI.xml#L199:~:text=Each template variable used in `Template` must be assigned a value here. The value must be of type [DataFieldAbstract](#DataFieldAbstract) +[Label](./UI.xml#L200:~:text=Template variables are identifiers enclosed in curly braces, e.g. `{MaterialName} - {MaterialClassName}`. The `Data` collection assigns values to the template variables. +[Data](./UI.xml#L209:~:text=Each template variable used in `Template` must be assigned a value here. The value must be of type [DataFieldAbstract](#DataFieldAbstract) -## [GeoLocationType](./UI.xml#L234:~:text=[GeoLocationType](./UI.xml#L244:~:text=[MediaResourceType](./UI.xml#L265:~:text=[MediaResourceType](./UI.xml#L275:~:text=[ImageType](./UI.xml#L290:~:text=[ImageType](./UI.xml#L300:~:text=[DataPointType](./UI.xml#L319:~:text=[DataPointType](./UI.xml#L329:~:text=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#L344:~:text=Allowed terms:
- [CriticalityLabels](#CriticalityLabels) -[CriticalityRepresentation](./UI.xml#L383:~:text=[NumberFormat](./UI.xml#L401:~:text=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#L354:~:text=Allowed terms:
- [CriticalityLabels](#CriticalityLabels) +[CriticalityRepresentation](./UI.xml#L393:~:text=[NumberFormat](./UI.xml#L411:~:text=[VisualizationType](./UI.xml#L411:~:text=[VisualizationType](./UI.xml#L421:~:text=[ReferencePeriod](./UI.xml#L432:~:text=[ReferencePeriod](./UI.xml#L442:~:text=[CriticalityType](./UI.xml#L446:~:text=[CriticalityType](./UI.xml#L456:~:text=[CriticalityCalculationType](./UI.xml#L474:~:text=[CriticalityCalculationType](./UI.xml#L484:~:text=Constant thresholds shall only be used in order to refine constant values given for the data point overall (aggregation level with empty collection of property paths), but not if the thresholds are based on other measure elements. - -## [CriticalityThresholdsType](./UI.xml#L527:~:text=Constant thresholds shall only be used in order to refine constant values given for the data point overall (aggregation level with empty collection of property paths), but not if the thresholds are based on other measure elements. + +## [CriticalityThresholdsType](./UI.xml#L537:~:text=[ImprovementDirectionType](./UI.xml#L549:~:text=[ImprovementDirectionType](./UI.xml#L559:~:text=[LevelThresholdsType](./UI.xml#L562:~:text=[LevelThresholdsType](./UI.xml#L572:~:text=[TrendType](./UI.xml#L570:~:text=[TrendType](./UI.xml#L580:~:text=[TrendCalculationType](./UI.xml#L589:~:text=[TrendCalculationType](./UI.xml#L599:~:text=[KPIType](./UI.xml#L629:~:text=[KPIType](./UI.xml#L639:~:text=Additional data points are typically related to the main data point and provide complementing information or could be used for comparisons -[Detail](./UI.xml#L650:~:text=Additional data points are typically related to the main data point and provide complementing information or could be used for comparisons +[Detail](./UI.xml#L660:~:text=[KPIDetailType](./UI.xml#L654:~:text=[KPIDetailType](./UI.xml#L664:~:text=[ChartDefinitionType](./UI.xml#L673:~:text=[ChartDefinitionType](./UI.xml#L683:~:text=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:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) -[MeasureAttributes](./UI.xml#L705:~:text=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:
- [AggregatedProperty](Analytics.md#AggregatedProperty)
- [CustomAggregate](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#CustomAggregate) +[MeasureAttributes](./UI.xml#L715:~:text=[ChartType](./UI.xml#L723:~:text=[ChartType](./UI.xml#L733:~:text=[ChartAxisScalingType](./UI.xml#L768:~:text=[ChartAxisScalingType](./UI.xml#L778:~:text=[ChartAxisScaleBehaviorType](./UI.xml#L780:~:text=[ChartAxisScaleBehaviorType](./UI.xml#L790:~:text=[ChartAxisAutoScaleBehaviorType](./UI.xml#L793:~:text=[ChartAxisAutoScaleBehaviorType](./UI.xml#L803:~:text=[ChartAxisAutoScaleDataScopeType](./UI.xml#L802:~:text=[ChartAxisAutoScaleDataScopeType](./UI.xml#L812:~:text=[FixedScaleMultipleStackedMeasuresBoundaryValuesType](./UI.xml#L811:~:text=[FixedScaleMultipleStackedMeasuresBoundaryValuesType](./UI.xml#L821:~:text=[ChartDimensionAttributeType](./UI.xml#L820:~:text=[ChartDimensionAttributeType](./UI.xml#L830:~:text=[ChartMeasureAttributeType](./UI.xml#L841:~:text=[ChartMeasureAttributeType](./UI.xml#L851:~:text=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:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) -[Role](./UI.xml#L859:~:text=Allowed terms:
- [DataPoint](#DataPoint) -[UseSequentialColorLevels](./UI.xml#L868:~:text=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:
- [AggregatedProperty](Analytics.md#AggregatedProperty)
- [CustomAggregate](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#CustomAggregate) +[Role](./UI.xml#L869:~:text=Allowed terms:
- [DataPoint](#DataPoint) +[UseSequentialColorLevels](./UI.xml#L878:~:text=[ChartDimensionRoleType](./UI.xml#L874:~:text=[ChartDimensionRoleType](./UI.xml#L884:~:text=[ChartMeasureRoleType](./UI.xml#L880:~:text=[ChartMeasureRoleType](./UI.xml#L890:~:text=[EmphasisLabelType](./UI.xml#L886:~:text=[EmphasisLabelType](./UI.xml#L896:~:text=[ValueCriticalityType](./UI.xml#L897:~:text=[ValueCriticalityType](./UI.xml#L907:~:text=[CriticalityLabelType](./UI.xml#L917:~:text=[CriticalityLabelType](./UI.xml#L927:~:text=[*Facet*](./UI.xml#L955:~:text=[*Facet*](./UI.xml#L965:~:text=[CollectionFacet](./UI.xml#L971:~:text=[CollectionFacet](./UI.xml#L981:~:text=[ReferenceFacet](./UI.xml#L977:~:text=[ReferenceFacet](./UI.xml#L987:~:text=Allowed terms:
- [Address](Communication.md#Address)
- [Contact](Communication.md#Contact)
- [Badge](#Badge)
- [Chart](#Chart)
- [Contacts](#Contacts)
- [DataPoint](#DataPoint)
- [FieldGroup](#FieldGroup)
- [GeoLocation](#GeoLocation)
- [GeoLocations](#GeoLocations)
- [HeaderInfo](#HeaderInfo)
- [Identification](#Identification)
- [KPI](#KPI)
- [LineItem](#LineItem)
- [MediaResource](#MediaResource)
- [PresentationVariant](#PresentationVariant)
- [SelectionFields](#SelectionFields)
- [SelectionPresentationVariant](#SelectionPresentationVariant)
- [StatusInfo](#StatusInfo) +[*Label*](./UI.xml#L973:~:text=Allowed terms:
- [Address](Communication.md#Address)
- [Contact](Communication.md#Contact)
- [Badge](#Badge)
- [Chart](#Chart)
- [Contacts](#Contacts)
- [DataPoint](#DataPoint)
- [FieldGroup](#FieldGroup)
- [GeoLocation](#GeoLocation)
- [GeoLocations](#GeoLocations)
- [HeaderInfo](#HeaderInfo)
- [Identification](#Identification)
- [KPI](#KPI)
- [LineItem](#LineItem)
- [MediaResource](#MediaResource)
- [PresentationVariant](#PresentationVariant)
- [SelectionFields](#SelectionFields)
- [SelectionPresentationVariant](#SelectionPresentationVariant)
- [StatusInfo](#StatusInfo) **Applicable Annotation Terms:** - [Hidden](#Hidden) - [PartOfPreview](#PartOfPreview) -## [ReferenceURLFacet](./UI.xml#L1005:~:text=[ReferenceURLFacet](./UI.xml#L1015:~:text=[SelectionPresentationVariantType](./UI.xml#L1024:~:text=[SelectionPresentationVariantType](./UI.xml#L1034:~:text=[PresentationVariantType](./UI.xml#L1048:~:text=[PresentationVariantType](./UI.xml#L1058:~:text=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:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) -[IncludeGrandTotal](./UI.xml#L1097:~:text=Allowed terms:
- [Chart](#Chart)
- [DataPoint](#DataPoint)
- [LineItem](#LineItem) -[RequestAtLeast](./UI.xml#L1123:~:text=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#L1146:~:text=[SelectionVariantType](./UI.xml#L1160:~:text=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:
- [AggregatedProperty](Analytics.md#AggregatedProperty)
- [CustomAggregate](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#CustomAggregate) +[IncludeGrandTotal](./UI.xml#L1107:~:text=Allowed terms:
- [Chart](#Chart)
- [DataPoint](#DataPoint)
- [LineItem](#LineItem) +[RequestAtLeast](./UI.xml#L1133:~:text=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#L1156:~:text=[SelectionVariantType](./UI.xml#L1170:~:text=[*ParameterAbstract*](./UI.xml#L1185:~:text=[*ParameterAbstract*](./UI.xml#L1195:~:text=[Parameter](./UI.xml#L1188:~:text=[Parameter](./UI.xml#L1198:~:text=[IntervalParameter](./UI.xml#L1197:~:text=[IntervalParameter](./UI.xml#L1207:~:text=[SelectOptionType](./UI.xml#L1213:~:text=[SelectOptionType](./UI.xml#L1223:~:text=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:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) -[Ranges](./UI.xml#L1242:~:text=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:
- [AggregatedProperty](Analytics.md#AggregatedProperty)
- [CustomAggregate](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Aggregation.V1.md#CustomAggregate) +[Ranges](./UI.xml#L1252:~:text=[SelectionRangeType](./UI.xml#L1247:~:text=[SelectionRangeType](./UI.xml#L1257:~:text=[SelectionRangeSignType](./UI.xml#L1265:~:text=[SelectionRangeSignType](./UI.xml#L1275:~:text=[SelectionRangeOptionType](./UI.xml#L1274:~:text=[SelectionRangeOptionType](./UI.xml#L1284:~:text=[TextArrangementType](./UI.xml#L1367:~:text=[TextArrangementType](./UI.xml#L1377:~:text=
+ + + + - + @@ -98,7 +108,7 @@ a collection of business object instances, e.g. as a list or table. - +
@@ -107,7 +117,7 @@ a collection of business object instances, e.g. as a list or table.
- + @@ -120,7 +130,7 @@ a collection of business object instances, e.g. as a list or table.
- + @@ -144,7 +154,7 @@ a collection of business object instances, e.g. as a list or table. - + @@ -158,7 +168,7 @@ a collection of business object instances, e.g. as a list or table. - + @@ -227,7 +237,7 @@ a collection of business object instances, e.g. as a list or table. - + @@ -258,7 +268,7 @@ a collection of business object instances, e.g. as a list or table. - + @@ -301,7 +311,7 @@ a collection of business object instances, e.g. as a list or table.