GSP workflow API and private project contract
Use bounded JSON APIs with CSRF, exact input revisions and organization authorization.
Browser-session API
Obtain the same-origin CSRF token from GET /api/session and send X-CSRF-Token with POST requests. Requests are capped at 64 KiB. No arbitrary URL, command, code or shell execution is accepted.
GET /api/gsp/sample
POST /api/gsp/workbench/run
POST /api/gsp/evidence/verify
POST /api/gsp/evidence/export
POST /api/gsp/composerPrivate projects
Verified members with owner or engineer roles can create projects and immutable input revisions. Viewers can inspect authorized results but cannot submit work. Revision conflicts return 409.
POST /api/engineering/projects
POST /api/engineering/projects/{project_id}/revisions
POST /api/engineering/projects/{project_id}/runs
GET /api/engineering/runs/{run_id}
GET /api/engineering/runs/{run_id}/exportIdempotency and limits
For run submission, use a unique 8–100-character Idempotency-Key. Reusing it with the same project and revision returns the same run. Reusing it for different work returns 409. Limits are four active runs per organization, 200 accepted runs per day and 100 active projects. These are local release policies, not purchased compute quotas.
Job states
Queued work is claimed atomically. Running work has a 45-second lease and at most two attempts after expiry. Completion, blocked constraints, controlled failure and cancellation are distinct. Revoked membership or an archived project causes output to be discarded. State and input identity are recorded in the audit trail.