Uma aplicação desenvolvida durante estagio na Compass Uol com arquitetura de microsserviços.
O repositório está organizado nas seguintes pastas e arquivos principais:
- ms-event-management: Microsserviço para gerenciamento de eventos.
- ms-ticket-management: Microsserviço para gerenciamento de ingressos.
- docker-compose.yml: Arquivo para orquestração dos serviços utilizando Docker.
- Insomnia_Management_API.json: Arquivo com os endpoints da API para importação no Insomnia.
Antes de começar, certifique-se de ter instalado:
-
Clone o repositório:
git clone https://github.com/jowgaze/PbNovDes3_JonathaCarvalho.git cd PbNovDes3_JonathaCarvalho -
Utilize o Docker Compose para subir os serviços:
docker-compose up
-
Teste os endpoints utilizando localmente a documentação swagger completa:
- ms-event:
http://localhost:8080/swagger-ui/index.html#/ - ms-ticket:
http://localhost:8081/swagger-ui/index.html#/
- ms-event:
-
Teste os endpoints utilizando o Insomnia:
- Importe o arquivo
Insomnia_Management_API.jsonno Insomnia.
- Importe o arquivo
Endpoint: POST /br/com/compass/eventmanagement/v1/create-event
Requisição:
{
"name": "Linkin Park",
"dateTime": "2025-11-13T20:00:00Z",
"zipCode": "70070701"
}Respostas:
201 Created: Evento criado com sucesso
{
"id": "eventID",
"name": "Linkin Park",
"dateTime": "2025-11-13T20:00:00",
"address": {
"zipCode": "70070-701",
"street": "Setor SRPN",
"neighborhood": "Asa Norte",
"locality": "Brasília",
"state": "DF"
}
}404 Not Found: Endereço não encontrado422 Unprocessable Entity: Erro de validação de campo
Endpoint: PUT /br/com/compass/eventmanagement/v1/update-event/{id}
Requisição:
{
"name": "Linkin Park Cover",
"dateTime": "2025-11-13T22:00:00Z",
"zipCode": "70070701"
}Respostas:
204 No Content: Evento atualizado com sucesso404 Not Found: Evento ou novo endereço não encontrado409 Conflict: O evento possui ingressos vinculados422 Unprocessable Entity: Erro de validação de campo503 Service Unavailable: Serviço de ingressos indisponível
Endpoint: GET /br/com/compass/eventmanagement/v1/get-event/{id}
Respostas:
200 OK: Evento recuperado com sucesso404 Not Found: Evento não encontrado
Endpoint: GET /br/com/compass/eventmanagement/v1/get-all-events
Respostas:
200 OK: Lista de eventos recuperada com sucesso
Endpoint: GET /br/com/compass/eventmanagement/v1/get-all-events/sorted?direction=asc|desc
Parâmetros:
direction(opcional, padrãoasc): Ordenação crescente (asc) ou decrescente (desc).
Respostas:
200 OK: Eventos recuperados e ordenados com sucesso
Endpoint: DELETE /br/com/compass/eventmanagement/v1/delete-event/{id}
Respostas:
204 No Content: Evento excluído com sucesso404 Not Found: Evento não encontrado409 Conflict: O evento possui ingressos vinculados503 Service Unavailable: Serviço de ingressos indisponível
Endpoint: POST /br/com/compass/ticketmanagement/v1/create-ticket
Requisição:
{
"cpf": "89022747484",
"customerName": "Tatiana das Neves",
"customerMail": "neves.tatiana@mail.com",
"eventId": "eventID",
"brlAmount": "50",
"usdAmount": "10"
}Respostas:
- 201 Created - Ingresso criado com sucesso.
{
"id": "1",
"cpf": "89022747484",
"customerName": "Tatiana das Neves",
"customerMail": "neves.tatiana@mail.com",
"event": {
"id": "eventID",
"name": "Linkin Park",
"dateTime": "2025-11-13T20:00:00",
"address": {
"zipCode": "70070-701",
"street": "Setor SRPN",
"neighborhood": "Asa Norte",
"locality": "Brasília",
"state": "DF"
}
},
"brlAmount": "50",
"usdAmount": "10"
}- 404 Not Found - Evento não encontrado.
- 422 Unprocessable Entity - Erro de validação de campo.
- 503 Service Unavailable - Serviço de eventos ou RabbitMQ indisponível.
Endpoint: PUT /br/com/compass/ticketmanagement/v1/update-ticket/{id}
Requisição:
{
"cpf": "36312197255",
"customerName": "João Neves",
"customerMail": "neves.joao@mail.com",
"brlAmount": "50",
"usdAmount": "10"
}Respostas:
- 204 No Content - Ingresso atualizado com sucesso.
- 404 Not Found - Ingresso não encontrado.
- 422 Unprocessable Entity - Erro de validação de campo.
Endpoint: GET /br/com/compass/ticketmanagement/v1/get-ticket/{id}
Resposta:
- 200 OK - Ingresso encontrado.
- 404 Not Found - Ingresso ou evento não encontrado.
- 503 Service Unavailable - Serviço de eventos indisponível.
Endpoint: GET /br/com/compass/ticketmanagement/v1/get-ticket-by-cpf/{cpf}
Resposta:
- 200 OK - Lista de ingressos encontrados.
- 404 Not Found - Nenhum ingresso encontrado.
- 422 Unprocessable Entity - Erro de validação de CPF.
- 503 Service Unavailable - Serviço de eventos indisponível.
Endpoint: GET /br/com/compass/ticketmanagement/v1/check-tickets-by-event/{eventId}
Resposta:
{
"eventId": "eventId",
"hasTickets": true,
"error": "The event cannot be deleted because tickets have been sold."
}Códigos de resposta:
- 200 OK - Verificação realizada com sucesso.
Endpoint: DELETE /br/com/compass/ticketmanagement/v1/cancel-ticket/{id}
Códigos de resposta:
- 204 No Content - Ingresso cancelado com sucesso.
- 404 Not Found - Ingresso não encontrado.
Para o deploy, cada microsserviço tem um docker-compose próprio para rodar em instâncias diferentes, bastando apenas configurar as variáveis de ambiente para o Open Feign:
- TICKET_URL: host:port do microsserviço de ingressos.
- EVENT_URL: host:port do microsserviço de eventos.
Desenvolvido com 💻 e ☕ por jowgaze