Class ExperimentSetsWebService
This is the REST home the parity audit recorded as missing
(docs/audit/DWR_REST_GAP_AUDIT.md: "Experiment-set (dataset group) CRUD + retrieval …
Zero REST home"). Everything here is a thin layer over ExpressionExperimentSetService and
ExpressionExperimentSetValueObjectHelper, which own the taxon rule, the ACL defaults and
the member validation.
🛑 Not to be confused with /groups, which is USER groups. The two nouns collided in the
curation UI on 2026-08-29 and a set surface named "groups" would have kept them colliding.
The taxon rule, since it decides what a set may hold. A set MAY declare a taxon; when it does, every member must match it — no mice in a rat set. When it does not, the set may span taxa. A create whose members share a taxon gets it for free; one whose members disagree is stored without a taxon rather than refused, because a curation cohort is a legitimate thing to want: the gold reference set is 179 human, 254 mouse and 16 rat.
- Author:
- gembro
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classMembership replacement body.static classCreate / rename body. -
Constructor Summary
ConstructorsConstructorDescriptionExperimentSetsWebService(ExpressionExperimentSetService expressionExperimentSetService, ExpressionExperimentSetValueObjectHelper expressionExperimentSetValueObjectHelper) -
Method Summary
Modifier and TypeMethodDescriptionjakarta.ws.rs.core.Responsejakarta.ws.rs.core.ResponsegetExperimentSet(Long id, boolean includeMembers) getExperimentSets(boolean mine, String query, boolean includeMembers, OffsetArg offsetArg, LimitArg limitArg)
-
Constructor Details
-
ExperimentSetsWebService
@Autowired public ExperimentSetsWebService(ExpressionExperimentSetService expressionExperimentSetService, ExpressionExperimentSetValueObjectHelper expressionExperimentSetValueObjectHelper)
-
-
Method Details
-
getExperimentSets
@GET @Produces("application/json") public PaginatedResponseDataObject<ExpressionExperimentSetValueObject> getExperimentSets(@QueryParam("mine") @DefaultValue("false") boolean mine, @QueryParam("query") @Nullable String query, @QueryParam("includeMembers") @DefaultValue("false") boolean includeMembers, @QueryParam("offset") @DefaultValue("0") OffsetArg offsetArg, @QueryParam("limit") @DefaultValue("20") LimitArg limitArg) -
getExperimentSet
@GET @Path("/{id}") @Produces("application/json") public ResponseDataObject<ExpressionExperimentSetValueObject> getExperimentSet(@PathParam("id") Long id, @QueryParam("includeMembers") @DefaultValue("true") boolean includeMembers) -
getExperimentSetDatasets
@GET @Path("/{id}/datasets") @Produces("application/json") public ResponseDataObject<List<ExpressionExperimentDetailsValueObject>> getExperimentSetDatasets(@PathParam("id") Long id) -
createExperimentSet
@POST @Consumes("application/json") @Produces("application/json") @PreAuthorize("isAuthenticated()") public jakarta.ws.rs.core.Response createExperimentSet(ExperimentSetsWebService.ExperimentSetRequest req) -
updateExperimentSet
@PUT @Path("/{id}") @Consumes("application/json") @Produces("application/json") @PreAuthorize("isAuthenticated()") public ResponseDataObject<ExpressionExperimentSetValueObject> updateExperimentSet(@PathParam("id") Long id, ExperimentSetsWebService.ExperimentSetRequest req) -
updateExperimentSetMembers
@PUT @Path("/{id}/datasets") @Consumes("application/json") @Produces("application/json") @PreAuthorize("isAuthenticated()") public ResponseDataObject<ExpressionExperimentSetValueObject> updateExperimentSetMembers(@PathParam("id") Long id, ExperimentSetsWebService.ExperimentSetMembersRequest req) -
deleteExperimentSet
@DELETE @Path("/{id}") @Produces("application/json") @PreAuthorize("isAuthenticated()") public jakarta.ws.rs.core.Response deleteExperimentSet(@PathParam("id") Long id)
-