Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - dev-ajithkumar/natours-api: Natours API: Booking nature tours and adventures. · GitHub
Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dev-ajithkumar/natours-api: Natours API: Booking nature tours and adventures. · GitHub
Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dev-ajithkumar/natours-api: Natours API: Booking nature tours and adventures. · GitHub
Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - dev-ajithkumar/natours-api: Natours API: Booking nature tours and adventures. · GitHub
Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dev-ajithkumar/natours-api: Natours API: Booking nature tours and adventures. · GitHub
Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dev-ajithkumar/natours-api: Natours API: Booking nature tours and adventures. · GitHub
Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - dev-ajithkumar/natours-api: Natours API: Booking nature tours and adventures. · GitHub
Skip to content

Repository files navigation

Natours API Documentation

Welcome to the Natours API documentation! This API provides endpoints to interact with the Natours application, which is a platform for booking nature tours and adventures.

Base URL for Local Development

Before you start using the API, make sure you have the server up and running on your local machine. Use the following base URL for local development:

Base URL: http://127.0.0.1:3000/

Authentication

The Natours API uses token-based authentication. To access most of the endpoints, you will need to include an access token in the headers of your requests. Obtain an access token by registering as a user and then logging in. The access token will be included in the response after successful login.

Include the access token in your requests as follows:

Authorization: Bearer YOUR_ACCESS_TOKEN

Endpoints

1. Users

Register a new user

  • URL: /api/v1/users/signup
  • Method: POST
  • Description: Register a new user with the Natours platform.
  • Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "your_password",
"passwordConfirm": "your_password"
}

Login

  • URL: /api/v1/users/login
  • Method: POST
  • Description: Log in an existing user and obtain an access token.
  • Request Body:
{
"email": "john@example.com",
"password": "your_password"
}

Get Current User

  • URL: /api/v1/users/me
  • Method: GET
  • Description: Get information about the currently logged-in user.
  • Authorization: Required (Include access token in headers)

2. Tours

Get All Tours

  • URL: /api/v1/tours
  • Method: GET
  • Description: Get a list of all available tours.

Get Single Tour

  • URL: /api/v1/tours/:tourId
  • Method: GET
  • Description: Get detailed information about a specific tour.

Create a Tour

  • URL: /api/v1/tours
  • Method: POST
  • Description: Create a new tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"name": "Tour Name",
"duration": 7,
"maxGroupSize": 12,
"difficulty": "medium",
"price": 1499.99,
"summary": "Tour summary",
"description": "Tour description",
"imageCover": "tour-cover.jpg",
"images": ["image1.jpg", "image2.jpg"],
"startDates": ["2023-09-01", "2023-10-01"],
"startLocation": {
"type": "Point",
"coordinates": [-74.006, 40.7128],
"address": "New York City, NY"
},
"locations": [
{
"type": "Point",
"coordinates": [-122.4194, 37.7749],
"address": "San Francisco, CA"
},
{
"type": "Point",
"coordinates": [-118.2437, 34.0522],
"address": "Los Angeles, CA"
}
]
}

Update a Tour

  • URL: /api/v1/tours/:tourId
  • Method: PATCH
  • Description: Update information for an existing tour.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"name": "New Tour Name",
"price": 1699.99,
"description": "Updated tour description"
}

Delete a Tour

  • URL: /api/v1/tours/:tourId
  • Method: DELETE
  • Description: Delete a tour.
  • Authorization: Required (Include access token in headers)

3. Reviews

Get All Reviews for a Tour

  • URL: /api/v1/tours/:tourId/reviews
  • Method: GET
  • Description: Get all the reviews for a specific tour.

Create a Review

  • URL: /api/v1/tours/:tourId/reviews
  • Method: POST
  • Description: Create a new review for a tour.
  • Authorization: Required (Include access token in headers)
  • Request Body:
{
"review": "A fantastic tour! Highly recommended.",
"rating": 5
}

Get Single Review

  • URL: /api/v1/reviews/:reviewId
  • Method: GET
  • Description: Get detailed information about a specific review.

Update a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: PATCH
  • Description: Update information for an existing review.
  • Authorization: Required (Include access token in headers)
  • Request Body: (Include only the fields you want to update)
{
"review": "An even better experience than I expected!"
}

Delete a Review

  • URL: /api/v1/reviews/:reviewId
  • Method: DELETE
  • Description: Delete a review.
  • Authorization: Required (Include access token in headers)

Error Handling

The API will respond with appropriate error messages and status codes in case of any errors. Refer to the specific endpoint documentation for possible error responses.

Rate Limiting

The API imposes rate limiting to prevent abuse. Exceeding the rate limit will result in HTTP 429 Too Many Requests responses.

Conclusion

This concludes the documentation for the Natours API. Please ensure you have obtained an access token through user registration and login before making authenticated requests. If you have any questions or need further assistance, feel free to reach out to the me.

GitHub : dev-ajithkumar

Happy coding! 🚀

Releases

Packages

Contributors

Languages