{
  "ok": true,
  "service": "Smokevent Pro SaaS API Production",
  "version": "0.9.4-stage123-v4-9-2-ticket-delivery",
  "environment": "production",
  "message": "Smokevent Pro SaaS API Stage123 V4.3.2 is running with unified office locks, immediate site materialisation, structured smoke-control engineer sign-off, original application report rendering and independent PDF archive.",
  "mode": "tenant/licence + company seat management + shared office database + protected cloud portal app",
  "publicUrls": {
    "website": "https://www.smokeventpro.com",
    "portal": "https://portal.smokeventpro.com",
    "api": "https://api.smokeventpro.com",
    "platform": "https://platform.smokeventpro.com"
  },
  "endpoints": [
    "GET /health",
    "GET /login",
    "GET /activate/{inviteCode}",
    "GET /company-setup/{setupCode}",
    "GET /platform-admin",
    "GET /setup",
    "GET /debug/bindings",
    "POST /dev/create-company",
    "POST /dev/bootstrap-admin-device",
    "GET /dev/companies",
    "POST /dev/create-plan",
    "POST /dev/set-subscription",
    "GET /dev/licence-status?tenantId=tenant_demo_company_a",
    "POST /dev/issue-device-token",
    "GET /auth/whoami",
    "GET /db/status",
    "GET /db/companies",
    "GET /db/customers",
    "POST /db/customers/upsert",
    "GET /db/sites?customerId=...",
    "GET /db/assets?siteId=... (cursor-paged live register)",
    "GET /db/assets/detail?assetId=...",
    "GET /editing/locks/status?resourceType=site|ticket&resourceId=...",
    "POST /editing/locks/acquire",
    "POST /editing/locks/renew",
    "POST /editing/locks/release",
    "POST /editing/locks/takeover",
    "GET /db/assets/detail?assetId=...",
    "GET /db/assets/media?assetId=...",
    "GET /workflow/ticket-signatures?ticketId=...",
    "POST /workflow/office-signoff/materialise-assets",
    "POST /db/sites/upsert",
    "GET /db/tickets?siteId=...",
    "POST /db/tickets/upsert",
    "GET /site-documents?customerId=...&siteId=...&ticketId=...",
    "POST /site-documents/create-upload",
    "PUT /site-documents/put?token=...",
    "POST /site-documents/update",
    "POST /site-documents/delete",
    "POST /site-documents/ticket-links",
    "POST /site-documents/create-download",
    "GET /engineer/site-documents?ticketId=...",
    "GET /company-admin/users-seats",
    "GET /company-admin/device-sessions",
    "POST /company-admin/device-sessions/revoke",
    "POST /company-admin/invites/create",
    "POST /company-admin/invites/revoke",
    "POST /company-admin/users/status",
    "POST /company-admin/seats/release",
    "POST /engineer/site-documents/create-download",
    "POST /engineer/site-documents/acknowledge",
    "GET /engineer/db-tickets",
    "GET /gdpr/retention-policies",
    "POST /gdpr/retention-policies",
    "GET /gdpr/breach-register",
    "POST /gdpr/breach-register",
    "GET /gdpr/processor-register",
    "POST /gdpr/processor-register",
    "POST /admin/database-backup/create",
    "GET /admin/database-backups",
    "GET /admin/database-backup/download?backupId=...",
    "POST /admin/database-restore/preview",
    "POST /admin/database-restore/apply",
    "POST /admin/database-restore/rollback",
    "GET /admin/database-restore/status",
    "GET /field-test/nda/status?ndaVersion=...",
    "POST /field-test/nda/upload",
    "PUT /field-test/nda/upload",
    "GET /platform/field-test/ndas",
    "POST /platform/field-test/nda/download",
    "GET /platform/field-test/nda/file?ndaId=...",
    "GET /platform/field-test/nda/pdf?ndaId=...",
    "POST /platform/field-test/nda/mark-reviewed",
    "POST /tickets/create",
    "GET /engineer/my-tickets",
    "GET /engineer/closed-status",
    "POST /engineer/accept-ticket",
    "POST /engineer/decline-ticket",
    "POST /engineer/download-ticket",
    "POST /engineer/close-incomplete-ticket",
    "POST /engineer/upload-return",
    "POST /engineer/create-return-media-upload",
    "PUT /engineer/put-return-media",
    "POST /engineer/upload-return-media",
    "POST /office/create-return-media-download",
    "GET /office/get-return-media",
    "POST /office/download-return-media",
    "POST /packages/create-manifest",
    "GET /packages/get-manifest",
    "POST /packages/create-part-upload",
    "PUT /packages/put-part",
    "POST /packages/create-part-download",
    "GET /packages/get-part",
    "GET /sync/changes?sinceVersion=0",
    "GET /sync/active",
    "POST /sync/cleanup",
    "GET /sync/status?transferId=...",
    "POST /sync/ack",
    "POST /sync/mark-step",
    "GET /office/ticket-responses",
    "GET /office/acceptance-responses",
    "GET /office/ticket-acceptance",
    "GET /office/responses",
    "GET /office/returns?controlTest=1&runId=...",
    "POST /office/download-return",
    "POST /control-test/cleanup",
    "POST /office/mark-imported",
    "POST /office/close-ticket",
    "GET /workflow/pdfs?customerId=...&siteId=...",
    "POST /workflow/pdf/jobs",
    "GET /workflow/pdf/jobs/status?jobId=...",
    "GET /workflow/pdf/download?pdfId=...&inline=1",
    "POST /workflow/pdf/promote-assets",
    "GET /calendar/events?from=2026-06-01&to=2026-06-30",
    "POST /calendar/events/upsert",
    "POST /calendar/events/delete",
    "POST /calendar/sync",
    "GET /calendar/settings",
    "POST /calendar/settings",
    "POST /dev/create-user",
    "POST /dev/create-default-seats",
    "POST /dev/assign-seat",
    "POST /dev/remove-seat-assignment",
    "POST /dev/force-expire-cooldown",
    "GET /dev/company-state?tenantId=tenant_demo_company_a"
  ],
  "timestamp": "2026-07-28T18:00:56.851Z"
}