-
Notifications
You must be signed in to change notification settings - Fork 54
DRS write support #416
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
base: develop
Are you sure you want to change the base?
DRS write support #416
Conversation
@patmagee pointed out that the DEL endpoint doesn't support passports!?! We need to rethink this, maybe add a POST /drs/object/id/delete endpoint? From ChatGPT 5: Yes — the HTTP/1.1 spec does not forbid a
Key implications:
If you want, I can give you examples of DELETE requests with a JSON body and how popular frameworks like Express, Flask, and Spring Boot handle them — since the real-world behavior is inconsistent. Would you like me to do that? |
Hi @briandoconnor - Thanks for the PR which has stimulated me to respond with some details of a different implementation that we've been working on for a use case in the GEL context. To summarise our approach; GEL forms part of the UK NHS Genomic Medicine Service (GMS) and we are exploring DRS as a standard to share genomic files with partners in the GMS. A new use case for us is to enable genomic labs to share genomic data with GEL such that it is then available over a DRS API. As part of our DRS implementation we already added support for POST requests on the {
"objects": [
{
"name": "my_data.fastq",
"size": 12345,
"mime_type": "text/fastq",
"checksums": [
{
"checksum": "string",
"type": "string"
}
],
"description": "my FASTQ",
"aliases": [
"string"
]
}
]
} indicating that the client would like to upload a file of 12345 bytes and with the supplied name and checksum somewhere ( The server responds with a response that looks like: {
"objects": {
"my_data.fastq": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"self_uri": "string",
"name": "my_data.fastq",
"size": 12345,
"mime_type": "text/fastq",
"checksums": [
{
"checksum": "string",
"type": "string"
}
],
"description": "string",
"aliases": [
"string"
],
"upload_methods": [
{
"type": "s3",
"access_url": {
"url": "s3://bucket/some/prefix",
"headers": [
"string"
]
},
"region": "string",
"credentials": {
"AccessKeyId": "string",
"SecretAccessKey": "string",
"SessionToken": "string"
}
},
{
"type": "https",
"access_url": {
"url": "https://pre.signed.url/?X-Aws...",
"headers": [
"string"
]
}
}
]
}
}
} The client can then select their preferred Once the data is uploaded using the selected A feature we like about this implementation is that the Comments on this suggestion are very welcome, and I'm happy to share openapi specs and/or example client and server code from our prototype implementation of this scheme if that would be useful. If so, please let me know whether a separate PR would make sense? I write this comment without completely reviewing your suggested implementation just so that you're aware of how we're thinking about this, and before I get distracted again ;) I will review your PR in more detail and revert with more thoughts on how we could potentially combine these approaches if that would be useful. |
Overview
This pull request updates the Data Repository Service (DRS) OpenAPI specification to enhance functionality in several key ways without creating breaking changes (hopefully). Key changes include 1) ability to create new objects, 2) providing a mechanism for callers to identify write back locations (e.g. clouds+regions, on premise systems), 3) providing a mechanism for callers to see what locations they are authorized to write to. Claude Code was used to generate some of these changes.
Related issues
Related Standards
This implementation aligns with:
eLwazi-hosted GA4GH Hackathon
The eLwazi hosted GA4GH hackathon 7/28-8/1 is working on this issue given the need by various groups attending the session. For more info, see the agenda.
Built Documentation
The human-readable documentation: https://ga4gh.github.io/data-repository-service-schemas/preview/feature/issue-415-write-support/docs/
Issues/questions for discussion
Key Benefits
Workflow Examples
Simple single-location upload:
Multi-location replication:
See Ticket for More Information
Ticket #415 has much more information including approaches implemented and what that looks like from a request/response perspective.