{"info":{"_postman_id":"641da8e9-ccef-436c-924d-54688d9a9bae","name":"Natours","description":"<html><head></head><body><p>This API encompasses modern back-end stack, Node, Express, MongoDB, and Mongoose. It empowers developers to build a feature-rich RESTful API with filtering, sorting, and pagination, while delving into Node's mechanics, CRUD operations with MongoDB, advanced Mongoose features, and NoSQL data handling. The API prioritizes security through robust authentication, authorization, encryption, and rate limiting. It also covers server-side rendering and seamless management of emails and file uploads, providing developers with a holistic skill set to create comprehensive and secure real-world applications.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"28422283","collectionId":"641da8e9-ccef-436c-924d-54688d9a9bae","publishedId":"2s9Y5Zv27j","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2023-08-29T17:46:09.000Z"},"item":[{"name":"Tours","item":[{"name":"Get all tours","id":"f25485ca-ed1f-4863-bc21-f129efd7be7b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{URL}}/api/v1/tours?fields&sort&limit&page","description":"<p><strong>Description:</strong> The \"Get All Tours\" feature not only provides unrestricted access to a comprehensive list of tours but also offers customization options through parameters like page, sort, field, and limit. This empowers users to tailor their results according to their preferences, ensuring a personalized and efficient experience while exploring the available tours.</p>\n<p><strong>Authentication</strong>: No authentication required.</p>\n<p><strong>Role Restrictions</strong>: No restrictions.</p>\n<p><strong>Query Parameters</strong>:</p>\n<ul>\n<li><p>field: returns only specified fields</p>\n</li>\n<li><p>sort: arranges the data in accordance to the field</p>\n</li>\n<li><p>limit: returns only specified number of documents per page</p>\n</li>\n<li><p>field: returns only specified number of pages of documents</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","tours"],"host":["{{URL}}"],"query":[{"key":"fields","value":null},{"key":"sort","value":null},{"key":"limit","value":null},{"key":"page","value":null}],"variable":[]}},"response":[{"id":"819dd668-8723-4491-8154-56d1fcbd4aff","name":"Get all tours","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY0ZTI1NjcwMjU4ZjI5N2YwOGY1ZjJhYyIsImlhdCI6MTY5MjU2NTM5NSwiZXhwIjoxNjkyNTY1NDAwfQ.Rwys7u1oJf8NMRg8MDo5A1ve6Yk1IHnC8oGQNoMcp4s","type":"text"}],"url":{"raw":"{{URL}}/api/v1/tours?fields=name,price&sort=ratingsAverage&limit=1&page=3","host":["{{URL}}"],"path":["api","v1","tours"],"query":[{"key":"fields","value":"name,price"},{"key":"sort","value":"ratingsAverage"},{"key":"limit","value":"1"},{"key":"page","value":"3"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=15552000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"X-RateLimit-Limit","value":"100"},{"key":"X-RateLimit-Remaining","value":"98"},{"key":"Date","value":"Tue, 29 Aug 2023 17:50:40 GMT"},{"key":"X-RateLimit-Reset","value":"1693334444"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"548"},{"key":"ETag","value":"W/\"224-0wubv9UguB9vTu/V0JLyEcrtUhE\""},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"tourCount\": 1,\n    \"data\": {\n        \"allDocs\": [\n            {\n                \"guides\": [\n                    {\n                        \"role\": \"lead-guide\",\n                        \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                        \"name\": \"Steve T. Scaife\",\n                        \"email\": \"steve@example.com\",\n                        \"photo\": \"user-10.jpg\"\n                    },\n                    {\n                        \"role\": \"guide\",\n                        \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                        \"name\": \"Ben Hadley\",\n                        \"email\": \"ben@example.com\",\n                        \"photo\": \"user-13.jpg\"\n                    },\n                    {\n                        \"role\": \"guide\",\n                        \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                        \"name\": \"Jennifer Hardy\",\n                        \"email\": \"jennifer@example.com\",\n                        \"photo\": \"user-6.jpg\"\n                    }\n                ],\n                \"_id\": \"5c88fa8cf4afda39709c295a\",\n                \"name\": \"The Snow Adventurer\",\n                \"price\": 997,\n                \"id\": \"5c88fa8cf4afda39709c295a\"\n            }\n        ]\n    }\n}"}],"_postman_id":"f25485ca-ed1f-4863-bc21-f129efd7be7b"},{"name":"Get tour by ID","id":"82eed3d3-f0c8-46e6-b281-929cacd92c31","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/:tourId","description":"<p><strong>Description (GET)</strong>: Retrieve detailed information about a specific tour, offering insights into its features.</p>\n<p><strong>Authentication</strong>: No authentication required.</p>\n<p><strong>Role Restrictions</strong>: No restrictions.</p>\n<p><strong>Path variable:</strong></p>\n<ul>\n<li><code>tourId</code>: The ID of the tour.</li>\n</ul>\n","urlObject":{"path":["api","v1","tours",":tourId"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"tourId"}]}},"response":[{"id":"bf3e00e4-99c4-4d82-b871-1703f45c7794","name":"Get tour by ID","originalRequest":{"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/5c88fa8cf4afda39709c295a"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=15552000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"X-RateLimit-Limit","value":"100"},{"key":"X-RateLimit-Remaining","value":"96"},{"key":"Date","value":"Tue, 29 Aug 2023 17:56:11 GMT"},{"key":"X-RateLimit-Reset","value":"1693334444"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"5751"},{"key":"ETag","value":"W/\"1677-TzpLNFJpXWIvJPw2YBYy/7wW8WU\""},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"data\": {\n        \"startLocation\": {\n            \"type\": \"Point\",\n            \"coordinates\": [\n                -106.822318,\n                39.190872\n            ],\n            \"description\": \"Aspen, USA\",\n            \"address\": \"419 S Mill St, Aspen, CO 81611, USA\"\n        },\n        \"ratingsAverage\": 4.5,\n        \"ratingsQuantity\": 6,\n        \"images\": [\n            \"tour-3-1.jpg\",\n            \"tour-3-2.jpg\",\n            \"tour-3-3.jpg\"\n        ],\n        \"startDates\": [\n            \"2022-01-05T10:00:00.000Z\",\n            \"2022-02-12T10:00:00.000Z\",\n            \"2023-01-06T10:00:00.000Z\"\n        ],\n        \"privateTour\": false,\n        \"guides\": [\n            {\n                \"role\": \"lead-guide\",\n                \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                \"name\": \"Steve T. Scaife\",\n                \"email\": \"steve@example.com\",\n                \"photo\": \"user-10.jpg\"\n            },\n            {\n                \"role\": \"guide\",\n                \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                \"name\": \"Ben Hadley\",\n                \"email\": \"ben@example.com\",\n                \"photo\": \"user-13.jpg\"\n            },\n            {\n                \"role\": \"guide\",\n                \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                \"name\": \"Jennifer Hardy\",\n                \"email\": \"jennifer@example.com\",\n                \"photo\": \"user-6.jpg\"\n            }\n        ],\n        \"_id\": \"5c88fa8cf4afda39709c295a\",\n        \"name\": \"The Snow Adventurer\",\n        \"duration\": 4,\n        \"maxGroupSize\": 10,\n        \"difficulty\": \"difficult\",\n        \"price\": 997,\n        \"summary\": \"Exciting adventure in the snow with snowboarding and skiing\",\n        \"description\": \"Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua, ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum!\\nDolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, exercitation ullamco laboris nisi ut aliquip. Lorem ipsum dolor sit amet, consectetur adipisicing elit!\",\n        \"imageCover\": \"tour-3-cover.jpg\",\n        \"locations\": [\n            {\n                \"type\": \"Point\",\n                \"coordinates\": [\n                    -106.855385,\n                    39.182677\n                ],\n                \"_id\": \"5c88fa8cf4afda39709c295c\",\n                \"description\": \"Aspen Highlands\"\n            },\n            {\n                \"type\": \"Point\",\n                \"coordinates\": [\n                    -106.516623,\n                    39.60499\n                ],\n                \"_id\": \"5c88fa8cf4afda39709c295b\",\n                \"description\": \"Beaver Creek\"\n            }\n        ],\n        \"slug\": \"the-snow-adventurer\",\n        \"__v\": 0,\n        \"reviews\": [\n            {\n                \"_id\": \"5c8a355b14eb5c17645c9109\",\n                \"user\": {\n                    \"role\": \"user\",\n                    \"_id\": \"5c8a1dfa2f8fb814b56fa181\",\n                    \"name\": \"Lourdes Browning\",\n                    \"photo\": \"user-2.jpg\"\n                },\n                \"tour\": {\n                    \"guides\": [\n                        {\n                            \"role\": \"lead-guide\",\n                            \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                            \"name\": \"Steve T. Scaife\",\n                            \"email\": \"steve@example.com\",\n                            \"photo\": \"user-10.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                            \"name\": \"Ben Hadley\",\n                            \"email\": \"ben@example.com\",\n                            \"photo\": \"user-13.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                            \"name\": \"Jennifer Hardy\",\n                            \"email\": \"jennifer@example.com\",\n                            \"photo\": \"user-6.jpg\"\n                        }\n                    ],\n                    \"_id\": \"5c88fa8cf4afda39709c295a\",\n                    \"name\": \"The Snow Adventurer\",\n                    \"id\": \"5c88fa8cf4afda39709c295a\"\n                },\n                \"id\": \"5c8a355b14eb5c17645c9109\"\n            },\n            {\n                \"_id\": \"5c8a37b114eb5c17645c9111\",\n                \"user\": {\n                    \"role\": \"user\",\n                    \"_id\": \"5c8a24402f8fb814b56fa190\",\n                    \"name\": \"Alexander Jones\",\n                    \"photo\": \"user-17.jpg\"\n                },\n                \"tour\": {\n                    \"guides\": [\n                        {\n                            \"role\": \"lead-guide\",\n                            \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                            \"name\": \"Steve T. Scaife\",\n                            \"email\": \"steve@example.com\",\n                            \"photo\": \"user-10.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                            \"name\": \"Ben Hadley\",\n                            \"email\": \"ben@example.com\",\n                            \"photo\": \"user-13.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                            \"name\": \"Jennifer Hardy\",\n                            \"email\": \"jennifer@example.com\",\n                            \"photo\": \"user-6.jpg\"\n                        }\n                    ],\n                    \"_id\": \"5c88fa8cf4afda39709c295a\",\n                    \"name\": \"The Snow Adventurer\",\n                    \"id\": \"5c88fa8cf4afda39709c295a\"\n                },\n                \"id\": \"5c8a37b114eb5c17645c9111\"\n            },\n            {\n                \"_id\": \"5c8a382d14eb5c17645c9116\",\n                \"user\": {\n                    \"role\": \"user\",\n                    \"_id\": \"5c8a1ec62f8fb814b56fa183\",\n                    \"name\": \"Ayla Cornell\",\n                    \"photo\": \"user-4.jpg\"\n                },\n                \"tour\": {\n                    \"guides\": [\n                        {\n                            \"role\": \"lead-guide\",\n                            \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                            \"name\": \"Steve T. Scaife\",\n                            \"email\": \"steve@example.com\",\n                            \"photo\": \"user-10.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                            \"name\": \"Ben Hadley\",\n                            \"email\": \"ben@example.com\",\n                            \"photo\": \"user-13.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                            \"name\": \"Jennifer Hardy\",\n                            \"email\": \"jennifer@example.com\",\n                            \"photo\": \"user-6.jpg\"\n                        }\n                    ],\n                    \"_id\": \"5c88fa8cf4afda39709c295a\",\n                    \"name\": \"The Snow Adventurer\",\n                    \"id\": \"5c88fa8cf4afda39709c295a\"\n                },\n                \"id\": \"5c8a382d14eb5c17645c9116\"\n            },\n            {\n                \"_id\": \"5c8a3a9914eb5c17645c9126\",\n                \"user\": {\n                    \"role\": \"user\",\n                    \"_id\": \"5c8a23c82f8fb814b56fa18d\",\n                    \"name\": \"Laura Wilson\",\n                    \"photo\": \"user-14.jpg\"\n                },\n                \"tour\": {\n                    \"guides\": [\n                        {\n                            \"role\": \"lead-guide\",\n                            \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                            \"name\": \"Steve T. Scaife\",\n                            \"email\": \"steve@example.com\",\n                            \"photo\": \"user-10.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                            \"name\": \"Ben Hadley\",\n                            \"email\": \"ben@example.com\",\n                            \"photo\": \"user-13.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                            \"name\": \"Jennifer Hardy\",\n                            \"email\": \"jennifer@example.com\",\n                            \"photo\": \"user-6.jpg\"\n                        }\n                    ],\n                    \"_id\": \"5c88fa8cf4afda39709c295a\",\n                    \"name\": \"The Snow Adventurer\",\n                    \"id\": \"5c88fa8cf4afda39709c295a\"\n                },\n                \"id\": \"5c8a3a9914eb5c17645c9126\"\n            },\n            {\n                \"_id\": \"5c8a3b9f14eb5c17645c9130\",\n                \"user\": {\n                    \"role\": \"user\",\n                    \"_id\": \"5c8a24282f8fb814b56fa18f\",\n                    \"name\": \"Isabel Kirkland\",\n                    \"photo\": \"user-16.jpg\"\n                },\n                \"tour\": {\n                    \"guides\": [\n                        {\n                            \"role\": \"lead-guide\",\n                            \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                            \"name\": \"Steve T. Scaife\",\n                            \"email\": \"steve@example.com\",\n                            \"photo\": \"user-10.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                            \"name\": \"Ben Hadley\",\n                            \"email\": \"ben@example.com\",\n                            \"photo\": \"user-13.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                            \"name\": \"Jennifer Hardy\",\n                            \"email\": \"jennifer@example.com\",\n                            \"photo\": \"user-6.jpg\"\n                        }\n                    ],\n                    \"_id\": \"5c88fa8cf4afda39709c295a\",\n                    \"name\": \"The Snow Adventurer\",\n                    \"id\": \"5c88fa8cf4afda39709c295a\"\n                },\n                \"id\": \"5c8a3b9f14eb5c17645c9130\"\n            },\n            {\n                \"_id\": \"5c8a3c3b14eb5c17645c9135\",\n                \"user\": {\n                    \"role\": \"user\",\n                    \"_id\": \"5c8a245f2f8fb814b56fa191\",\n                    \"name\": \"Eduardo Hernandez\",\n                    \"photo\": \"user-18.jpg\"\n                },\n                \"tour\": {\n                    \"guides\": [\n                        {\n                            \"role\": \"lead-guide\",\n                            \"_id\": \"5c8a21d02f8fb814b56fa189\",\n                            \"name\": \"Steve T. Scaife\",\n                            \"email\": \"steve@example.com\",\n                            \"photo\": \"user-10.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a23412f8fb814b56fa18c\",\n                            \"name\": \"Ben Hadley\",\n                            \"email\": \"ben@example.com\",\n                            \"photo\": \"user-13.jpg\"\n                        },\n                        {\n                            \"role\": \"guide\",\n                            \"_id\": \"5c8a1f4e2f8fb814b56fa185\",\n                            \"name\": \"Jennifer Hardy\",\n                            \"email\": \"jennifer@example.com\",\n                            \"photo\": \"user-6.jpg\"\n                        }\n                    ],\n                    \"_id\": \"5c88fa8cf4afda39709c295a\",\n                    \"name\": \"The Snow Adventurer\",\n                    \"id\": \"5c88fa8cf4afda39709c295a\"\n                },\n                \"id\": \"5c8a3c3b14eb5c17645c9135\"\n            }\n        ],\n        \"id\": \"5c88fa8cf4afda39709c295a\"\n    }\n}"}],"_postman_id":"82eed3d3-f0c8-46e6-b281-929cacd92c31"},{"name":"Get nearby tours","id":"01b9be78-f134-42a4-a600-3f1f92701210","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/tours-nearme/:distance/centre/:latlng/units/:unit","description":"<p><strong>Description</strong>: This route fetches tours located near a specified geographical center point within a given distance. It enables users to find tours within their proximity.</p>\n<p><strong>Authentication</strong>: No authentication required.</p>\n<p><strong>Role Restrictions</strong>: No restrictions.</p>\n<p><strong>Path Variables</strong>:</p>\n<ul>\n<li><p><code>distance</code>: The distance from the center point.</p>\n</li>\n<li><p><code>latlng</code>: The latitude and longitude of the center point, in form \"lat,long\"</p>\n</li>\n<li><p><code>unit</code>: The unit of measurement (mi or km).</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","tours","tours-nearme",":distance","centre",":latlng","units",":unit"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: number</p>\n","type":"text/plain"},"type":"any","value":"","key":"distance"},{"description":{"content":"<p>type: number,number</p>\n","type":"text/plain"},"type":"any","value":"","key":"latlng"},{"description":{"content":"<p>type: String \nenum: mi (miles) or km (kilometers)</p>\n","type":"text/plain"},"type":"any","value":"","key":"unit"}]}},"response":[],"_postman_id":"01b9be78-f134-42a4-a600-3f1f92701210"},{"name":"Get tour distances","id":"b0a2808b-788c-40fb-83f5-3c17e6548c95","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/distances/:latlng/units/:unit","description":"<p><strong>Description</strong>: This route calculates distances between tours and a specified geographical point. It provides insights into the distances of tours from a given location.</p>\n<p><strong>Authentication</strong>: No authentication required.</p>\n<p><strong>Role Restrictions</strong>: No restrictions.</p>\n<p><strong>Path Variables</strong>:</p>\n<ul>\n<li><p><code>latlng</code>: The latitude and longitude of the point, in form \"lat,long\"</p>\n</li>\n<li><p><code>unit</code>: The unit of measurement (mi or km).</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","tours","distances",":latlng","units",":unit"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: number,number</p>\n","type":"text/plain"},"type":"any","value":"","key":"latlng"},{"description":{"content":"<p>type: String \nenum: mi (miles) or km (kilometers)</p>\n","type":"text/plain"},"type":"any","value":"","key":"unit"}]}},"response":[],"_postman_id":"b0a2808b-788c-40fb-83f5-3c17e6548c95"},{"name":"Get top 5 tours","id":"a023c317-1215-4fef-8554-d38d3af70a93","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/top-5-tours","description":"<p><strong>Description</strong>: This route returns the top 5 tours based on ratings and price. It provides a convenient way to discover the highest-rated tours.</p>\n<p><strong>Authentication</strong>: No authentication required.</p>\n<p><strong>Role Restrictions</strong>: No restrictions.</p>\n","urlObject":{"path":["api","v1","tours","top-5-tours"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"a023c317-1215-4fef-8554-d38d3af70a93"},{"name":"Get tour stats","id":"a27bfaa7-56e6-46b8-89e3-c0b76e7a3c82","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/tour-stats","description":"<p><strong>Description</strong>: This route retrieves statistics about tours, such as the number of tours, average ratings, and pricing distribution. It offers insights into tour data trends.</p>\n<p><strong>Authentication</strong>: No authentication required.</p>\n<p><strong>Role Restrictions</strong>: No restrictions.</p>\n","urlObject":{"path":["api","v1","tours","tour-stats"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"a27bfaa7-56e6-46b8-89e3-c0b76e7a3c82"},{"name":"Get monthly plans","id":"cf8f8b7a-643d-4aa0-a5be-8a97e1bfb6a1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/monthly-plans/:year","description":"<p><strong>Description</strong>: Obtain the number of tours for each month within a specific year, offering insights into tour availability over months.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin and lead-guide roles.</p>\n<p><strong>Path Variables</strong>:</p>\n<ul>\n<li><code>year</code>: The year for which monthly plans are requested.</li>\n</ul>\n","urlObject":{"path":["api","v1","tours","monthly-plans",":year"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: year (number)</p>\n","type":"text/plain"},"type":"any","value":"","key":"year"}]}},"response":[],"_postman_id":"cf8f8b7a-643d-4aa0-a5be-8a97e1bfb6a1"},{"name":"Create new tour","id":"4fb05d06-ae2d-4dd7-88b9-53f7be9f5951","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"POST","header":[],"url":"{{URL}}/api/v1/tours","description":"<p><strong>Description</strong>: Add a new tour to the system, expanding the collection of tours available.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin roles.</p>\n<p><strong>Required body fields:</strong></p>\n<ul>\n<li><p><code>name</code></p>\n</li>\n<li><p><code>duration</code></p>\n</li>\n<li><p><code>maxGroupSize</code></p>\n</li>\n<li><p><code>difficulty</code></p>\n</li>\n<li><p><code>price</code></p>\n</li>\n<li><p><code>summary</code></p>\n</li>\n<li><p><code>imageCover</code></p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","tours"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"4fb05d06-ae2d-4dd7-88b9-53f7be9f5951"},{"name":"Update tour details","id":"d5297ca9-4930-4436-9901-cf36734fd881","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"PATCH","header":[],"url":"{{URL}}/api/v1/tours/:tourId","description":"<p><strong>Description</strong>: Update tour information, allowing modifications to tour details.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin and lead-guide roles.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>tourId</code>: The ID of the tour.</li>\n</ul>\n","urlObject":{"path":["api","v1","tours",":tourId"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"tourId"}]}},"response":[],"_postman_id":"d5297ca9-4930-4436-9901-cf36734fd881"},{"name":"Delete tour","id":"5a94456c-ddff-44d3-a517-bd6e5117dbde","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{URL}}/api/v1/tours/:tourId","description":"<p><strong>Description (DELETE)</strong>: Delete a tour from the system, removing it from the available tours.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin and lead-guide roles.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>tourId</code>: The ID of the tour.</li>\n</ul>\n","urlObject":{"path":["api","v1","tours",":tourId"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"tourId"}]}},"response":[],"_postman_id":"5a94456c-ddff-44d3-a517-bd6e5117dbde"}],"id":"77bbf6bd-596d-4f58-bb7e-925bf1385be5","description":"<p>All API features linked to handling tours.</p>\n","_postman_id":"77bbf6bd-596d-4f58-bb7e-925bf1385be5"},{"name":"Users","item":[{"name":"Get all users","id":"ffc793c6-3930-4da1-bcaa-fd8a380cd62c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{URL}}/api/v1/users","description":"<p><strong>Description</strong>: Retrieve a list of all users.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin users.</p>\n","urlObject":{"path":["api","v1","users"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"ffc793c6-3930-4da1-bcaa-fd8a380cd62c"},{"name":"Get specific user","id":"a15ecbe3-407c-4404-a56c-0b0701214631","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{URL}}/api/v1/tours/:userId","description":"<p><strong>Description (GET)</strong>: Retrieve user details for a specific user.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin users.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>userId</code>: The ID of the user.</li>\n</ul>\n","urlObject":{"path":["api","v1","tours",":userId"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose ObjectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"userId"}]}},"response":[],"_postman_id":"a15ecbe3-407c-4404-a56c-0b0701214631"},{"name":"My data","id":"2d6b41a4-d49a-4889-9231-2177c3c50288","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{URL}}/api/v1/users/me","description":"<p><strong>Description</strong>: This route allows authenticated users to retrieve their own user information.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n","urlObject":{"path":["api","v1","users","me"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"2d6b41a4-d49a-4889-9231-2177c3c50288"},{"name":"Update user","id":"9af7f285-51f9-4a4b-9da4-05ac97a3c6e9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"PATCH","header":[],"url":"127.0.0.1:3000/api/v1/users/:userId","description":"<p><strong>Description (PATCH)</strong>: Update user information for a specific user.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin users.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>userId</code>: The ID of the user.</li>\n</ul>\n","urlObject":{"port":"3000","path":["api","v1","users",":userId"],"host":["127","0","0","1"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"userId"}]}},"response":[],"_postman_id":"9af7f285-51f9-4a4b-9da4-05ac97a3c6e9"},{"name":"Delete User","id":"1bff0224-bb2e-4de0-87ea-61487ea93aed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"127.0.0.1:3000/api/v1/users/:userId","description":"<p><strong>Description (DELETE)</strong>: Delete a specific user from the system.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to admin users.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>userId</code>: The ID of the user.</li>\n</ul>\n","urlObject":{"port":"3000","path":["api","v1","users",":userId"],"host":["127","0","0","1"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"userId"}]}},"response":[],"_postman_id":"1bff0224-bb2e-4de0-87ea-61487ea93aed"},{"name":"Delete me","id":"62db5bbb-175b-4d7c-a127-31566756f413","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"{{URL}}/api/v1/users/deleteUser","description":"<p><strong>Description</strong>: Authenticated users can deactivate their account by setting the \"active\" field to false.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n","urlObject":{"path":["api","v1","users","deleteUser"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"62db5bbb-175b-4d7c-a127-31566756f413"}],"id":"ae460bb6-57ce-4d26-b9e6-896200725f18","description":"<p>All API features linked to handling users.</p>\n","_postman_id":"ae460bb6-57ce-4d26-b9e6-896200725f18"},{"name":"Authentication","item":[{"name":"Signup","event":[{"listen":"test","script":{"id":"25efeed9-2931-4dad-ac6a-bf18740d387a","exec":["pm.environment.set(\"jwt\", pm.response.json().token);"],"type":"text/javascript"}}],"id":"f6f305a1-1c99-408d-8361-a3c4e79d489e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{URL}}/api/v1/users/signup","description":"<p><strong>Description</strong>: This route allows users to sign up by providing their name, email, password, password confirm and role. Upon successful signup, a JWT token is generated for authentication.</p>\n<p><strong>Authentication</strong>: Not applicable.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n<p><strong>Required body fields:</strong></p>\n<ul>\n<li><p>name</p>\n</li>\n<li><p>email</p>\n</li>\n<li><p>password</p>\n</li>\n<li><p>passwordConfirm</p>\n</li>\n<li><p>role (optional but recommended)</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","users","signup"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"f6f305a1-1c99-408d-8361-a3c4e79d489e"},{"name":"Login","event":[{"listen":"test","script":{"id":"61d0613c-ed4e-40f4-81b1-eeb513846d20","exec":["pm.environment.set(\"jwt\", pm.response.json().token);"],"type":"text/javascript"}}],"id":"4d82e2a3-4e2d-4852-a74d-f87132180f01","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"POST","header":[],"url":"{{URL}}/api/v1/users/login","description":"<p><strong>Description</strong>: Users can log in using their email and password. Upon successful login, a JWT token is generated for authentication.</p>\n<p><strong>Authentication</strong>: Not applicable.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n<p><strong>Required body fields:</strong></p>\n<ul>\n<li><p>email</p>\n</li>\n<li><p>password</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","users","login"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"4d82e2a3-4e2d-4852-a74d-f87132180f01"},{"name":"Forgot Password","event":[{"listen":"test","script":{"id":"2c6720ab-e1b9-418b-b16c-8278a31c79d7","exec":[""],"type":"text/javascript"}}],"id":"8571cc25-f296-49e4-b702-fd4e41e15aba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{URL}}/api/v1/users/forgotPassword","description":"<p><strong>Description</strong>: Users who have forgotten their password can initiate the password reset process by providing their email. A reset token is sent to their email address.</p>\n<p><strong>Authentication</strong>: Not applicable.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n","urlObject":{"path":["api","v1","users","forgotPassword"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"8571cc25-f296-49e4-b702-fd4e41e15aba"},{"name":"Reset Password","event":[{"listen":"test","script":{"id":"be1fa513-aa9e-4bee-a6fb-feaaf9ab14c5","exec":["pm.environment.set(\"jwt\", pm.response.json().token);"],"type":"text/javascript"}}],"id":"34bbea5c-7c09-4418-9036-28d2c1cbd960","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"PATCH","header":[],"url":"{{URL}}/api/v1/users/resetPassword/:token","description":"<p><strong>Description</strong>: Users with a valid reset token can use this route to reset their password by providing the new password and password confirmation.</p>\n<p><strong>Authentication</strong>: Not applicable.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>token</code>: The reset token received via email.</li>\n</ul>\n<p><strong>Required body fields</strong>:</p>\n<ul>\n<li><p><code>password</code></p>\n</li>\n<li><p><code>passwordConfirm</code></p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","users","resetPassword",":token"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: JWT token</p>\n","type":"text/plain"},"type":"any","value":"","key":"token"}]}},"response":[],"_postman_id":"34bbea5c-7c09-4418-9036-28d2c1cbd960"},{"name":"Update Password","id":"368880a8-dbe5-4e04-9e81-d5c1099e91b2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"PATCH","header":[],"url":"{{URL}}/api/v1/users/updatePassword","description":"<p><strong>Description</strong>: Authenticated users can update their password by providing the current password, new password, and password confirmation.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n<p><strong>Required body fields</strong>:</p>\n<ul>\n<li><p><code>passwordCurrent</code></p>\n</li>\n<li><p><code>password</code></p>\n</li>\n<li><p><code>passwordConfirm</code></p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","users","updatePassword"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"368880a8-dbe5-4e04-9e81-d5c1099e91b2"},{"name":"Update User Data","id":"3fda1006-0ce7-42c6-b77a-68e84429f615","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"PATCH","header":[],"url":"{{URL}}/api/v1/users/updateUserData","description":"<p><strong>Description</strong>: Authenticated users can update their name and email information.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n<p><strong>Note:</strong> This route excludes password updates.</p>\n","urlObject":{"path":["api","v1","users","updateUserData"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"3fda1006-0ce7-42c6-b77a-68e84429f615"}],"id":"db7996df-2b59-4745-b7fd-44a2318248f7","description":"<p>All API features linked to handling authentication.</p>\n","_postman_id":"db7996df-2b59-4745-b7fd-44a2318248f7"},{"name":"Reviews","item":[{"name":"Get all review","id":"34dbdf7d-bd50-40b5-92f0-34a860850810","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{URL}}/api/v1/review?fields&sort&limit&page","description":"<p><strong>Description:</strong> Retrive all the posted reviews at once.</p>\n<p><strong>Authentication</strong>: Only requires to be logged in.</p>\n<p><strong>Role Restrictions</strong>: No restrictions.</p>\n<p><strong>Query Parameters</strong>:</p>\n<ul>\n<li><p>field: returns only specified fields</p>\n</li>\n<li><p>sort: arranges the data in accordance to the field</p>\n</li>\n<li><p>limit: returns only specified number of documents per page</p>\n</li>\n<li><p>field: returns only specified number of pages of documents</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","review"],"host":["{{URL}}"],"query":[{"key":"fields","value":null},{"key":"sort","value":null},{"key":"limit","value":null},{"key":"page","value":null}],"variable":[]}},"response":[],"_postman_id":"34dbdf7d-bd50-40b5-92f0-34a860850810"},{"name":"Get a review","id":"7cb1391b-04b9-45eb-a16d-6092de3251e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{URL}}/api/v1/review/:reviewId","description":"<p><strong>Description</strong>: Retrieve details about a specific review.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restriction:</strong> Not applicable.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>reviewId:</code> the ID of the review</li>\n</ul>\n","urlObject":{"path":["api","v1","review",":reviewId"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"reviewId"}]}},"response":[],"_postman_id":"7cb1391b-04b9-45eb-a16d-6092de3251e1"},{"name":"Post review","id":"8f972ee4-33e5-418a-a441-f7c12eac6fef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"POST","header":[],"url":"{{URL}}/api/v1/review","description":"<p><strong>Description</strong>: Used to post a new review,</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to users.</p>\n<p><strong>Required body fields</strong>:</p>\n<ul>\n<li><p><code>rating</code></p>\n</li>\n<li><p><code>review</code></p>\n</li>\n<li><p><code>tour</code></p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","review"],"host":["{{URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"8f972ee4-33e5-418a-a441-f7c12eac6fef"},{"name":"Delete review","id":"7281758d-e62a-4503-81f1-fdbf4ff8a112","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"{{URL}}/api/v1/review/:reviewId","description":"<p><strong>Description</strong>: Authenticated users (roles: user, admin) can delete a specific review.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Restricted to users and admin.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>reviewId</code>: The ID of the review.</li>\n</ul>\n","urlObject":{"path":["api","v1","review",":reviewId"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"reviewId"}]}},"response":[],"_postman_id":"7281758d-e62a-4503-81f1-fdbf4ff8a112"},{"name":"Update review","id":"11baacfa-ec99-4ba2-97e4-82988696db29","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"PATCH","header":[],"url":"{{URL}}/api/v1/review/:reviewId","description":"<p><strong>Description</strong>: Authenticated users (roles: user, admin) can update a specific review.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions:</strong> Restricted to users and admin.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>reviewId</code>: The ID of the review.</li>\n</ul>\n","urlObject":{"path":["api","v1","review",":reviewId"],"host":["{{URL}}"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"reviewId"}]}},"response":[],"_postman_id":"11baacfa-ec99-4ba2-97e4-82988696db29"}],"id":"67e810d5-f82a-4b4f-b61f-96172dea5c16","_postman_id":"67e810d5-f82a-4b4f-b61f-96172dea5c16","description":""},{"name":"Review/Tours","item":[{"name":"Get review for specific tour","id":"f128f909-ce67-4966-934d-dc89956a53b3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"127.0.0.1:3000/api/v1/tours/:tourId/reviews","description":"<p><strong>Description (GET)</strong>: Retrieve all reviews for a specific tour.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions</strong>: Not applicable.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>tourId</code>: The ID of the tour.</li>\n</ul>\n","urlObject":{"port":"3000","path":["api","v1","tours",":tourId","reviews"],"host":["127","0","0","1"],"query":[],"variable":[{"description":{"content":"<p>type: MongooseID</p>\n","type":"text/plain"},"type":"any","value":"","key":"tourId"}]}},"response":[],"_postman_id":"f128f909-ce67-4966-934d-dc89956a53b3"},{"name":"Post review for specific tour","id":"721ca91e-2ce0-4668-b9d9-4201c24d84f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{jwt}}"}]},"isInherited":false},"method":"POST","header":[],"url":"127.0.0.1:3000/api/v1/tours/:tourId/reviews","description":"<p><strong>Description</strong>: Authenticated users can create a new review for the specified tour.</p>\n<p><strong>Authentication</strong>: Requires authentication.</p>\n<p><strong>Role Restrictions:</strong> Restricted to users.</p>\n<p><strong>Path Variables:</strong></p>\n<ul>\n<li><code>tourId</code>: The ID of the tour.</li>\n</ul>\n<p><strong>Required body fields</strong>:</p>\n<ul>\n<li><p><code>rating</code></p>\n</li>\n<li><p><code>review</code></p>\n</li>\n</ul>\n","urlObject":{"port":"3000","path":["api","v1","tours",":tourId","reviews"],"host":["127","0","0","1"],"query":[],"variable":[{"description":{"content":"<p>type: Mongoose objectID</p>\n","type":"text/plain"},"type":"any","value":"","key":"tourId"}]}},"response":[],"_postman_id":"721ca91e-2ce0-4668-b9d9-4201c24d84f0"}],"id":"261da349-9cd5-4af8-b2a5-4c27932b2c68","_postman_id":"261da349-9cd5-4af8-b2a5-4c27932b2c68","description":""}]}