Skip to main content
The iii-http worker exposes your functions as HTTP endpoints, turning a function into a REST route without standing up a separate web server.
iii worker add iii-http
This page is a quick tour. For path patterns, methods, headers, and response handling, see the iii-http worker docs.

Create endpoints

The http worker exposes an http trigger type that binds a function to an HTTP method and path; the function then runs on every matching request. Here is the full path from a running engine to a live endpoint.
  1. Start the engine, if it isn’t already running:
iii --config config.yaml
  1. In a worker, register the function you want to expose and bind an http trigger to it. If you do not have a worker yet, scaffold one with iii worker init, then edit its source. The handler receives the request (body, headers, method) and its return value becomes the response:
iii worker init my-worker --language typescript
import { registerWorker } from "iii-sdk";

const url = process.env.III_URL;
if (!url) throw new Error("III_URL must be set");
const worker = registerWorker(url, { workerName: "my-worker" });

worker.registerFunction("http::add", async (payload: { body: { a: number; b: number } }) => ({
  status_code: 200,
  body: { c: payload.body.a + payload.body.b },
  headers: { "Content-Type": "application/json" },
}));

worker.registerTrigger({
  type: "http",
  function_id: "http::add",
  config: { api_path: "/math/add", http_method: "POST" },
});
  1. Add the worker to start it, pointing at its directory:
iii worker add ./my-worker
For path patterns, request and response shapes, and the other configuration options, see the iii-http worker docs.

Calling the endpoint

Once the trigger is registered, call the path on the engine’s HTTP port (3111 by default):
# call the exposed function
curl -X POST http://localhost:3111/math/add -H 'content-type: application/json' -d '{"a":2,"b":3}'