@@ -304,6 +304,56 @@ curl -H "Authorization: Bearer $token" \
304304 https://HOSTNAME/files/EGAF00000000001/content
305305```
306306
307+ ### DRS Object Endpoint
308+
309+ #### ` GET /objects/{datasetId}/{filePath} `
310+
311+ Returns a minimal [ GA4GH DRS 1.5] ( https://ga4gh.github.io/data-repository-service-schemas/preview/release/drs-1.5.0/docs/ )
312+ ` DrsObject ` with a pre-resolved ` access_url ` pointing to the file content endpoint.
313+ This enables DRS-aware clients (e.g. htsget-rs) to resolve a dataset + file path
314+ to a download URL without knowing the internal file ID.
315+
316+ The path is composite: everything before the first ` / ` is the dataset ID, everything
317+ after is the file path within the dataset.
318+
319+ - Error codes
320+ - ` 200 ` DRS object returned
321+ - ` 400 ` Malformed path (missing dataset or file component)
322+ - ` 401 ` Invalid or missing token
323+ - ` 403 ` Access denied or file does not exist
324+
325+ Example:
326+
327+ ``` bash
328+ curl -H " Authorization: Bearer $token " \
329+ https://HOSTNAME/objects/EGAD00000000001/samples/sample1.bam.c4gh
330+ ```
331+
332+ Response:
333+
334+ ``` json
335+ {
336+ "id" : " EGAF00000000001" ,
337+ "self_uri" : " drs://HOSTNAME/EGAF00000000001" ,
338+ "size" : 1048576 ,
339+ "created_time" : " 2026-01-15T10:30:00Z" ,
340+ "checksums" : [
341+ {"checksum" : " a1b2c3d4..." , "type" : " sha-256" }
342+ ],
343+ "access_methods" : [
344+ {
345+ "type" : " https" ,
346+ "access_url" : {
347+ "url" : " https://HOSTNAME/files/EGAF00000000001/content"
348+ }
349+ }
350+ ]
351+ }
352+ ```
353+
354+ The ` size ` and ` checksums ` describe the encrypted blob served by ` access_url ` ,
355+ per the DRS 1.5 specification.
356+
307357### Error Format
308358
309359All error responses use [ RFC 9457 Problem Details] ( https://www.rfc-editor.org/rfc/rfc9457 ) :
0 commit comments