{"openapi":"3.0.0","info":{"title":"Eventra API","version":"1.0.0","description":"API multi-tenant para gestão de eventos e inscrições. Autenticação via cookie httpOnly `session` (JWT). Rotas `/api/public/*` não exigem autenticação."},"servers":[{"url":"http://localhost:3000","description":"Desenvolvimento"},{"url":"https://eventra.vercel.app","description":"Produção"}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"session","description":"Cookie httpOnly com JWT assinado. Obtido via POST /api/auth/login."}},"schemas":{"PersonType":{"type":"string","enum":["MEMBRO","CONVIDADO","VISITANTE"]},"Role":{"type":"string","enum":["MASTER","ADMIN","GESTOR","ATENDENTE"]},"EventVisibility":{"type":"string","enum":["PUBLIC","PRIVATE"]},"RegistrationStatus":{"type":"string","enum":["ACTIVE","CANCELED","REFUNDED"]},"InstallmentStatus":{"type":"string","enum":["PENDING","PAID","OVERDUE","CANCELED"]},"PaymentMethod":{"type":"string","enum":["CASH","PIX","CREDIT_CARD","DEBIT_CARD","BOLETO","TRANSFER","TRUST"]},"DependentRelationship":{"type":"string","enum":["FILHO_A","MAE","PAI","CONJUGE","SOGRO_A","SOBRINHO_A","ENTEADO_A","IRMAO_A","AVO_A","NETO_A","TIO_A","PRIMO_A","OUTRO"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"string","example":"Não autorizado"}}},"PaginatedCursor":{"type":"object","properties":{"nextCursor":{"type":"string","nullable":true,"description":"ID para usar como cursor na próxima página. null se não houver mais páginas."}}},"EventCategory":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"priceCents":{"type":"integer","description":"Preço em centavos"},"capacity":{"type":"integer","nullable":true}}},"Event":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"visibility":{"$ref":"#/components/schemas/EventVisibility"},"capacity":{"type":"integer"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"categories":{"type":"array","items":{"$ref":"#/components/schemas/EventCategory"}}}},"Person":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fullName":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string","nullable":true},"cpf":{"type":"string","nullable":true,"description":"CPF sem máscara"},"birthDate":{"type":"string","format":"date-time","nullable":true},"spouse":{"type":"string","nullable":true},"personType":{"$ref":"#/components/schemas/PersonType"},"consentGiven":{"type":"boolean"},"avatarUrl":{"type":"string","nullable":true},"zipCode":{"type":"string","nullable":true},"street":{"type":"string","nullable":true},"addressNumber":{"type":"string","nullable":true},"complement":{"type":"string","nullable":true},"neighborhood":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"Installment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer"},"amountCents":{"type":"integer"},"status":{"$ref":"#/components/schemas/InstallmentStatus"},"dueDate":{"type":"string","format":"date","description":"Apenas data, sem hora"},"paidAt":{"type":"string","format":"date-time","nullable":true},"invoiceId":{"type":"string","nullable":true,"description":"ID de agrupamento de parcelas do mesmo carnê"}}},"Payment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"provider":{"type":"string"},"amountCents":{"type":"integer"},"status":{"type":"string","enum":["PENDING","PAID","FAILED","REFUNDED"]},"paidAt":{"type":"string","format":"date-time","nullable":true}}},"Registration":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/RegistrationStatus"},"totalCents":{"type":"integer"},"checkInCode":{"type":"string"},"checkedInAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"person":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fullName":{"type":"string"},"email":{"type":"string"}}},"event":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"startsAt":{"type":"string","format":"date-time"}}}}},"User":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fullName":{"type":"string"},"email":{"type":"string","format":"email"},"role":{"$ref":"#/components/schemas/Role"},"active":{"type":"boolean"},"lastLoginAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}},"security":[{"cookieAuth":[]}],"paths":{},"tags":[]}