Provide a Way to Monitor File Staging
In the last section, we described the file staging process, in which the Data Transfer System (DTS) asks your system to stage a set of files for transfer. The DTS makes a file staging request, and your system returns some sort of identifier that can be used to track the staging operation. In this section, we describe a staging status endpoint that the DTS can query using the unique staging identifier provided by the database.
This one's easy--your endpoint should accept a UUID that the DTS was given when it requested a staging operation for a set of specific files, and return information about the status of that operation.
Endpoint Recommendations
Create a REST endpoint that accepts an HTTP GET request with a UUID string
received from a prior POST request for a file staging operation. The endpoint
responds with a body containing a status field with a string value conveying
that the files are ready, or staging (for example).
Error codes should be used in accordance with HTTP conventions:
- A successful query returns a
200 OKstatus code - An improperly-formed request should result in a
400 Bad Requeststatus code - If the UUID provided in the request doesn't match any ongoing or completed
file staging operation, your endpoint should return a
404 Not Foundstatus code.
Example
Suppose now that we want to retrieve the status for the JGI Data Portal
file staging operation we requested in the last section
(UUID: 4b86e181-8c83-447e-aada-af9232af7da0). If the JDP endpoint is hosted at
example.com and is implemented according to our recommendations, we can send
the following GET request:
https://example.com/dts/staging?id=4b86e181-8c83-447e-aada-af9232af7da0
This results in a response with a 200 OK status code with the body
{
"status": "ready"
}
This response conveys to the DTS that the requested files have been copied into place within the file staging area, so their transfer can begin.
Existing implementations
The JDP's file staging status endpoint returns a very elaborate set of status information, most of which is not used by the DTS. As we've discussed in previous sections, the DTS prototype implementation repurposes a lot of existing endpoints for the JDP, and we are prepared to work with your organization to determine how best to wire your existing system into the DTS.