Upstream findings from the docs verification pass (2026-08-31)
Everything below was found while grounding docs.stateset.com in each server’s source and live
behaviour, and is already worked around in the docs (spec overlays in spec/overlays/,
generated pages, or corrected prose). Fixing it upstream lets the overlays shrink to zero and
keeps the published contracts honest at the source. One section per repo — each item is
paste-ready for an issue.
stateset-sync-server
src/openapi.rs references 67 component schemas it does not export (JobQueuedResponse,
WebhookResponse, PaginatedResponse, Order, ScheduleInfo, …): 67 operations’ responses
dangle, and 28 request bodies with them. The docs type them from the handler structs
(spec/overlays/sync.json) — the fix is registering the types in components(schemas(...)).
docs/SHOPIFY_NETSUITE_GETTING_STARTED.md predates POST /sync/netsuite and says there is no
built-in Shopify→NetSuite job; the code has one. The doc points at ACP instead.
next-temporal-rs
GET /v1/workflows/order-fulfillment/{id}/status returns Json<String>
("<status>:<phase>"), while docs/openapi.yaml declares WorkflowStatusResponse.
BRANDED_WORKFLOW_PREFIXES in events.rs omits order-fulfillment-, so a brand-scoped
key gets 400 on the event stream for its own workflow; the docs tell readers to use a global
key as a workaround.
- ~137 operations are
GenericObject in the exported spec, and 33 signal/cancel routes list a
200 they never return (they answer 202; api-key revoke answers 204).
stateset-phone-server (rust-phone-server)
- utoipa declares bare arrays for four list endpoints (
/callback-tasks, /operator-queues,
/operator-queues/stats, /supervisor-actions) whose handlers wrap in
{ok, tenant, count, …} envelopes.
- The published spec covers 61 tenant paths but not the agent-management plane
(
/voice/agents, /voice/phone-numbers, /voice/web-calls, /voice/calls, /api-keys)
that VOICE_ENGINE_API.md documents and the server serves.
stateset-sandbox
- The live
/openapi.json (43 ops) omits six routes the server serves behind auth
(tunnels ×3, inference, files/list, files/download, create-from-template — all verified 401).
- Registered paths vs express routers disagree in the checkout: OpenAPI registers
/files/write and /files/read; the routers in the current source serve those operations at
POST/GET /sandbox/:id/files. The live deploy answers both styles — the build and the
checkout have drifted.
POST /api/v1/webhooks returns 200; its own spec declares 201.
stateset-nsr
POST /api/v1/model/export is an always-501 (model_handlers.rs); ExportModelResponse
is dead code. The docs document the 501 honestly.
- The spec’s
/v1/decisions responses do not list the 503 fail-closed path that
errors.rs implements and the product story depends on.
- Several NSR spec parameters are declared
in: path for what the handlers read as query.
stateset-computer-use-agent
- The approval gate (
ApprovalPolicy/ApprovalRequest, awaiting_approval) is fully specified
in the API models and routes, but nothing in worker.py/agent/ constructs an
ApprovalRequest — the pause may not be wired in the deployed worker.
api.computer.stateset.app answers 503 on every path (docs mark it “being provisioned”).
stateset-agents
spec/sdk-surface.json in the docs pins @stateset/cli 1.28.0; source is 1.28.1 (surface
identical). The skill’s stateset heartbeat … example is accepted as natural language but no
heartbeat tool exists in src/tools.
- The API’s own spec
servers list names api.stateset.io / staging-api.stateset.io,
neither of which serves this API.
stateset-edi
stateset-edi/overview.mdx (docs, fixed) showed a JSON response for outbound 810; the
handler returns wire-ready X12 (application/edi-x12). Upstream: the utoipa annotation for
GET /v1/usage claims bare UsageSummary; the handler wraps it in {success, data, period}.
package.json says response-chat-widget / the admin docs imply @stateset/… naming; the
package is unpublished either way. The widget’s docs/ADMIN-API.md route table is accurate
(verified against src/server/admin).
Packages referenced by docs but not on npm (~16)
@stateset/icommerce-skills (repo name icommerce-skills — align before publishing),
@stateset/cctp-sdk, stateset-cctp, @stateset/client, @stateset/agent-sdk,
@stateset/acp, @stateset/types, ss-onboard-agent, and friends. Every referencing page
carries a “not yet published” note; this list is the publish checklist.
status.stateset.com is a 404 (docs now link the probed
host-status page instead).
prod-api.stateset.cloud.stateset.app (another session pointed api-reference/v1/* at it)
answers 503 — when it goes live, the docs adopt it (see memory: prod-api-host-candidate).
kb.stateset.com serves 401 on every path including /openapi.json — a real service with
no public contract; decide whether it is integrator-facing.
Last modified on August 31, 2026