Portal API: releases response wrong?

I’m tinkering with endpoints api at docs.icgc.org/portal/api-endpoints/

It seems that docs.icgc.org/portal/api-endpoints/#/releases has some errors.

First thing is that it returns only one Release, at least in the portal there are multiple releases available.

Second issue is that response does not contain all required fields. For some reason mutationCount is missing from the response.

My aim is to download all data in dcc.icgc.org/releases/ for one project. Is that portal api correct way to do this?

Hi @roope,

Currently the /releases endpoint only returns the current release. This has to do with the fact that our backend doesn’t store the history of this metadata across releases.

To download all files for a project, you can do this in advanced search by selecting the project code in the facet pane and then clicking on:

Alternatively, you can download the static file equivalent by querying:

https://dcc.icgc.org/api/v1/download/info?recursive=true&flatten=true&fields=name

or

https://dcc.icgc.org/api/v1/download/info/release_23/Projects/UCEC-US?recursive=true&flatten=true&fields=name

and selecting all files under a particular path

Bob

Hi Bob,

I managed to download data using your advises, thank you.

Coming back to the

Second issue is that response does not contain all required fields. For some reason mutationCount is missing from the response.

There are also other fields across the API that are required fields but are missing from response.

I am using python package bravado for using your swagger API like this:

from bravado.client import SwaggerClient
from bravado.requests_client import RequestsClient
def get_client():
    config = {
        "validate_responses": False}
    http_client = RequestsClient()
    client = SwaggerClient.from_url(
        'https://dcc.icgc.org/api/swagger.json',
        http_client=http_client,
        config=config)
    return client

When fetching data it failed for some calls because of the required fields missing so i disabled checking using validate_responses attribute. Im not sure how relevant changing the api for this is but just fyi.

Api bugs:

Bug 1:

docs.icgc.org/portal/api-endpoints/#!/download/listDirectory

When using listDirectory for testing API it encodes the dir attribute and therefore does not work.

Example when dir is /current

dcc.icgc.org/api/v1/download/info%2Fcurrent?recursive=false&flatten=false

Should be

dcc.icgc.org/api/v1/download/info/current?recursive=false&flatten=false

If using current it works for some odd reason

dcc.icgc.org/api/v1/download/infocurrent?recursive=false&flatten=false

Bug 2

When calling dcc.icgc.org/api/v1/download/info/current?recursive=true&flatten=true , date and size fields are switched.

Let me know if there is some better way to report possible bugs.

Best regards,
Roope

Thanks for the bug report. Sorry for the delay, I will take a look at this tomorrow and report back.

The first issue above is related to Swagger UI and the Swagger spec. See Properly encode slashes in path parameters by gwicke · Pull Request #280 · swagger-api/swagger-js · GitHub for details.

Also, it seems this is related:

I have done some tests with Tomcat 7 and found that it does not accept %2F in the path of the URL: it returns HTTP status code 400 “Bad Request”. If I pass %2F in a parameter is works fine. If I use %2C in the URI is gets converted to ‘,’ so Tomcat really handles %2F in a special way.

There is a workaround, but since it is a security risk I don’t think I’m going to apply it:

The second item is indeed a bug. I’ve fixed it and should be released soon.

Thanks again!

Bug 2 fixed and deployed.