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
§19BioAssayValueObject.originalPlatform echoes arrayDesign for GENELIST stand-ins — should carry the real platform (e.g. Illumina HiSeq), not the Generic stub
§15/datasets/{id}/samples?useProcessedQuantitationType=true 404s when a preferred QT is set (filed by Paul 2026-04-27; workaround: pass use_processed_quantitation_type=False)
§20 gemmapy drops evidenceCode from get_dataset_annotations(gemmapy fix, not Gemma REST; not yet filed upstream)
Read-Side Gaps (priority order)
§3 Audit trail — GET /rest/v2/datasets/{id}/auditEvents returning full AuditEventValueObject list; empty History tab is the most-noticed UI gap
§13 Publications — GET /rest/v2/datasets/{id}/publications returning BibliographicReferenceValueObject; description scrape is a thin fallback
§14 Public/private state (read) — isPublic: bool on ExpressionExperimentValueObject; needed to gate "edit a public experiment safely" banner
§2 Annotation usage counts — add usage_count to AnnotationSearchResultValueObject; biggest pick-quality lift in the typeahead
§16 Cell-type subset structure for sc experiments — expose cell-type assignment per bioassay so the UI can group rows by cell type
§17 URI → ontology-term lookup — GET /rest/v2/ontology/term?uri=...; unblocks S10 validator false "possible hallucination" warnings on real-but-novel URIs
§1 Categories enum — GET /rest/v2/categories returning canonical EFO factor/statement categories; would eliminate duplicate static lists in UI and prompts
§7 Predicates enum — GET /rest/v2/predicates returning curated allow-list with URIs; same shape as §1, smaller list
§8 Design GET — GET /rest/v2/datasets/{id}/design returning full structured design (factors, FVs, statements, biomaterial assignments); import path works without it
§9 Cleaner dataset search — free-text q= param on /datasets or a dedicated /datasets/search typeahead endpoint
§12 Curator user info — extend /users/me with roles and permissions(defer until multi-curator deployment)
21: gemmapy drops experimentalFactorType + per-FV measurement from get_dataset_samples (gemmapy fix, not Gemma REST). We talked about using direct API calls rather than relying on gemmapy for the agents. I believe the agent wants to use gemmapy because the design endpoint isn't as robust as it should be for now. Will refer back to this when the design endpoint is handled
22: Gene-symbol resolution on /annotations/search
Write Surfaces (defer until production rollout; priority order)
§4 Curation write endpoints
GET/PUT /datasets/{id}/design
GET/PUT /datasets/{id}/curationDetails; without this the UI is a read-only inspector
§5 Curation proposals — POST/GET/PATCH /rest/v2/curation-proposals; needed for agent integration and curator review loop
§18 Structured detail on curation-commit audit event — versioned JSON in AuditEventValueObject.detail for rich History tab badges and downstream aggregation; pairs with §4
§14b Public/private toggle (write) — PUT /datasets/{id}/permissions; pairs with §14 read
§6 Quantitation Type editing — PUT /datasets/{id}/quantitationTypes/{qtid}; needed to close the pre-publish checklist
§10 ETag / If-Match concurrency on writes — prevent last-write-wins race between concurrent curators
Gemma REST API — Gaps to Fill
https://github.com/PavlidisLab/gemma-curation-agents/blob/main/TODO-gemma-api.md
Bug Fixes
BioAssayValueObject.originalPlatformechoesarrayDesignfor GENELIST stand-ins — should carry the real platform (e.g. Illumina HiSeq), not the Generic stub/datasets/{id}/samples?useProcessedQuantitationType=true404s when a preferred QT is set (filed by Paul 2026-04-27; workaround: passuse_processed_quantitation_type=False)evidenceCodefromget_dataset_annotations(gemmapy fix, not Gemma REST; not yet filed upstream)Read-Side Gaps (priority order)
GET /rest/v2/datasets/{id}/auditEventsreturning fullAuditEventValueObjectlist; empty History tab is the most-noticed UI gapGET /rest/v2/datasets/{id}/publicationsreturningBibliographicReferenceValueObject; description scrape is a thin fallbackisPublic: boolonExpressionExperimentValueObject; needed to gate "edit a public experiment safely" bannerusage_counttoAnnotationSearchResultValueObject; biggest pick-quality lift in the typeaheadGET /rest/v2/ontology/term?uri=...; unblocks S10 validator false "possible hallucination" warnings on real-but-novel URIsGET /rest/v2/categoriesreturning canonical EFO factor/statement categories; would eliminate duplicate static lists in UI and promptsGET /rest/v2/predicatesreturning curated allow-list with URIs; same shape as §1, smaller listGET /rest/v2/datasets/{id}/designreturning full structured design (factors, FVs, statements, biomaterial assignments); import path works without itq=param on/datasetsor a dedicated/datasets/searchtypeahead endpoint/users/mewithrolesandpermissions(defer until multi-curator deployment)Write Surfaces (defer until production rollout; priority order)
GET/PUT /datasets/{id}/designGET/PUT /datasets/{id}/curationDetails; without this the UI is a read-only inspectorPOST/GET/PATCH /rest/v2/curation-proposals; needed for agent integration and curator review loopAuditEventValueObject.detailfor rich History tab badges and downstream aggregation; pairs with §4PUT /datasets/{id}/permissions; pairs with §14 readPUT /datasets/{id}/quantitationTypes/{qtid}; needed to close the pre-publish checklist