Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions openapi/components/requestBodies/AccessMethodUpdateBody.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
description: Request body for updating access methods of a DRS object
required: true
content:
application/json:
schema:
$ref: '../schemas/AccessMethodUpdateRequest.yaml'
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
description: Request body for bulk updating access methods of multiple DRS objects
required: true
content:
application/json:
schema:
$ref: '../schemas/BulkAccessMethodUpdateRequest.yaml'
72 changes: 72 additions & 0 deletions openapi/components/requestBodies/BulkDeleteBody.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
required: true
content:
application/json:
schema:
$ref: '../schemas/BulkDeleteRequest.yaml'
examples:
bulk_metadata_delete:
summary: Bulk delete metadata only
description: Delete multiple DRS objects metadata while preserving underlying storage data (default and safest option)
value:
bulk_object_ids:
- "drs_object_123456"
- "drs_object_789012"
- "drs_object_345678"
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
delete_storage_data: false
bulk_full_delete:
summary: Bulk delete metadata and storage data
description: Delete both metadata and storage data for multiple objects (requires server support via deleteStorageDataSupported)
value:
bulk_object_ids:
- "drs_object_123456"
- "drs_object_789012"
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
delete_storage_data: true
bulk_no_auth_delete:
summary: Bulk delete without authentication
description: Bulk delete operation without GA4GH Passport authentication (for public objects or when using Bearer token in headers)
value:
bulk_object_ids:
- "drs_object_123456"
- "drs_object_789012"
delete_storage_data: false
large_bulk_delete:
summary: Large bulk delete operation
description: Delete many objects in a single request (check maxBulkDeleteLength in service-info for limits)
value:
bulk_object_ids:
- "drs_object_001"
- "drs_object_002"
- "drs_object_003"
- "drs_object_004"
- "drs_object_005"
- "drs_object_006"
- "drs_object_007"
- "drs_object_008"
- "drs_object_009"
- "drs_object_010"
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
delete_storage_data: false
mixed_object_types:
summary: Mixed object types deletion
description: Delete objects with different ID formats and types in a single request
value:
bulk_object_ids:
- "drs://example.org/123456"
- "local_object_789"
- "uuid:550e8400-e29b-41d4-a716-446655440000"
- "compact:prefix:identifier"
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
delete_storage_data: false
minimal_bulk_request:
summary: Minimal bulk delete request
description: Simplest bulk delete request with required fields only
value:
bulk_object_ids:
- "drs_object_123456"
- "drs_object_789012"
38 changes: 38 additions & 0 deletions openapi/components/requestBodies/BulkObjectBody.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
required: true
content:
application/json:
schema:
type: object
required:
- bulk_object_ids
properties:
passports:
type: array
items:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM
description: the encoded JWT GA4GH Passport that contains embedded Visas. The overall JWT is signed as are the individual Passport Visas.
bulk_object_ids:
type: array
items:
type: string
minItems: 1
description: An array of ObjectIDs to retrieve metadata for
examples:
bulk_retrieve:
summary: Bulk retrieve objects
description: Retrieve metadata for multiple existing DRS objects using their IDs
value:
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
bulk_object_ids:
- "drs_object_123456"
- "drs_object_789012"
- "drs_object_345678"
bulk_retrieve_no_auth:
summary: Bulk retrieve without authentication
description: Retrieve metadata for public DRS objects
value:
bulk_object_ids:
- "drs_object_public_123"
- "drs_object_public_456"
44 changes: 44 additions & 0 deletions openapi/components/requestBodies/DeleteBody.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
required: false
content:
application/json:
schema:
$ref: '../schemas/DeleteRequest.yaml'
examples:
metadata_only_delete:
summary: Delete metadata only (default)
description: Delete DRS object metadata while preserving underlying storage data. This is the default and safest option.
value:
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
delete_storage_data: false
full_delete:
summary: Delete metadata and storage data
description: Delete both DRS object metadata and underlying storage data (requires server support via deleteStorageDataSupported)
value:
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
delete_storage_data: true
no_auth_delete:
summary: Delete without authentication
description: Delete operation without GA4GH Passport authentication (for public objects or when using Bearer token in headers)
value:
delete_storage_data: false
minimal_request:
summary: Minimal delete request
description: Simplest delete request with no authentication and default behavior (metadata only)
value: {}
multiple_passports:
summary: Multiple GA4GH Passports
description: Delete request with multiple GA4GH Passports for complex authorization scenarios
value:
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
- "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.AbCdEfGhIjKlMnOpQrStUvWxYz"
delete_storage_data: false
update_workflow:
summary: Safe update workflow
description: Delete metadata only to enable safe update pattern (delete metadata, then re-register with new metadata)
value:
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
delete_storage_data: false
18 changes: 18 additions & 0 deletions openapi/components/requestBodies/PostObjectBody.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,21 @@ content:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM
description: the encoded JWT GA4GH Passport that contains embedded Visas. The overall JWT is signed as are the individual Passport Visas.

examples:
retrieve_with_auth:
summary: Retrieve object with authentication
description: Request object metadata with passport authentication
value:
expand: false
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
retrieve_expanded_bundle:
summary: Retrieve expanded bundle with authentication
description: Request expanded bundle contents with passport authentication
value:
expand: true
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
- "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.additional_passport_signature"

66 changes: 66 additions & 0 deletions openapi/components/requestBodies/RegisterObjectsBody.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
description: Request body for registering DRS objects after upload
required: true
content:
application/json:
schema:
type: object
required:
- candidates
properties:
candidates:
type: array
items:
$ref: '../schemas/DrsObjectCandidate.yaml'
minItems: 1
description: Array of DRS object candidates to register (server will mint IDs and timestamps)
passports:
type: array
items:
type: string
description: Optional array of GA4GH Passport JWTs for authorization
examples:
single_object_registration:
summary: Register a single object
description: Register one DRS object after upload
value:
candidates:
- name: "sample_data.vcf"
size: 1048576
mime_type: "text/plain"
checksums:
- checksum: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
type: "sha-256"
description: "Variant call format file for sample analysis"
access_methods:
- type: "s3"
access_url:
url: "s3://my-bucket/uploads/sample_data.vcf"
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
bulk_object_registration:
summary: Register multiple objects
description: Register multiple DRS objects in a single request
value:
candidates:
- name: "genome_assembly.fasta"
size: 3221225472
mime_type: "text/plain"
checksums:
- checksum: "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"
type: "sha-256"
description: "Human genome reference assembly"
access_methods:
- type: "s3"
access_url:
url: "s3://genomics-bucket/assemblies/hg38.fasta"
- name: "annotations.gff3"
size: 524288000
mime_type: "text/plain"
checksums:
- checksum: "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
type: "sha-256"
description: "Gene annotations in GFF3 format"
access_methods:
- type: "https"
access_url:
url: "https://data.example.org/files/annotations.gff3"
65 changes: 65 additions & 0 deletions openapi/components/requestBodies/UploadRequestBody.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
required: true
content:
application/json:
schema:
$ref: '../schemas/UploadRequest.yaml'
examples:
single_file:
summary: Single file upload request
description: Request upload methods for a single file
value:
requests:
- name: "sample_data.vcf"
size: 1048576
mime_type: "text/plain"
checksums:
- checksum: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
type: "sha-256"
description: "Variant call format file for sample analysis"
aliases:
- "sample_001_variants"
- "vcf_batch_2024"
passports:
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYTRnaF9wYXNzcG9ydF92MSI6W119.JJ5rN0ktP0qwyZmIPpxmF_p7JsxAZH6L6brUxtad3CM"
multiple_files:
summary: Multiple files upload request
description: Request upload methods for multiple files with different types
value:
requests:
- name: "genome_assembly.fasta"
size: 3221225472
mime_type: "text/plain"
checksums:
- checksum: "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"
type: "sha-256"
- checksum: "098f6bcd4621d373cade4e832627b4f6"
type: "md5"
description: "Human genome reference assembly"
aliases:
- "hg38_reference"
- name: "annotations.gff3"
size: 524288000
mime_type: "text/plain"
checksums:
- checksum: "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
type: "sha-256"
description: "Gene annotations in GFF3 format"
- name: "metadata.json"
size: 2048
mime_type: "application/json"
checksums:
- checksum: "c89e4c5c7f2c8c8e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c"
type: "sha-256"
description: "Sample metadata and experimental conditions"
no_passports:
summary: Upload request without authentication
description: Request for public upload endpoints that don't require authentication
value:
requests:
- name: "public_dataset.csv"
size: 10240
mime_type: "text/csv"
checksums:
- checksum: "d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35"
type: "sha-256"
description: "Public research dataset"
7 changes: 7 additions & 0 deletions openapi/components/responses/200AccessMethodUpdate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
description: >-
Access methods successfully updated. Returns the updated DRS object with new access methods
and updated timestamp.
content:
application/json:
schema:
$ref: '../schemas/DrsObject.yaml'
15 changes: 15 additions & 0 deletions openapi/components/responses/200BulkAccessMethodUpdate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description: >-
Access methods successfully updated for all objects. Returns updated DRS objects with
new access methods and updated timestamps.
content:
application/json:
schema:
type: object
required:
- objects
properties:
objects:
type: array
items:
$ref: '../schemas/DrsObject.yaml'
description: Array of updated DRS objects
Loading