Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
90abd4a
chore: remove node.js only marker for most standard functions (#2169)
patricebender Oct 27, 2025
965492f
Simplify multitenancy guide (#2173)
swaldmann Oct 27, 2025
de20dfd
Add install requirements for console in-app deployment (#2174)
vincentatsap Oct 27, 2025
86ac3dd
@Semantics.amount.currencyCode and @Semantics.currencyCode supported…
renejeglinsky Oct 28, 2025
8e01a07
OData feature matrix (#1993)
agoerler Oct 28, 2025
6a05841
chore(deps): update dependency sass to v1.93.3 (#2183)
renovate[bot] Oct 31, 2025
0a7b6ee
chore(deps): update dependency @types/express to v4.17.25 (#2176)
renovate[bot] Oct 31, 2025
3c1235f
chore: Update CLI texts (#2179)
github-actions[bot] Oct 31, 2025
63ff0ae
Document Tree Views (#2005)
eugene-andreev Nov 4, 2025
9168a8f
add ai review action
renejeglinsky Nov 4, 2025
59deb0c
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Nov 4, 2025
65502a2
update runner
renejeglinsky Nov 4, 2025
b874158
switch model
renejeglinsky Nov 4, 2025
18c92c1
allow writing to pull requests
renejeglinsky Nov 4, 2025
c8363f6
move write permission into job
renejeglinsky Nov 4, 2025
5730359
another try with contents: write
renejeglinsky Nov 4, 2025
588639c
move permission in job completely
renejeglinsky Nov 4, 2025
8194b47
add guidelines for ai editor
renejeglinsky Nov 5, 2025
d47af0e
improve prompt
renejeglinsky Nov 5, 2025
cf9379f
restriction for suggestions
renejeglinsky Nov 5, 2025
80342d8
use us english
renejeglinsky Nov 5, 2025
5749749
chore: Update CLI texts (#2187)
github-actions[bot] Nov 5, 2025
a73bfaf
chore(deps): update dependency cspell to v9.3.0 (#2189)
renovate[bot] Nov 6, 2025
9b81e2a
chore(deps): update eslint (#2185)
renovate[bot] Nov 6, 2025
e8f4922
Kyma documentation update (#2188)
KoblerS Nov 6, 2025
4d40af8
enhance with acrolinx check
renejeglinsky Nov 6, 2025
9710d0b
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Nov 6, 2025
c1dddc7
move acrolinx check out of ai review
renejeglinsky Nov 6, 2025
24e056b
adapt permissions
renejeglinsky Nov 6, 2025
455c81d
move permissions
renejeglinsky Nov 6, 2025
327b90c
update version of nextgen-analyzer
renejeglinsky Nov 6, 2025
0fd12d5
enhance permission and bump version
renejeglinsky Nov 7, 2025
a14e211
chore(deps): update cap java sdk to v4.4.2 (#2191)
renovate[bot] Nov 7, 2025
bfed019
node.js: Change 'code' to 'status' in req.reject() examples (#2190)
etimr Nov 7, 2025
c87f0d0
Minor fixes in CDL Language Preliminaries (#2195)
qmacro Nov 10, 2025
93f50e0
Remove restrictions for UInt8 (#2193)
agoerler Nov 10, 2025
7969a02
Custom key delimiters in config inspector
chgeo Nov 11, 2025
c25aeb0
Make log blocks draw over outline
chgeo Nov 11, 2025
543e48f
chore(deps): update dependency @typescript-eslint/parser to v8.46.4 (…
renovate[bot] Nov 11, 2025
bb9d5c3
chore(deps): update dependency sass to v1.94.0 (#2199)
renovate[bot] Nov 11, 2025
d2ed1d6
adjust the draft protection snippet to the implementation (#2196)
rjayasinghe Nov 12, 2025
8f945c1
Java: Draft Bypassing (#2184)
MattSchur Nov 12, 2025
ae7159d
Java: Draft Aggregations (#2181)
MattSchur Nov 12, 2025
7589ba8
improve prompt
renejeglinsky Nov 13, 2025
15ed1d0
improve prompt
renejeglinsky Nov 14, 2025
c666178
edit prompt instructions
renejeglinsky Nov 18, 2025
0238c14
fixes
renejeglinsky Nov 18, 2025
dc64c80
Fix `.learn-more` styling in `:::` blocks (#2211)
swaldmann Nov 18, 2025
479bc41
cdl.md: Remove superflous , (#2210)
simonoswald Nov 18, 2025
867169f
Prefer `-a` instead of `--to-app-services` in `cds bind` (#2212)
swaldmann Nov 18, 2025
7ba4355
Cosmetic improvements for i18n guide
swaldmann Nov 18, 2025
5fcdfe2
Fix code fence languages for Temporal Data guide
swaldmann Nov 19, 2025
c1ea510
chore(deps): update dependency markdownlint-cli to v0.46.0 (#2214)
renovate[bot] Nov 19, 2025
ddc5649
Remove custom analysis step from PR workflow
renejeglinsky Nov 21, 2025
1ef75c0
cds build is a separate step for `cds up -2 k8s` (#2222)
Akatuoro Nov 21, 2025
880049d
Link to CI/CD documentation after doing ad-hoc deployment (#2230)
swaldmann Nov 24, 2025
2b86b93
Use comma-separated CSV files (#2229)
swaldmann Nov 24, 2025
830d173
Editing "Localized Data" guide (#2231)
swaldmann Nov 24, 2025
c928b7b
Fix syntax in Localized Data sample
swaldmann Nov 24, 2025
7d19d5b
chore(deps): update dependency cspell to v9.3.2 (#2202)
renovate[bot] Nov 25, 2025
cbfcc8a
chore(deps): update dependency sass to v1.94.2 (#2208)
renovate[bot] Nov 25, 2025
948f605
chore(deps): update eslint (#2209)
renovate[bot] Nov 25, 2025
16e184d
node.js events: small typo (#2192)
vl-leon Nov 25, 2025
d54929f
Fixing link to AEM documentation (#2217)
ajmaradiaga Nov 25, 2025
30065c1
Remove commented, outdated sections about multiple microservices
swaldmann Nov 25, 2025
7042272
Fix spelling mistakes in Node.js guide (#2226)
SkylarkA Nov 25, 2025
7aa9254
Add sentence how to run *.http files (#2221)
modood-alvi Nov 25, 2025
d00c6ee
UInt8 supported on H2 and postgres (#2232)
stewsk Nov 26, 2025
b70b299
Add OData vocabulary Hierarchy to list of supported vocabularies (#2233)
stewsk Nov 26, 2025
b8cc906
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Nov 26, 2025
0488f97
chore(deps): update dependency eslint-plugin-vue to v10.6.1 (#2235)
renovate[bot] Nov 26, 2025
5e47625
chore: Update CLI texts (#2234)
github-actions[bot] Nov 26, 2025
0ea91de
fix: rm `CREATE X.drafts` (#2203)
sjvans Nov 26, 2025
a94602a
Node.js - Nov25 - add $compute to OData features (#2220)
johannes-vogel Nov 26, 2025
7e268da
Minor Java docs adaptions for November release (#2227)
beckermarc Nov 26, 2025
e53a6e0
feat: Status-Transition Flows (#2037)
sjvans Nov 27, 2025
af1b12d
multitenant not hyphenated
renejeglinsky Nov 28, 2025
9e24bdc
Improve wording in `cds add` plugin guide
swaldmann Nov 28, 2025
87674cf
Fix code highlights in yaml code
chgeo Nov 28, 2025
575cc9b
chore(deps): update dependency eslint-plugin-vue to v10.6.2 (#2238)
renovate[bot] Nov 28, 2025
0031879
CAP Java: Support for hierachies on SQLite (#2236)
agoerler Dec 2, 2025
0e02071
improvements to status transition flows guide (#2237)
sjvans Dec 2, 2025
7fd6f1b
chore(deps): update cap java sdk to v4.5.0 (#2243)
renovate[bot] Dec 3, 2025
6c504ad
Java: Numeric Type Promotion (#2224)
MattSchur Dec 3, 2025
b1c34cc
chore: Update CLI texts (#2244)
github-actions[bot] Dec 3, 2025
6c0bc0f
Java: cds.Map (#2197)
agoerler Dec 3, 2025
e247cad
switch to products example
renejeglinsky Dec 3, 2025
992f0be
chore(deps): update dependency @typescript-eslint/parser to v8.48.1 (…
renovate[bot] Dec 3, 2025
008fe75
chore(deps): update dependency cspell to v9.4.0 (#2240)
renovate[bot] Dec 3, 2025
2d4c4a4
chore(deps): update dependency @sap/cds to v9.5.1 (#2239)
renovate[bot] Dec 3, 2025
3407ddb
Describe usage of H2 in Java (#2207)
eugene-andreev Dec 3, 2025
9e3de46
remove fragment
renejeglinsky Dec 4, 2025
b9ad174
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Dec 4, 2025
7b130d1
review: Transition flow (#2245)
renejeglinsky Dec 4, 2025
4b644e5
Enhance documentation for .add method middleware (#2246)
johannes-vogel Dec 4, 2025
b73b191
Add tip for default username when subscribing on localhost (#2258)
tim-sh Dec 9, 2025
bb82975
chore: Update CLI texts (#2262)
github-actions[bot] Dec 10, 2025
3bdc2ca
OpenAPI: Clarify annotation mapping for parameters and properties (#2…
tim-sh Dec 10, 2025
d291b1c
Remove strange heading (#2254)
swaldmann Dec 10, 2025
9c1be98
Improve property names in CAP Java Remote Services (#2253)
beckermarc Dec 10, 2025
89f6129
chore: Update Java Properties (#2261)
github-actions[bot] Dec 10, 2025
5f31654
chore(deps): update dependency @typescript-eslint/parser to v8.49.0 (…
renovate[bot] Dec 10, 2025
9acf4d8
chore(deps): update dependency sass to v1.95.1 (#2257)
renovate[bot] Dec 10, 2025
f3d1e91
chore(deps): update dependency @sap/cds to v9.5.2 (#2259)
renovate[bot] Dec 10, 2025
96113e0
Enhance Attachments plugin documentation for clarity and integration …
KoblerS Dec 11, 2025
2cd3bf1
chore(deps): update dependency com.sap.cds:cds-services-api to v4.5.1…
renovate[bot] Dec 11, 2025
63ecd4d
Proposed changes for Domain Modeling guide (#2213)
swaldmann Dec 11, 2025
685a926
Improve Error Handling target API (#2252)
beckermarc Dec 11, 2025
97863e0
chore(deps): update dependency sass to v1.96.0 (#2269)
renovate[bot] Dec 11, 2025
7244d15
chore(deps): update dependency markdownlint-cli to v0.47.0 (#2270)
renovate[bot] Dec 11, 2025
b4fcf2e
Add tip for idempotent subscriptions (#2266)
swaldmann Dec 11, 2025
bae7c01
Bump js-yaml from 3.14.1 to 3.14.2 (#2273)
dependabot[bot] Dec 11, 2025
5bdc25d
Introduced Gamma badge and made badges clickable
danjoa Dec 12, 2025
9eaa549
Fine-tuned feature highlights on start page
danjoa Dec 12, 2025
cdafa84
chore(deps): update dependency eslint to v9.39.2 (#2278)
renovate[bot] Dec 15, 2025
b696bd5
Node.js Dec 25 Updates (#2271)
sjvans Dec 15, 2025
4334241
Common runtime view section (#2276)
MattSchur Dec 15, 2025
48b2956
Enhance example in cds.reflect.md with service projection for Books a…
danjoa Dec 16, 2025
42cc77b
chore(deps): update cap java sdk to v4.6.0 (#2281)
renovate[bot] Dec 16, 2025
3560931
Fix authorization entity documentation (#2280)
beckermarc Dec 16, 2025
239f0c5
cds export (#2275)
stewsk Dec 16, 2025
10567ef
Tree view (#2277)
stewsk Dec 16, 2025
9c0af3d
Node.js: remove Basic Authentication (#2241)
sjvans Dec 16, 2025
6ad35b4
@assert (#2216)
StefanHenke Dec 16, 2025
3452f4e
Change PATCH to PUT in API example (#2286)
renejeglinsky Dec 17, 2025
50a4245
chore: Update CLI texts (#2288)
github-actions[bot] Dec 17, 2025
75da816
chore(deps): update dependency @typescript-eslint/parser to v8.50.0 (…
renovate[bot] Dec 17, 2025
d431468
chore(deps): update dependency sass to v1.97.0 (#2283)
renovate[bot] Dec 17, 2025
b86e2aa
chore(deps): update dependency @sap/cds to v9.6.0 (#2284)
renovate[bot] Dec 17, 2025
51ae365
$at to $valid (#2290)
Akatuoro Dec 17, 2025
b1da75d
UI clarifications in CF deployment guide (#2287)
swaldmann Dec 17, 2025
ecbecb9
Revised Status Flows
danjoa Dec 17, 2025
8852317
minor fixes to status-flows cookbook topic (#2293)
qmacro Dec 18, 2025
68a4d99
Added clarification for options in cds.connect.to (#2289)
mariayord Dec 18, 2025
8b8e32a
remove old entry
renejeglinsky Dec 18, 2025
41bdca6
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Dec 18, 2025
ebcaa5d
Review of @assert docs (#2292)
renejeglinsky Dec 18, 2025
cd1dcfe
Fix badge click, unify implementation
chgeo Dec 18, 2025
85d2e29
remove examples from internal
renejeglinsky Dec 18, 2025
236429e
remove empty sections
renejeglinsky Dec 18, 2025
32cc95e
typo cds mta instead of cds add mta
renejeglinsky Dec 18, 2025
72d959f
chore(deps): update dependency @sap/cds to v9.6.1 (#2294)
renovate[bot] Dec 18, 2025
fa4c732
actual separation of concern (#2285)
Akatuoro Dec 18, 2025
c19b5a9
Added services folder
danjoa Dec 19, 2025
3bf94e3
Merge branch 'cap.cloud.sap' into main
renejeglinsky Dec 19, 2025
f5b2c15
anchor for flows and constraints
renejeglinsky Dec 19, 2025
5f41e54
add anchor for task queues
renejeglinsky Dec 19, 2025
92c73f8
update flows diagrams (#2296)
sjvans Dec 19, 2025
77ed90e
fix: `.actions` instead of deprecated `.operations` (#2267)
sjvans Dec 19, 2025
f978fea
Associations tweaks (#2206)
qmacro Dec 19, 2025
b492342
Minor typo fix in assert docs (#2297)
Akatuoro Dec 19, 2025
9858fed
Moved all @assert, @readonly, @mandatory to guides/services/constraints
danjoa Dec 19, 2025
888c7b2
fix link
renejeglinsky Dec 19, 2025
1c283b8
Align with entity naming best practice (#2201)
qmacro Dec 19, 2025
e5f2c27
adapt link even though redirect worked
renejeglinsky Dec 19, 2025
061211c
fix links
renejeglinsky Dec 19, 2025
393acc3
Fix links in reflection-api.md (#2279)
somags Dec 19, 2025
dfe51d2
fix links
renejeglinsky Dec 19, 2025
47fe1b1
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Dec 19, 2025
0710de8
Adding placeholder for CXL docs
danjoa Dec 19, 2025
0920e4d
Overhauled constraints docs
danjoa Dec 19, 2025
0197a60
beta -> gamma
danjoa Dec 19, 2025
10a1c0e
less clutter
danjoa Dec 19, 2025
26c0d4d
fixed link
danjoa Dec 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .vitepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ config.rewrites = rewrites
// Add custom capire info to the theme config
config.themeConfig.capire = {
versions: {
java_services: '4.5.0',
java_cds4j: '4.5.0'
java_services: '4.6.0',
java_cds4j: '4.6.0'
},
gotoLinks: []
}
Expand Down
6 changes: 3 additions & 3 deletions .vitepress/theme/components/Alpha.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<Badge
type="warning"
text="alpha"
<StatusBadge
type="danger"
text="Alpha"
title="Alpha features are experimental. They may never be generally available. If released subsequently, the APIs and behavior might change."
/>
</template>
4 changes: 2 additions & 2 deletions .vitepress/theme/components/Beta.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<Badge
<StatusBadge
type="warning"
text="beta"
text="Beta"
title="Beta features are planned to be generally available in subsequent releases, however, APIs and their behavior are not final and may change in the general release."
/>
</template>
6 changes: 3 additions & 3 deletions .vitepress/theme/components/Concept.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<Badge
type="warning"
text="concept"
<StatusBadge
type="info"
text="Concept"
title="Concept features are ideas for potential future enhancements and an opportunity for you to give feedback. This is not a commitment to implement the feature though."
/>
</template>
7 changes: 7 additions & 0 deletions .vitepress/theme/components/Gamma.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<template>
<StatusBadge
type="tip"
text="Gamma"
title="Gamma features are finalized and ready to use, stable, and supported long term. Yet, as they have a broad scope and range, you should ensure to test them thoroughly."
/>
</template>
6 changes: 5 additions & 1 deletion .vitepress/theme/components/Since.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
<template>
<Badge type="info" :text="`since ${of} ${version}`" :title="`This feature is only available as of ${of} version ${version} or higher.`" />
<StatusBadge
type="tip"
:text="`Since ${of} ${version}`"
:title="`This feature is only available as of ${of} version ${version} or higher.`"
/>
</template>

<script setup lang="ts">
Expand Down
17 changes: 17 additions & 0 deletions .vitepress/theme/components/StatusBadge.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<template>
<Badge
:type="type"
:text="text"
:title="title"
@click="click" style="cursor: pointer"
/>
</template>

<script setup lang="ts">
defineProps<{ type: string, text:string, title:string }>()

import { withBase } from 'vitepress'
function click() {
location.href = withBase('../get-started/learning-sources#feature-status-badges')
}
</script>
4 changes: 4 additions & 0 deletions .vitepress/theme/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import { EnhanceAppContext } from 'vitepress';
import Layout from './Layout.vue';
import IndexList from './components/IndexList.vue';
import ImplVariantsHint from './components/implvariants/ImpVariantsHint.vue';
import StatusBadge from './components/StatusBadge.vue';
import Alpha from './components/Alpha.vue';
import Beta from './components/Beta.vue';
import Gamma from './components/Gamma.vue';
import Concept from './components/Concept.vue'
import Since from './components/Since.vue';
import UnderConstruction from './components/UnderConstruction.vue';
Expand All @@ -25,8 +27,10 @@ export default {
ctx.app.component('Config', CfgInspect)
ctx.app.component('IndexList', IndexList)
ctx.app.component('ImplVariantsHint', ImplVariantsHint)
ctx.app.component('StatusBadge', StatusBadge)
ctx.app.component('Alpha', Alpha)
ctx.app.component('Beta', Beta)
ctx.app.component('Gamma', Gamma)
ctx.app.component('Concept', Concept)
ctx.app.component('Since', Since)
ctx.app.component('UnderConstruction', UnderConstruction)
Expand Down
14 changes: 13 additions & 1 deletion .vitepress/theme/styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,19 @@ a.learn-more, p.learn-more, .learn-more {
}
}

.VPBadge { white-space: nowrap; }
.VPBadge {
&.tip {
background-color: #ced; color: #031; .dark & {
background-color: #031; color: #9ca;
}
}
margin-top: 3px !important;
padding: 0 0.7em !important;
font-size: 80%;
line-height: 1.5em;
border-radius: 1.5em;
white-space: nowrap;
}

html.java {
& .node {
Expand Down
2 changes: 1 addition & 1 deletion about/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ Following is an index of the features currently covered by CAP, with status and
| [Streaming & Media Types](../guides/providing-services#serving-media-data) | <X/> | <X/> | <X/> |
| [Conflict Detection through _ETags_](../guides/providing-services#etag) | <X/> | <X/> | <X/> |
| [Authentication via JWT](../guides/security/authorization#prerequisite-authentication) | <Na/> | <X/> | <X/> |
| [Basic Authentication](../guides/security/authorization#prerequisite-authentication) | <Na/> | <X/> | <X/> |
| [Mocked Authentication](../guides/security/authorization#prerequisite-authentication) | <Na/> | <X/> | <X/> |


<br>
Expand Down
Binary file added advanced/assets/hierarchical-tree-view.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
87 changes: 55 additions & 32 deletions advanced/fiori.md
Original file line number Diff line number Diff line change
Expand Up @@ -745,9 +745,9 @@ Cache Control feature is currently supported on the Java runtime only.

## Hierarchical Tree Views

Recursive hierarchies are parent-child hierarchies, where each entity references its parent and through that defines the hierarchical structure. A common example is a company organization structure or HR reporting, where each employee entity references another employee as a direct report or manager.
Recursive hierarchies are parent-child related structures: each entity references its parent and through that defines the hierarchical structure. A common example is a company organization structure or HR reporting, where each employee entity references another employee as a direct report or manager.

A generic hierarchy implementation for hierarchies is available on all relational datases supported by the CAP runtimes.
A generic hierarchy implementation for hierarchies is available on all relational databases supported by the CAP runtimes.

::: warning
On H2, only small hierarchies should be used for performance reasons.
Expand All @@ -761,6 +761,7 @@ Let's assume we have the following domain model and its projection in a service:
namespace my.bookshop;

entity Genres { //...
ID : UUID;
parent : Association to Genres;
}
```
Expand All @@ -774,19 +775,67 @@ service AdminService {
```
:::

In this example, there is a managed to-one association `parent` that defines the parent-child hierarchy
based on a single key element. In such a situation you can define the Tree View via the annotation `@hierarchy`:

Annotate/extend the entity in the service as follows:
```cds
annotate AdminService.Genres with @hierarchy : parent;
```

If the entity contains only one such association, you can even omit the value:

```cds
annotate AdminService.Genres with @hierarchy;
```

Configure the TreeTable in UI5's _manifest.json_ file:

```jsonc
"sap.ui5": { ...
"routing": { ...
"targets": { ...
"GenresList": { ...
"options": {
"settings": { ...
"controlConfiguration": {
"@com.sap.vocabularies.UI.v1.LineItem": {
"tableSettings": {
"hierarchyQualifier": "GenresHierarchy", // [!code focus]
"type": "TreeTable" // [!code focus]
}
}
}
}
}
},
},
},
```

> Note: construct the `hierarchyQualifier` with the following pattern: <br>
> `<entity name in service>Hierarchy`

You can now start the server with `cds watch` and see the hierarchical tree view in action in the [_Browse Genres_](http://localhost:4004/fiori-apps.html#Genres-display) app.

![Fiori UI with hierarchical tree view.](assets/hierarchical-tree-view.png) {style="filter: drop-shadow(0 2px 5px rgba(0,0,0,.40));"}

The compiler automatically expands the shortcut annotation `@hierarchy` to the
following `annotate` and `extend` statements.

### Manual Approach

The following documents what happens behind the scenes, done by the compiler as described before. You can also use it, if you cannot use the `@hierarchy` annotation, for example, because you only have an unmanaged parent association.

```cds
// declare a hierarchy with the qualifier "GenresHierarchy"
annotate AdminService.Genres with @Aggregation.RecursiveHierarchy #GenresHierarchy : {
annotate AdminService.Genres with @Aggregation.RecursiveHierarchy #GenresHierarchy: {
NodeProperty : ID, // identifies a node, usually the key
ParentNavigationProperty : parent // navigates to a node's parent
};

extend AdminService.Genres with @(
// The computed properties expected by Fiori to be present in hierarchy entities
Hierarchy.RecursiveHierarchy #GenresHierarchy : {
Hierarchy.RecursiveHierarchy #GenresHierarchy: {
LimitedDescendantCount : LimitedDescendantCount,
DistanceFromRoot : DistanceFromRoot,
DrillState : DrillState,
Expand All @@ -797,7 +846,7 @@ extend AdminService.Genres with @(
'LimitedDescendantCount', 'DistanceFromRoot', 'DrillState', 'LimitedRank'
],
// Disallow sorting on these properties from Fiori UIs
Capabilities.SortRestrictions.NonSortableProperties : [
Capabilities.SortRestrictions.NonSortableProperties: [
'LimitedDescendantCount', 'DistanceFromRoot', 'DrillState', 'LimitedRank'
],
) columns { // Ensure we can query these columns from the database
Expand All @@ -811,31 +860,5 @@ extend AdminService.Genres with @(
> Note: When naming the hierarchy qualifier, use the following pattern: <br>
> `<entity name in service>Hierarchy`

Configure the TreeTable in UI5's _manifest.json_ file:

```jsonc
"sap.ui5": { ...
"routing": { ...
"targets": { ...
"GenresList": { ...
"options": {
"settings": { ...
"controlConfiguration": {
"@com.sap.vocabularies.UI.v1.LineItem": {
"tableSettings": {
"hierarchyQualifier": "GenresHierarchy", // [!code focus]
"type": "TreeTable" // [!code focus]
}
}
}
}
}
},
},
},
```

> Note: use the `hierarchyQualifier` declared earlier

<div id="reserved-words" />

6 changes: 5 additions & 1 deletion advanced/publishing-apis/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,15 @@ See [Frequently Asked Questions](#faq) for examples on how to use these annotati
| `Description` | Action, ActionImport, Function, FunctionImport | `summary` of Operation Object |
| `Description` | EntitySet, Singleton | `description` of Tag Object |
| `Description` | EntityType | `title` of Request Body Object |
| `Description` | ComplexType, EntityType, EnumerationType, Parameter, Property, TypeDefinition | `title` of Schema Object |
| `Description` | ComplexType, EntityType, EnumerationType, TypeDefinition | `title` of Schema Object |
| `Description` | Parameter | `description` of Parameter Object (fallback if `LongDescription` not present) |
| `Description` | Property | `description` of Schema Object (fallback if `LongDescription` not present) |
| `Description` | Schema, EntityContainer | `info.title` |
| `Example` | Property | `example` of Schema Object |
| `Immutable` | Property | omit from Update structure |
| `LongDescription` | Action, ActionImport, Function, FunctionImport | `description` of Operation Object |
| `LongDescription` | Parameter | `description` of Parameter Object |
| `LongDescription` | Property | `description` of Schema Object |
| `LongDescription` | Schema, EntityContainer | `info.description` |
| `Permissions:Read` | Property | omit read-only properties from Create and Update structures |
| `SchemaVersion` | Schema | `info.version` |
Expand Down
14 changes: 7 additions & 7 deletions cds/annotations.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ uacp: Used as link target from Help Portal at https://help.sap.com/products/BTP/

| Annotation | Description |
|---------------------|----------------------------------------------------------------------|
| `@readonly ` | see [Input Validation](../guides/providing-services#readonly) |
| `@mandatory` | see [Input Validation](../guides/providing-services#mandatory) |
| `@assert.target` | see [Input Validation](../guides/providing-services#assert-target) |
| `@assert.format` | see [Input Validation](../guides/providing-services#assert-format) |
| `@assert.range` | see [Input Validation](../guides/providing-services#assert-range) |
| `@readonly ` | see [Input Validation](../guides/services/constraints#readonly) |
| `@mandatory` | see [Input Validation](../guides/services/constraints#mandatory) |
| `@assert.target` | see [Input Validation](../guides/services/constraints#assert-target) |
| `@assert.format` | see [Input Validation](../guides/services/constraints#assert-format) |
| `@assert.range` | see [Input Validation](../guides/services/constraints#assert-range) |



Expand Down Expand Up @@ -91,8 +91,8 @@ Intrinsically supported OData Annotations:

| Annotation | Description |
|------------------------|------------------------------------------------------------------|
| `@Core.Computed` | see [Providing Services](../guides/providing-services#readonly) |
| `@Core.Immutable` | see [Providing Services](../guides/providing-services#readonly) |
| `@Core.Computed` | see [Providing Services](../guides/services/constraints#readonly) |
| `@Core.Immutable` | see [Providing Services](../guides/services/constraints#readonly) |
| `@Core.MediaType` | see [Media Data](../guides/providing-services#serving-media-data) |
| `@Core.IsMediaType` | see [Media Data](../guides/providing-services#serving-media-data) |
| `@Core.IsUrl` | see [Media Data](../guides/providing-services#serving-media-data) |
Expand Down
Loading