JESS MOVEAPI console

For testing a deployment

Send it a real request.

Every other page on this site is static. This one talks to a running API. Point it at localhost, at staging, or at production, and read what comes back — including the two behaviours worth checking on any deploy: that a person who cannot move gets an explicit hold rather than a movement, and that a child gets no body metrics even with the consent flag set to true.

API base URL

The API must list this page’s origin in CORS_ORIGINS, or the browser will block the request before it leaves.

Health

GET

/health · expects 200

Liveness, plus which AI providers are configured.

System invariants

GET

/system · expects 200

The operating system’s rules, machine-readable.

AI providers

GET

/ai/providers · expects 200

Configuration and resolved model names. Staff session required — 401 here is the guard working.

Publishing gate

GET

/movements/gate · expects 200

The five-variant contract, in full.

The core call — next best movement

POST

/prescriptions/next · expects 201

Returns a movement with its dose, its reason and the context decision that authorised it.

The same call, while driving

POST

/prescriptions/next · expects 201

Must return an explicit hold rather than a movement — and it is still a success, not an error.

Body assessment — adult, opted in

POST

/body/assess · expects 201

Returns a pathway and, because this adult opted in, the metrics.

Body assessment — child, consent set to true

POST

/body/assess · expects 201

The consent flag is deliberately true. A correct deployment still returns CHILD_GROWTH with metrics null, because the switch is not consulted below 18.

A malformed request

POST

/prescriptions/next · expects 400

Must be a 400 that names the offending fields — never a 500.

Price an action before running it

POST

/acu/quote · expects 201

The Cost Governor, quoting a cheap agent call.

Editorial — which topic cluster is thinnest

GET

/blog/agent/gaps · expects 200

What the SEO agent gets commissioned against next. Emptiest cluster first.

Record a blog view

POST

/blog/views · expects 201

No cookie and no identifier in the payload. The address is hashed server-side with a salt that rotates daily.

Publish an agent draft with no reviewer

POST

/blog/posts/rules-in-postgresql/status · expects 400

Must be refused. An agent cannot put words on a health site without a named person having read them.

The same checks run headless in CI and from scripts/smoke.sh. This page exists so somebody without a terminal can verify a deployment too. See the developer reference for the full endpoint list.