Developer portal

How to drive this platform from another program: create an application, deploy a compose file to it, and read back the address the result answers on.

This is the contract for a machine consumer — a service that manages applications on somebody's behalf, continuously, with no person at the keyboard for any given call. Everything here is reachable with an API token and nothing else. There is no session, no CSRF, and no HTML in the path.

Page What it covers
Authentication Getting a token, and what it can do
Applications and deploys Create, upload a bundle, set variables, watch a revision
Published ports Asking for a port, or being given one
Reading an address Where a deployed service actually answers

Every example here is a test

The request and response bodies on these pages are not written by hand. Each one is a fixture under tests/contracts/api/, compared byte-for-byte against a live response by the test suite, and this portal renders the same file. A documented example that stopped being true is a failing build rather than a page nobody noticed — the same technique the /health contract already uses after a documented shape and an asserted shape drifted apart for a day.

That means you can copy anything on these pages and expect it to match what you get, down to the null fields.

The shape of the API

Two prefixes, both bearer-token only:

Prefix For
/cli/… Everything a consumer drives: organizations, applications, variables, endpoints
/applications/{slug}/bundle The compose + build-context upload that creates a revision

API Platform's /api also exists, and is not what you want: it sits on the session firewall, so a token cannot reach it.

Base URL and versioning

Every path on these pages is relative to the install you are talking to — https://someones.computer for the public one. There is no version prefix. The contract grows by adding fields; a consumer must ignore fields it does not recognise rather than failing on them, because new ones will appear.

This contract is tested: 5,023 tests in 511 classes, held at 100% line coverage by CI, plus 103 end-to-end browser flows across 43 specs.