Secure integration and documentation hosting
The documentation project contains zero secrets. Your production integration keeps tenant credentials server-side and hands the browser only scoped, expiring capabilities.Least privilege
Use separate test and live keys with a named scope. Reserve publication and
release operations for verified owner/admin sessions.
Opaque identifiers
Keep emails, account IDs, tokens, answers, and report content out of URLs,
idempotency headers, logs, analytics, and referrers.
Explicit consent
Use the published consent version and purpose. Optional reusable-profile
consent is separate from assessment consent.
Revocable access
Rotate environment and webhook secrets. Use expiring participant and report
tokens rather than durable bearer links.
Mintlify deployment boundary
apps/docscontains public MDX, branding assets,docs.json, and a public OpenAPI deployment copy. It contains no application server or request-time secret access.- The canonical OpenAPI file is committed and checked against
shared/openapi.jsonbefore release. - The API playground is disabled. Generated endpoint pages cannot collect a key, execute a mutation, or proxy an authenticated request.
- Run
SYNAPSE_ENVIRONMENT_KEYoperations only from your authenticated product backend. - If an embedded participant client calls the API directly, allow the exact host origin in Synapse CORS and in the product site’s Content Security Policy.
Production checklist
- Use live only after managed approval; keep test and live data, keys, webhooks, and program IDs separate.
- Authenticate the host user before subject sync or session creation. Never accept an arbitrary external ID from the browser.
- Persist opaque idempotency IDs and handle
409,429, timeouts, and ambiguous responses without inventing a new key. - Mask assessment pages in product analytics and disable session replay on assessments and reports.
- Exercise deletion and export, legal holds, webhook replay, secret rotation, quota alerts, and restore runbooks before real participant data.
- Keep package, SDK, OpenAPI, and server versions aligned through the release bundle.
Documentation release checklist
- Run
npm run sync:openapi --workspace @apart-ai/synapse-docsonly when the canonical API contract intentionally changes. - Run
npm run check:docsbefore pushing. - In Mintlify, configure the monorepo content path as
/apps/docs. - Verify the GitHub App deployment check is green.
- Configure
synapse-docs.apart.ioin the Mintlify dashboard before adding the Cloudflare CNAME.