-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bundle or object in URI convention #252
Comments
Good point, I reached the same conclusion when cleaning up the docs for v0.1. @dvoet can you take a look at release 0.1 (https://ga4gh.github.io/data-repository-service-schemas/preview/release/0.1/docs/) and see what you think? If folks don't like the style I put together here then we can open a PR and get something better in for v0.2. Another thing, the spec does not cover is how to use GUIDs of various flavors with DRS (e.g. DOIs, https://dataguids.org/, etc). We don't attempt to create a standard around this or conventions for this in DRS at this time. So a URI like drs:// is out of scope (but, again, we could either add it in scope after talking to our drivers and add it in via a PR to 0.2 or say it's out of scope and something we should partner on with Discovery). |
I talked with @dglazer and we came to the conclusion that, since this is not full baked, we should pull the text about URIs from the current spec docs for v0.1. So here's that text that outlines one way of doing it: For convenience, we define a recommended syntax for fully referencing DRS-accessible objects. Strings of the form drs:////<[bundle|object]>// mean “make a DRS For example:
The service-info endpoint can be queried to retrieve information about the version of DRS supported by this server e.g. https:////service-info These URIs will be useful when passing objects to a WES server for processing since they provide a way to understand how to successfully make an HTTPS request and process the JSON response. |
Here's another possible, slightly simpler, approach to URI strings:
This approach doesn't address Doug's object vs. bundle concern -- I wonder if that's a more fundamental problem, where a DRS id currently is only useful if you separately know what kind of thing it represents. |
There are 2 concerns that these URIs address:
Consumers will have to do something to address these concerns and it would be nice if it were the same thing so I will be sad to see guidance on the matter be pulled. On the more fundamental problem, I agree that from a consumer's perspective it is not great that I must know a priori that an id refers to a bundle or object so I would be happy to see that distinction disappear from the api paths. Whatever response I get can (and does) tell me what kind of entity it represented. |
Good comments @dvoet -- I see at least three approaches we could take here: The default is (a), and it's my least favorite. I could see either (b) or (c) working -- curious what others think. |
@dvoet @dglazer @briandoconnor A Bundle's |
After looking a bit more closely, and thinking about where the
@susheel , re the example you list in Let's talk about the tradeoffs in the breakouts this afternoon. |
👍@dglazer This unification is what I've been wanting for a while :) Our conversation about |
@susheel the reason we don't want to use the full native DRS API scheme as you describe is that we will be storing these references, probably for years. In that time I hope there will be revisions to this api spec. When that happens the version number embedded in the URL will change as well. I want to avoid the situation where we need to update numerous URLs in our databases to the latest version or force providers to retain support for the v1 spec. |
@dvoet Our API version release plan was to 301 redirects to the latest compatible version. However, I completely understand your concern, so I'm hoping for an Object / Bundle unification to unify this. |
#259 is now up to date; closing. |
* fold Bundle into Object * try new way to describe blobs vs. bundles * require 1 checksum; more doc cleanup * Object/Bundle unification * minitems is lower case; more doc cleanup * trying to find a typo * fixed typo (finally) * doc tweaks * line-wrapping for checksum doc * wrestling with line breaks * more whitespace wrangling * renamed BundleObject to ContentsObject
the work-in-progress docs for URI convention suggest the form
drs://<server>/<id>
. But this does not let the caller know if the identified thing is an object or a bundle making it hard to figure out the right request to make. I suggest adding something in the path to distinguish.drs://<server>/<bundle|object>/<id>
ordrs://<server>/<b|o>/<id>
if length is a concern.The text was updated successfully, but these errors were encountered: