{"info":{"_postman_id":"e65f04f9-7473-4d84-8d0c-bb6fc332f404","name":"Booking App","description":"<html><head></head><body><h1 id=\"booking-app\"><strong>📖 Booking App</strong></h1>\n<p>The <strong>Booking App</strong> is a backend system designed to manage hotel reservations with a secure, scalable, and user-friendly architecture. It provides endpoints for handling users, cities, hotels, images, bookings, and reviews, ensuring a complete ecosystem for a hotel booking platform.</p>\n<h2 id=\"🎯-purpose\"><strong>🎯 Purpose</strong></h2>\n<p>The goal of the Booking App is to simulate a real-world hotel reservation system, allowing users to:</p>\n<ul>\n<li><p>Register and log in securely.</p>\n</li>\n<li><p>Explore and filter hotels by city or name.</p>\n</li>\n<li><p>Make and manage reservations.</p>\n</li>\n<li><p>Share reviews and ratings.</p>\n</li>\n<li><p>Access hotel images and details.</p>\n</li>\n</ul>\n<h2 id=\"🏗️-core-features\"><strong>🏗️ Core Features</strong></h2>\n<ul>\n<li><p><strong>User Management:</strong> Registration, login, profile updates, and secure authentication.</p>\n</li>\n<li><p><strong>City Management:</strong> CRUD operations for cities, with country codes for easy identification.</p>\n</li>\n<li><p><strong>Hotel Management:</strong> Search hotels by name or city, view details, and calculate average ratings from reviews.</p>\n</li>\n<li><p><strong>Image Management:</strong> Associate multiple images with hotels for richer content.</p>\n</li>\n<li><p><strong>Booking System:</strong> Create, update, and delete reservations linked to logged-in users.</p>\n</li>\n<li><p><strong>Review System:</strong> Post and manage reviews with pagination and filtering by hotel.</p>\n</li>\n</ul>\n<h2 id=\"📊-dataset\"><strong>📊 Dataset</strong></h2>\n<p>The backend is seeded with realistic data to support testing and scalability:</p>\n<ul>\n<li><p>100 registered users</p>\n</li>\n<li><p>30 cities</p>\n</li>\n<li><p>150 hotels</p>\n</li>\n<li><p>300+ bookings</p>\n</li>\n<li><p>100+ reviews</p>\n</li>\n<li><p>300+ hotel images</p>\n</li>\n</ul>\n<h2 id=\"🔒-security--access\"><strong>🔒 Security &amp; Access</strong></h2>\n<ul>\n<li><p>Public endpoints for browsing hotels, cities, and reviews.</p>\n</li>\n<li><p>Private endpoints secured with authentication for managing users, bookings, hotels, and images.</p>\n</li>\n<li><p>Smart queries and pagination for efficient data handling.</p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"📖 Booking App","slug":"booking-app"}],"owner":"48309056","collectionId":"e65f04f9-7473-4d84-8d0c-bb6fc332f404","publishedId":"2sBXVZnDx7","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-12-23T06:44:43.000Z"},"item":[{"name":"Users","item":[{"name":"Get All Users","id":"004b6da9-9042-4adb-99a4-54b352a9c3bd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoyNSwiZmlyc3ROYW1lIjoiTHVjYXMiLCJsYXN0TmFtZSI6IlNpbHZhIiwiZW1haWwiOiJsdWNhcy5zaWx2YTAxOUBleGFtcGxlLmNvbSIsImdlbmRlciI6Ik1BTEUiLCJjcmVhdGVkQXQiOiIyMDI1LTEyLTIxVDAyOjAwOjE0LjMzOFoiLCJ1cGRhdGVkQXQiOiIyMDI1LTEyLTIxVDAyOjAwOjE0LjMzOFoifSwiaWF0IjoxNzc3Mzk3MTAwLCJleHAiOjE3Nzc0ODM1MDB9.RhYK8UxkNIOU4ZNoLwJmvXqa4fZbCdP_T_kqCbDSMJk","type":"text"}],"url":"https://booking-app-b5o8.onrender.com/users","urlObject":{"path":["users"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"004b6da9-9042-4adb-99a4-54b352a9c3bd"},{"name":"Create User","id":"0305588a-384c-461c-b186-65509c48ff57","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Pedro\",\r\n    \"lastName\": \"Lima\",\r\n    \"email\": \"pedro.lima094@example.com\",\r\n    \"password\": \"123456\",\r\n    \"gender\": \"MALE\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/users","urlObject":{"path":["users"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"0305588a-384c-461c-b186-65509c48ff57"},{"name":"User Login","id":"ad1e21ba-9206-4e67-abfe-5119cf3bf9e8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\": \"lucas.silva019@example.com\",\r\n    \"password\": \"123456\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/users/login","urlObject":{"path":["users","login"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ad1e21ba-9206-4e67-abfe-5119cf3bf9e8"},{"name":"Delete User","id":"4ac4f3fd-0f72-4d84-afb0-9a3e579086f9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://booking-app-b5o8.onrender.com/users/101","urlObject":{"path":["users","101"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4ac4f3fd-0f72-4d84-afb0-9a3e579086f9"},{"name":"Update User","id":"2e2474bb-68d7-4dad-870b-b52f8e538f05","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Ava\",\r\n    \"lastName\": \"Thompson\",\r\n    \"email\": \"ava.thompson@example.com\",\r\n    \"gender\": \"OTHER\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/users/6","urlObject":{"path":["users","6"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2e2474bb-68d7-4dad-870b-b52f8e538f05"}],"id":"efde9b1b-b8c2-4e93-985c-05440ed8c08a","description":"<p>The <strong>Users</strong> folder contains all endpoints related to user management and authentication in the Booking App backend. These routes allow you to register new users, manage existing accounts, and handle secure login with token-based authentication.</p>\n<p>🔑 Key Features</p>\n<ul>\n<li><p><code>POST /users</code> → Register a new user</p>\n</li>\n<li><p><code>POST /users/login</code> → Authenticate and obtain a token</p>\n</li>\n<li><p><strong>Private access (requires Bearer token):</strong></p>\n</li>\n<li><p><code>GET /users</code> → Retrieve all registered users</p>\n</li>\n<li><p><code>PUT /users/:id</code> → Update user details by ID</p>\n</li>\n<li><p><code>DELETE /users/:id</code> → Remove a user by ID</p>\n</li>\n</ul>\n<p>🧩 Model</p>\n<p>Each user record includes:</p>\n<ul>\n<li><p><code>id</code> (primary key)</p>\n</li>\n<li><p><code>firstName</code></p>\n</li>\n<li><p><code>lastName</code></p>\n</li>\n<li><p><code>email</code></p>\n</li>\n<li><p><code>password</code> (securely stored)</p>\n</li>\n<li><p><code>gender</code></p>\n</li>\n</ul>\n<p>🔒 Security</p>\n<ul>\n<li><p>Login generates a JWT or token stored in <code>{{authToken}}</code>.</p>\n</li>\n<li><p>All private endpoints require the token in the Authorization header.</p>\n</li>\n<li><p>Passwords are never exposed in responses.</p>\n</li>\n</ul>\n","_postman_id":"efde9b1b-b8c2-4e93-985c-05440ed8c08a"},{"name":"Cities","item":[{"name":"Get All Cities","id":"0cc240eb-4105-47ed-a846-e645512fe20c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/cities","urlObject":{"path":["cities"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"0cc240eb-4105-47ed-a846-e645512fe20c"},{"name":"Create City","id":"a10386d1-e133-476c-8b3e-3f4bcf4d3935","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoyLCJmaXJzdE5hbWUiOiJTb3BoaWEiLCJsYXN0TmFtZSI6Ik1hcnRpbmV6IiwiZW1haWwiOiJzb3BoaWEubWFydGluZXpAZXhhbXBsZS5jb20iLCJnZW5kZXIiOiJGRU1BTEUiLCJjcmVhdGVkQXQiOiIyMDI1LTEyLTIwVDAyOjI5OjM0LjE3N1oiLCJ1cGRhdGVkQXQiOiIyMDI1LTEyLTIwVDAyOjI5OjM0LjE3N1oifSwiaWF0IjoxNzY2MTk4MjA4LCJleHAiOjE3NjYyODQ2MDh9.To-ERsthHQbRyqRpOlxk7jw4FmuBzxitBvakpoJdfvQ","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Cartagena\",\r\n    \"country\": \"Colombia\",\r\n    \"countryId\": \"CO\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/cities","urlObject":{"path":["cities"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a10386d1-e133-476c-8b3e-3f4bcf4d3935"},{"name":"Delete City","id":"c8cb1c9d-cd36-4d17-a36c-7b39f73c6ecd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://booking-app-b5o8.onrender.com/cities/31","urlObject":{"path":["cities","31"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c8cb1c9d-cd36-4d17-a36c-7b39f73c6ecd"},{"name":"Update City","id":"e8324859-973d-4e2c-b7e3-58e21d51664e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n        \"name\": \"New York City\",\r\n        \"country\": \"United States of America\",\r\n        \"countryId\": \"US\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/cities/2","urlObject":{"path":["cities","2"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e8324859-973d-4e2c-b7e3-58e21d51664e"}],"id":"f3215e92-b7f5-4eb1-b0e1-2ec4633744f1","description":"<p>The <strong>Cities</strong> folder contains all endpoints related to managing city records in the Booking App backend. These routes allow you to create, update, delete, and list cities, which serve as the foundation for associating hotels with their geographic location.</p>\n<p>🔑 Key Features</p>\n<ul>\n<li><p><code>GET /cities</code> → Retrieve all available cities</p>\n</li>\n<li><p><strong>Private access (requires Bearer token):</strong></p>\n</li>\n<li><p><code>POST /cities</code> → Create a new city</p>\n</li>\n<li><p><code>PUT /cities/:id</code> → Update an existing city by ID</p>\n</li>\n<li><p><code>DELETE /cities/:id</code> → Remove a city by ID</p>\n</li>\n</ul>\n<p>🧩 Model</p>\n<p>Each city record includes:</p>\n<ul>\n<li><p><code>id</code> (primary key)</p>\n</li>\n<li><p><code>name</code> (e.g., Guadalajara, Bogotá, New York)</p>\n</li>\n<li><p><code>country</code> (full country name)</p>\n</li>\n<li><p><code>countryId</code> (string code, e.g., MX, CO, US)</p>\n</li>\n</ul>\n<p>📊 Dataset</p>\n<p>The backend is seeded with <strong>30 cities</strong>, ensuring diverse test data for hotel associations and queries.</p>\n<p>🔒 Security</p>\n<ul>\n<li><p>Only authenticated users can create, update, or delete cities.</p>\n</li>\n<li><p>Public endpoints allow anyone to browse the list of cities.</p>\n</li>\n</ul>\n","_postman_id":"f3215e92-b7f5-4eb1-b0e1-2ec4633744f1"},{"name":"Hotels","item":[{"name":"Get All Hotels","id":"53448ad3-6c5d-40e5-a882-17698c03e84e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/hotels","urlObject":{"path":["hotels"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"53448ad3-6c5d-40e5-a882-17698c03e84e"},{"name":"Create Hotel","id":"8593976d-00f9-4498-9bb3-a5ba671ada6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoyLCJmaXJzdE5hbWUiOiJTb3BoaWEiLCJsYXN0TmFtZSI6Ik1hcnRpbmV6IiwiZW1haWwiOiJzb3BoaWEubWFydGluZXpAZXhhbXBsZS5jb20iLCJnZW5kZXIiOiJGRU1BTEUiLCJjcmVhdGVkQXQiOiIyMDI1LTEyLTIwVDAyOjI5OjM0LjE3N1oiLCJ1cGRhdGVkQXQiOiIyMDI1LTEyLTIwVDAyOjI5OjM0LjE3N1oifSwiaWF0IjoxNzY2MTk4MjA4LCJleHAiOjE3NjYyODQ2MDh9.To-ERsthHQbRyqRpOlxk7jw4FmuBzxitBvakpoJdfvQ","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Pullman Auckland\",\r\n    \"description\": \"Pullman Auckland is a modern hotel located near Albert Park and the central business district. It offers contemporary rooms, a wellness spa, and extensive conference facilities. Highlights: Central CBD location, wellness spa, business amenities, proximity to Albert Park.\",\r\n    \"price\": 230.00,\r\n    \"address\": \"Corner Princes Street and Waterloo Quadrant, Auckland, New Zealand.\",\r\n    \"lat\": -36.8490,\r\n    \"lon\": 174.7700,\r\n    \"cityId\": 29\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/hotels","urlObject":{"path":["hotels"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"8593976d-00f9-4498-9bb3-a5ba671ada6d"},{"name":"Get Hotel with Querys by name","id":"84db21b1-c7c5-4893-a568-ac7daa2d4582","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/hotels?name=Park Hyatt Melbourne","urlObject":{"path":["hotels"],"host":["https://booking-app-b5o8.onrender.com"],"query":[{"key":"name","value":"Park Hyatt Melbourne"}],"variable":[]}},"response":[],"_postman_id":"84db21b1-c7c5-4893-a568-ac7daa2d4582"},{"name":"Get Hotel with Querys by cityId","id":"da4bf731-27ac-4446-86a6-3f780dccda11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/hotels?cityId=4","urlObject":{"path":["hotels"],"host":["https://booking-app-b5o8.onrender.com"],"query":[{"key":"cityId","value":"4"}],"variable":[]}},"response":[],"_postman_id":"da4bf731-27ac-4446-86a6-3f780dccda11"},{"name":"Get Hotel with Querys by name and cityId","id":"6f03a3cc-5e85-4d52-aa9e-6eb676387581","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/hotels?name=Tribe Hotel&cityId=19","urlObject":{"path":["hotels"],"host":["https://booking-app-b5o8.onrender.com"],"query":[{"key":"name","value":"Tribe Hotel"},{"key":"cityId","value":"19"}],"variable":[]}},"response":[],"_postman_id":"6f03a3cc-5e85-4d52-aa9e-6eb676387581"},{"name":"Get One Hotel","id":"fc7c630b-3304-4df2-9868-7f7b5d51db12","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/hotels/151","urlObject":{"path":["hotels","151"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"fc7c630b-3304-4df2-9868-7f7b5d51db12"},{"name":"Delete Hotel","id":"7fba96f9-70e8-4d28-a3ea-b4441ce6e087","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://booking-app-b5o8.onrender.com/hotels/150","urlObject":{"path":["hotels","150"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7fba96f9-70e8-4d28-a3ea-b4441ce6e087"},{"name":"Update Hotel","id":"3108c27f-31c0-4c79-a9c4-759e33af1ba6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Le Meurice\",\r\n    \"description\": \"Le Meurice is a historic luxury hotel overlooking the Tuileries Garden. Known as the “hotel of kings,” it blends 18th-century opulence with modern comfort. It features Michelin-starred dining by Alain Ducasse, elegant suites, and a world-class spa. Highlights: Michelin-starred restaurant, historic prestige, views of the Tuileries Garden, luxury spa.\",\r\n    \"price\": \"1250.00\",\r\n    \"address\": \"228 Rue de Rivoli, 75001 Paris, France.\",\r\n    \"lat\": \"48.86560000\",\r\n    \"lon\": \"2.32750000\",\r\n    \"cityId\": 11\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/hotels/51","urlObject":{"path":["hotels","51"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3108c27f-31c0-4c79-a9c4-759e33af1ba6"}],"id":"d79819a5-b824-46a5-beb1-c83644217e11","description":"<p>The <strong>Hotels</strong> folder contains all endpoints related to hotel management in the Booking App backend. These routes allow you to browse, filter, create, update, and delete hotel records, as well as retrieve detailed information about each property.</p>\n<p>🔑 Key Features</p>\n<ul>\n<li><p><code>GET /hotels</code> → Retrieve all hotels, with optional queries for <code>name</code> and <code>cityId</code>.</p>\n<ul>\n<li><p>Example: <code>/hotels?name=Four Seasons&amp;cityId=1</code></p>\n</li>\n<li><p>Each hotel includes an <strong>average</strong> field showing the mean rating from its reviews.</p>\n</li>\n</ul>\n</li>\n<li><p><code>GET /hotels/:id</code> → Retrieve a single hotel by ID.</p>\n</li>\n<li><p><strong>Private access (requires Bearer token):</strong></p>\n</li>\n<li><p><code>POST /hotels</code> → Create a new hotel record.</p>\n</li>\n<li><p><code>PUT /hotels/:id</code> → Update hotel details by ID.</p>\n</li>\n<li><p><code>DELETE /hotels/:id</code> → Remove a hotel by ID.</p>\n</li>\n</ul>\n<p>🧩 Model</p>\n<p>Each hotel record includes:</p>\n<ul>\n<li><p><code>id</code> (primary key)</p>\n</li>\n<li><p><code>name</code></p>\n</li>\n<li><p><code>description</code></p>\n</li>\n<li><p><code>price</code></p>\n</li>\n<li><p><code>address</code></p>\n</li>\n<li><p><code>lat</code> (latitude)</p>\n</li>\n<li><p><code>lon</code> (longitude)</p>\n</li>\n<li><p><code>cityId</code> (reference to the city)</p>\n</li>\n</ul>\n<p>📊 Dataset</p>\n<p>The backend is seeded with <strong>150 hotels</strong>, each linked to one of the 30 available cities. Hotels are enriched with images, reviews, and booking data to support realistic testing scenarios.</p>\n<p>🔒 Security</p>\n<ul>\n<li><p>Public endpoints allow anyone to explore hotels and their details.</p>\n</li>\n<li><p>Private endpoints require authentication with a valid token.</p>\n</li>\n</ul>\n","_postman_id":"d79819a5-b824-46a5-beb1-c83644217e11"},{"name":"Bookings","item":[{"name":"Get All Bookings","id":"82615a42-0377-44d5-8429-bce7953c9f3e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoyNSwiZmlyc3ROYW1lIjoiTHVjYXMiLCJsYXN0TmFtZSI6IlNpbHZhIiwiZW1haWwiOiJsdWNhcy5zaWx2YTAxOUBleGFtcGxlLmNvbSIsImdlbmRlciI6Ik1BTEUiLCJjcmVhdGVkQXQiOiIyMDI1LTEyLTIxVDAyOjAwOjE0LjMzOFoiLCJ1cGRhdGVkQXQiOiIyMDI1LTEyLTIxVDAyOjAwOjE0LjMzOFoifSwiaWF0IjoxNzc3Mzk3MTAwLCJleHAiOjE3Nzc0ODM1MDB9.RhYK8UxkNIOU4ZNoLwJmvXqa4fZbCdP_T_kqCbDSMJk","type":"text"}],"url":"https://booking-app-b5o8.onrender.com/bookings","urlObject":{"path":["bookings"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"82615a42-0377-44d5-8429-bce7953c9f3e"},{"name":"Create Booking","id":"2ec26300-29f5-4155-a90b-69ef56265f84","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxMywiZmlyc3ROYW1lIjoiSmhvbiIsImxhc3ROYW1lIjoiRG9lIiwiZW1haWwiOiJqaG9uZG9lQHRlc3QuY29tIiwiZ2VuZGVyIjoiTUFMRSIsImNyZWF0ZWRBdCI6IjIwMjUtMTItMTZUMTk6NTY6NTUuMDU3WiIsInVwZGF0ZWRBdCI6IjIwMjUtMTItMTZUMTk6NTY6NTUuMDU3WiJ9LCJpYXQiOjE3NjU5MTUwMTUsImV4cCI6MTc2NjAwMTQxNX0.EBUkF_7wUtey3sp-ql2v4SDnmksbw_tcbjtatJaK9iw","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"checkIn\": \"2024-09-12\",\r\n    \"checkOut\": \"2024-09-16\",\r\n    \"hotelId\": 62\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/bookings","urlObject":{"path":["bookings"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2ec26300-29f5-4155-a90b-69ef56265f84"},{"name":"Delete Booking","id":"533ccf32-8a02-4c91-8c3c-affb815ac5d9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://booking-app-b5o8.onrender.com/bookings/180","urlObject":{"path":["bookings","180"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"533ccf32-8a02-4c91-8c3c-affb815ac5d9"},{"name":"Update Booking","id":"ae8f4fce-a06f-4584-8edb-e9cd86c44742","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjo2LCJmaXJzdE5hbWUiOiJBdmEiLCJsYXN0TmFtZSI6IlRob21wc29uIiwiZW1haWwiOiJhdmEudGhvbXBzb25AZXhhbXBsZS5jb20iLCJnZW5kZXIiOiJPVEhFUiIsImNyZWF0ZWRBdCI6IjIwMjUtMTItMjBUMDI6MzI6MzkuNDQ3WiIsInVwZGF0ZWRBdCI6IjIwMjUtMTItMjBUMDI6Mzc6MzUuMzIxWiJ9LCJpYXQiOjE3NjYyOTEwOTEsImV4cCI6MTc2NjM3NzQ5MX0.G9cul6kdkonYmesAyNvlsRtRKMyOiBsPPPJ6Az8VfpQ","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"checkIn\": \"2024-11-27\",\r\n    \"checkOut\": \"2024-12-02\",\r\n    \"hotelId\": 28\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/bookings/25","urlObject":{"path":["bookings","25"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ae8f4fce-a06f-4584-8edb-e9cd86c44742"}],"id":"2331817a-3c04-40b6-8045-da0e36cebc3c","description":"<p>The <strong>Bookings</strong> folder contains all endpoints related to hotel reservations in the Booking App backend. These routes allow logged-in users to create, view, update, and delete their reservations, ensuring a secure and personalized booking experience.</p>\n<p>🔑 Key Features</p>\n<ul>\n<li><p><strong>Private access (requires Bearer token):</strong></p>\n</li>\n<li><p><code>GET /bookings</code> → Retrieve all bookings of the logged-in user.</p>\n</li>\n<li><p><code>POST /bookings</code> → Create a new booking. The <code>userId</code> is automatically inferred from the authenticated user.</p>\n</li>\n<li><p><code>PUT /bookings/:id</code> → Update booking dates (<code>checkIn</code> and <code>checkOut</code> only). <code>userId</code> and <code>hotelId</code> cannot be modified.</p>\n</li>\n<li><p><code>DELETE /bookings/:id</code> → Cancel a booking by ID.</p>\n</li>\n</ul>\n<p>🧩 Model</p>\n<p>Each booking record includes:</p>\n<ul>\n<li><p><code>id</code> (primary key)</p>\n</li>\n<li><p><code>checkIn</code> (date)</p>\n</li>\n<li><p><code>checkOut</code> (date)</p>\n</li>\n<li><p><code>userId</code> (linked to logged-in user)</p>\n</li>\n<li><p><code>hotelId</code> (linked to hotel)</p>\n</li>\n</ul>\n<p>📊 Dataset</p>\n<p>The backend is seeded with <strong>300+ bookings</strong>, providing realistic scenarios for testing reservation flows, date updates, and cancellations.</p>\n<p>🔒 Security</p>\n<ul>\n<li><p>All booking endpoints are private and require authentication.</p>\n</li>\n<li><p>The system ensures that users can only access and manage their own reservations.</p>\n</li>\n</ul>\n","_postman_id":"2331817a-3c04-40b6-8045-da0e36cebc3c"},{"name":"Reviews","item":[{"name":"Get All Reviews","id":"9a2cb88c-6bfd-4515-ad12-db7d2bacca36","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/reviews","urlObject":{"path":["reviews"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9a2cb88c-6bfd-4515-ad12-db7d2bacca36"},{"name":"Create Review","id":"cf66ebaf-8145-4dae-8a6c-0e9fda01df1d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"rating\": 1,\r\n    \"comment\": \"La peor experiencia, la habitación estaba sucia y el servicio pésimo.\",\r\n    \"hotelId\": 25\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/reviews","urlObject":{"path":["reviews"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"cf66ebaf-8145-4dae-8a6c-0e9fda01df1d"},{"name":"Update Review","id":"bed48cc9-49c4-4b21-8447-12acefb9d435","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"rating\": 2,\r\n    \"comment\": \"Tuve varios problemas al intentar reservar.\",\r\n    \"hotelId\": 104\r\n}","options":{"raw":{"language":"json"}}},"url":"https://booking-app-b5o8.onrender.com/reviews/4","urlObject":{"path":["reviews","4"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"bed48cc9-49c4-4b21-8447-12acefb9d435"},{"name":"Delete Review","id":"5a4497fa-2884-4942-8d6e-615ed4711f9e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://booking-app-b5o8.onrender.com/reviews/42","urlObject":{"path":["reviews","42"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5a4497fa-2884-4942-8d6e-615ed4711f9e"},{"name":"Get Reviews filter with query by hotelId and querys offset and perPage for pagination","id":"bb339711-4fa8-4d5b-ba58-8ac9da56cb54","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/reviews?hotelId=1&offset=0&perPage=10","urlObject":{"path":["reviews"],"host":["https://booking-app-b5o8.onrender.com"],"query":[{"key":"hotelId","value":"1"},{"key":"offset","value":"0"},{"key":"perPage","value":"10"}],"variable":[]}},"response":[],"_postman_id":"bb339711-4fa8-4d5b-ba58-8ac9da56cb54"}],"id":"54501871-b939-447d-a716-61f2bdf1c4c2","description":"<p>The <strong>Reviews</strong> folder contains all endpoints related to hotel reviews in the Booking App backend. These routes allow users to share feedback about their stays, manage their own reviews, and browse reviews from other guests with pagination and filtering options.</p>\n<p>🔑 Key Features</p>\n<ul>\n<li><p><code>GET /reviews</code> → Retrieve all reviews.</p>\n<ul>\n<li><p>Supports queries for <code>hotelId</code> to filter reviews by hotel.</p>\n</li>\n<li><p>Supports <code>offset</code> and <code>perPage</code> for pagination (e.g., <code>/reviews?hotelId=1&amp;offset=0&amp;perPage=10</code>).</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Private access (requires Bearer token):</strong></p>\n</li>\n<li><p><code>POST /reviews</code> → Create a new review. The <code>userId</code> is automatically inferred from the logged-in user.</p>\n</li>\n<li><p><code>PUT /reviews/:id</code> → Update an existing review (only <code>rating</code> and <code>comment</code> can be modified).</p>\n</li>\n<li><p><code>DELETE /reviews/:id</code> → Remove a review by ID.</p>\n</li>\n</ul>\n<p>🧩 Model</p>\n<p>Each review record includes:</p>\n<ul>\n<li><p><code>id</code> (primary key)</p>\n</li>\n<li><p><code>rating</code> (numeric score)</p>\n</li>\n<li><p><code>comment</code> (text feedback)</p>\n</li>\n<li><p><code>userId</code> (linked to the logged-in user)</p>\n</li>\n<li><p><code>hotelId</code> (linked to the hotel being reviewed)</p>\n</li>\n</ul>\n<p>📊 Dataset</p>\n<p>The backend is seeded with <strong>100+ reviews</strong>, providing realistic scenarios for testing hotel ratings, user feedback, and pagination queries.</p>\n<p>🔒 Security</p>\n<ul>\n<li><p>Public endpoints allow anyone to browse reviews.</p>\n</li>\n<li><p>Private endpoints require authentication, ensuring users can only create, update, or delete their own reviews.</p>\n</li>\n</ul>\n","_postman_id":"54501871-b939-447d-a716-61f2bdf1c4c2"},{"name":"Images","item":[{"name":"Create Images","id":"c43bea48-5a15-443c-b662-63b5b3aabd2d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","uuid":"eece520e-c293-4021-a8a6-1a91450ecdec","src":"/C:/Users/clios/OneDrive/Imágenes/BookingApp/Oceania/150/images.jfif"},{"key":"hotelId","value":"151","type":"text","uuid":"61f06abd-ce34-4f2b-bc55-b20b49a35aae"}]},"url":"https://booking-app-b5o8.onrender.com/images","urlObject":{"path":["images"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c43bea48-5a15-443c-b662-63b5b3aabd2d"},{"name":"Get All Images","id":"a37e2bf2-5d72-4570-b247-1007c1ef23fc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://booking-app-b5o8.onrender.com/images","urlObject":{"path":["images"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a37e2bf2-5d72-4570-b247-1007c1ef23fc"},{"name":"Delete Image","id":"a63b5cb6-4a7c-47b6-9652-65d19d5182b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://booking-app-b5o8.onrender.com/images/360","urlObject":{"path":["images","360"],"host":["https://booking-app-b5o8.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a63b5cb6-4a7c-47b6-9652-65d19d5182b7"}],"id":"8bc26f47-8115-451c-a04e-13edd4ae11dc","description":"<p>The <strong>Images</strong> folder contains all endpoints related to hotel images in the Booking App backend. These routes allow authenticated users to upload, list, and delete images associated with hotels, enriching the booking experience with visual content.</p>\n<p>🔑 Key Features</p>\n<ul>\n<li><p><strong>Private access (requires Bearer token):</strong></p>\n</li>\n<li><p><code>GET /images</code> → Retrieve all hotel images.</p>\n</li>\n<li><p><code>POST /images</code> → Upload a new image linked to a hotel.</p>\n</li>\n<li><p><code>DELETE /images/:id</code> → Remove an image by ID.</p>\n</li>\n</ul>\n<p>🧩 Model</p>\n<p>Each image record includes:</p>\n<ul>\n<li><p><code>id</code> (primary key)</p>\n</li>\n<li><p><code>url</code> (link to the image resource)</p>\n</li>\n<li><p><code>hotelId</code> (reference to the hotel)</p>\n</li>\n</ul>\n<p>📊 Dataset</p>\n<p>The backend is seeded with <strong>300+ hotel images</strong>, ensuring diverse and realistic visual data for testing and presentation.</p>\n<p>🔒 Security</p>\n<ul>\n<li><p>All image endpoints are private and require authentication.</p>\n</li>\n<li><p>Only authorized users can manage hotel images.</p>\n</li>\n</ul>\n","_postman_id":"8bc26f47-8115-451c-a04e-13edd4ae11dc"}],"event":[{"listen":"prerequest","script":{"id":"c3e881c1-7109-4969-9ed8-45f230c8a374","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"b06358cd-4000-4c4d-b7e7-2b62fcaf6c4a","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"key":"BASE_URL","value":"https://booking-app-b5o8.onrender.com"}]}