API
Documentation Map
-
API Reference
-
Channel:
stable -
Source repo:
JaddaHelpifyr/jhf-web
API
Public Dynamic Surfaces
This repo intentionally exposes only a very small dynamic surface.
GET /health
- auth: none
- purpose: minimal liveness/status signal for the Pages runtime
- response shape:
{
"ok": true,
"status": "ok",
"tool_key": "jhf-web",
"legacy_slugs": ["jadda-web", "solarisara-web"],
"runtime_kind": "website",
"public_base_url": "https://helpifyr.com",
"request_path": "/health",
"checks": {
"pages_function_runtime": true,
"turnstile_secret_configured": true,
"contact_webhook_configured": false
},
"checked_at": "2026-04-01T00:00:00.000Z"
}
GET /ready
- auth: none
- purpose: minimal readiness signal for the public website runtime
- response shape:
{
"ok": true,
"ready": true,
"tool_key": "jhf-web",
"legacy_slugs": ["jadda-web", "solarisara-web"],
"runtime_kind": "website",
"notes": [
"This readiness surface confirms that the website runtime is serving public routes."
],
"checks": {
"public_routes_expected": true,
"contact_intake_surface_present": true,
"turnstile_secret_configured": true,
"contact_webhook_configured": false
},
"checked_at": "2026-04-01T00:00:00.000Z"
}
POST /api/contact
- auth: Cloudflare Turnstile token plus server-side validation
- consumes:
application/jsonmultipart/form-data
- required fields:
nameemailinterestmessage
- contract source:
contracts/contact-intake.contract.json(contracts/contact-intake.contract.json)
Possible delivery outcomes:
webhookmailto_fallbackmailto
Example success response:
{
"ok": true,
"intake_id": "lead_1234567890_ab12cd34",
"delivery": "webhook",
"message": "Turnstile verified successfully and the intake was forwarded."
}
GET /version.json
- auth: none
- purpose: small machine-readable version and update visibility surface
- stability: stable
- source file:
version.json(version.json)
- validation path:
scripts/export-fabric-metadata.sh(scripts/export-fabric-metadata.sh)scripts/fabric-selfcheck.sh(scripts/fabric-selfcheck.sh)
Versioning
There is no dynamic /version endpoint. Version is currently exposed through:
package.jsonversion.json- Git commit on
main - exported metadata from
scripts/export-fabric-metadata.sh
Runtime surface regression scope
The fast runtime smoke path also validates:
GET /status.jsonGET /version.jsonGET /contracts/contact-intake.contract.json- negative
POST /api/contactpaths for:- missing required fields
- missing Turnstile token
- honeypot trigger
Reference contract:
contracts/public-runtime-surfaces.contract.json(contracts/public-runtime-surfaces.contract.json)docs/INTAKE_SECURITY_BOUNDARY.md(docs/INTAKE_SECURITY_BOUNDARY.md)