Skip to content

Commit 8e9bea0

Browse files
tylerpinaclaude
andcommitted
feat: type ExO query filter parameters for Template and Experience [DX-935]
Replace catch-all `[key: string]: unknown` in `TemplateQueryOptions` and `ExperienceQueryOptions` with 40 named fields mirroring the upstream `TemplateListFiltersSchema` / `ExperienceListFilterSchema` from `experiences-management-api-contract`: - SysFiltersSchema (31 fields): sys.id, createdBy/updatedBy/publishedBy, date range filters, version, archivedAt[exists] - TagFiltersSchema (3): metadata.tags.sys.id[in/all/nin] - TaxonomyConceptsFiltersSchema (4): metadata.concepts.sys.id[in/all/nin], metadata.concepts.descendants[in] - TextFiltersSchema (2): name, name[match] Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 62685cb commit 8e9bea0

2 files changed

Lines changed: 94 additions & 4 deletions

File tree

lib/entities/experience.ts

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,55 @@ export type ExperienceProps = ExperienceCommonProps & {
6262
sys: ExperienceSys
6363
}
6464

65-
// Query options for getMany - cursor-based pagination with mutual exclusivity
65+
// Query options for getMany - cursor-based pagination with typed filter fields
66+
// Fields mirror ExperienceListFilterSchema from experiences-management-api-contract:
67+
// SysFiltersSchema (31) + TagFiltersSchema (3) + TaxonomyConceptsFiltersSchema (4) + TextFiltersSchema (2)
6668
export type ExperienceQueryOptions = CursorPaginationParams & {
6769
order?: string
68-
[key: string]: unknown
70+
// SysFiltersSchema
71+
'sys.id'?: string
72+
'sys.id[in]'?: string
73+
'sys.id[nin]'?: string
74+
'sys.createdBy.sys.id'?: string
75+
'sys.createdBy.sys.id[in]'?: string
76+
'sys.createdBy.sys.id[nin]'?: string
77+
'sys.updatedBy.sys.id'?: string
78+
'sys.updatedBy.sys.id[in]'?: string
79+
'sys.updatedBy.sys.id[nin]'?: string
80+
'sys.publishedBy.sys.id'?: string
81+
'sys.publishedBy.sys.id[in]'?: string
82+
'sys.publishedBy.sys.id[nin]'?: string
83+
'sys.createdAt[gt]'?: string
84+
'sys.createdAt[gte]'?: string
85+
'sys.createdAt[lt]'?: string
86+
'sys.createdAt[lte]'?: string
87+
'sys.updatedAt[gt]'?: string
88+
'sys.updatedAt[gte]'?: string
89+
'sys.updatedAt[lt]'?: string
90+
'sys.updatedAt[lte]'?: string
91+
'sys.publishedAt[gt]'?: string
92+
'sys.publishedAt[gte]'?: string
93+
'sys.publishedAt[lt]'?: string
94+
'sys.publishedAt[lte]'?: string
95+
'sys.firstPublishedAt[gt]'?: string
96+
'sys.firstPublishedAt[gte]'?: string
97+
'sys.firstPublishedAt[lt]'?: string
98+
'sys.firstPublishedAt[lte]'?: string
99+
'sys.version'?: number
100+
'sys.publishedVersion'?: number
101+
'sys.archivedAt[exists]'?: boolean
102+
// TagFiltersSchema
103+
'metadata.tags.sys.id[in]'?: string
104+
'metadata.tags.sys.id[all]'?: string
105+
'metadata.tags.sys.id[nin]'?: string
106+
// TaxonomyConceptsFiltersSchema
107+
'metadata.concepts.sys.id[in]'?: string
108+
'metadata.concepts.sys.id[all]'?: string
109+
'metadata.concepts.sys.id[nin]'?: string
110+
'metadata.concepts.descendants[in]'?: string
111+
// TextFiltersSchema
112+
'name[match]'?: string
113+
name?: string
69114
}
70115

71116
// Locale-based publish payload — add or remove specific locales.

lib/entities/template.ts

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,55 @@ export type UpdateTemplateProps = Omit<TemplateProps, 'sys'> & {
6262
}
6363
}
6464

65-
// Query options for getMany - cursor-based pagination with filter support
65+
// Query options for getMany - cursor-based pagination with typed filter fields
66+
// Fields mirror TemplateListFiltersSchema from experiences-management-api-contract:
67+
// SysFiltersSchema (31) + TagFiltersSchema (3) + TaxonomyConceptsFiltersSchema (4) + TextFiltersSchema (2)
6668
export type TemplateQueryOptions = CursorPaginationParams & {
6769
order?: string
68-
[key: string]: unknown
70+
// SysFiltersSchema
71+
'sys.id'?: string
72+
'sys.id[in]'?: string
73+
'sys.id[nin]'?: string
74+
'sys.createdBy.sys.id'?: string
75+
'sys.createdBy.sys.id[in]'?: string
76+
'sys.createdBy.sys.id[nin]'?: string
77+
'sys.updatedBy.sys.id'?: string
78+
'sys.updatedBy.sys.id[in]'?: string
79+
'sys.updatedBy.sys.id[nin]'?: string
80+
'sys.publishedBy.sys.id'?: string
81+
'sys.publishedBy.sys.id[in]'?: string
82+
'sys.publishedBy.sys.id[nin]'?: string
83+
'sys.createdAt[gt]'?: string
84+
'sys.createdAt[gte]'?: string
85+
'sys.createdAt[lt]'?: string
86+
'sys.createdAt[lte]'?: string
87+
'sys.updatedAt[gt]'?: string
88+
'sys.updatedAt[gte]'?: string
89+
'sys.updatedAt[lt]'?: string
90+
'sys.updatedAt[lte]'?: string
91+
'sys.publishedAt[gt]'?: string
92+
'sys.publishedAt[gte]'?: string
93+
'sys.publishedAt[lt]'?: string
94+
'sys.publishedAt[lte]'?: string
95+
'sys.firstPublishedAt[gt]'?: string
96+
'sys.firstPublishedAt[gte]'?: string
97+
'sys.firstPublishedAt[lt]'?: string
98+
'sys.firstPublishedAt[lte]'?: string
99+
'sys.version'?: number
100+
'sys.publishedVersion'?: number
101+
'sys.archivedAt[exists]'?: boolean
102+
// TagFiltersSchema
103+
'metadata.tags.sys.id[in]'?: string
104+
'metadata.tags.sys.id[all]'?: string
105+
'metadata.tags.sys.id[nin]'?: string
106+
// TaxonomyConceptsFiltersSchema
107+
'metadata.concepts.sys.id[in]'?: string
108+
'metadata.concepts.sys.id[all]'?: string
109+
'metadata.concepts.sys.id[nin]'?: string
110+
'metadata.concepts.descendants[in]'?: string
111+
// TextFiltersSchema
112+
'name[match]'?: string
113+
name?: string
69114
}
70115

71116
export type TemplateCollection = CursorPaginatedCollectionProp<TemplateProps>

0 commit comments

Comments
 (0)