{"id":26371855,"url":"https://github.com/danielfreitassc/sistemadereservasdesalas","last_synced_at":"2026-04-05T21:04:46.767Z","repository":{"id":210327840,"uuid":"726298734","full_name":"DanielFreitassc/SistemaDeReservasDeSalas","owner":"DanielFreitassc","description":"Sistema de reservas de salas","archived":false,"fork":false,"pushed_at":"2025-06-07T02:30:34.000Z","size":270,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-07T03:26:54.270Z","etag":null,"topics":["dbdiagram","docker","docker-compose","h2-database","java","postgresql","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DanielFreitassc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-02T01:25:04.000Z","updated_at":"2025-06-07T02:30:38.000Z","dependencies_parsed_at":"2025-04-18T03:53:02.890Z","dependency_job_id":"d2f1f973-326e-4087-99e6-f41c74295485","html_url":"https://github.com/DanielFreitassc/SistemaDeReservasDeSalas","commit_stats":null,"previous_names":["danielfreitassc/ebook_springboot_daniel_freitas","danielfreitassc/sistemadereservasdesalas"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DanielFreitassc/SistemaDeReservasDeSalas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielFreitassc%2FSistemaDeReservasDeSalas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielFreitassc%2FSistemaDeReservasDeSalas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielFreitassc%2FSistemaDeReservasDeSalas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielFreitassc%2FSistemaDeReservasDeSalas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DanielFreitassc","download_url":"https://codeload.github.com/DanielFreitassc/SistemaDeReservasDeSalas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielFreitassc%2FSistemaDeReservasDeSalas/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260652969,"owners_count":23042636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dbdiagram","docker","docker-compose","h2-database","java","postgresql","spring-boot"],"created_at":"2025-03-17T00:47:12.406Z","updated_at":"2025-12-30T22:30:37.023Z","avatar_url":"https://github.com/DanielFreitassc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏢 Sistema de Reserva de Salas\n\nO **Sistema de Reserva de Salas** é uma API simples e eficiente para gerenciar a reserva de espaços como salas de reunião, coworking, e outros ambientes. Essa API permite o cadastro de usuários e salas, além de gerenciar reservas de forma prática e calcular o valor total com base no preço da sala e no tempo de uso. 🚀\n\n## Funcionalidades 🌟\n\n1. **Cadastro de Usuários** 👤  \n   Os usuários podem se cadastrar no sistema, criando uma conta com suas informações pessoais para poderem realizar reservas de salas.\n\n2. **Cadastro de Salas** 🏫  \n   Salas podem ser cadastradas com informações como nome, capacidade, disponibilidade, e preço por hora. Isso permite que os administradores configurem as opções de reserva.\n\n3. **Realização de Reservas** 📅  \n   Os usuários autenticados podem reservar salas disponíveis.\n\n4. **Cálculo do Valor da Reserva** 💰  \n   Com base no tempo de uso da sala (duração da reserva) e o preço por hora definido, o sistema calcula automaticamente o valor total que o usuário precisa pagar pela reserva.\n\n## Exemplo de Fluxo de Uso 🚦\n\n1. **Cadastro de Usuário**: O usuário acessa a API e cria uma conta.\n2. **Cadastro de Sala**: Um administrador cadastra as salas disponíveis, definindo o preço por hora.\n3. **Reserva de Sala**: O usuário escolhe uma sala e faz uma reserva para o horário desejado.\n4. **Cálculo do Valor**: O sistema calcula o valor da reserva com base no tempo de uso e o preço da sala.\n\n## Benefícios 🎯\n\n- **Praticidade**: Gerenciamento simples de salas e reservas.\n- **Cálculo Automático**: O valor total da reserva é calculado automaticamente com base no preço da sala e no tempo de uso.\n- **Controle de Disponibilidade**: O sistema garante que as salas só sejam reservadas se estiverem disponíveis no período solicitado.\n\n## Tecnologias Utilizadas 💻\n\n- **Spring Boot**: Framework principal para a construção da API.\n- **Banco de Dados Relacional**: Para armazenar informações de usuários, salas, e reservas.\n- **JWT (JSON Web Token)**: Para autenticação de usuários.\n\n---\n\n⚙️ O **Sistema de Reserva de Salas** é uma solução escalável e de fácil integração com outros sistemas, ideal para empresas ou coworkings que desejam oferecer uma plataforma de reserva automatizada e eficiente.\n\n\n# Modelagem do banco de dados\n\n![Modelagem do banco de dados](https://github.com/user-attachments/assets/41e7632e-f4bd-4823-8457-442be54dbc1d)\n\n\n---\n\n# Documentação para Executar o Banco de Dados e a API com Docker\n\n## Pré-requisitos\n\nCertifique-se de que você tem o Docker e o Docker Compose instalados em sua máquina. Se não estiverem instalados, você pode seguir as instruções de instalação:\n\n- [Instalar Docker](https://docs.docker.com/get-docker/)\n- [Instalar Docker Compose](https://docs.docker.com/compose/install/)\n\n---\n\n## 1. Subindo o Banco de Dados\n\nO primeiro passo é subir o banco de dados usando o **Docker Compose**. Certifique-se de que você possui um arquivo `docker-compose.yml` configurado corretamente para o banco de dados.\n\n### Passos:\n\n1. Navegue até o diretório onde seu arquivo `docker-compose.yml` está localizado.\n   \n2. Execute o seguinte comando para subir o banco de dados em segundo plano:\n\n   ```bash\n   docker-compose up -d\n   ```\n\n   O `-d` significa \"detached\", que permite rodar o serviço em segundo plano.\n\n3. Verifique se o banco de dados está rodando corretamente com o comando:\n\n   ```bash\n   docker ps\n   ```\n\n   Esse comando exibirá todos os contêineres ativos. O banco de dados deve estar listado aqui.\n\n---\n\n## 2. Build da Imagem da API\n\nAgora, você deve buildar a imagem Docker da API. Certifique-se de que você tem um `Dockerfile` configurado corretamente no diretório raiz do seu projeto.\n\n### Passos:\n\n1. Navegue até o diretório onde o arquivo `Dockerfile` da sua API está localizado.\n\n2. Execute o seguinte comando para construir a imagem Docker:\n\n   ```bash\n   docker build -t api .\n   ```\n\n   O `-t api` define o nome da imagem como `api`, e o `.` especifica que o contexto do build é o diretório atual.\n\n---\n\n## 3. Rodando a API\n\nApós o build da imagem, você pode rodar o contêiner da API usando o Docker. Certifique-se de que o banco de dados já está rodando antes de subir a API.\n\n### Passos:\n\n1. Execute o seguinte comando para rodar a API:\n\n   ```bash\n   docker run -dti -p 8080:8080 api\n   ```\n\n   Aqui:\n   - `-dti` significa que o contêiner será rodado em modo **detached** (`-d`), com terminal interativo (`-ti`).\n   - `-p 8080:8080` mapeia a porta `8080` do contêiner para a porta `8080` da sua máquina local.\n   - `api` é o nome da imagem que você buildou no passo anterior.\n\n2. Verifique se o contêiner da API está rodando com o comando:\n\n   ```bash\n   docker ps\n   ```\n\n   O contêiner da API deve estar listado aqui, com a porta `8080` mapeada.\n\n---\n\n## 4. Acessando a API\n\nCom a API rodando, você pode acessá-la via navegador ou uma ferramenta de requisições como o **Postman**. O endpoint da API estará disponível em:\n\n```\nhttp://localhost:8080\n```\n\n---\n\nPronto! Agora você tem sua API e banco de dados rodando via Docker.\n\n## [Link Swagger para teste da api](http://localhost:8080/swagger-ui/index.html#/)\n\n## Endpoints cadastro de salas\n\n### 1. Criar uma sala\n\n**POST /room**  \nCria uma nova sala no sistema.\n\n#### Request Body\n\n```json\n{\n    \"name\": \"Lab01\",\n    \"roomNumber\": \"A1F3\",\n    \"location\": \"Predio 10\",\n    \"capacity\": 40,\n    \"price\": 20,\n    \"status\": \"DISPONIVEL\"\n}\n```\n\n#### Response (201 - Created)\n\n```json\n{\n    \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n    \"name\": \"Lab01\",\n    \"roomNumber\": \"A1F3\",\n    \"location\": \"Predio 10\",\n    \"capacity\": 40,\n    \"price\": 20,\n    \"status\": \"DISPONIVEL\"\n}\n```\n\n### 2. Listar todas as salas (paginado)\n\n**GET /room?page={page}\u0026size={size}\u0026search={search}**  \nRetorna uma lista paginada de todas as salas, com suporte a busca pelo nome.\n\n#### Parâmetros de Query\n- `page`: Número da página (ex: `0`)\n- `size`: Tamanho da página (ex: `10`)\n- `search`: Filtro opcional para buscar salas pelo nome (ex: `lab01`)\n\n#### Response (200 - OK)\n\n```json\n{\n    \"content\": [\n        {\n            \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n            \"name\": \"Lab01\",\n            \"roomNumber\": \"A1F3\",\n            \"location\": \"Predio 10\",\n            \"capacity\": 40,\n            \"price\": 20.00,\n            \"status\": \"DISPONIVEL\"\n        },\n        {\n            \"id\": \"00f85a49-7ea9-4da3-9ace-434db7c27126\",\n            \"name\": \"Lab01\",\n            \"roomNumber\": \"A1F3\",\n            \"location\": \"Predio 10\",\n            \"capacity\": 40,\n            \"price\": 20.00,\n            \"status\": \"DISPONIVEL\"\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 10,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"paged\": true,\n        \"unpaged\": false\n    },\n    \"totalElements\": 2,\n    \"totalPages\": 1,\n    \"last\": true,\n    \"first\": true,\n    \"size\": 10,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"numberOfElements\": 2,\n    \"empty\": false\n}\n```\n\n### 3. Obter detalhes de uma sala por ID\n\n**GET /room/{id}**  \nRetorna os detalhes de uma sala específica pelo `id`.\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n    \"name\": \"Lab01\",\n    \"roomNumber\": \"A1F3\",\n    \"location\": \"Predio 10\",\n    \"capacity\": 40,\n    \"price\": 20,\n    \"status\": \"DISPONIVEL\"\n}\n```\n\n### 4. Atualizar uma sala\n\n**PUT /room/{id}**  \nAtualiza os dados de uma sala específica pelo `id`.\n\n#### Request Body\n\n```json\n{\n    \"name\": \"Lab01\",\n    \"roomNumber\": \"A1F3\",\n    \"location\": \"Predio 10\",\n    \"capacity\": 40,\n    \"price\": 20,\n    \"status\": \"DISPONIVEL\"\n}\n```\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n    \"name\": \"Lab01\",\n    \"roomNumber\": \"A1F3\",\n    \"location\": \"Predio 10\",\n    \"capacity\": 40,\n    \"price\": 20,\n    \"status\": \"DISPONIVEL\"\n}\n```\n\n### 5. Deletar uma sala\n\n**DELETE /room/{id}**  \nRemove uma sala específica pelo `id`.\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n    \"name\": \"Lab01\",\n    \"roomNumber\": \"A1F3\",\n    \"location\": \"Predio 10\",\n    \"capacity\": 40,\n    \"price\": 20,\n    \"status\": \"DISPONIVEL\"\n}\n```\n\n## Endpoints cadastro de usuário\n\n### 1. Criar um usuário\n\n**POST /user**  \nCadastra um novo usuário no sistema.\n\n#### Request Body\n\n```json\n{\n    \"name\": \"Fulano\",\n    \"lastName\": \"De tal\",\n    \"username\": \"fulanodetal\",\n    \"password\": \"Senha12345\",\n    \"role\": \"CUSTOMER\"\n}\n```\n\n#### Response (201 - Created)\n\n```json\n{\n    \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n    \"name\": \"Fulano\",\n    \"lastName\": \"De tal\",\n    \"username\": \"fulanodetal\"\n}\n```\n\n### 2. Listar todos os usuários (paginado)\n\n**GET /user?page={page}\u0026size={size}\u0026search={search}**  \nRetorna uma lista paginada de usuários, com suporte a busca por nome ou username.\n\n#### Parâmetros de Query\n- `page`: Número da página (ex: `0`)\n- `size`: Tamanho da página (ex: `10`)\n- `search`: Filtro opcional para buscar usuários pelo nome ou username (ex: `fulanodetal`)\n\n#### Response (200 - OK)\n\n```json\n{\n    \"content\": [\n        {\n            \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n            \"name\": \"Fulano\",\n            \"lastName\": \"De tal\",\n            \"username\": \"fulanodetal\"\n        },\n        {\n            \"id\": \"dc5af7d0-38af-458f-9850-d82a330c4a8d\",\n            \"name\": \"admin\",\n            \"lastName\": \"admin\",\n            \"username\": \"admin\"\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 10,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"paged\": true,\n        \"unpaged\": false\n    },\n    \"totalElements\": 2,\n    \"totalPages\": 1,\n    \"last\": true,\n    \"first\": true,\n    \"size\": 10,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"numberOfElements\": 2,\n    \"empty\": false\n}\n```\n\n### 3. Obter detalhes de um usuário por ID\n\n**GET /user/{id}**  \nRetorna os detalhes de um usuário específico pelo `id`.\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n    \"name\": \"Fulano\",\n    \"lastName\": \"De tal\",\n    \"username\": \"fulanodetal\"\n}\n```\n\n### 4. Atualizar um usuário\n\n**PUT /user/{id}**  \nAtualiza os dados de um usuário específico pelo `id`.\n\n#### Request Body\n\n```json\n{\n    \"name\": \"Fulano\",\n    \"lastName\": \"De tal\",\n    \"username\": \"fulanodetal\",\n    \"password\": \"NovaSenha123\",\n    \"role\": \"CUSTOMER\"\n}\n```\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n    \"name\": \"Fulano\",\n    \"lastName\": \"De tal\",\n    \"username\": \"fulanodetal\"\n}\n```\n\n### 5. Deletar um usuário\n\n**DELETE /user/{id}**  \nRemove um usuário específico pelo `id`.\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n    \"name\": \"Fulano\",\n    \"lastName\": \"De tal\",\n    \"username\": \"fulanodetal\"\n}\n```\n## Endpoint paralogin\n\n### 1. Realizar login\n\n**POST /auth/login**  \nAutentica um usuário com base no `username` e `password` fornecidos.\n\n#### Request Body\n\n```json\n{\n    \"username\": \"admin\",\n    \"password\": \"admin\"\n}\n```\n\n#### Response (200 - OK)\n\n```json\n{\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3.....\"\n}\n```\n\nO token JWT retornado deve ser utilizado nos cabeçalhos das próximas requisições para acessar rotas protegidas da API, no formato:\n\n```\nAuthorization: Bearer {token}\n```\n\n## Endpoints cadastro de reserva\n\n### 1. Criar uma reserva\n\n**POST /reservation**  \nCadastra uma nova reserva de sala.\n\n#### Request Body\n\n```json\n{\n    \"roomId\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n    \"userId\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n    \"startTime\": \"03/12/2007 10:15:30\",\n    \"endTime\": \"03/12/2008 10:15:30\"\n}\n```\n\n#### Response (201 - Created)\n\n```json\n{\n    \"id\": \"2a262e45-d439-496b-ad13-8101c80ab99b\",\n    \"room\": {\n        \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n        \"name\": \"Lab01\",\n        \"roomNumber\": \"A1F3\",\n        \"location\": \"Predio 10\",\n        \"capacity\": 40,\n        \"price\": 20.00,\n        \"status\": \"RESERVADO\"\n    },\n    \"user\": {\n        \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n        \"name\": \"Fulano\",\n        \"lastName\": \"De tal\",\n        \"username\": \"fulanodetal\"\n    },\n    \"startTime\": \"03/12/2007 10:15:30\",\n    \"endTime\": \"03/12/2008 10:15:30\",\n    \"status\": \"RESERVADO\",\n    \"totalCost\": 175680.00\n}\n```\n\n### 2. Listar todas as reservas (paginado)\n\n**GET /reservation?page={page}\u0026size={size}**  \nRetorna uma lista paginada de reservas.\n\n#### Parâmetros de Query\n- `page`: Número da página (ex: `0`)\n- `size`: Tamanho da página (ex: `10`)\n\n#### Response (200 - OK)\n\n```json\n{\n    \"content\": [\n        {\n            \"id\": \"2a262e45-d439-496b-ad13-8101c80ab99b\",\n            \"room\": {\n                \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n                \"name\": \"Lab01\",\n                \"roomNumber\": \"A1F3\",\n                \"location\": \"Predio 10\",\n                \"capacity\": 40,\n                \"price\": 20.00,\n                \"status\": \"RESERVADO\"\n            },\n            \"user\": {\n                \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n                \"name\": \"Fulano\",\n                \"lastName\": \"De tal\",\n                \"username\": \"fulanodetal\"\n            },\n            \"startTime\": \"03/12/2007 10:15:30\",\n            \"endTime\": \"03/12/2008 10:15:30\",\n            \"status\": \"RESERVADO\",\n            \"totalCost\": 175680.00\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 10,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"paged\": true,\n        \"unpaged\": false\n    },\n    \"totalElements\": 1,\n    \"totalPages\": 1,\n    \"last\": true,\n    \"first\": true,\n    \"size\": 10,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"numberOfElements\": 1,\n    \"empty\": false\n}\n```\n\n### 3. Obter detalhes de uma reserva por ID\n\n**GET /reservation/{id}**  \nRetorna os detalhes de uma reserva específica pelo `id`.\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"2a262e45-d439-496b-ad13-8101c80ab99b\",\n    \"room\": {\n        \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n        \"name\": \"Lab01\",\n        \"roomNumber\": \"A1F3\",\n        \"location\": \"Predio 10\",\n        \"capacity\": 40,\n        \"price\": 20.00,\n        \"status\": \"RESERVADO\"\n    },\n    \"user\": {\n        \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n        \"name\": \"Fulano\",\n        \"lastName\": \"De tal\",\n        \"username\": \"fulanodetal\"\n    },\n    \"startTime\": \"03/12/2007 10:15:30\",\n    \"endTime\": \"03/12/2008 10:15:30\",\n    \"status\": \"RESERVADO\",\n    \"totalCost\": 175680.00\n}\n```\n\n### 4. Atualizar uma reserva\n\n**PUT /reservation/{id}**  \nAtualiza os dados de uma reserva específica pelo `id`.\n\n#### Request Body\n\n```json\n{\n    \"roomId\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n    \"userId\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n    \"startTime\": \"03/12/2007 10:15:30\",\n    \"endTime\": \"03/12/2008 10:15:30\"\n}\n```\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"2a262e45-d439-496b-ad13-8101c80ab99b\",\n    \"room\": {\n        \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n        \"name\": \"Lab01\",\n        \"roomNumber\": \"A1F3\",\n        \"location\": \"Predio 10\",\n        \"capacity\": 40,\n        \"price\": 20.00,\n        \"status\": \"RESERVADO\"\n    },\n    \"user\": {\n        \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n        \"name\": \"Fulano\",\n        \"lastName\": \"De tal\",\n        \"username\": \"fulanodetal\"\n    },\n    \"startTime\": \"03/12/2007 10:15:30\",\n    \"endTime\": \"03/12/2008 10:15:30\",\n    \"status\": \"RESERVADO\",\n    \"totalCost\": 175680.00\n}\n```\n\n### 5. Deletar uma reserva\n\n**DELETE /reservation/{id}**  \nRemove uma reserva específica pelo `id`.\n\n#### Response (200 - OK)\n\n```json\n{\n    \"id\": \"2a262e45-d439-496b-ad13-8101c80ab99b\",\n    \"room\": {\n        \"id\": \"db3b8a21-3820-4862-872f-392a16c1d768\",\n        \"name\": \"Lab01\",\n        \"roomNumber\": \"A1F3\",\n        \"location\": \"Predio 10\",\n        \"capacity\": 40,\n        \"price\": 20.00,\n        \"status\": \"RESERVADO\"\n    },\n    \"user\": {\n        \"id\": \"29a03082-796b-47ee-b8d5-241f33c913b7\",\n        \"name\": \"Fulano\",\n        \"lastName\": \"De tal\",\n        \"username\": \"fulanodetal\"\n    },\n    \"startTime\": \"03/12/2007 10:15:30\",\n    \"endTime\": \"03/12/2008 10:15:30\",\n    \"status\": \"RESERVADO\",\n    \"totalCost\": 175680.00\n}\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielfreitassc%2Fsistemadereservasdesalas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielfreitassc%2Fsistemadereservasdesalas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielfreitassc%2Fsistemadereservasdesalas/lists"}