glygener / glygen-issues

Repository for public GlyGen tickets
GNU General Public License v3.0
0 stars 0 forks source link

Implement GlyGen DRS API #1235

Open ReneRanzinger opened 5 months ago

ReneRanzinger commented 5 months ago

This implementation should happen in the testing phase of 2.5.

Based on the DRS specifications implement a DRS API for GlyGen files that get submitted to CFDE.

The generated unique identifiers also need to be shared with the data submission team (@jeet-vora and @ReneRanzinger).

For general questions contact @ReneRanzinger. For implementation questions @senaarpinar can help since she implemented the API for the array repository.

ubhuiyan commented 2 months ago

https://ga4gh.github.io/data-repository-service-schemas/preview/release/drs-1.3.0/docs/#tag/Objects/operation/GetObject

rykahsay commented 2 months ago

@ReneRanzinger ... on the left hand of the page given to me, I see the following four APIs (screenshot given blow) and it seems to me only the 1st and 3rd are needed. Can you please verify this? On the 3rd API, the response needed is download url and not the bytes. Is there another API needed to responds with bytes?

"Get info about a DrsObject." "Get info about a DrsObject through POST'ing a Passport." "Get a URL for fetching bytes" "Get a URL for fetching bytes through POST'ing a Passport"

image
rykahsay commented 2 months ago

I have tried implement the 1st API, please see below:

https://dsapi.tst.glygen.org/

image image
ReneRanzinger commented 2 months ago

@senaarpinar Robel is trying to implement the DRS for GlyGen. Can you help him based on what you remember from the array DRS?

senaarpinar commented 2 months ago

I have implemented 3 APIs: /ga4gh/drs/v1/service-info /ga4gh/drs/v1/objects/\<object-id> to return a DRS object /ga4gh/drs/v1/objects/\<object-id>/access/\<access-id> to return an AccessURL object ({"headers": [], "url":"string"}). GET request with the returned url returns the bytes of the file. In our case, headers are empty.

If you need additional information about the returned objects, I can provide them. One requirement for the DRS server was this part: /ga4gh/drs/v1/ Not sure if anything has changed based on latest versions.

My implementation can be found here

rykahsay commented 1 month ago

@senaarpinar ... can you please share the response objects for each of your APIs? I tried to follow the link but it is a github code repo not a swagger page where I can test your APIs.

senaarpinar commented 1 month ago

@rykahsay Here is the link to the swagger page:

https://glygen.ccrc.uga.edu/ggarray/api/swagger-ui/index.html#/drs-server

The response objects for each API:

{
  "id": "org.glygen.array",
  "name": "Glycan Array Repository DRS API",
  "type": {
    "group": "org.ga4gh",
    "artifact": "drs",
    "version": "1.0.0"
  },
  "description": "This service provides implementation of DRS specification for accessing files for the datasets within Glycan Array Repository.",
  "organization": {
    "name": "University of Georgia",
    "url": "https://ccrc.uga.edu/"
  },
  "contactUrl": "mailto:glygenarray.api@gmail.com",
  "documentationUrl": "https://glygen.ccrc.uga.edu/ggarray/api/swagger-ui/index.html#/drs-server/",
  "createdAt": "2023-07-08T00:00:00.000+0000",
  "environment": "test",
  "version": "1.0.0"
}
{
  "checksums": [
    {
      "checksum": "0d35c54caea8f32c11f8191dcceb97a33196e90ef2e6f66e7ac7aba3cc3ba2eb",
      "type": "sha-256"
    }
  ],
  "created_time": "2023-09-05T19:06:56+0000",
  "id": "1671603498623",
  "mime_type": "application/json",
  "name": "WT-VCC_10ug_14518_V5.0_DATA.xls",
  "self_uri": "drs://glygen.ccrc.uga.edu/ggarray/api/1671603498623",
  "size": 4469761,
  "access_methods": [
    {
      "access_id": "1671603498623",
      "type": "https"
    }
  ]
}
{
  "url": "https://glygen.ccrc.uga.edu/ggarray/api/array/public/download?fileFolder=/uploads/AD3860217&fileIdentifier=1671603498623.xls"
}
rykahsay commented 1 month ago

The three APIs are:

And the swagger page is: https://dsapi.tst.glygen.org/