WORK IN PROGRESS | Services are in active development and are subject to change


The Remote Job Submission API enables integration of Charity Engine as a backend service and provides functions for managing the entire lifecycle of jobs submitted to the network.

See Computing with Charity Engine for a contextual overview of the Charity Engine ecosystem (including additional interfaces such as Remote CLI, Ethereum Smart Contract, and Ethereum Dapp).


Contents


General Usage

The endpoint for all calls is: https://api.charityengine.services/remotejobs/v2/ 

Server-side implementation is in active development and may change.

The endpoint accepts a JSON payload within a POST request, unless otherwise specified.

Also see External APIs, which lists APIs that the Remote API is able to call.

API definition

External APIs (draft)

Charity Engine can call the following API endpoints upon circumstances outlined in this document. An HTTP POST request with JSON payload will be dispatched to a URL hosted by the compute provider or other external services.

HTTP Basic authorization for API endpoint URLs is supported.

compute-launch

When compute capacity is purchased on the Charity Engine marketplace, Charity Engine can call a compute provider’s API endpoint to launch reserved compute capacity.

Parameters

ComputeCapacity[] capacity // List of ComputeCapacity objects, one per instance type that is being reserved.
float duration // Maximum number of hours the compute capacity is reserved for. Compute payloads may exit early. 


Expected results

int count // Number of successfully launched instances.
string error // Error message, if any. Optional.

Testing + Troubleshooting

Testing via CURL

To use cURL to submit a job from a .json file:

$ curl -v "content-type: application/json" https://api.charityengine.services/remotejobs/v2/job-create -d @example-job-create.json

Contents of the POST data (example-job-create.json file):

{
  "authenticator":"c503d86bc4e82d9415cb5912a0986c80",
  "app":"charityengine:wolframengine",
  "commandLine":"math 2+2 > output/out.txt",
  "specs": {
    "vcpus":2,
    "ram": 512,
    "disk": 512,
    "networkDownload": 0,
    "networkUpload": 0
  },
  "hours": 1,
  "inputFiles": [
    {
      "filename": "in.txt",
      "url": "http://work.charityengine.com/rytis/mathtest.m"
    }
  ]
}

Troubleshooting

If trouble occurs on the execution node, it can be helpful to set the useOwnDevices parameter to true during job-create. This causes the job to be given to a node operated by the account that submitted the job, rather than sending it out to other qualified nodes in the Charity Engine device pool.

The useOwnDevices parameter requires signing up as a Charity Engine volunteer and having a running client.

  • No labels