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 inspec/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.rsreferences 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 incomponents(schemas(...)).docs/SHOPIFY_NETSUITE_GETTING_STARTED.mdpredatesPOST /sync/netsuiteand 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}/statusreturnsJson<String>("<status>:<phase>"), whiledocs/openapi.yamldeclaresWorkflowStatusResponse.BRANDED_WORKFLOW_PREFIXESinevents.rsomitsorder-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
GenericObjectin the exported spec, and 33 signal/cancel routes list a200they never return (they answer202; api-key revoke answers204).
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) thatVOICE_ENGINE_API.mddocuments 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/writeand/files/read; the routers in the current source serve those operations atPOST/GET /sandbox/:id/files. The live deploy answers both styles — the build and the checkout have drifted. POST /api/v1/webhooksreturns200; its own spec declares201.
stateset-nsr
POST /api/v1/model/exportis an always-501(model_handlers.rs);ExportModelResponseis dead code. The docs document the 501 honestly.- The spec’s
/v1/decisionsresponses do not list the503fail-closed path thaterrors.rsimplements and the product story depends on. - Several NSR spec parameters are declared
in: pathfor 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 inworker.py/agent/constructs anApprovalRequest— the pause may not be wired in the deployed worker. api.computer.stateset.appanswers 503 on every path (docs mark it “being provisioned”).
stateset-agents
spec/sdk-surface.jsonin the docs pins@stateset/cli1.28.0; source is 1.28.1 (surface identical). The skill’sstateset heartbeat …example is accepted as natural language but no heartbeat tool exists insrc/tools.- The API’s own spec
serverslist namesapi.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 forGET /v1/usageclaims bareUsageSummary; the handler wraps it in{success, data, period}.
response-chat-widget
package.jsonsaysresponse-chat-widget/ the admin docs imply@stateset/…naming; the package is unpublished either way. The widget’sdocs/ADMIN-API.mdroute table is accurate (verified againstsrc/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.
Platform
status.stateset.comis a 404 (docs now link the probed host-status page instead).prod-api.stateset.cloud.stateset.app(another session pointedapi-reference/v1/*at it) answers 503 — when it goes live, the docs adopt it (seememory: prod-api-host-candidate).kb.stateset.comserves 401 on every path including/openapi.json— a real service with no public contract; decide whether it is integrator-facing.