@uniformdev/canvas 20.72.3-alpha.2 → 20.72.3-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -3149,8 +3149,99 @@ interface paths$k {
3149
3149
  * following query parameter conventions which are pattern-validated and
3150
3150
  * therefore not declared as named parameters:
3151
3151
  *
3152
- * * `filters.<field>[<op>]` — content filtering. See product docs for the supported field / operator combinations.
3153
- * * `select.<bucket>[<op>]` — data projection. See product docs for available syntax.
3152
+ * * `filters.<field>[<op>]` — content filtering (documented below).
3153
+ * * `select.<bucket>[<op>]` — data projection (documented below).
3154
+ *
3155
+ * #### Content filtering (`filters.*`)
3156
+ *
3157
+ * Filtering narrows list results to entries matching field values. The
3158
+ * allowed field names are project-specific — they come from the project's
3159
+ * content types — which is why `filters.*` parameters are
3160
+ * pattern-validated rather than declared as named parameters.
3161
+ *
3162
+ * Syntax: `filters.<field>[<operator>]=<value>`. `<field>` is one of:
3163
+ *
3164
+ * * A system field: `name`, `slug`, `type`, `created`, `modified`,
3165
+ * `entityId`, `editionId`, `releaseId`, `patternId`, `creator`,
3166
+ * `creatorSubject`, `author`, `authorSubject`, `workflowId`,
3167
+ * `workflowStageId`, `categoryId`, `labels`, `labelGroups`,
3168
+ * `uiStatus`, or `locale`.
3169
+ * * An entry field, addressed as `fields.<fieldId>`. Filtering by fields
3170
+ * requires also filtering to a single content type (e.g.
3171
+ * `filters.type[eq]=...`).
3172
+ * * A sub-property of a field for certain field types: content
3173
+ * references (`fields.<id>.slug|name|type`), links
3174
+ * (`fields.<id>.type|projectMapNodeId`), and assets
3175
+ * (`fields.<id>.url|title|description|mediaType`).
3176
+ *
3177
+ * | Operator | Effect |
3178
+ * |---|---|
3179
+ * | `[eq]` / `[neq]` | Exact equality / inequality. |
3180
+ * | `[match]` | Contains (text search) match; text-like fields only. |
3181
+ * | `[starts]` | Prefix match. Value limited to letters, numbers, `_`, `.`, `-`, and spaces. |
3182
+ * | `[lt]` / `[lte]` / `[gt]` / `[gte]` | Comparisons for number, date, and datetime fields (including `created` / `modified`). |
3183
+ * | `[in]` / `[nin]` | Comma-separated list; matches any (OR) / none of the values. |
3184
+ * | `[all]` | Comma-separated list; list-valued fields (e.g. `labels`, multi-selects) must contain every value (AND). |
3185
+ * | `[def]` | `true` or `false`; whether the field has a value at all. |
3186
+ *
3187
+ * Behavior:
3188
+ *
3189
+ * * Values are single strings, or comma-separated lists for `[in]`,
3190
+ * `[nin]`, and `[all]`. Dates accept `YYYY-MM-DD` or a full datetime
3191
+ * string. An empty value is rejected — use `[def]` to test presence.
3192
+ * * Not every operator is valid for every field; the allowed set depends
3193
+ * on the field's type. An unsupported combination returns HTTP 400
3194
+ * with the supported operators listed.
3195
+ * * Malformed keys, unknown operators, and unknown field names return
3196
+ * HTTP 400.
3197
+ *
3198
+ * Examples:
3199
+ *
3200
+ * * `filters.type[eq]=article` — only entries of type `article`.
3201
+ * * `filters.modified[gte]=2026-01-01` — modified this year.
3202
+ * * `filters.type[eq]=article&filters.fields.brandName[match]=adidas` — field filter scoped to one type.
3203
+ * * `filters.fields.author.slug[eq]=jane-doe` — filter by a referenced entry's slug.
3204
+ *
3205
+ * #### Data projection (`select.*`)
3206
+ *
3207
+ * Projection returns a subset of the response by pruning fields and field
3208
+ * types before values are resolved. The allowed names are project-specific —
3209
+ * they come from the project's content types — which is why `select.*`
3210
+ * parameters are pattern-validated rather than declared as named parameters.
3211
+ *
3212
+ * Syntax: `select.<bucket>[<operator>]=<value>`. Values are comma-separated
3213
+ * lists of names. `*` is the only wildcard and matches zero or more
3214
+ * characters (e.g. `seo_*`).
3215
+ *
3216
+ * | Parameter | Effect |
3217
+ * |---|---|
3218
+ * | `select.fields[only]=a,b` | Keep only the named fields; drop everything else. |
3219
+ * | `select.fields[except]=a,b` | Drop the named fields; keep everything else. |
3220
+ * | `select.fields[locales]=a,b` | For the named fields that survive filtering, return the full per-locale value map instead of only the requested locale's value. |
3221
+ * | `select.fields[blockDepth]=N` | Limit how many levels of block field children are kept. `0` removes all block fields; `preserveAll` prevents projection from trimming fields inside block children. |
3222
+ * | `select.fieldTypes[only]=a,b` | Keep only fields of the named types (type IDs such as `text`, `richText`, `asset`). |
3223
+ * | `select.fieldTypes[except]=a,b` | Drop fields of the named types. |
3224
+ *
3225
+ * The composition-oriented `select.slots.*` operators are also accepted but
3226
+ * have no effect on entry responses (entries have no slots).
3227
+ *
3228
+ * Behavior:
3229
+ *
3230
+ * * Projection applies recursively at every block in the returned entry,
3231
+ * and is forwarded into entries resolved through reference fields.
3232
+ * * When operators combine, all `[only]` sets are intersected first, then
3233
+ * `[except]` sets are subtracted — exclusion always wins.
3234
+ * * Unknown field or type names are silent no-ops (the entry shape is
3235
+ * preserved; non-matching content is simply absent). Unknown operators
3236
+ * return HTTP 400.
3237
+ * * An empty list (`select.fields[only]=`) strips every field; `[except]=*`
3238
+ * is equivalent.
3239
+ *
3240
+ * Examples:
3241
+ *
3242
+ * * `select.fields[only]=title,coverImage` — keep only titles and cover images on every entry in the list.
3243
+ * * `select.fieldTypes[except]=richText` — everything except rich-text fields.
3244
+ * * `select.fields[only]=title,seo_*&select.fields[locales]=seo_*` — lean payload keeping all locales on the SEO fields.
3154
3245
  */
3155
3246
  get: {
3156
3247
  parameters: {
@@ -6641,9 +6732,106 @@ interface paths$c {
6641
6732
  * following query parameter conventions which are pattern-validated and
6642
6733
  * therefore not declared as named parameters:
6643
6734
  *
6644
- * * `filters.<field>[<op>]` — content filtering. See product docs for
6645
- * the supported field / operator combinations.
6646
- * * `select.<bucket>[<op>]` — data projection. See product docs for available syntax.
6735
+ * * `filters.<field>[<op>]` — content filtering (documented below).
6736
+ * * `select.<bucket>[<op>]` data projection (documented below).
6737
+ *
6738
+ * #### Content filtering (`filters.*`)
6739
+ *
6740
+ * Filtering narrows list results to compositions matching field values.
6741
+ * The allowed field names are project-specific — they come from the
6742
+ * project's component definitions — which is why `filters.*` parameters
6743
+ * are pattern-validated rather than declared as named parameters.
6744
+ *
6745
+ * Syntax: `filters.<field>[<operator>]=<value>`. `<field>` is one of:
6746
+ *
6747
+ * * A system field: `name`, `slug`, `type`, `created`, `modified`,
6748
+ * `entityId`, `editionId`, `releaseId`, `patternId`, `creator`,
6749
+ * `creatorSubject`, `author`, `authorSubject`, `projectMapId`,
6750
+ * `projectMapNodeId`, `workflowId`, `workflowStageId`, `categoryId`,
6751
+ * `labels`, `labelGroups`, `uiStatus`, or `locale`.
6752
+ * * A component parameter, addressed as `parameters.<parameterId>`.
6753
+ * Filtering by parameters requires also filtering to a single
6754
+ * composition type (e.g. `filters.type[eq]=...`).
6755
+ * * A sub-property of a parameter for certain parameter types:
6756
+ * content references (`parameters.<id>.slug|name|type`), links
6757
+ * (`parameters.<id>.type|projectMapNodeId`), and assets
6758
+ * (`parameters.<id>.url|title|description|mediaType`).
6759
+ *
6760
+ * | Operator | Effect |
6761
+ * |---|---|
6762
+ * | `[eq]` / `[neq]` | Exact equality / inequality. |
6763
+ * | `[match]` | Contains (text search) match; text-like fields only. |
6764
+ * | `[starts]` | Prefix match. Value limited to letters, numbers, `_`, `.`, `-`, and spaces. |
6765
+ * | `[lt]` / `[lte]` / `[gt]` / `[gte]` | Comparisons for number, date, and datetime fields (including `created` / `modified`). |
6766
+ * | `[in]` / `[nin]` | Comma-separated list; matches any (OR) / none of the values. |
6767
+ * | `[all]` | Comma-separated list; list-valued fields (e.g. `labels`, multi-selects) must contain every value (AND). |
6768
+ * | `[def]` | `true` or `false`; whether the field has a value at all. |
6769
+ *
6770
+ * Behavior:
6771
+ *
6772
+ * * Values are single strings, or comma-separated lists for `[in]`,
6773
+ * `[nin]`, and `[all]`. Dates accept `YYYY-MM-DD` or a full datetime
6774
+ * string. An empty value is rejected — use `[def]` to test presence.
6775
+ * * Not every operator is valid for every field; the allowed set depends
6776
+ * on the field's type. An unsupported combination returns HTTP 400
6777
+ * with the supported operators listed.
6778
+ * * Malformed keys, unknown operators, and unknown field names return
6779
+ * HTTP 400.
6780
+ * * Filters match root compositions only.
6781
+ *
6782
+ * Examples:
6783
+ *
6784
+ * * `filters.type[eq]=landingPage` — only compositions of type `landingPage`.
6785
+ * * `filters.modified[gte]=2026-01-01` — modified this year.
6786
+ * * `filters.type[eq]=landingPage&filters.parameters.audience[in]=b2b,b2c` — parameter filter scoped to one type.
6787
+ * * `filters.labels[all]=approved,featured` — has both labels.
6788
+ *
6789
+ * #### Data projection (`select.*`)
6790
+ *
6791
+ * Projection returns a subset of the response by pruning fields (parameters),
6792
+ * field types, and slots before values are resolved. The allowed names are
6793
+ * project-specific — they come from the project's component definitions and
6794
+ * content types — which is why `select.*` parameters are pattern-validated
6795
+ * rather than declared as named parameters.
6796
+ *
6797
+ * Syntax: `select.<bucket>[<operator>]=<value>`. Values are comma-separated
6798
+ * lists of names. `*` is the only wildcard and matches zero or more
6799
+ * characters (e.g. `seo_*`).
6800
+ *
6801
+ * | Parameter | Effect |
6802
+ * |---|---|
6803
+ * | `select.fields[only]=a,b` | Keep only the named fields/parameters; drop everything else. |
6804
+ * | `select.fields[except]=a,b` | Drop the named fields/parameters; keep everything else. |
6805
+ * | `select.fields[locales]=a,b` | For the named fields that survive filtering, return the full per-locale value map instead of only the requested locale's value. |
6806
+ * | `select.fields[blockDepth]=N` | Limit how many levels of block field children are kept. `0` removes all block fields; `preserveAll` prevents projection from trimming fields inside block children. |
6807
+ * | `select.fieldTypes[only]=a,b` | Keep only fields of the named types (type IDs such as `text`, `richText`, `asset`). |
6808
+ * | `select.fieldTypes[except]=a,b` | Drop fields of the named types. |
6809
+ * | `select.slots[only]=a,b` | Keep only the named slots. |
6810
+ * | `select.slots[except]=a,b` | Drop the named slots. |
6811
+ * | `select.slots[depth]=N` | Limit how many levels of nested components are kept in slots. |
6812
+ * | `select.slots.<name>[depth]=N` | Depth limit for one specific slot; overrides `slots[depth]`. |
6813
+ *
6814
+ * Behavior:
6815
+ *
6816
+ * * Projection applies recursively at every component and block in the
6817
+ * returned tree, and is forwarded into entries resolved through reference
6818
+ * fields.
6819
+ * * When operators combine, all `[only]` sets are intersected first, then
6820
+ * `[except]` sets are subtracted — exclusion always wins.
6821
+ * * Unknown field, slot, or type names are silent no-ops (the tree shape is
6822
+ * preserved; non-matching content is simply absent). Unknown operators
6823
+ * return HTTP 400.
6824
+ * * An empty list (`select.fields[only]=` or `select.slots[only]=`) strips
6825
+ * every member of that bucket; `[except]=*` is equivalent.
6826
+ * * `[depth]` counts nesting within a single fetched tree and resets inside
6827
+ * referenced entries.
6828
+ *
6829
+ * Examples:
6830
+ *
6831
+ * * `select.fields[only]=title,slug` — keep only titles and slugs, everywhere in the tree.
6832
+ * * `select.fieldTypes[except]=richText` — everything except rich-text fields.
6833
+ * * `select.fields[only]=title&select.slots[only]=` — root title only, with all slots flattened.
6834
+ * * `select.slots[depth]=2&select.fields[only]=label,url` — two levels of nested components, trimmed to `label` and `url`.
6647
6835
  */
6648
6836
  get: {
6649
6837
  parameters: {
@@ -9465,8 +9653,55 @@ interface paths$a {
9465
9653
  * @description Fetches the correct response action for a given route (redirection, composition, not found).
9466
9654
  *
9467
9655
  * In addition to the named parameters below, this endpoint accepts data projection syntax:
9468
- * `select.<bucket>[<op>]` — See product docs for available syntax.
9469
- * Projection does not apply to redirect / notFound responses.
9656
+ * `select.<bucket>[<op>]` — documented below.
9657
+ *
9658
+ * #### Data projection (`select.*`)
9659
+ *
9660
+ * Projection returns a subset of the matched composition by pruning fields
9661
+ * (parameters), field types, and slots before values are resolved. It only
9662
+ * applies when the route resolves to a composition; redirect and notFound
9663
+ * responses are returned unchanged. The allowed names are project-specific —
9664
+ * they come from the project's component definitions and content types —
9665
+ * which is why `select.*` parameters are pattern-validated rather than
9666
+ * declared as named parameters.
9667
+ *
9668
+ * Syntax: `select.<bucket>[<operator>]=<value>`. Values are comma-separated
9669
+ * lists of names. `*` is the only wildcard and matches zero or more
9670
+ * characters (e.g. `seo_*`).
9671
+ *
9672
+ * | Parameter | Effect |
9673
+ * |---|---|
9674
+ * | `select.fields[only]=a,b` | Keep only the named fields/parameters; drop everything else. |
9675
+ * | `select.fields[except]=a,b` | Drop the named fields/parameters; keep everything else. |
9676
+ * | `select.fields[locales]=a,b` | For the named fields that survive filtering, return the full per-locale value map instead of only the requested locale's value. |
9677
+ * | `select.fields[blockDepth]=N` | Limit how many levels of block field children are kept. `0` removes all block fields; `preserveAll` prevents projection from trimming fields inside block children. |
9678
+ * | `select.fieldTypes[only]=a,b` | Keep only fields of the named types (type IDs such as `text`, `richText`, `asset`). |
9679
+ * | `select.fieldTypes[except]=a,b` | Drop fields of the named types. |
9680
+ * | `select.slots[only]=a,b` | Keep only the named slots. |
9681
+ * | `select.slots[except]=a,b` | Drop the named slots. |
9682
+ * | `select.slots[depth]=N` | Limit how many levels of nested components are kept in slots. |
9683
+ * | `select.slots.<name>[depth]=N` | Depth limit for one specific slot; overrides `slots[depth]`. |
9684
+ *
9685
+ * Behavior:
9686
+ *
9687
+ * * Projection applies recursively at every component and block in the
9688
+ * returned tree, and is forwarded into entries resolved through reference
9689
+ * fields.
9690
+ * * When operators combine, all `[only]` sets are intersected first, then
9691
+ * `[except]` sets are subtracted — exclusion always wins.
9692
+ * * Unknown field, slot, or type names are silent no-ops (the tree shape is
9693
+ * preserved; non-matching content is simply absent). Unknown operators
9694
+ * return HTTP 400.
9695
+ * * An empty list (`select.fields[only]=` or `select.slots[only]=`) strips
9696
+ * every member of that bucket; `[except]=*` is equivalent.
9697
+ * * `[depth]` counts nesting within a single fetched tree and resets inside
9698
+ * referenced entries.
9699
+ *
9700
+ * Examples:
9701
+ *
9702
+ * * `select.fields[only]=title,slug&select.slots[only]=` — title and slug of the resolved page with all slots flattened (e.g. for breadcrumbs).
9703
+ * * `select.fieldTypes[except]=richText` — everything except rich-text fields.
9704
+ * * `select.slots[depth]=2&select.fields[only]=label,url` — two levels of nested components, trimmed to `label` and `url`.
9470
9705
  */
9471
9706
  get: {
9472
9707
  parameters: {
package/dist/index.d.ts CHANGED
@@ -3149,8 +3149,99 @@ interface paths$k {
3149
3149
  * following query parameter conventions which are pattern-validated and
3150
3150
  * therefore not declared as named parameters:
3151
3151
  *
3152
- * * `filters.<field>[<op>]` — content filtering. See product docs for the supported field / operator combinations.
3153
- * * `select.<bucket>[<op>]` — data projection. See product docs for available syntax.
3152
+ * * `filters.<field>[<op>]` — content filtering (documented below).
3153
+ * * `select.<bucket>[<op>]` — data projection (documented below).
3154
+ *
3155
+ * #### Content filtering (`filters.*`)
3156
+ *
3157
+ * Filtering narrows list results to entries matching field values. The
3158
+ * allowed field names are project-specific — they come from the project's
3159
+ * content types — which is why `filters.*` parameters are
3160
+ * pattern-validated rather than declared as named parameters.
3161
+ *
3162
+ * Syntax: `filters.<field>[<operator>]=<value>`. `<field>` is one of:
3163
+ *
3164
+ * * A system field: `name`, `slug`, `type`, `created`, `modified`,
3165
+ * `entityId`, `editionId`, `releaseId`, `patternId`, `creator`,
3166
+ * `creatorSubject`, `author`, `authorSubject`, `workflowId`,
3167
+ * `workflowStageId`, `categoryId`, `labels`, `labelGroups`,
3168
+ * `uiStatus`, or `locale`.
3169
+ * * An entry field, addressed as `fields.<fieldId>`. Filtering by fields
3170
+ * requires also filtering to a single content type (e.g.
3171
+ * `filters.type[eq]=...`).
3172
+ * * A sub-property of a field for certain field types: content
3173
+ * references (`fields.<id>.slug|name|type`), links
3174
+ * (`fields.<id>.type|projectMapNodeId`), and assets
3175
+ * (`fields.<id>.url|title|description|mediaType`).
3176
+ *
3177
+ * | Operator | Effect |
3178
+ * |---|---|
3179
+ * | `[eq]` / `[neq]` | Exact equality / inequality. |
3180
+ * | `[match]` | Contains (text search) match; text-like fields only. |
3181
+ * | `[starts]` | Prefix match. Value limited to letters, numbers, `_`, `.`, `-`, and spaces. |
3182
+ * | `[lt]` / `[lte]` / `[gt]` / `[gte]` | Comparisons for number, date, and datetime fields (including `created` / `modified`). |
3183
+ * | `[in]` / `[nin]` | Comma-separated list; matches any (OR) / none of the values. |
3184
+ * | `[all]` | Comma-separated list; list-valued fields (e.g. `labels`, multi-selects) must contain every value (AND). |
3185
+ * | `[def]` | `true` or `false`; whether the field has a value at all. |
3186
+ *
3187
+ * Behavior:
3188
+ *
3189
+ * * Values are single strings, or comma-separated lists for `[in]`,
3190
+ * `[nin]`, and `[all]`. Dates accept `YYYY-MM-DD` or a full datetime
3191
+ * string. An empty value is rejected — use `[def]` to test presence.
3192
+ * * Not every operator is valid for every field; the allowed set depends
3193
+ * on the field's type. An unsupported combination returns HTTP 400
3194
+ * with the supported operators listed.
3195
+ * * Malformed keys, unknown operators, and unknown field names return
3196
+ * HTTP 400.
3197
+ *
3198
+ * Examples:
3199
+ *
3200
+ * * `filters.type[eq]=article` — only entries of type `article`.
3201
+ * * `filters.modified[gte]=2026-01-01` — modified this year.
3202
+ * * `filters.type[eq]=article&filters.fields.brandName[match]=adidas` — field filter scoped to one type.
3203
+ * * `filters.fields.author.slug[eq]=jane-doe` — filter by a referenced entry's slug.
3204
+ *
3205
+ * #### Data projection (`select.*`)
3206
+ *
3207
+ * Projection returns a subset of the response by pruning fields and field
3208
+ * types before values are resolved. The allowed names are project-specific —
3209
+ * they come from the project's content types — which is why `select.*`
3210
+ * parameters are pattern-validated rather than declared as named parameters.
3211
+ *
3212
+ * Syntax: `select.<bucket>[<operator>]=<value>`. Values are comma-separated
3213
+ * lists of names. `*` is the only wildcard and matches zero or more
3214
+ * characters (e.g. `seo_*`).
3215
+ *
3216
+ * | Parameter | Effect |
3217
+ * |---|---|
3218
+ * | `select.fields[only]=a,b` | Keep only the named fields; drop everything else. |
3219
+ * | `select.fields[except]=a,b` | Drop the named fields; keep everything else. |
3220
+ * | `select.fields[locales]=a,b` | For the named fields that survive filtering, return the full per-locale value map instead of only the requested locale's value. |
3221
+ * | `select.fields[blockDepth]=N` | Limit how many levels of block field children are kept. `0` removes all block fields; `preserveAll` prevents projection from trimming fields inside block children. |
3222
+ * | `select.fieldTypes[only]=a,b` | Keep only fields of the named types (type IDs such as `text`, `richText`, `asset`). |
3223
+ * | `select.fieldTypes[except]=a,b` | Drop fields of the named types. |
3224
+ *
3225
+ * The composition-oriented `select.slots.*` operators are also accepted but
3226
+ * have no effect on entry responses (entries have no slots).
3227
+ *
3228
+ * Behavior:
3229
+ *
3230
+ * * Projection applies recursively at every block in the returned entry,
3231
+ * and is forwarded into entries resolved through reference fields.
3232
+ * * When operators combine, all `[only]` sets are intersected first, then
3233
+ * `[except]` sets are subtracted — exclusion always wins.
3234
+ * * Unknown field or type names are silent no-ops (the entry shape is
3235
+ * preserved; non-matching content is simply absent). Unknown operators
3236
+ * return HTTP 400.
3237
+ * * An empty list (`select.fields[only]=`) strips every field; `[except]=*`
3238
+ * is equivalent.
3239
+ *
3240
+ * Examples:
3241
+ *
3242
+ * * `select.fields[only]=title,coverImage` — keep only titles and cover images on every entry in the list.
3243
+ * * `select.fieldTypes[except]=richText` — everything except rich-text fields.
3244
+ * * `select.fields[only]=title,seo_*&select.fields[locales]=seo_*` — lean payload keeping all locales on the SEO fields.
3154
3245
  */
3155
3246
  get: {
3156
3247
  parameters: {
@@ -6641,9 +6732,106 @@ interface paths$c {
6641
6732
  * following query parameter conventions which are pattern-validated and
6642
6733
  * therefore not declared as named parameters:
6643
6734
  *
6644
- * * `filters.<field>[<op>]` — content filtering. See product docs for
6645
- * the supported field / operator combinations.
6646
- * * `select.<bucket>[<op>]` — data projection. See product docs for available syntax.
6735
+ * * `filters.<field>[<op>]` — content filtering (documented below).
6736
+ * * `select.<bucket>[<op>]` data projection (documented below).
6737
+ *
6738
+ * #### Content filtering (`filters.*`)
6739
+ *
6740
+ * Filtering narrows list results to compositions matching field values.
6741
+ * The allowed field names are project-specific — they come from the
6742
+ * project's component definitions — which is why `filters.*` parameters
6743
+ * are pattern-validated rather than declared as named parameters.
6744
+ *
6745
+ * Syntax: `filters.<field>[<operator>]=<value>`. `<field>` is one of:
6746
+ *
6747
+ * * A system field: `name`, `slug`, `type`, `created`, `modified`,
6748
+ * `entityId`, `editionId`, `releaseId`, `patternId`, `creator`,
6749
+ * `creatorSubject`, `author`, `authorSubject`, `projectMapId`,
6750
+ * `projectMapNodeId`, `workflowId`, `workflowStageId`, `categoryId`,
6751
+ * `labels`, `labelGroups`, `uiStatus`, or `locale`.
6752
+ * * A component parameter, addressed as `parameters.<parameterId>`.
6753
+ * Filtering by parameters requires also filtering to a single
6754
+ * composition type (e.g. `filters.type[eq]=...`).
6755
+ * * A sub-property of a parameter for certain parameter types:
6756
+ * content references (`parameters.<id>.slug|name|type`), links
6757
+ * (`parameters.<id>.type|projectMapNodeId`), and assets
6758
+ * (`parameters.<id>.url|title|description|mediaType`).
6759
+ *
6760
+ * | Operator | Effect |
6761
+ * |---|---|
6762
+ * | `[eq]` / `[neq]` | Exact equality / inequality. |
6763
+ * | `[match]` | Contains (text search) match; text-like fields only. |
6764
+ * | `[starts]` | Prefix match. Value limited to letters, numbers, `_`, `.`, `-`, and spaces. |
6765
+ * | `[lt]` / `[lte]` / `[gt]` / `[gte]` | Comparisons for number, date, and datetime fields (including `created` / `modified`). |
6766
+ * | `[in]` / `[nin]` | Comma-separated list; matches any (OR) / none of the values. |
6767
+ * | `[all]` | Comma-separated list; list-valued fields (e.g. `labels`, multi-selects) must contain every value (AND). |
6768
+ * | `[def]` | `true` or `false`; whether the field has a value at all. |
6769
+ *
6770
+ * Behavior:
6771
+ *
6772
+ * * Values are single strings, or comma-separated lists for `[in]`,
6773
+ * `[nin]`, and `[all]`. Dates accept `YYYY-MM-DD` or a full datetime
6774
+ * string. An empty value is rejected — use `[def]` to test presence.
6775
+ * * Not every operator is valid for every field; the allowed set depends
6776
+ * on the field's type. An unsupported combination returns HTTP 400
6777
+ * with the supported operators listed.
6778
+ * * Malformed keys, unknown operators, and unknown field names return
6779
+ * HTTP 400.
6780
+ * * Filters match root compositions only.
6781
+ *
6782
+ * Examples:
6783
+ *
6784
+ * * `filters.type[eq]=landingPage` — only compositions of type `landingPage`.
6785
+ * * `filters.modified[gte]=2026-01-01` — modified this year.
6786
+ * * `filters.type[eq]=landingPage&filters.parameters.audience[in]=b2b,b2c` — parameter filter scoped to one type.
6787
+ * * `filters.labels[all]=approved,featured` — has both labels.
6788
+ *
6789
+ * #### Data projection (`select.*`)
6790
+ *
6791
+ * Projection returns a subset of the response by pruning fields (parameters),
6792
+ * field types, and slots before values are resolved. The allowed names are
6793
+ * project-specific — they come from the project's component definitions and
6794
+ * content types — which is why `select.*` parameters are pattern-validated
6795
+ * rather than declared as named parameters.
6796
+ *
6797
+ * Syntax: `select.<bucket>[<operator>]=<value>`. Values are comma-separated
6798
+ * lists of names. `*` is the only wildcard and matches zero or more
6799
+ * characters (e.g. `seo_*`).
6800
+ *
6801
+ * | Parameter | Effect |
6802
+ * |---|---|
6803
+ * | `select.fields[only]=a,b` | Keep only the named fields/parameters; drop everything else. |
6804
+ * | `select.fields[except]=a,b` | Drop the named fields/parameters; keep everything else. |
6805
+ * | `select.fields[locales]=a,b` | For the named fields that survive filtering, return the full per-locale value map instead of only the requested locale's value. |
6806
+ * | `select.fields[blockDepth]=N` | Limit how many levels of block field children are kept. `0` removes all block fields; `preserveAll` prevents projection from trimming fields inside block children. |
6807
+ * | `select.fieldTypes[only]=a,b` | Keep only fields of the named types (type IDs such as `text`, `richText`, `asset`). |
6808
+ * | `select.fieldTypes[except]=a,b` | Drop fields of the named types. |
6809
+ * | `select.slots[only]=a,b` | Keep only the named slots. |
6810
+ * | `select.slots[except]=a,b` | Drop the named slots. |
6811
+ * | `select.slots[depth]=N` | Limit how many levels of nested components are kept in slots. |
6812
+ * | `select.slots.<name>[depth]=N` | Depth limit for one specific slot; overrides `slots[depth]`. |
6813
+ *
6814
+ * Behavior:
6815
+ *
6816
+ * * Projection applies recursively at every component and block in the
6817
+ * returned tree, and is forwarded into entries resolved through reference
6818
+ * fields.
6819
+ * * When operators combine, all `[only]` sets are intersected first, then
6820
+ * `[except]` sets are subtracted — exclusion always wins.
6821
+ * * Unknown field, slot, or type names are silent no-ops (the tree shape is
6822
+ * preserved; non-matching content is simply absent). Unknown operators
6823
+ * return HTTP 400.
6824
+ * * An empty list (`select.fields[only]=` or `select.slots[only]=`) strips
6825
+ * every member of that bucket; `[except]=*` is equivalent.
6826
+ * * `[depth]` counts nesting within a single fetched tree and resets inside
6827
+ * referenced entries.
6828
+ *
6829
+ * Examples:
6830
+ *
6831
+ * * `select.fields[only]=title,slug` — keep only titles and slugs, everywhere in the tree.
6832
+ * * `select.fieldTypes[except]=richText` — everything except rich-text fields.
6833
+ * * `select.fields[only]=title&select.slots[only]=` — root title only, with all slots flattened.
6834
+ * * `select.slots[depth]=2&select.fields[only]=label,url` — two levels of nested components, trimmed to `label` and `url`.
6647
6835
  */
6648
6836
  get: {
6649
6837
  parameters: {
@@ -9465,8 +9653,55 @@ interface paths$a {
9465
9653
  * @description Fetches the correct response action for a given route (redirection, composition, not found).
9466
9654
  *
9467
9655
  * In addition to the named parameters below, this endpoint accepts data projection syntax:
9468
- * `select.<bucket>[<op>]` — See product docs for available syntax.
9469
- * Projection does not apply to redirect / notFound responses.
9656
+ * `select.<bucket>[<op>]` — documented below.
9657
+ *
9658
+ * #### Data projection (`select.*`)
9659
+ *
9660
+ * Projection returns a subset of the matched composition by pruning fields
9661
+ * (parameters), field types, and slots before values are resolved. It only
9662
+ * applies when the route resolves to a composition; redirect and notFound
9663
+ * responses are returned unchanged. The allowed names are project-specific —
9664
+ * they come from the project's component definitions and content types —
9665
+ * which is why `select.*` parameters are pattern-validated rather than
9666
+ * declared as named parameters.
9667
+ *
9668
+ * Syntax: `select.<bucket>[<operator>]=<value>`. Values are comma-separated
9669
+ * lists of names. `*` is the only wildcard and matches zero or more
9670
+ * characters (e.g. `seo_*`).
9671
+ *
9672
+ * | Parameter | Effect |
9673
+ * |---|---|
9674
+ * | `select.fields[only]=a,b` | Keep only the named fields/parameters; drop everything else. |
9675
+ * | `select.fields[except]=a,b` | Drop the named fields/parameters; keep everything else. |
9676
+ * | `select.fields[locales]=a,b` | For the named fields that survive filtering, return the full per-locale value map instead of only the requested locale's value. |
9677
+ * | `select.fields[blockDepth]=N` | Limit how many levels of block field children are kept. `0` removes all block fields; `preserveAll` prevents projection from trimming fields inside block children. |
9678
+ * | `select.fieldTypes[only]=a,b` | Keep only fields of the named types (type IDs such as `text`, `richText`, `asset`). |
9679
+ * | `select.fieldTypes[except]=a,b` | Drop fields of the named types. |
9680
+ * | `select.slots[only]=a,b` | Keep only the named slots. |
9681
+ * | `select.slots[except]=a,b` | Drop the named slots. |
9682
+ * | `select.slots[depth]=N` | Limit how many levels of nested components are kept in slots. |
9683
+ * | `select.slots.<name>[depth]=N` | Depth limit for one specific slot; overrides `slots[depth]`. |
9684
+ *
9685
+ * Behavior:
9686
+ *
9687
+ * * Projection applies recursively at every component and block in the
9688
+ * returned tree, and is forwarded into entries resolved through reference
9689
+ * fields.
9690
+ * * When operators combine, all `[only]` sets are intersected first, then
9691
+ * `[except]` sets are subtracted — exclusion always wins.
9692
+ * * Unknown field, slot, or type names are silent no-ops (the tree shape is
9693
+ * preserved; non-matching content is simply absent). Unknown operators
9694
+ * return HTTP 400.
9695
+ * * An empty list (`select.fields[only]=` or `select.slots[only]=`) strips
9696
+ * every member of that bucket; `[except]=*` is equivalent.
9697
+ * * `[depth]` counts nesting within a single fetched tree and resets inside
9698
+ * referenced entries.
9699
+ *
9700
+ * Examples:
9701
+ *
9702
+ * * `select.fields[only]=title,slug&select.slots[only]=` — title and slug of the resolved page with all slots flattened (e.g. for breadcrumbs).
9703
+ * * `select.fieldTypes[except]=richText` — everything except rich-text fields.
9704
+ * * `select.slots[depth]=2&select.fields[only]=label,url` — two levels of nested components, trimmed to `label` and `url`.
9470
9705
  */
9471
9706
  get: {
9472
9707
  parameters: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/canvas",
3
- "version": "20.72.3-alpha.2+36e92d30ab",
3
+ "version": "20.72.3-alpha.3+3e396259ba",
4
4
  "description": "Common functionality and types for Uniform Canvas",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -36,9 +36,9 @@
36
36
  "svix": "1.96.0"
37
37
  },
38
38
  "dependencies": {
39
- "@uniformdev/assets": "20.72.3-alpha.2+36e92d30ab",
40
- "@uniformdev/context": "20.72.3-alpha.2+36e92d30ab",
41
- "@uniformdev/richtext": "20.72.3-alpha.2+36e92d30ab",
39
+ "@uniformdev/assets": "20.72.3-alpha.3+3e396259ba",
40
+ "@uniformdev/context": "20.72.3-alpha.3+3e396259ba",
41
+ "@uniformdev/richtext": "20.72.3-alpha.3+3e396259ba",
42
42
  "immer": "11.1.8",
43
43
  "p-limit": "6.2.0",
44
44
  "p-retry": "6.2.1",
@@ -50,5 +50,5 @@
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  },
53
- "gitHead": "36e92d30ab1b97fc68cf16fc22c6f7865ac8ba97"
53
+ "gitHead": "3e396259bafc25b69071cda4102cea340b866922"
54
54
  }