Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

databox-export-service - export service for databox platform Build Status


core-export-service is distributed under the MIT license.



Build your own docker image:

docker build -t <image name> .

export-service can be installed with opam:

opam pin -n add export-service
opam install export-service

The docker container solution is recommended, as there are extra system dependencies and local package pins to make it work for the opam installation. All of this has been taken care of by steps in Dockerfile.


This service exposes two endpoints, /export and /lp/export. The /export endpoint provides the basic export functionality, you'll get instant response when querying it, either it be the state of your export request or you'll get the export response if already fulfilled. And /lp/export, as suggested by its name, is the long polling version of the service. For now, no matter which endpoint you are using, the export requests will be put into the same queue and get serviced accordingly.

Method   : POST
URL      : /export or /lp/export
Parameter: JSON object that has the format {id: <request id>, uri: <destination url>, data: <export data>}
Response : JSON object with the format {id: <request id>, state: <request state>, ext_response: <response>}

When making a query to these endpoints, make sure there is a X-Api-Key header included, it contains an arbiter-minted macaroon.

The service will use id field in request parameter to differentiate between a newly submitted export request and a polling action about some previously submitted one. If the field is left as an empty string, it will be treated as a new export request, and the export service will put it in a queue and generate its unique id, and include the id in the reponse JSON object. The data field will be parsed as a stringified JSON object.

The client could query the state of its request by including the service provided id. The state is of string type, and could be one of "Pending", "Processing", and "Finished". If the state is "Finished", the ext_response field will be a JSON object as {status: <status code>, body: <response body>}.