API para o gerenciamento de viagens, incluindo a criação e administração de clientes, hospedagens, passagens, pacotes turísticos e reservas. Desenvolvida com C#, .NET 6 e SQL Server.
- Framework: .NET 6.0
- ORM: Entity Framework Core
- Banco: SQL Server e SQLite
- Documentação e teste: Swagger e Postman
- Ferramentas de Design e CLI
- IDE: Visual Studio
- Versionamento: Git
- Deploy: Somee
Antes de iniciar, certifique-se de ter os seguintes pacotes instalados:
- .NET 6
- SQL Server
git clone https://github.com/svhellen/api_vivaviatravel2.0.git
cd api_vivaviatravel2.0
-
Criar Cliente:
POST /api/cliente
- Request body:
{ "nome": "nome cliente", "email": "[email protected]", "senha": "senha123", "telefone": "(11) 98765-4321" }
- resposta: Status 201 (Created)
- Request body:
-
Obter todos os Clientes:
GET /api/cliente
- body:
[ { "clienteId": 0, "nome": "nome cliente", "email": "[email protected]", "senha": "senha123", "telefone": "(11) 98765-4321" }, ... ]
- resposta: Status 200 (OK)
- body:
-
Obter Cliente por ID:
GET /api/cliente/{id}
- body:
{ "clienteId": 0, "nome": "nome cliente", "email": "[email protected]", "senha": "senha123", "telefone": "(11) 98765-4321" }
- resposta: Status 200 (OK)
- body:
-
Atualizar Cliente:
PUT /api/cliente/{id}
- Request body:
{ "clienteId": 0, "nome": "nome cliente", "email": "[email protected]", "senha": "senha123", "telefone": "(11) 98765-4321" }
- resposta: Status 204 (No Content)
- Request body:
-
Excluir Cliente:
DELETE /api/cliente/{id}
- resposta: Status 204 (No Content)
-
Criar Hospedagem:
POST /api/hospedagem
- Request body:
{ "nomeHotel": "Hotel Copacabana Palace", "descricao": "Um hotel luxuoso na famosa praia de Copacabana, oferecendo vistas deslumbrantes do oceano.", "localizacao": "Rio de Janeiro - RJ", "avaliacao": 4.9, "precoDiaria": 350, "imagemUrl": "/images/hoteis/hotel-5.jpg" }
- Resposta: Status 201 (Created)
- Request body:
-
Obter todas as Hospedagens:
GET /api/hospedagem
- Resposta:
[ { "hospedagemId": 1, "nomeHotel": "Hotel Copacabana Palace", "descricao": "Um hotel luxuoso na famosa praia de Copacabana, oferecendo vistas deslumbrantes do oceano.", "localizacao": "Rio de Janeiro - RJ", "avaliacao": 4.9, "precoDiaria": 350, "imagemUrl": "/images/hoteis/hotel-5.jpg" }, ... ]
- Resposta: Status 200 (OK)
- Resposta:
-
Obter Hospedagem por ID:
GET /api/hospedagem/{id}
- Resposta:
{ "hospedagemId": 1, "nomeHotel": "Hotel Copacabana Palace", "descricao": "Um hotel luxuoso na famosa praia de Copacabana, oferecendo vistas deslumbrantes do oceano.", "localizacao": "Rio de Janeiro - RJ", "avaliacao": 4.9, "precoDiaria": 350, "imagemUrl": "/images/hoteis/hotel-5.jpg" }
- Resposta: Status 200 (OK)
- Resposta:
-
Atualizar Hospedagem:
PUT /api/hospedagem/{id}
- Request body:
{ "hospedagemId": 1, "nomeHotel": "Hotel Copacabana Palace", "descricao": "Um hotel luxuoso na famosa praia de Copacabana, oferecendo vistas deslumbrantes do oceano.", "localizacao": "Rio de Janeiro - RJ", "avaliacao": 4.9, "precoDiaria": 350, "imagemUrl": "/images/hoteis/hotel-5.jpg" }
- Resposta: Status 204 (No Content)
- Request body:
-
Excluir Hospedagem:
DELETE /api/hospedagem/{id}
- Resposta: Status 204 (No Content)
-
Criar Passagem:
POST /api/passagem
- Request body:
{ "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }
- Resposta: Status 201 (Created)
- Request body:
-
Obter todas as Passagens:
GET /api/passagem
- Resposta:
[ { "passagemId": 1, "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }, ... ]
- Resposta: Status 200 (OK)
- Resposta:
-
Obter Passagem por ID:
GET /api/passagem/{id}
- Resposta:
{ "passagemId": 1, "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }
- Resposta: Status 200 (OK)
- Resposta:
-
Atualizar Passagem:
PUT /api/passagem/{id}
- Request body:
{ "passagemId": 1, "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }
- Resposta: Status 204 (No Content)
- Request body:
-
Excluir Passagem:
DELETE /api/passagem/{id}
- Resposta: Status 204 (No Content)
-
Criar Pacote:
POST /api/pacote
- Request body:
{ "percentDesconto": 10, "imagemUrl": "/images/hoteis/hotel-5.jpg", "passagemId": 1, "hospedagemId": 3 }
- Resposta: Status 201 (Created)
- Request body:
-
Obter todos os Pacotes:
GET /api/pacote
- Resposta:
[ { "pacoteId": 1, "percentDesconto": 10, "imagemUrl": "/images/hoteis/hotel-5.jpg", "passagemId": 1, "hospedagemId": 3, "passagem": { "passagemId": 1, "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }, "hospedagem": { "hospedagemId": 3, "nomeHotel": "Pousada das Araras", "descricao": "Uma pousada aconchegante em Porto Seguro, perfeita para relaxar e aproveitar as praias.", "localizacao": "Porto Seguro - BA", "avaliacao": 4.7, "precoDiaria": 150, "imagemUrl": "/images/hoteis/hotel-1.jpg" } }, ... ]
- Resposta: Status 200 (OK)
- Resposta:
-
Obter Pacote por ID:
GET /api/pacote/{id}
- Resposta:
{ "pacoteId": 1, "percentDesconto": 10, "imagemUrl": "/images/hoteis/hotel-5.jpg", "passagemId": 1, "hospedagemId": 3, "passagem": { "passagemId": 1, "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }, "hospedagem": { "hospedagemId": 3, "nomeHotel": "Pousada das Araras", "descricao": "Uma pousada aconchegante em Porto Seguro, perfeita para relaxar e aproveitar as praias.", "localizacao": "Porto Seguro - BA", "avaliacao": 4.7, "precoDiaria": 150, "imagemUrl": "/images/hoteis/hotel-1.jpg" } }
- Resposta: Status 200 (OK)
- Resposta:
-
Atualizar Pacote:
PUT /api/pacote/{id}
- Request body:
{ "pacoteId": 1, "percentDesconto": 10, "imagemUrl": "/images/hoteis/hotel-5.jpg", "passagemId": 1, "hospedagemId": 3 }
- Resposta: Status 204 (No Content)
- Request body:
-
Excluir Pacote:
DELETE /api/pacote/{id}
- Resposta: Status 204 (No Content)
-
Criar Reserva:
POST /api/reserva
- Request body:
{ "tipoServico": "Passagem", "clienteId": 12, "passagemId": 1 }
- Resposta: Status 201 (Created)
- Request body:
-
Obter todas as Reservas:
GET /api/reserva
- Resposta:
[ { "reservaId": 2, "tipoServico": "Passagem", "clienteId": 12, "passagemId": 1, "cliente": { "clienteId": 12, "nome": "Felipe Santos", "email": "[email protected]", "senha": "senhaxyz", "telefone": "(03) 98765-4321" }, "passagem": { "passagemId": 1, "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386.00, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }, }, ... ]
- Resposta: Status 200 (OK)
- Resposta:
-
Obter Reserva por ID:
GET /api/reserva/{id}
- Resposta:
{ "reservaId": 2, "tipoServico": "Passagem", "clienteId": 12, "passagemId": 1, "cliente": { "clienteId": 12, "nome": "Felipe Santos", "email": "[email protected]", "senha": "senhaxyz", "telefone": "(03) 98765-4321" }, "passagem": { "passagemId": 1, "origem": "São Paulo - SP", "destino": "Porto Seguro - BA", "classe": "Primeira Classe", "preco": 386.00, "imagemUrl": "/images/cidades/porto-seguro-ba.jpg", "dataVoo": "2024-03-24T00:00:00" }, }
- Resposta: Status 200 (OK)
- Resposta:
-
Atualizar Reserva:
PUT /api/reserva/{id}
- Request body:
{ "reservaId": 2, "tipoServico": "Passagem", "clienteId": 12, "passagemId": 1, }
- Resposta: Status 204 (No Content)
- Request body:
-
Excluir Reserva:
DELETE /api/reserva/{id}
- Resposta: Status 204 (No Content)
- Criar testes unitários.
- Melhorar tratamento de erros.
- Criar filtros de pesquisa e listagem de objetos.
- Criar paginação.
- Criar ordenação.
- Criar rotas de login e registro de usuários.
- Criar tratamento de autenticação e autorização.
Veja a licença do projeto aqui