In DRS-1.0.0 Spec (external link) DRS v1 is a read-only API. In Seqslab DRS API, not only compatible to the spec but also provides a set of APIs to create, modify and delete DRS object. Moreover, a search API is provided, user can query DRS objects by tags or name.

Seqslab DRS API does NOT provide upload content feature, users can either

  • upload content by Seqslab CLI then register a DRS associated with this content with create API

  • upload content and register by Seqslab CLI


  • DRS IDs have drs_ prefix with strings made up of uppercase and lowercase letters, decimal digits, whereas in DRS-1.0.0 Spec (external link) hypen, period, underscore and tilde are allowed.

  • One DRS ID MUST always return the same object data.

  • DRS implementations MAY have more than one ID that maps to the same object.

DRS uniform resource identifiers (URIs)

  • A DRS URI refers to a DRS object.

  • DRS URIs have the form drs://<server>/<id> where <server> is the DRS server and <id> is the DRS ID.

  • With DRS URI, contents can be accessed in a standard way.

  • If a user receives a DRS URI drs:// then it could issue REST APIs to

    • Get DRS objectGet DRS object

    • Update DRS objectUpdate DRS object

    • Partial update DRS objectPartial update DRS object

    • Delete DRS objectDelete DRS object

  • The actual access methods to the content will be responded when issues a Get request.

DRS data types

DRS supports two types of content:

  • a blob is like a file — it’s a single blob of bytes, represented by a DrsObject without a contents array.

  • a bundle is like a folder — it’s a collection of other DRS content (either blobs or bundles), represented by a DrsObject with a contents array.