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
The goal is to allow for Groups using the new multi-tenant backend storage to self-manage logo and overview customizations previously managed via the special-cased files group-logo.png and group-overview.md.
Proposal
As a starting proposal, consider two new routes (exact paths up for discussion) × three methods (GET, PUT, DELETE) for six new endpoints:
/groups/:groupName/logo
GET → 200 OK (Content-Type: image/png)
PUT (Content-Type: image/png) → 204 No Content
DELETE → 204 No Content
/groups/:groupName/overview
GET → 200 OK (Content-Type: text/markdown)
PUT (Content-Type: text/markdown) → 204 No Content
DELETE → 204 No Content
These are just the "happy paths". 401/403/404 should also be returned as appropriate.
Implementation considerations
If using the proposed routes, then they should come before more generic routes for datasets. Or, it might be preferable to change the routes instead to avoid conflict with user-provided paths, e.g. to /groups/:groupName/-/logo or similar. Settled on using the /groups/:groupName/settings namespace going forwards: Add RESTful API for managing Groups members #581 (comment)
I don't think we need custom media types here but this could be discussed.
Ok to accept just image/png for now. We can expand this in the future to more image/* types.
The storage of this data can remain objects like group-overview.md, but we should ensure it can't conflict with other group data, like narratives. For example, /groups/…/narratives/group-overview shouldn't be able to touch the content uploaded for the group overview customization.
This can likely be accomplished several ways. The best might be a layout change to the backend storage so that datasets and narratives live under a further prefix of the per-group prefix, e.g. s3://nextstrain-groups/blab/datasets/zika.json instead of s3://nextstrain-groups/blab/zika.json, so that the top-level is reserved for internal control data. I have a local prototype of this if we want to pursue that. Done in Prepare for adjusting the layout of the multi-tenant groups bucket #563 and Adjust layout of multi-tenant groups bucket #562.
The text was updated successfully, but these errors were encountered:
The goal is to allow for Groups using the new multi-tenant backend storage to self-manage logo and overview customizations previously managed via the special-cased files
group-logo.png
andgroup-overview.md
.Proposal
As a starting proposal, consider two new routes (exact paths up for discussion) × three methods (GET, PUT, DELETE) for six new endpoints:
These are just the "happy paths". 401/403/404 should also be returned as appropriate.
Implementation considerations
If using the proposed routes, then they should come before more generic routes for datasets. Or, it might be preferable to change the routes instead to avoid conflict with user-provided paths, e.g. toSettled on using the/groups/:groupName/-/logo
or similar./groups/:groupName/settings
namespace going forwards: Add RESTful API for managing Groups members #581 (comment)I don't think we need custom media types here but this could be discussed.
Ok to accept just
image/png
for now. We can expand this in the future to moreimage/*
types.The storage of this data can remain objects like
group-overview.md
, but we should ensure it can't conflict with other group data, like narratives. For example,/groups/…/narratives/group-overview
shouldn't be able to touch the content uploaded for the group overview customization.This can likely be accomplished several ways. The best might be a layout change to the backend storage so that datasets and narratives live under a further prefix of the per-group prefix, e.g.Done in Prepare for adjusting the layout of the multi-tenant groups bucket #563 and Adjust layout of multi-tenant groups bucket #562.s3://nextstrain-groups/blab/datasets/zika.json
instead ofs3://nextstrain-groups/blab/zika.json
, so that the top-level is reserved for internal control data. I have a local prototype of this if we want to pursue that.The text was updated successfully, but these errors were encountered: