{"name":"alined-backend","status":"ok","endpoints":{"GET /healthz":"liveness","GET /api/contour/health":"contour CORS configuration","GET /api/contour/try":"browser page: trace a sheet and cut it into planes","POST /api/contour/try":"upload an image file, get the { imageBase64 } body the other POSTs take","POST /api/contour/candidates":"stage 1: every traced stroke (?overlay=1 for a PNG)","POST /api/contour/regions":"the sheet cut into planes","GET /api/auth/username-available":"whether a username is free: 200 free, 404 taken (the signup form checks while typing)","POST /api/auth/signup":"create an account and sign it in; sets the refresh cookie","POST /api/auth/signin":"sign in with a username, email or phone; sets the refresh cookie","POST /api/auth/guest":"start a guest session; sets the refresh cookie","POST /api/auth/refresh":"a new access token from the refresh cookie","POST /api/auth/signout":"end the session on every device and clear the cookie","GET /api/orgs":"the signed-in user's workspaces, with their role in each (Authorization: Bearer)","GET /api/projects?orgId=":"a workspace's projects, most recently updated first (Authorization: Bearer)","POST /api/projects":"create a project in a workspace (Authorization: Bearer)","PATCH /api/projects/:id":"rename a project (Authorization: Bearer)","DELETE /api/projects/:id":"delete a project and its drawing files (Authorization: Bearer)","GET /api/drawings/:projectId":"a project's drawing and its version (Authorization: Bearer)","PUT /api/drawings/:projectId":"save a drawing under the version lock, optionally with a revision (Authorization: Bearer)","GET /api/telemetry/consent":"whether the signed-in user's sessions are collected (Authorization: Bearer)","PUT /api/telemetry/consent":"turn session collection on or off (Authorization: Bearer)","POST /api/telemetry/sessions":"upload one finished session as gzipped JSONL (Authorization: Bearer)","GET /api-docs":"API documentation (Swagger UI)","GET /api-docs/openapi.json":"the OpenAPI document"}}