{"openapi":"3.0.0","info":{"title":"Qampo API","version":"1.0.0","description":"API de coleta em campo: autenticação, pesquisas, coletor, respostas, sync e auditoria."},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{}},"paths":{"/health":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/auth/login":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/auth/register":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/auth/me":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/surveys":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/responses":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/sync/push":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/collector/surveys":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/media":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/media/presign":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/dashboard/stats":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/dashboard/activity":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/dashboard/trends":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/audit-logs":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/clients":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/projects":{"get":{"responses":{"200":{"description":"Default Response"}}},"head":{"responses":{"200":{"description":"Default Response"}}},"trace":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}},"options":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/surveys/{id}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"head":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"trace":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"options":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/health":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/auth/clerk/session":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/auth/login":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/auth/register":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/auth/me":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/auth/organization":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys":{"post":{"responses":{"200":{"description":"Default Response"}}},"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/archive":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/unarchive":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/responses/export":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/exports":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/exports/{jobId}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"jobId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/crosstab":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/versions":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/versions/latest":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/quota-cells":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/assignments":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/surveys/{id}/assignments/{userId}":{"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"userId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/survey-templates":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/survey-templates/{id}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/collector/surveys":{"get":{"tags":["collector"],"description":"Lista instrumentos publicados para coleta. Query `locale` opcional aplica traduções server-side.","parameters":[{"schema":{"type":"string"},"in":"query","name":"locale","required":false,"description":"BCP-47, ex. en-US"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Default Response"}}}},"/v1/responses":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/sync/push":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/media/presign":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/media":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/dashboard/stats":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/dashboard/quota-progress":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/dashboard/activity":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/dashboard/trends":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/audit-logs":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/clients":{"get":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/projects":{"get":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/projects/{id}":{"put":{"tags":["projects"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/projects/{id}/members":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/public/surveys/{token}":{"get":{"tags":["public"],"description":"CAWI: instrumento publicado (sem auth). Perguntas normalizadas em lista plana. Query `locale` opcional.","parameters":[{"schema":{"type":"string"},"in":"query","name":"locale","required":false,"description":"BCP-47, ex. en-US"},{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/public/surveys/{token}/responses":{"post":{"tags":["public"],"description":"CAWI: envia resposta anônima (idempotente por sessionId)","parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/public/surveys/{token}/media":{"post":{"tags":["public"],"description":"CAWI: upload de foto (multipart). Query sessionId (UUID). Sem JWT.","parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/client-portal/me":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/client-portal/projects":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/client-portal/surveys":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/client-portal/surveys/{id}/summary":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/client-portal/surveys/{id}/export":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks":{"get":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks/{id}":{"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks/deliveries":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks/process-queue":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks/deliveries/{id}/retry":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks/{id}/test":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/supervisor/responses":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/supervisor/map-points":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/supervisor/responses/{id}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/supervisor/responses/{id}/review":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks/whatsapp":{"get":{"tags":["whatsapp"],"description":"Meta webhook verification (hub.challenge)","responses":{"200":{"description":"Default Response"}}},"post":{"tags":["whatsapp"],"description":"Meta WhatsApp inbound messages","responses":{"200":{"description":"Default Response"}}}},"/v1/notifications":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/notifications/unread-count":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/notifications/{id}/read":{"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/notifications/mark-all-read":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/exports/process-queue":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/exports/process-job":{"post":{"tags":["exports"],"description":"Processa um ExportJob por id — chamado pelo Worker consumidor CF Queues (X-Export-Worker-Secret)","responses":{"200":{"description":"Default Response"}}}},"/v1/metrics":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/organizations/current/settings":{"get":{"responses":{"200":{"description":"Default Response"}}},"patch":{"responses":{"200":{"description":"Default Response"}}}},"/v1/webhooks/clerk":{"post":{"tags":["clerk"],"description":"Clerk webhook (Svix): sync user/org to Prisma when CLERK_WEBHOOK_SECRET is set","responses":{"200":{"description":"Default Response"}}}},"/uploads/{*}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"*","required":true}],"responses":{"200":{"description":"Default Response"}}}}},"servers":[{"url":"http://localhost:8080"}]}