You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#36989 ships the list against GET /api/v1/experiments as it exists today, computing paging, sorting, filtering, status counts and site scoping client-side — an explicit, documented interim. This issue replaces that interim with the server-side contract from #36823, and is filed together with #36989 on purpose so the interim cannot quietly become permanent. It lands whenever #36823 does; nothing else waits on it.
The URL param contract was designed to be final from day one, so this swap changes where the params are applied, not what they are called.
Only two places should change in existing code: the data-access service and the store's load event handler. No existing component should need touching — the one enumerated exception is the two new toolbar filter controls (creator, running date range), which are new components this issue adds. If any other component needs a change, #36989's service boundary was drawn wrong — flag it in review instead of patching around it.
Acceptance Criteria
The list issues one request per view change carrying the server-side params; no client-side slicing/sorting/filtering remains (interim utilities deleted).
URL behavior is byte-identical for all pre-existing params: same names, same defaults-omitted rule, same deep-link restoration (the E2E deep-link spec from Experiments Portlet — E2E test suite (incl. flag-off regression of the old flow) #37006 passes unchanged). The three new params (created_by, running_from, running_to) are additive and follow the same defaults-omitted rule.
Page column shows the enriched title/path; the interim lookup is deleted.
Status counts come from the API and reflect the whole filtered set.
Site scoping uses the siteId param; switching site refetches.
Diff touches only the data-access service, the store load handler, the two new toolbar filter controls, and deleted interim code.
Filter by creator works server-side via created_by; filter by running date range works server-side via running_from/running_to with inclusive overlap semantics; both compose with every other filter and are reflected in counts and totals.
Jest specs updated: load handler asserts outgoing params per state.
Description
#36989 ships the list against
GET /api/v1/experimentsas it exists today, computing paging, sorting, filtering, status counts and site scoping client-side — an explicit, documented interim. This issue replaces that interim with the server-side contract from #36823, and is filed together with #36989 on purpose so the interim cannot quietly become permanent. It lands whenever #36823 does; nothing else waits on it.The URL param contract was designed to be final from day one, so this swap changes where the params are applied, not what they are called.
Scope
page,per_page,orderby,direction,filter,status,goal,siteId).created_byandrunning_from/running_toparameters.pageTitle/pageUrl/ site in the Page column, deleting Experiments Portlet — Screen 1: portlet base + site-wide List #36989's interim client-side page lookup.totalRecordsfrom the response body (pagination.totalEntries), not theX-Pagination-*headers.name+statusmalformed SQL;pageId+multi-status precedence).Boundary check
Only two places should change in existing code: the data-access service and the store's load event handler. No existing component should need touching — the one enumerated exception is the two new toolbar filter controls (creator, running date range), which are new components this issue adds. If any other component needs a change, #36989's service boundary was drawn wrong — flag it in review instead of patching around it.
Acceptance Criteria
created_by,running_from,running_to) are additive and follow the same defaults-omitted rule.siteIdparam; switching site refetches.created_by; filter by running date range works server-side viarunning_from/running_towith inclusive overlap semantics; both compose with every other filter and are reflected in counts and totals.Priority
Medium — unblocks scale, not features.
Additional Context