{"info":{"_postman_id":"de220d17-c1f8-4324-9b61-a94007a59866","name":"SkillZone API","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"45606507","collectionId":"de220d17-c1f8-4324-9b61-a94007a59866","publishedId":"2sB34coNVf","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-07-06T10:06:47.000Z"},"item":[{"name":"Auth routes","item":[{"name":"Register user","id":"8c7713db-bf3c-4250-8736-4a038097118b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"username\" : \"youssef34\",\r\n    \"email\" : \"y1n3z@gmail.com\",\r\n    \"role\" : \"student\",\r\n    \"phone\" : \"+02157655558\",\r\n    \"password\" : \"123123\",\r\n    \"confirmPassword\" : \"123123\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/auth/register","description":"<h3 id=\"register-user-endpoint\">Register User Endpoint</h3>\n<p>This endpoint allows new users to register by providing their account details. Upon successful registration, the user will be created in the system with the specified attributes.</p>\n<h4 id=\"purpose\">Purpose</h4>\n<p>The purpose of this request is to create a new user account in the system. Users must provide the necessary information to establish their account, which will be stored in the database.</p>\n<h4 id=\"request\">Request</h4>\n<p><strong>Method:</strong> POST<br /><strong>URL:</strong> <code>http://localhost:3000/api/v1/auth/register</code></p>\n<p><strong>Request Body:</strong><br />The request should contain a JSON object with the following parameters:</p>\n<ul>\n<li><code>username</code> (string): The desired username for the new account.</li>\n<li><code>email</code> (string): The email address associated with the account.</li>\n<li><code>role</code> (string): The role of the user, such as \"student\".</li>\n<li><code>phone</code> (string): The phone number of the user.</li>\n<li><code>password</code> (string): The password for the account.</li>\n<li><code>confirmPassword</code> (string): A confirmation of the password to ensure it matches the original.</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"username\": \"exampleUser\",\n  \"email\": \"example@example.com\",\n  \"role\": \"student\",\n  \"phone\": \"+01234567890\",\n  \"password\": \"yourPassword\",\n  \"confirmPassword\": \"yourPassword\"\n}\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<p>Upon successful registration, the response will typically include a confirmation message along with the details of the newly created user account. The structure of the response may include:</p>\n<ul>\n<li><code>status</code> (string): The status of the registration process.</li>\n<li><code>message</code> (string): A success message indicating that the user has been registered.</li>\n<li><code>data</code> (object): An object containing the details of the registered user, such as:<ul>\n<li><code>username</code> (string): The username of the registered user.</li>\n<li><code>email</code> (string): The email of the registered user.</li>\n<li><code>phone</code> (string): The phone number of the registered user.</li>\n<li><code>role</code> (string): The role assigned to the user.</li>\n<li><code>createdAt</code> (string): The timestamp of when the user was created.</li>\n<li><code>studentInformation</code> (object): Contains additional information specific to students, including:<ul>\n<li><code>address</code> (object): The address of the student, which includes:<ul>\n<li><code>country</code> (string): The country of the student.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><code>isActive</code> (boolean): Indicates whether the user account is active.</li>\n<li><code>_id</code> (string): The unique identifier for the user account.</li>\n</ul>\n</li>\n</ul>\n<p><strong>Example Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"\",\n  \"message\": \"\",\n  \"data\": {\n    \"username\": \"\",\n    \"email\": \"\",\n    \"phone\": \"\",\n    \"role\": \"\",\n    \"createdAt\": \"\",\n    \"studentInformation\": {\n      \"address\": {\n        \"country\": \"\"\n      }\n    },\n    \"isActive\": true,\n    \"_id\": \"\"\n  }\n}\n</code></pre>\n<h4 id=\"notes\">Notes</h4>\n<ul>\n<li>Ensure that all required fields are provided and that the password and confirmPassword fields match.</li>\n<li>The email should be unique and not already associated with another account.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","auth","register"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"8c7713db-bf3c-4250-8736-4a038097118b"},{"name":"Login","id":"04d44dc5-9a58-43f8-82b5-efe140371f9d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\" : \"h123@gmail.com\",\r\n    \"password\": \"1212\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/auth/login","description":"<h2 id=\"login-api\">Login API</h2>\n<p>This endpoint allows users to authenticate by logging into their account. It accepts user credentials (email and password) and returns user-related information upon successful login.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: <code>POST</code></li>\n<li><strong>Endpoint</strong>: <code>/api/v1/auth/login</code></li>\n</ul>\n<h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following parameters:</p>\n<ul>\n<li><strong>email</strong> (string): The email address of the user attempting to log in.</li>\n<li><strong>password</strong> (string): The password associated with the user's account.</li>\n</ul>\n<h4 id=\"example-request-body\">Example Request Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"user@example.com\",\n  \"password\": \"your_password\"\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>On a successful login, the server will respond with a JSON object that includes the following fields:</p>\n<ul>\n<li><strong>status</strong> (string): The status of the login attempt.</li>\n<li><strong>message</strong> (string): A message providing additional information about the login attempt.</li>\n<li><strong>data</strong> (object): An object containing user-specific information:<ul>\n<li><strong>id</strong> (string): The unique identifier of the user.</li>\n<li><strong>role</strong> (string): The role assigned to the user within the application.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"example-response-format\">Example Response Format</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"message\": \"Login successful\",\n  \"data\": {\n    \"id\": \"user_id\",\n    \"role\": \"user_role\"\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that the email and password are correctly formatted and valid for successful authentication.</li>\n<li>Handle errors appropriately in your application, as the server may return error messages for invalid credentials or other authentication issues.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","auth","login"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"04d44dc5-9a58-43f8-82b5-efe140371f9d"},{"name":"Refresh-token","id":"be0117f4-3dd2-4dbd-92a4-1f7642d83f7b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:3000/api/v1/auth/refresh-token","description":"<h2 id=\"refresh-token-api\">Refresh Token API</h2>\n<p>This endpoint allows users to obtain a new access token using a refresh token. It is typically used when the access token has expired, enabling users to maintain their session without needing to log in again.</p>\n<h3 id=\"request\">Request</h3>\n<p><strong>Method:</strong> POST<br /><strong>URL:</strong> <code>http://localhost:3000/api/v1/auth/refresh-token</code></p>\n<h4 id=\"request-body-parameters\">Request Body Parameters</h4>\n<ul>\n<li><strong>refreshToken</strong> (string): The refresh token issued during the initial authentication. This token is used to validate the user's session and generate a new access token.</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>Upon a successful request, the API will return a response with a status code of 200 and a content type of application/json. The response will include the following structure:</p>\n<ul>\n<li><strong>status</strong> (string): The status of the request.</li>\n<li><strong>message</strong> (string): A message providing additional information about the request.</li>\n</ul>\n<h3 id=\"expected-response-structure\">Expected Response Structure</h3>\n<ul>\n<li><strong>accessToken</strong> (string): The newly generated access token that can be used for subsequent requests.</li>\n<li><strong>expiresIn</strong> (integer): The duration in seconds until the access token expires.</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that the refresh token is valid and has not expired before making the request.</li>\n<li>If the refresh token is invalid or expired, the API will return an error response indicating the issue.</li>\n<li>This endpoint is essential for maintaining user sessions without requiring frequent logins.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","auth","refresh-token"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"be0117f4-3dd2-4dbd-92a4-1f7642d83f7b"},{"name":"Logout","id":"97983a41-3558-47a2-9d21-c1a3dfd255be","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:3000/api/v1/auth/logout","description":"<h2 id=\"logout-api\">Logout API</h2>\n<p>This endpoint is used to log out a user from the application. It is typically called when a user wants to terminate their session and ensure that their account is no longer accessible from the current device. Logging out helps maintain user security by invalidating the authentication token associated with the user's session.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: POST</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/auth/logout</code></li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body should be sent in the form of <code>application/x-www-form-urlencoded</code>. The following parameter is expected:</p>\n<ul>\n<li><code>token</code> (string): The authentication token of the user that needs to be invalidated upon logout. This token is required to identify the user's session that is to be terminated.</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>On successful logout, the server will respond with a JSON object containing the following structure:</p>\n<ul>\n<li><code>status</code> (string): Indicates the success or failure of the logout operation.</li>\n<li><code>message</code> (string): A message providing additional information about the logout process.</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"\",\n  \"message\": \"\"\n}\n</code></pre>\n<p>This endpoint is crucial for maintaining user security by ensuring that sessions can be terminated effectively.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","auth","logout"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"97983a41-3558-47a2-9d21-c1a3dfd255be"},{"name":"Email verification","id":"b109a097-1ea0-4c22-941a-6a5d3cd06731","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:3000/api/v1/auth/verify-email/ece5964953651cc97311e6b19593288ab83d91f97d958f1f7ae1507f8d259112","description":"<h2 id=\"verify-email-endpoint\">Verify Email Endpoint</h2>\n<p>This endpoint is used to verify a user's email address. It is part of the authentication process, ensuring that the email provided by the user is valid and can be linked to their account.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method:</strong> <code>POST</code></li>\n<li><strong>Endpoint:</strong> <code>http://localhost:3000/api/v1/auth/verify-email/{verificationToken}</code></li>\n</ul>\n<h4 id=\"url-parameters\">URL Parameters</h4>\n<ul>\n<li><code>verificationToken</code> (string): A unique token generated for the email verification process. This token is included in the URL and is essential for identifying the user whose email is being verified.</li>\n</ul>\n<h3 id=\"expected-response\">Expected Response</h3>\n<p>The response will typically include a confirmation of the email verification status. The exact structure of the response may vary, but it is generally expected to return a JSON object indicating whether the verification was successful or if there were any errors encountered during the process.</p>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Email verified successfully.\"\n}\n</code></pre>\n<p>In case of an error, the response may look like:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"message\": \"Invalid verification token.\"\n}\n</code></pre>\n<p>Ensure that the request is made with the correct verification token to receive the appropriate response.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","auth","verify-email","ece5964953651cc97311e6b19593288ab83d91f97d958f1f7ae1507f8d259112"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"b109a097-1ea0-4c22-941a-6a5d3cd06731"},{"name":"Forgot password","id":"79ea10d8-daad-47e3-a667-8a519ae19f22","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\" : \"y1nz@gmail.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/auth/forgot-password","description":"<h2 id=\"forgot-password-api\">Forgot Password API</h2>\n<p>This endpoint allows users to initiate a password reset process by submitting their registered email address. Upon successful submission, the system will process the request and respond accordingly.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: POST</p>\n</li>\n<li><p><strong>URL</strong>: <code>http://localhost:3000/api/v1/auth/forgot-password</code></p>\n</li>\n</ul>\n<h3 id=\"overview\">Overview</h3>\n<p>To reset a password, users must send a request to this endpoint with their registered email address. The system will then send a password reset link to the provided email if it is associated with a valid account.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body must be in JSON format and should contain the following fields:</p>\n<ul>\n<li><strong>email</strong> (string): The email address associated with the user's account. This is required to identify the user who is requesting the password reset.</li>\n</ul>\n<p><strong>Example Request Body</strong>:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"user@example.com\"\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>The response structure will vary based on the success or failure of the password reset request.</p>\n<ul>\n<li><p><strong>Success Response</strong>:</p>\n<ul>\n<li><p><strong>Status Code</strong>: 200 OK</p>\n</li>\n<li><p><strong>Body</strong>: A confirmation message indicating that the password reset link has been sent to the provided email address. The body will contain:</p>\n<ul>\n<li><strong>status</strong> (string): The status of the request.</li>\n<li><strong>message</strong> (string): A message providing additional information about the request.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><strong>Error Response</strong>:</p>\n<ul>\n<li><p><strong>Status Code</strong>: 400 Bad Request (or other relevant error codes)</p>\n</li>\n<li><p><strong>Body</strong>: An error message detailing the reason for the failure, such as \"Invalid email address\" or \"User not found\".</p>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the email provided is registered in the system to receive the password reset instructions.</p>\n</li>\n<li><p>The password must meet any security requirements set by the application (e.g., minimum length, complexity).</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","auth","forgot-password"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"79ea10d8-daad-47e3-a667-8a519ae19f22"},{"name":"OAUTH route","id":"db81c37a-d3d1-45bb-8d51-15a184fd1145","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:3000/api/v1/auth/google","description":"<h2 id=\"google-authentication-endpoint\">Google Authentication Endpoint</h2>\n<p>This endpoint allows users to authenticate via their Google account. By sending a GET request to <code>/api/v1/auth/google</code>, users will be redirected to Google's authentication page. Upon successful authentication, users will be redirected back to the application with the necessary credentials for further access.</p>\n<h3 id=\"expected-outcomes\">Expected Outcomes</h3>\n<ul>\n<li><p>Successful authentication will provide the user with access to the application.</p>\n</li>\n<li><p>In case of failure, appropriate error messages will be returned.</p>\n</li>\n</ul>\n<p>Ensure that the application is configured with the correct Google OAuth credentials for seamless integration.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","auth","google"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"db81c37a-d3d1-45bb-8d51-15a184fd1145"}],"id":"18cfbe63-26d0-4130-9854-f93a54c80038","_postman_id":"18cfbe63-26d0-4130-9854-f93a54c80038","description":""},{"name":"Centers","item":[{"name":"Create center","id":"d1de36d7-5eef-41b1-86e5-04a040ad8ae0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Cairo Learning Hub sub\",\r\n    \"description\": \"Premier educational center in downtown Cairo offering various courses\",\r\n    \"ownerId\": \"685b6878ad4693238cd4bfcd\",\r\n    \"website\": \"https://cairolearninghub.edu.eg\",\r\n    \"categories\": \"Programming\",\r\n    \"contact\": {\r\n      \"email\": \"info@cairolearninghub.edu.eg\",\r\n      \"phone\": \"+20223456789\",\r\n      \"address\": \"Downtown Cairo, Tahrir Square\"\r\n    },\r\n    \"socialMedia\": {\r\n      \"facebook\": \"cairolearninghub\",\r\n      \"linkedin\": \"company/cairolearninghub\",\r\n      \"instagram\": \"cairolearninghub\"\r\n    },\r\n    \"isActive\": true\r\n  }","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/centers","description":"<h2 id=\"add-center\">Add Center</h2>\n<p>This endpoint allows users to add a new center to the system. The request must include relevant information about the center in the body to ensure successful creation.</p>\n<h3 id=\"request-format\">Request Format</h3>\n<ul>\n<li><p><strong>Method</strong>: POST</p>\n</li>\n<li><p><strong>URL</strong>: <code>http://localhost:3000/api/v1/centers</code></p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body should be sent in <code>application/json</code> format and must include the following parameters:</p>\n<ul>\n<li><p><code>name</code> (text): The name of the center.</p>\n</li>\n<li><p><code>description</code> (text): A brief description of the center's purpose or services offered.</p>\n</li>\n<li><p><code>ownerId</code> (text): The unique identifier of the owner of the center.</p>\n</li>\n<li><p><code>website</code> (text): The URL of the center's website.</p>\n</li>\n<li><p><code>categories</code> (text): The categories that the center falls under.</p>\n</li>\n<li><p><code>contact</code> (object): An object containing contact details:</p>\n<ul>\n<li><p><code>email</code> (text): The email address for inquiries.</p>\n</li>\n<li><p><code>phone</code> (text): The phone number for contact.</p>\n</li>\n<li><p><code>address</code> (text): The physical address of the center.</p>\n</li>\n</ul>\n</li>\n<li><p><code>socialMedia</code> (object): An object containing social media links:</p>\n<ul>\n<li><p><code>facebook</code> (text): The Facebook page of the center.</p>\n</li>\n<li><p><code>linkedin</code> (text): The LinkedIn profile of the center.</p>\n</li>\n<li><p><code>instagram</code> (text): The Instagram handle of the center.</p>\n</li>\n</ul>\n</li>\n<li><p><code>isActive</code> (boolean): A flag indicating whether the center is currently active.</p>\n</li>\n</ul>\n<h3 id=\"response-format\">Response Format</h3>\n<p>Upon successful creation of a center, the server will respond with a JSON object that includes the following fields:</p>\n<ul>\n<li><p><code>id</code>: A unique identifier for the newly created center.</p>\n</li>\n<li><p><code>name</code>: The name of the center.</p>\n</li>\n<li><p><code>description</code>: The description provided during the request.</p>\n</li>\n<li><p><code>ownerId</code>: The unique identifier of the owner of the center.</p>\n</li>\n<li><p><code>website</code>: The URL of the center's website.</p>\n</li>\n<li><p><code>categories</code>: The categories that the center falls under.</p>\n</li>\n<li><p><code>contact</code>: An object containing the contact details provided.</p>\n</li>\n<li><p><code>socialMedia</code>: An object containing the social media links provided.</p>\n</li>\n<li><p><code>isActive</code>: The status of the center's activity.</p>\n</li>\n<li><p><code>createdAt</code>: Timestamp indicating when the center was created.</p>\n</li>\n<li><p><code>updatedAt</code>: Timestamp indicating when the center was last updated.</p>\n</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"id\": \"12345\",\n    \"name\": \"Community Center\",\n    \"description\": \"A place for community gatherings and events.\",\n    \"ownerId\": \"685b6878ad4693238cd4bfcd\",\n    \"website\": \"https://communitycenter.edu\",\n    \"categories\": \"Community Services\",\n    \"contact\": {\n        \"email\": \"info@communitycenter.edu\",\n        \"phone\": \"+1234567890\",\n        \"address\": \"123 Main St, Anytown, USA\"\n    },\n    \"socialMedia\": {\n        \"facebook\": \"communitycenter\",\n        \"linkedin\": \"company/communitycenter\",\n        \"instagram\": \"communitycenter\"\n    },\n    \"isActive\": true,\n    \"createdAt\": \"2023-10-01T12:00:00Z\",\n    \"updatedAt\": \"2023-10-01T12:00:00Z\"\n}\n</code></pre>\n<p>Make sure to provide all required fields in the request body to ensure successful creation of the center.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","centers"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"d1de36d7-5eef-41b1-86e5-04a040ad8ae0"},{"name":"Get all centers","id":"109f7e16-29ba-4502-9db5-7afc72136483","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/centers/","description":"<h3 id=\"retrieve-centers\">Retrieve Centers</h3>\n<p>This endpoint allows users to retrieve a list of centers from the API. It is a simple HTTP GET request that does not require any parameters in the request body.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><strong>Method</strong>: GET</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/centers/</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<p>Upon a successful request, the API will return a JSON response with the following structure:</p>\n<ul>\n<li><strong>status</strong>: A string indicating the status of the request.</li>\n<li><strong>data</strong>: An object containing:<ul>\n<li><strong>results</strong>: The total number of center documents retrieved.</li>\n<li><strong>page</strong>: The current page number of the result set.</li>\n<li><strong>documents</strong>: An array of center objects, each containing:<ul>\n<li><strong>contact</strong>: An object with:<ul>\n<li><code>email</code>: The email contact of the center.</li>\n<li><code>phone</code>: The phone contact of the center.</li>\n</ul>\n</li>\n<li><strong>socialMedia</strong>: An object with:<ul>\n<li><code>facebook</code>: The Facebook link of the center.</li>\n</ul>\n</li>\n<li><strong>_id</strong>: Unique identifier for the center.</li>\n<li><strong>name</strong>: The name of the center.</li>\n<li><strong>description</strong>: A brief description of the center.</li>\n<li><strong>ownerId</strong>: Identifier for the owner of the center.</li>\n<li><strong>website</strong>: The website link of the center.</li>\n<li><strong>numberOfBranches</strong>: The number of branches associated with the center.</li>\n<li><strong>createdAt</strong>: Timestamp of when the center was created.</li>\n<li><strong>isActive</strong>: A boolean indicating if the center is currently active.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"notes\">Notes</h4>\n<ul>\n<li>Ensure that the server is running and accessible at the specified URL.</li>\n<li>The response will return an HTTP status code of 200 (OK) if the request is successful.</li>\n<li>If there are no centers available, the <code>results</code> will be 0, and the <code>documents</code> array may be empty.</li>\n<li>This endpoint is useful for clients that need to display a list of available centers to users.</li>\n</ul>\n<p>Make sure to handle any potential errors based on the API's error response structure.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","centers",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"109f7e16-29ba-4502-9db5-7afc72136483"},{"name":"Update center","id":"6f66a552-5aee-45ad-9f82-40a6c07e729d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"contact\": {\r\n        \"email\": \"info@cairo-coding.edu.eg\",\r\n        \"phone\": \"+20 2 12345678\"\r\n    },\r\n    \"socialMedia\": {\r\n        \"facebook\": \"https://facebook.com/CairoCoding\"\r\n    },\r\n    \"_id\": \"685d05bca4345ccd25ae14fe\",\r\n    \"name\": \"Cairo Coding Nasr academy\",\r\n    \"description\": \"Premier technology education center in Egypt offering courses in software development, AI, and cybersecurity in both Arabic and English.\",\r\n    \"website\": \"https://cairo-coding-academy.edu.eg\",\r\n    \"numberOfBranches\": 1\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/centers/685d05bca4345ccd25ae14fe/","description":"<h3 id=\"patch-apiv1centersid\">PATCH /api/v1/centers/{id}</h3>\n<p>This endpoint allows you to update the details of a specific center identified by its unique ID. It is particularly useful for modifying existing information related to a center in the system, such as its name, description, website, contact information, social media links, and active status. This operation is essential for maintaining accurate and up-to-date information about educational centers.</p>\n<h4 id=\"request-parameters\">Request Parameters</h4>\n<p>The request body must be sent in <code>application/json</code> format and should include the following parameters:</p>\n<ul>\n<li><p><strong>name</strong> (text): The name of the center.</p>\n</li>\n<li><p><strong>description</strong> (text): A detailed description of the center's services and facilities.</p>\n</li>\n<li><p><strong>website</strong> (text): The official website of the center.</p>\n</li>\n<li><p><strong>contact</strong> (object): An object containing the contact details of the center.</p>\n<ul>\n<li><p><strong>email</strong> (text): The email address for contacting the center.</p>\n</li>\n<li><p><strong>phone</strong> (text): The phone number for contacting the center.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>socialMedia</strong> (object): An object containing the social media links for the center.</p>\n<ul>\n<li><strong>facebook</strong> (text): The Facebook page of the center.</li>\n</ul>\n</li>\n<li><p><strong>numberOfBranches</strong> (integer): The number of branches the center has.</p>\n</li>\n<li><p><strong>isActive</strong> (boolean): A flag indicating whether the center is currently active.</p>\n</li>\n</ul>\n<h4 id=\"response-structure\">Response Structure</h4>\n<p>Upon successful completion of the request, the response will contain the updated center information in JSON format. The structure of the response will include:</p>\n<ul>\n<li><p><strong>_id</strong>: The unique identifier of the center.</p>\n</li>\n<li><p><strong>name</strong>: The updated name of the center.</p>\n</li>\n<li><p><strong>description</strong>: The updated description of the center.</p>\n</li>\n<li><p><strong>website</strong>: The updated website of the center.</p>\n</li>\n<li><p><strong>contact</strong>: The updated contact details of the center.</p>\n<ul>\n<li><p><strong>email</strong>: The updated email address for contacting the center.</p>\n</li>\n<li><p><strong>phone</strong>: The updated phone number for contacting the center.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>socialMedia</strong>: The updated social media links for the center.</p>\n<ul>\n<li><strong>facebook</strong>: The updated Facebook page of the center.</li>\n</ul>\n</li>\n<li><p><strong>numberOfBranches</strong>: The updated number of branches of the center.</p>\n</li>\n<li><p><strong>isActive</strong>: The updated active status of the center.</p>\n</li>\n<li><p><strong>createdAt</strong>: The timestamp when the center was created.</p>\n</li>\n<li><p><strong>updatedAt</strong>: The timestamp when the center was last updated.</p>\n</li>\n</ul>\n<p>In case of an error, the response will provide an error message detailing the issue encountered during the update process.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","centers","685d05bca4345ccd25ae14fe",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"6f66a552-5aee-45ad-9f82-40a6c07e729d"},{"name":"Delete center","id":"79c750c0-e3c5-4847-acc4-c88908dad084","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:3000/api/v1/centers/685d05bca4345ccd25ae14fe","description":"<h2 id=\"delete-apiv1centersid\">DELETE /api/v1/centers/{id}</h2>\n<p>This endpoint is used to delete a specific center identified by its unique identifier (ID). It is a part of the center management API, allowing users to remove a center from the system.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<ul>\n<li><strong>Path Parameter</strong><ul>\n<li><code>id</code> (string): The unique identifier of the center that you wish to delete. In this example, the ID is <code>685d05bca4345ccd25ae14fe</code>.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"response-structure\">Response Structure</h3>\n<p>Upon successful deletion, the API will respond with a status code indicating the result of the operation. The expected response includes:</p>\n<ul>\n<li><strong>Status Code</strong>: <code>204 No Content</code> - This indicates that the request was successful and that the center has been deleted. There will be no content returned in the response body.</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-xml\">&lt;response&gt;\n  &lt;status&gt;204&lt;/status&gt;\n&lt;/response&gt;\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that the ID provided corresponds to an existing center; otherwise, the request may result in an error response indicating that the center was not found.</li>\n<li>This operation is irreversible; once a center is deleted, it cannot be recovered.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","centers","685d05bca4345ccd25ae14fe"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"79c750c0-e3c5-4847-acc4-c88908dad084"},{"name":"Get center","id":"1b5495c1-c3c4-408b-a792-0d250cc8c10e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/centers/685d05bca4345ccd25ae14fe","urlObject":{"protocol":"http","port":"3000","path":["api","v1","centers","685d05bca4345ccd25ae14fe"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"1b5495c1-c3c4-408b-a792-0d250cc8c10e"},{"name":"Add branch","id":"8d405b4d-10a7-4c6e-b5b1-77d3398703b2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Nasr city Branch\",\r\n    \"address\": {\r\n      \"street\": \"25 El Gaish Road\",\r\n      \"city\": \"Giza\",\r\n      \"postalCode\": \"12599\",\r\n      \"country\": \"Egypt\"\r\n    },\r\n    \"geoLocation\": {\r\n      \"type\": \"Point\",\r\n      \"coordinates\": [30.2001, 30.9187]\r\n    },\r\n    \"phone\": \"+2034567890\",\r\n    \"operatingHours\": [\r\n      {\r\n        \"day\": \"Saturday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Sunday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Monday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Tuesday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Wednesday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      }\r\n    ],\r\n    \"isActive\": true\r\n  }","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/centers/685d05bca4345ccd25ae14fe/branches","description":"<h2 id=\"add-branch-to-center\">Add Branch to Center</h2>\n<p>This endpoint allows you to add a new branch to an existing center identified by its unique ID. The request is made using the HTTP POST method to the specified URL. This operation is essential for expanding the services offered by a center by establishing additional branches.</p>\n<h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be sent in <code>raw</code> JSON format and should include the following parameters:</p>\n<ul>\n<li><strong>centerId</strong> (text): The unique identifier of the center to which the branch is being added.</li>\n<li><strong>adminId</strong> (text): The unique identifier of the administrator responsible for the branch.</li>\n<li><strong>name</strong> (text): The name of the branch being added.</li>\n<li><strong>address</strong> (object): The physical address of the branch, containing:<ul>\n<li><strong>street</strong> (text): The street address of the branch.</li>\n<li><strong>city</strong> (text): The city where the branch is located.</li>\n<li><strong>postalCode</strong> (text): The postal code for the branch's location.</li>\n<li><strong>country</strong> (text): The country where the branch is situated.</li>\n</ul>\n</li>\n<li><strong>geoLocation</strong> (object): The geographical location of the branch, containing:<ul>\n<li><strong>type</strong> (text): The type of geographical feature (e.g., Point).</li>\n<li><strong>coordinates</strong> (array): An array of coordinates (longitude and latitude) representing the branch's location.</li>\n</ul>\n</li>\n<li><strong>phone</strong> (text): The contact number for the branch.</li>\n<li><strong>operatingHours</strong> (array): An array of objects representing the operating hours for the branch, where each object contains:<ul>\n<li><strong>day</strong> (text): The day of the week.</li>\n<li><strong>start</strong> (text): The opening time for that day.</li>\n<li><strong>close</strong> (text): The closing time for that day.</li>\n</ul>\n</li>\n<li><strong>isActive</strong> (boolean): A flag indicating whether the branch is currently active.</li>\n</ul>\n<h3 id=\"response-structure\">Response Structure</h3>\n<p>Upon a successful request, the server will respond with the details of the newly created branch. The response will typically include:</p>\n<ul>\n<li><strong>id</strong>: The unique identifier for the newly created branch.</li>\n<li><strong>name</strong>: The name of the branch.</li>\n<li><strong>address</strong>: The address object of the branch, containing street, city, postal code, and country.</li>\n<li><strong>geoLocation</strong>: The geographical location object of the branch, including type and coordinates.</li>\n<li><strong>phone</strong>: The contact number for the branch.</li>\n<li><strong>operatingHours</strong>: The operating hours array for the branch.</li>\n<li><strong>isActive</strong>: The status indicating whether the branch is active.</li>\n<li><strong>created_at</strong>: Timestamp indicating when the branch was created.</li>\n<li><strong>updated_at</strong>: Timestamp indicating when the branch details were last updated.</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"new_branch_id\",\n  \"name\": \"Branch Name\",\n  \"address\": {\n    \"street\": \"Branch Street\",\n    \"city\": \"Branch City\",\n    \"postalCode\": \"Branch Postal Code\",\n    \"country\": \"Branch Country\"\n  },\n  \"geoLocation\": {\n    \"type\": \"Point\",\n    \"coordinates\": [longitude, latitude]\n  },\n  \"phone\": \"Branch Contact Number\",\n  \"operatingHours\": [\n    {\n      \"day\": \"Saturday\",\n      \"start\": \"10:00\",\n      \"close\": \"18:00\"\n    }\n  ],\n  \"isActive\": true,\n  \"created_at\": \"timestamp\",\n  \"updated_at\": \"timestamp\"\n}\n</code></pre>\n<p>Ensure that all required fields are provided in the request body to successfully create a new branch.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","centers","685d05bca4345ccd25ae14fe","branches"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"8d405b4d-10a7-4c6e-b5b1-77d3398703b2"},{"name":"Get branches","id":"3d47a8c7-9b85-4d3b-bf98-f5809a094ee1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/centers/685d05bca4345ccd25ae14fe/branches","description":"<h2 id=\"get-branches-of-a-center\">Get Branches of a Center</h2>\n<p>This endpoint retrieves a list of branches associated with a specific center identified by its unique ID. </p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: GET</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/centers/{centerId}/branches</code></li>\n<li><strong>Path Parameters</strong>:<ul>\n<li><code>centerId</code> (string): The unique identifier of the center whose branches are to be fetched.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>The response will contain a JSON object with the following structure:</p>\n<ul>\n<li><strong>status</strong> (string): Indicates the success or failure of the request.</li>\n<li><strong>data</strong> (array): An array of branch objects, each containing:<ul>\n<li><code>branchId</code> (string): The unique identifier for the branch.</li>\n<li><code>branchName</code> (string): The name of the branch.</li>\n<li><code>location</code> (string): The physical location of the branch.</li>\n<li><code>contactNumber</code> (string): The contact number for the branch.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"branchId\": \"12345\",\n      \"branchName\": \"Main Branch\",\n      \"location\": \"123 Main St\",\n      \"contactNumber\": \"123-456-7890\"\n    },\n    {\n      \"branchId\": \"67890\",\n      \"branchName\": \"Secondary Branch\",\n      \"location\": \"456 Secondary St\",\n      \"contactNumber\": \"987-654-3210\"\n    }\n  ]\n}\n</code></pre>\n<p>This endpoint is useful for applications that need to display or manage the branches of a specific center.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","centers","685d05bca4345ccd25ae14fe","branches"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"3d47a8c7-9b85-4d3b-bf98-f5809a094ee1"}],"id":"3aa96574-745b-44fc-b871-537847e1f3ad","_postman_id":"3aa96574-745b-44fc-b871-537847e1f3ad","description":""},{"name":"Branches","item":[{"name":"Get branch","id":"32f98cb1-f09b-4c87-b703-c173f8f57817","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/branches/685d0681e63d8f3f217b87d6","description":"<h3 id=\"get-branch-details\">Get Branch Details</h3>\n<p>This endpoint retrieves detailed information about a specific branch identified by its unique identifier.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><strong>Method</strong>: GET</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/branches/{branchId}</code></li>\n<li><strong>Path Parameter</strong>:<ul>\n<li><code>branchId</code> (string): The unique identifier of the branch you wish to retrieve details for. In this example, it is <code>685d0681e63d8f3f217b87d6</code>.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<p>Upon a successful request, the response will include detailed information about the branch. The expected response format typically includes:</p>\n<ul>\n<li><code>id</code>: The unique identifier of the branch.</li>\n<li><code>name</code>: The name of the branch.</li>\n<li><code>location</code>: The physical address or location of the branch.</li>\n<li><code>contact</code>: Contact information for the branch.</li>\n</ul>\n<h4 id=\"notes\">Notes</h4>\n<ul>\n<li>Ensure that the <code>branchId</code> provided in the request is valid and corresponds to an existing branch in the database.</li>\n<li>If the branch is not found, the API may return a 404 status code with an appropriate error message.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","branches","685d0681e63d8f3f217b87d6"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"32f98cb1-f09b-4c87-b703-c173f8f57817"},{"name":"Update branch","id":"c462cf69-4a22-4bb0-8baf-2fe1cea52927","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n     \"name\": \"Nasr city Branch 2\",\r\n    \"phone\": \"+2034567890\",\r\n    \"operatingHours\": [\r\n      {\r\n        \"day\": \"Saturday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Sunday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Monday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Tuesday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      },\r\n      {\r\n        \"day\": \"Wednesday\",\r\n        \"start\": \"10:00\",\r\n        \"close\": \"18:00\"\r\n      }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/branches/685d0681e63d8f3f217b87d6","description":"<h3 id=\"update-branch-information\">Update Branch Information</h3>\n<p>This endpoint allows you to update specific information about a branch identified by its unique ID. </p>\n<p><strong>HTTP Method:</strong> PATCH<br /><strong>Endpoint:</strong> <code>/api/v1/branches/{branchId}</code><br /><strong>Path Parameter:</strong></p>\n<ul>\n<li><code>branchId</code> (string): The unique identifier for the branch you wish to update.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body must be in JSON format and can include the following parameter:</p>\n<ul>\n<li><code>phone</code> (string): The new phone number for the branch. This should be provided in a valid format.</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"phone\": \"+2 20214234\"\n}\n</code></pre>\n<h4 id=\"response\">Response</h4>\n<p>Upon a successful update, the server will respond with a status code indicating the success of the operation, typically a <code>200 OK</code> status. The response may include the updated branch information, confirming that the changes have been applied.</p>\n<p><strong>Expected Response Structure:</strong></p>\n<ul>\n<li><code>status</code> (string): Indicates the result of the operation (e.g., \"success\").</li>\n<li><code>data</code> (object): Contains the updated branch details.</li>\n</ul>\n<p>This endpoint is useful for maintaining accurate and up-to-date contact information for branches in your system.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","branches","685d0681e63d8f3f217b87d6"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"c462cf69-4a22-4bb0-8baf-2fe1cea52927"},{"name":"Delete Branch","id":"2363e425-11df-4ffd-a74f-917ae00d6d0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:3000/api/v1/branches/685d05bca4345ccd25ae14fe","description":"<h3 id=\"delete-branch-endpoint\">DELETE Branch Endpoint</h3>\n<p>This endpoint is used to delete a specific branch identified by its unique ID. The ID is provided as part of the URL path.</p>\n<h4 id=\"request-format\">Request Format</h4>\n<ul>\n<li><strong>Method</strong>: DELETE</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/branches/{branchId}</code><ul>\n<li>Replace <code>{branchId}</code> with the actual ID of the branch you wish to delete.</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"expected-response-format\">Expected Response Format</h4>\n<p>Upon successful deletion, the API will return a response indicating the status of the operation. The response typically includes:</p>\n<ul>\n<li>A success message confirming that the branch has been deleted.</li>\n<li>The HTTP status code will be <code>204 No Content</code> if the deletion is successful.</li>\n</ul>\n<p>In case the branch ID does not exist, the API may return an error response with an appropriate message and an error code.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","branches","685d05bca4345ccd25ae14fe"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"2363e425-11df-4ffd-a74f-917ae00d6d0b"},{"name":"Near branches","id":"b20ec939-3ad7-4ca4-abf3-3ba3719d4c45","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/branches/nearby?lat=30.3&lng=30.9&radius=49.5&page=1","description":"<h3 id=\"get-nearby-branches\">Get Nearby Branches</h3>\n<p>This endpoint retrieves a list of branches that are located near a specified geographical point. The results can be filtered based on a defined search radius and can be paginated for easier navigation.</p>\n<h4 id=\"request-parameters\">Request Parameters</h4>\n<ul>\n<li><strong>lat</strong> (required, float): The latitude of the location from which to search for nearby branches.</li>\n<li><strong>lng</strong> (required, float): The longitude of the location from which to search for nearby branches.</li>\n<li><strong>radius</strong> (required, float): The search radius in kilometers within which to find nearby branches.</li>\n<li><strong>page</strong> (optional, integer): The page number of the results to retrieve, useful for pagination.</li>\n</ul>\n<h4 id=\"expected-response\">Expected Response</h4>\n<p>The response will contain a list of branches within the specified radius of the given latitude and longitude. Each branch object in the response will typically include details such as branch name, address, and contact information.</p>\n<h4 id=\"notes\">Notes</h4>\n<ul>\n<li>Ensure that the latitude and longitude values are accurate to get the most relevant results.</li>\n<li>The radius parameter allows you to control how far from the specified location you want to search.</li>\n<li>Pagination is supported, so you can specify which page of results you want to retrieve by using the <code>page</code> parameter.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","branches","nearby"],"host":["localhost"],"query":[{"key":"lat","value":"30.3"},{"key":"lng","value":"30.9"},{"key":"radius","value":"49.5"},{"key":"page","value":"1"}],"variable":[]}},"response":[],"_postman_id":"b20ec939-3ad7-4ca4-abf3-3ba3719d4c45"},{"name":"Branch Courses","id":"99725804-bb18-4f9b-bd50-8836063c540a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/branches/685d05bca4345ccd25ae14fe/courses","description":"<h2 id=\"retrieve-courses-for-a-specific-branch\">Retrieve Courses for a Specific Branch</h2>\n<p>This endpoint allows you to retrieve a list of courses associated with a specific branch identified by its unique ID.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: GET</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/branches/{branchId}/courses</code></li>\n</ul>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>branchId</code> (string, required): The unique identifier of the branch for which you want to fetch the associated courses. In this example, the branch ID is <code>686602d45f05862e0fc63749</code>.</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>Upon a successful request, the server will return a list of courses associated with the specified branch. The response will typically include the following:</p>\n<ul>\n<li><strong>status</strong> (string): Indicates the success or failure of the request.</li>\n<li><strong>data</strong> (array): An array of course objects, each containing details about the course, such as course ID, name, description, and other relevant attributes.</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that the <code>branchId</code> is valid and corresponds to an existing branch in the system.</li>\n<li>This endpoint may return an empty array if there are no courses associated with the specified branch.</li>\n<li>Handle potential errors, such as invalid branch IDs or server issues, appropriately in your application.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","branches","685d05bca4345ccd25ae14fe","courses"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"99725804-bb18-4f9b-bd50-8836063c540a"},{"name":"Create Course","id":"4d9404be-bc1a-40ac-8333-8afdcf5eae18","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \".NET Web Development\",\r\n    \"description\": \"Comprehensive course covering back-end development\",\r\n    \"category\": \"Programming\",\r\n    \"price\": 3000,\r\n    \"duration\": \"3 months\",\r\n    \"startDate\": \"2023-10-15T00:00:00.000Z\",\r\n    \"schedule\": [\r\n      {\r\n        \"day\": \"Monday\",\r\n        \"time\": \"10:00-13:00\"\r\n      },\r\n      {\r\n        \"day\": \"Wednesday\",\r\n        \"time\": \"10:00-13:00\"\r\n      }\r\n    ],\r\n    \"capacity\": 20,\r\n    \"enrolled\": 15,\r\n    \"requirments\": [\"Basic programming knowledge\", \"Laptop\"],\r\n    \"instructorDetails\": {\r\n      \"fullname\": \"Omar Hassan Saif\",\r\n      \"bio\": \"Senior software engineer with 10+ years of experience\",\r\n      \"specialties\": [\"JavaScript\", \"React\", \"Node.js\"],\r\n      \"contactEmail\": \"omar.hassan@example.com\",\r\n      \"socialMedia\": {\r\n        \"linkedIn\": \"omarhassan\",\r\n        \"twitter\": \"omarhassan_dev\"\r\n      }\r\n    },\r\n    \"isActive\": true\r\n  }","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/branches/686a442dd8b74973a812e5fa/courses","description":"<h2 id=\"add-course-to-branch\">Add Course to Branch</h2>\n<p>This endpoint allows you to add a new course to a specific branch identified by its unique ID. The request is made via an HTTP POST method, and it requires a JSON payload containing the details of the course to be added.</p>\n<h3 id=\"request-body-format\">Request Body Format</h3>\n<p>The request body must be in JSON format and include the following parameters:</p>\n<ul>\n<li><strong>title</strong> (string): The title of the course.</li>\n<li><strong>slug</strong> (string): A URL-friendly version of the course title.</li>\n<li><strong>description</strong> (string): A brief description of the course content.</li>\n<li><strong>category</strong> (string): The category under which the course falls (e.g., Programming).</li>\n<li><strong>price</strong> (number): The cost of enrolling in the course.</li>\n<li><strong>duration</strong> (string): The duration of the course (e.g., \"12 weeks (3 months)\").</li>\n<li><strong>startDate</strong> (string): The date when the course will commence (in YYYY-MM-DD format).</li>\n<li><strong>schedule</strong> (array): An array of objects detailing the schedule of the course, each containing:<ul>\n<li><strong>day</strong> (string): The day of the week the course is held.</li>\n<li><strong>time</strong> (string): The time range for the course sessions.</li>\n</ul>\n</li>\n<li><strong>capacity</strong> (number): The maximum number of students that can enroll in the course.</li>\n<li><strong>enrolled</strong> (number): The current number of students enrolled in the course.</li>\n<li><strong>requirements</strong> (array): An array of prerequisites needed to enroll in the course.</li>\n<li><strong>isActive</strong> (boolean): Indicates whether the course is currently active.</li>\n<li><strong>isFull</strong> (boolean): Indicates whether the course has reached its full capacity.</li>\n<li><strong>instructorDetails</strong> (object): An object containing information about the instructor, including:<ul>\n<li><strong>fullname</strong> (string): The full name of the instructor.</li>\n<li><strong>bio</strong> (string): A brief biography of the instructor.</li>\n<li><strong>specialties</strong> (array): An array of specialties or areas of expertise of the instructor.</li>\n<li><strong>contactEmail</strong> (string): The email address to contact the instructor.</li>\n<li><strong>socialMedia</strong> (object): An object containing links to the instructor's social media profiles, such as:<ul>\n<li><strong>linkedIn</strong> (string): The LinkedIn profile URL.</li>\n<li><strong>twitter</strong> (string): The Twitter handle.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"response-structure\">Response Structure</h3>\n<p>Upon a successful request, the API will return a response indicating the status of the operation. The response will typically include:</p>\n<ul>\n<li><strong>success</strong> (boolean): Indicates whether the course was added successfully.</li>\n<li><strong>message</strong> (string): A message providing additional details about the operation.</li>\n<li><strong>course</strong> (object): The newly created course object, which will mirror the structure of the request body, confirming the details that were added.</li>\n</ul>\n<p>Make sure to validate the request data before sending it to ensure that all required fields are included and correctly formatted.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","branches","686a442dd8b74973a812e5fa","courses"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"4d9404be-bc1a-40ac-8333-8afdcf5eae18"},{"name":"Branch Instructors","id":"e85cfc44-50cc-493e-b698-16af53709971","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/branches/686a442dd8b74973a812e5fa/instructors","description":"<h2 id=\"get-instructors-by-branch-id\">Get Instructors by Branch ID</h2>\n<p>This endpoint retrieves a list of instructors associated with a specific branch identified by its unique ID.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method:</strong> <code>GET</code></li>\n<li><strong>Endpoint:</strong> <code>/api/v1/branches/{id}/instructors</code></li>\n<li><strong>Path Parameters:</strong><ul>\n<li><code>id</code> (string): The unique identifier of the branch for which the instructors are being requested.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>On a successful request, the response will contain a list of instructors associated with the specified branch. The expected response format is typically JSON, containing an array of instructor objects, each with relevant details.</p>\n<h3 id=\"example-response-structure\">Example Response Structure</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"instructors\": [\n    {\n      \"id\": \"instructor_id_1\",\n      \"name\": \"Instructor Name 1\",\n      \"subject\": \"Subject 1\"\n    },\n    {\n      \"id\": \"instructor_id_2\",\n      \"name\": \"Instructor Name 2\",\n      \"subject\": \"Subject 2\"\n    }\n  ]\n}\n</code></pre>\n<p>Ensure to replace <code>{id}</code> in the endpoint with the actual branch ID you wish to query.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","branches","686a442dd8b74973a812e5fa","instructors"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e85cfc44-50cc-493e-b698-16af53709971"}],"id":"25959682-8a9c-49f2-9a02-ea871b6da157","_postman_id":"25959682-8a9c-49f2-9a02-ea871b6da157","description":""},{"name":"User","item":[{"name":"User information","id":"41162076-ceca-4f96-8332-c16e10c80c33","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/users/me","description":"<h2 id=\"retrieve-user-information\">Retrieve User Information</h2>\n<p>This endpoint allows you to retrieve the details of the currently authenticated user. It is a simple HTTP GET request that does not require any request parameters.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: GET</li>\n<li><strong>Endpoint</strong>: <code>http://localhost:3000/api/v1/users/me</code></li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>Upon a successful request, the server will return a response containing the user's information. The expected response structure typically includes the following fields:</p>\n<ul>\n<li><code>id</code>: Unique identifier for the user.</li>\n<li><code>name</code>: The name of the user.</li>\n<li><code>email</code>: The email address associated with the user account.</li>\n<li><code>createdAt</code>: Timestamp indicating when the user account was created.</li>\n<li><code>updatedAt</code>: Timestamp indicating the last time the user account was updated.</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that you are authenticated before making this request, as it retrieves sensitive user information.</li>\n<li>The response will return a 200 status code on success, while errors will return appropriate HTTP status codes with error messages.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","users","me"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"41162076-ceca-4f96-8332-c16e10c80c33"},{"name":"User update","id":"af21bfca-184d-4eff-91b8-5d9833379b76","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"username\" : \"naax21\",\r\n    \"phone\" : \"+12383492\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/users/me","description":"<h2 id=\"update-user-information\">Update User Information</h2>\n<p>This endpoint allows authenticated users to update their own user information. Specifically, it enables the modification of the user's username.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: PATCH</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/users/me</code></li>\n<li><strong>Request Body</strong>: The request body must be in JSON format and should include the following parameter:<ul>\n<li><code>username</code> (string): The new username for the user. This parameter is required to update the user's username.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"username\": \"newUsername\"\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>Upon a successful update, the API will respond with a status code indicating success (typically 200 OK) and may return the updated user information, confirming the change.</p>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that the user is authenticated before making this request, as it requires valid user credentials.</li>\n<li>The username must adhere to any specified constraints (e.g., length, uniqueness) set by the application.</li>\n<li>If the update is unsuccessful, the API may return an error message detailing the reason for the failure (e.g., invalid username).</li>\n</ul>\n<p>This endpoint is essential for users who wish to customize their profile and maintain accurate account information.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","users","me"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"af21bfca-184d-4eff-91b8-5d9833379b76"},{"name":"Change password","id":"3db7f1f2-d9a7-4799-b617-5a61537cdd08","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"oldPassword\" : \"123123\",\r\n    \"newPassword\" : \"1212\",\r\n    \"newConfirmPassword\" : \"1212\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/users/me/change-password","description":"<h2 id=\"change-password\">Change Password</h2>\n<p>This endpoint allows users to change their password. It requires the user to provide their current password along with the new password and a confirmation of the new password in the request body.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: PATCH</p>\n</li>\n<li><p><strong>URL</strong>: <code>http://localhost:3000/api/v1/users/me/change-password</code></p>\n</li>\n<li><p><strong>Request Body</strong> (raw JSON):</p>\n<ul>\n<li><p><code>oldPassword</code> (string): The current password of the user that needs to be verified before allowing the change.</p>\n</li>\n<li><p><code>newPassword</code> (string): The new password that the user wishes to set. This should meet any specified security requirements (e.g., minimum length, complexity).</p>\n</li>\n<li><p><code>newConfirmPassword</code> (string): A confirmation of the new password to ensure that it matches the <code>newPassword</code>.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>Upon a successful request, the server will respond with a confirmation of the password change. The expected response will typically include:</p>\n<ul>\n<li><p>A success message indicating that the password has been changed successfully.</p>\n</li>\n<li><p>A status code indicating the success of the operation.</p>\n</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the <code>oldPassword</code> provided is correct; otherwise, the password change will not be permitted.</p>\n</li>\n<li><p>The new password should meet any specified security requirements (e.g., minimum length, complexity).</p>\n</li>\n<li><p>If the request fails, appropriate error messages will be returned to indicate the reason for failure (e.g., incorrect old password, new passwords do not match, weak new password).</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","users","me","change-password"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"3db7f1f2-d9a7-4799-b617-5a61537cdd08"},{"name":"Deactivate account","id":"f09c1551-fc49-47c8-a82f-ddbcc03f26f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:3000/api/v1/users/me/deactivate-account","description":"<h2 id=\"deactivate-account-api\">Deactivate Account API</h2>\n<p>This endpoint allows users to deactivate their account. Upon successful deactivation, the user's account will be marked as inactive, and they will no longer have access to the services associated with the account.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: POST</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/users/me/deactivate-account</code></li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body must be sent in <code>application/x-www-form-urlencoded</code> format and should include the following parameters:</p>\n<ul>\n<li><strong>reason</strong> (text): A string providing the reason for account deactivation. This is optional but recommended for feedback purposes.</li>\n<li><strong>confirmation</strong> (text): A string that confirms the user's intent to deactivate the account. This is typically a simple acknowledgment.</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>On successful account deactivation, the API will return a JSON response with the following structure:</p>\n<ul>\n<li><strong>status</strong> (string): Indicates the result of the operation (e.g., \"success\").</li>\n<li><strong>message</strong> (string): A message confirming that the account has been successfully deactivated.</li>\n<li><strong>data</strong> (object): An object containing additional details about the deactivation, which may include a timestamp of when the account was deactivated.</li>\n</ul>\n<h4 id=\"example-response\">Example Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"message\": \"Your account has been successfully deactivated.\",\n  \"data\": {\n    \"deactivatedAt\": \"2023-10-01T12:00:00Z\"\n  }\n}\n</code></pre>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that the user is authenticated before making this request.</li>\n<li>Deactivation is a permanent action and cannot be undone through this API.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","users","me","deactivate-account"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"f09c1551-fc49-47c8-a82f-ddbcc03f26f8"}],"id":"dcc92b28-b7bc-4327-a417-03e59c99a1ec","_postman_id":"dcc92b28-b7bc-4327-a417-03e59c99a1ec","description":""},{"name":"Students","item":[{"name":"Add student information","id":"2bba9d9f-f9ad-467d-a555-26574879b4c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"studentInformation\": {\r\n      \"ssn\": \"23456789012345\",\r\n      \"birthDate\": \"1998-08-22\",\r\n      \"gender\": \"Female\",\r\n      \"address\": {\r\n        \"street\": \"22 El Gomhoria Street\",\r\n        \"city\": \"Alexandria\",\r\n        \"country\": \"Egypt\"\r\n      },\r\n      \"interestings\": \"Design\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/students/information","description":"<h2 id=\"add-student-information\">Add Student Information</h2>\n<p>This endpoint allows the client to submit detailed information about a student. It is used to create or update a student's profile in the system.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: POST</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/students/information</code></li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The request body must be in JSON format and should include the following structure:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"studentInformation\": {\n    \"ssn\": \"string\",            // The Social Security Number of the student.\n    \"birthDate\": \"string\",      // The birth date of the student in YYYY-MM-DD format.\n    \"gender\": \"string\",         // The gender of the student (e.g., Male, Female).\n    \"address\": {\n      \"street\": \"string\",       // The street address of the student.\n      \"city\": \"string\",         // The city where the student resides.\n      \"country\": \"string\"       // The country where the student resides.\n    },\n    \"interestings\": \"string\"    // The interests or hobbies of the student.\n  }\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p>The response will contain information confirming the successful addition of the student's information. The structure of the response may vary based on the implementation but typically includes:</p>\n<ul>\n<li>A status code indicating success or failure.</li>\n<li>A message confirming the operation.</li>\n<li>The ID or reference of the added student information, if applicable.</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li>Ensure that all required fields are filled out correctly to avoid validation errors.</li>\n<li>The <code>ssn</code> should be unique for each student.</li>\n<li>The <code>birthDate</code> must follow the specified date format.</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","students","information"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"2bba9d9f-f9ad-467d-a555-26574879b4c4"}],"id":"4954926c-2894-42ff-abe3-f1059d007343","_postman_id":"4954926c-2894-42ff-abe3-f1059d007343","description":""},{"name":"Courses","item":[{"name":"Get all courses","id":"c05fb644-f2a1-46c2-b80f-05f39cadc09c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:3000/api/v1/courses","description":"<h2 id=\"retrieve-courses\">Retrieve Courses</h2>\n<p>This endpoint allows you to retrieve a list of courses available in the system.</p>\n<h3 id=\"request-method\">Request Method</h3>\n<ul>\n<li><strong>GET</strong></li>\n</ul>\n<h3 id=\"endpoint\">Endpoint</h3>\n<ul>\n<li><code>http://localhost:3000/api/v1/courses</code></li>\n</ul>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<p>This endpoint does not require any request parameters.</p>\n<h3 id=\"expected-response-format\">Expected Response Format</h3>\n<p>On a successful request, the server will respond with a JSON object containing an array of courses. Each course object may include details such as:</p>\n<ul>\n<li><code>id</code>: Unique identifier for the course</li>\n<li><code>title</code>: Title of the course</li>\n<li><code>description</code>: Brief description of the course</li>\n<li><code>duration</code>: Duration of the course</li>\n<li><code>instructor</code>: Name of the instructor</li>\n</ul>\n<p>The response will have a status code of <code>200 OK</code> if the request is successful.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","courses"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"c05fb644-f2a1-46c2-b80f-05f39cadc09c"},{"name":"Get course","id":"c6170e8f-6279-4a7b-bf34-828f65ed9c9a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:3000/api/v1/courses/Full-Stack-Web-Development","description":"<h3 id=\"api-endpoint-get-course-details\">API Endpoint: Get Course Details</h3>\n<p><strong>Method:</strong> GET<br /><strong>URL:</strong> <code>http://localhost:3000/api/v1/courses/Full-Stack-Web-Development</code></p>\n<h4 id=\"purpose\">Purpose</h4>\n<p>This endpoint retrieves detailed information about a specific course, in this case, the \"Full-Stack Web Development\" course. It is useful for users who want to obtain comprehensive details regarding the course structure, content, and other relevant information.</p>\n<h4 id=\"input-parameters\">Input Parameters</h4>\n<p>This endpoint does not require any input parameters in the request. The course identifier is included directly in the URL.</p>\n<h4 id=\"response-structure\">Response Structure</h4>\n<p>The response will include detailed information about the requested course. The expected structure of the response typically includes the following keys:</p>\n<ul>\n<li><code>id</code>: Unique identifier for the course.</li>\n<li><code>title</code>: The title of the course.</li>\n<li><code>description</code>: A detailed description of what the course covers.</li>\n<li><code>duration</code>: The total duration of the course.</li>\n<li><code>modules</code>: An array of modules included in the course, each containing:<ul>\n<li><code>moduleId</code>: Unique identifier for the module.</li>\n<li><code>moduleName</code>: Name of the module.</li>\n<li><code>content</code>: Description of the content covered in the module.</li>\n</ul>\n</li>\n<li><code>instructor</code>: Information about the instructor, including:<ul>\n<li><code>name</code>: The name of the instructor.</li>\n<li><code>bio</code>: A brief biography of the instructor.</li>\n</ul>\n</li>\n</ul>\n<p>The response will be returned in JSON format.</p>\n<h4 id=\"example-response\">Example Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"12345\",\n  \"title\": \"Full-Stack Web Development\",\n  \"description\": \"Learn to build full-stack applications using modern technologies.\",\n  \"duration\": \"12 weeks\",\n  \"modules\": [\n    {\n      \"moduleId\": \"1\",\n      \"moduleName\": \"HTML &amp; CSS\",\n      \"content\": \"Introduction to web development.\"\n    },\n    {\n      \"moduleId\": \"2\",\n      \"moduleName\": \"JavaScript\",\n      \"content\": \"Learn JavaScript programming.\"\n    }\n  ],\n  \"instructor\": {\n    \"name\": \"John Doe\",\n    \"bio\": \"Experienced web developer and educator.\"\n  }\n}\n</code></pre>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","courses","Full-Stack-Web-Development"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"c6170e8f-6279-4a7b-bf34-828f65ed9c9a"},{"name":"Update course","id":"7cf5c80c-712b-47b7-b910-3d493a904e1c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"instructorDetails\": {\r\n      \"fullname\": \"Karim Mahmoud \",\r\n      \"bio\": \"Digital marketing expert with experience in multinational companies\",\r\n      \"specialties\": [\r\n        \"SEO\",\r\n        \"Social Media Marketing\",\r\n        \"Content Strategy\"\r\n      ],\r\n      \"contactEmail\": \"karim.mahmoud@example.com\",\r\n      \"socialMedia\": {\r\n        \"linkedIn\": \"karimmahmoud\",\r\n        \"twitter\": \"karim_marketing\"\r\n      }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/api/v1/courses/Full-Stack-Web-Development","description":"<h3 id=\"update-course-instructor-details\">Update Course Instructor Details</h3>\n<p>This endpoint allows you to update the instructor details for a specific course identified by its name. In this case, the course is \"Full-Stack-Web-Development\". </p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><strong>Method</strong>: PATCH</li>\n<li><strong>URL</strong>: <code>http://localhost:3000/api/v1/courses/Full-Stack-Web-Development</code></li>\n<li><strong>Content-Type</strong>: application/json</li>\n</ul>\n<h4 id=\"request-body-format\">Request Body Format</h4>\n<p>The request body should be in JSON format and must include the following structure:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"instructorDetails\": {\n    \"fullname\": \"string\",         // Full name of the instructor\n    \"bio\": \"string\",             // A brief biography of the instructor\n    \"specialties\": [\"string\"],   // An array of specialties related to the instructor's expertise\n    \"contactEmail\": \"string\",    // Email address for contacting the instructor\n    \"socialMedia\": {             // Social media handles of the instructor\n      \"linkedIn\": \"string\",      // LinkedIn profile identifier\n      \"twitter\": \"string\"        // Twitter handle\n    }\n  }\n}\n</code></pre>\n<h4 id=\"response-structure\">Response Structure</h4>\n<p>Upon a successful update, the response will typically include a confirmation message or the updated instructor details. The exact structure of the response may vary, but it generally contains:</p>\n<ul>\n<li>A status code indicating the success of the operation (e.g., 200 OK).</li>\n<li>A message confirming the update.</li>\n<li>The updated <code>instructorDetails</code> object reflecting the changes made.</li>\n</ul>\n<p>Make sure to provide valid data in the request body to ensure the update is processed correctly.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","courses","Full-Stack-Web-Development"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"7cf5c80c-712b-47b7-b910-3d493a904e1c"},{"name":"Delete course","id":"e620aed1-0cfb-435f-8f38-963eba09d40b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:3000/api/v1/courses/Digital-Marketing-Fundamentals","description":"<h2 id=\"delete-apiv1coursescoursename\">DELETE /api/v1/courses/{courseName}</h2>\n<p>This endpoint is used to delete a specific course from the system. The course to be deleted is identified by its name, which is passed as a path parameter in the URL.</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<ul>\n<li><code>courseName</code> (string): The name of the course that you wish to delete. In this case, it is <code>Digital-Marketing-Fundamentals</code>.</li>\n</ul>\n<h3 id=\"request-body\">Request Body</h3>\n<p>This DELETE request does not require a request body. No additional parameters are needed to complete the deletion.</p>\n<h3 id=\"response-structure\">Response Structure</h3>\n<p>Upon successful deletion, the API will return a response indicating the result of the operation. The response typically includes:</p>\n<ul>\n<li>A status code indicating the success or failure of the request.</li>\n<li>A message confirming the deletion of the specified course.</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<ul>\n<li><strong>Status Code</strong>: 204 No Content (indicating successful deletion)</li>\n<li><strong>Body</strong>: No content is returned in the body for a successful deletion.</li>\n</ul>\n<h3 id=\"usage\">Usage</h3>\n<p>Use this endpoint when you need to remove a course from the database. Ensure that the specified course name is correct to avoid errors.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","courses","Digital-Marketing-Fundamentals"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e620aed1-0cfb-435f-8f38-963eba09d40b"}],"id":"00513209-c472-4c05-a1fd-9e7af3225e0c","_postman_id":"00513209-c472-4c05-a1fd-9e7af3225e0c","description":""},{"name":"Instructors","item":[{"name":"Instructor courses","id":"26ad4796-74eb-46dd-b19e-65a6f5b07f07","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/api/v1/instructors/Omar-Hassan-Saif/courses","description":"<h2 id=\"get-courses-for-an-instructor\">Get Courses for an Instructor</h2>\n<p>This endpoint retrieves a list of courses associated with a specific instructor.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><strong>Method</strong>: <code>GET</code></li>\n<li><strong>Endpoint</strong>: <code>/api/v1/instructors/{instructorName}/courses</code></li>\n</ul>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>instructorName</code> (string): The name of the instructor whose courses you want to retrieve. In this example, the instructor's name is <code>Karim-Mahmoud-ElKhalily</code>.</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>The response will return a JSON object containing an array of courses related to the specified instructor. Each course object typically includes details such as course ID, title, description, and other relevant information.</p>\n<h3 id=\"expected-response-format\">Expected Response Format</h3>\n<ul>\n<li><strong>Status Code</strong>: <code>200 OK</code> on successful retrieval.</li>\n<li><strong>Response Body</strong>: A JSON array of course objects.</li>\n</ul>\n<p>Example of a course object in the response:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"courseId\": \"string\",\n  \"title\": \"string\",\n  \"description\": \"string\",\n  // other course properties\n}\n</code></pre>\n<p>Ensure that the instructor's name is correctly formatted in the URL to receive the appropriate course data.</p>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","instructors","Omar-Hassan-Saif","courses"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"26ad4796-74eb-46dd-b19e-65a6f5b07f07"}],"id":"ea22a413-dc2f-4220-b86f-f7617eecedb5","_postman_id":"ea22a413-dc2f-4220-b86f-f7617eecedb5","description":""},{"name":"Notifications","item":[{"name":"Get notifications","id":"ea32b449-f3e5-478c-a19b-46a6ffa711c6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:3000/api/v1/notifications","description":"<h2 id=\"get-notifications\">Get Notifications</h2>\n<p>This endpoint retrieves a list of notifications for the authenticated user.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<ul>\n<li><strong>Authorization</strong> (header): A string token used to authenticate the user. This token must be included in the request header to access the notifications.</li>\n</ul>\n<h3 id=\"expected-response\">Expected Response</h3>\n<p>On a successful request, the server will return a JSON object containing the following:</p>\n<ul>\n<li><p><strong>status</strong>: A string indicating the success or failure of the request.</p>\n</li>\n<li><p><strong>data</strong>: An array of notification objects, each containing:</p>\n<ul>\n<li><p><strong>id</strong>: A unique identifier for the notification.</p>\n</li>\n<li><p><strong>title</strong>: The title of the notification.</p>\n</li>\n<li><p><strong>message</strong>: The content of the notification.</p>\n</li>\n<li><p><strong>timestamp</strong>: The time when the notification was created.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the user is authenticated before making the request.</p>\n</li>\n<li><p>If there are no notifications, the <code>data</code> array will be empty.</p>\n</li>\n<li><p>Handle any potential errors gracefully, as the server may return different status codes based on the request's outcome.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["api","v1","notifications"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"ea32b449-f3e5-478c-a19b-46a6ffa711c6"}],"id":"336504be-3478-4fed-af2d-2231d3bc70b9","_postman_id":"336504be-3478-4fed-af2d-2231d3bc70b9","description":""}]}