- Typescript
- Fastify
- Fastify/Cors
- Prisma
- SQLite
- Zod
- fastify-type-provider-zod
- Dayjs
- nodemailer
Create Trip - /trips
Padrão de corpo:
{
"destination": "string",
"starts_at": "string",
"ends_at": "string",
"owner_name": "string",
"owner_email": "string",
"emails_to_invite": "string"
}
Padrão de resposta:
{
"tripId": "string"
}
- 400 - Invalid trip start date
- 400 - Invalid trip end date
Create Link - /trips/:tripId/links
Padrão de corpo:
"body": {
"title": "string",
"url": "string",
},
"params": {
"tripId": "string"
}
Padrão de resposta:
{
"linkId": "string"
}
- 400 - Trip not found
Create Invite - /trips/:tripId/invites
Padrão de corpo:
"body": {
"email": "string"
},
"params": {
"tripId": "string"
}
Padrão de resposta:
{
"participantId": "string"
}
- 400 - Trip not found
Create Activity - /trips/:tripId/activities
Padrão de corpo:
"body": {
"title": "string",
"occurs_at": "string (Convertido para data)"
},
"params": {
"tripId": "string"
}
Padrão de resposta:
{
"activityId": "string"
}
- 400 - Trip not found
- 400 - Invalid activity date
Get Activities - /trips/:tripId/activities
Padrão de corpo:
"params": {
"tripId": "string"
}
Padrão de resposta:
return { "activities": "trip.activities" },
{
"id": "string",
"title": "string",
"occurs_at": "Date",
"trip_id": "string"
}
- 400 - Trip not found
Get Links - /trips/:tripId/links
Padrão de corpo:
"params": {
"tripId": "string"
}
Padrão de resposta:
return { "links": "trip.links" },
{
"id": "string",
"title": "string",
"url": "string",
"trip_id": "string"
}
- 400 - Trip not found
Get One Participant - /participants/:participantId
Padrão de corpo:
"params": {
"participantId": "string"
}
Padrão de resposta:
{
"id": "string",
"is_confirmed": "boolean",
"name": "string | null",
"email": "string"
}
- 400 - Participant not found
Get Participant - /trips/:tripId/participants
Padrão de corpo:
"params": {
"tripId": "string"
}
Padrão de resposta:
return { "participants": "trip.participants" }
{
"id": "string",
"is_confirmed": "boolean",
"name": "string | null",
"email": "string"
}
- 400 - Trip not found
Get Trip - /trips/:tripId
Padrão de corpo:
"params": {
"tripId": "string"
}
Padrão de resposta:
{
"destination": "string",
"starts_at": "Date",
"ends_at": "Date",
"id": "string",
"is_confirmed": "boolean"
}
- 400 - Trip not found
Confirm Trip - /trips/:tripId/confirm
Padrão de corpo:
"params": {
"tripId": "string"
}
Padrão de resposta:
"return reply.redirect(`${env.API_BASE_URL}/trips/${tripId}`)"
- 400 - Trip not found
Confirm Participant - /participants/:participantId/confirm
Padrão de corpo:
"params": {
"tripId": "string",
"participantId": "string"
}
Padrão de resposta:
"return reply.redirect(`${env.WEB_BASE_URL}/trips/${participant.trip_id}`)"
- 400 - Participant not found
Update Trip - /trips/:tripId
Padrão de corpo:
"body": {
"destination": "string",
"starts_at": "string (Convertido para data)",
"ends_at": "string (Convertido para data)"
},
"params": {
"tripId": "string"
}
Padrão de resposta:
{
"tripId": "string"
}
- 400 - Trip not found
- 400 - Invalid trip start date
- 400 - Invalid trip end date
Mailtrap.io - Caso no futuro eu queira testar o envio de emails em uma aplicação de forma gratuita