Optional DRS upload, update & delete extensions#418
Conversation
|
I have made a flurry of updates including some changes to minor details of the spec, and added more docs on implementation considerations, I think this proposal is now fairly stable and I'd very much welcome any comments or feedback. I will present this proposal in the Cloud WS call on November 10th. |
|
A couple quick questions:
Apologies if I missed answers to these in my skim of the docs! |
corrects examples
… methods to upload request body
Apologies for the slow response @andrew-nimbus, I missed this comment somehow! My initial responses below:
|
|
@kellrott my GitHub skills failed me and so rather than merge in your fetch by checksum changes to this branch I have just added them as a new commit to this PR. I took the liberty of adding a service-info flag allowing servers to advertise if they support the new @briandoconnor I think this should be good to merge into develop now as we discussed? Apologies for the delay in following up on this. |
DRS Upload, Update and Delete Extensions
This PR adds optional upload, delete, access method update and checksum addition endpoints to the DRS specification, enabling complete DRS object lifecycle management. It also includes a new endpoint supporting fetching DRS objects by checksum value. Existing DRS servers remain fully compliant without implementing these extensions.
New Endpoints
Upload
POST /upload-request- Negotiate upload methods and credentials for file uploadsPOST /objects/register- Register uploaded files or existing data as DRS objectsDelete
PUT /objects/{object_id}/delete- Delete single DRS object with optional storage data removalPUT /objects/delete- Bulk delete DRS objects with optional storage data removalUpdate Access Methods
PUT /objects/{object_id}/access-methods- Update access methods for a single DRS objectPUT /objects/access-methods- Update access methods for multiple DRS objectsAdd Checksums
PUT /objects/{object_id}/checksums- Add checksum to a single DRS objectPUT /objects/checksums- Add checksums for multiple DRS objectsFetch by checksum (due to @kellrott)
GET /objects/checksum/{checksum}- Fetch DRS objects that match the supplied checksumService Discovery
New service-info flags for granular capability advertisement:
uploadRequestSupported/objectRegistrationSupporteddeleteSupported/deleteStorageDataSupportedaccessMethodUpdateSupported/validateAccessMethodschecksumAdditionSupported/validateChecksumsmaxUploadRequestLength,maxRegisterRequestLength,maxBulkDeleteLength,maxBulkAccessMethodUpdateLength,maxBulkChecksumAdditionLengthfetchByChecksumSupportedThis approach supports GA4GH Passports, Bearer tokens, and API keys for authentication. We use PUT methods rather than DELETE for delete operations to allow passports to be used in request bodies (as support for request bodies in DELETE methods is not guaranteed in all HTTP infrastructure).
The details and motivation for the proposal are included in the documentation for the new endpoints, which are rendered here: https://ga4gh.github.io/data-repository-service-schemas/preview/feature/issue-416-drs-upload/docs/NB: The auto-rendered documentation is not updating and shows stale content, please refer to the files in the most recent commit. The generated OpenAPI spec YAML is up to date, and can be viewed by pasting the URL into the Swagger editor. The main prose markdown docs are linked below:
The corresponding issue is #417 but please also refer to the discussion for issue #416, which this PR should be considered a continuation of.