{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"db985faf-26cb-45ff-ba4b-be52b3e1d116","name":"TeamSyncPro - API Documentation","description":"This template contains a boilerplate for documentation that you can quickly use.\n\n## Overview\n\nThe TeamSyncPro API provides a robust set of endpoints to facilitate project and task management for teams. This API allows you to create and manage workspaces, projects, sections, and tasks, ensuring efficient and seamless collaboration within your organization.\n\n## **Getting started guide**\n\nTo start using the TeamSyncPro API, you need to follow these steps:\n\n1. **Authentication:** Use the provided endpoints to sign up and log in to receive your JWT Bearer token.\n    \n2. **Authorization:** All API requests must include the Bearer token in the `Authorization` header.\n    \n3. **Endpoints:** Utilize the various endpoints to manage users, workspaces, projects, sections, and tasks.\n    \n4. The API has [rate and usage limits](https://postman.postman.co/workspace/Collection-Templates~6311738d-2e70-441f-ae12-78caf078c5b7/collection/22517504-e9c28f47-1253-44af-a2f3-20dce4da1f18?ctx=documentation#rate-and-usage-limits).\n    \n5. The API only responds to HTTPS-secured communications. Any requests sent via HTTP return an HTTP 301 redirect to the corresponding HTTPS resources.\n    \n6. The API returns request responses in JSON format. When an API request returns an error, it is sent in the JSON response as an error key.\n    \n\n### Example Request\n\n``` bash\ncurl -X POST https://api.teamsyncpro.com/auth/signup \\\n     -H \"Content-Type: application/json\" \\\n     -d '{\"email\":\"user@example.com\", \"password\":\"yourpassword\"}'\n\n ```\n\n## Authentication\n\nThe TeamSyncPro API uses JWT tokens for authentication. After signing up or logging in, include the Bearer token in the `Authorization` header of each request.\n\n### Endpoints\n\n- **POST** /auth/signup: Sign up with email\n    \n- **POST** /auth/login: Login with email\n    \n- **POST** /auth/refresh-token: Refresh Token\n    \n- **GET** /auth/access-token-expired: Check if Access Token Expired\n    \n\n### Example\n\n```\nPOST /auth/login\nHost: api.teamsyncpro.com\nContent-Type: application/json\n{\n  \"email\": \"user@example.com\",\n  \"password\": \"yourpassword\"\n}\n\n ```\n\nStartFragment\n\nInclude the received token in subsequent requests:\n\n```\nGET /user/details\nHost: api.teamsyncpro.com\nAuthorization: Bearer YOUR_JWT_TOKEN\n\n ```\n\n### Authentication error response\n\nIf an API key is missing, malformed, or invalid, you will receive an HTTP 401 Unauthorized response code.\n\n## Rate and usage limits\n\nStartFragment\n\nTo ensure fair use, the TeamSyncPro API imposes rate limits on API requests.\n\n### Rate Limiting\n\nThe API implements a rate limiter using Redis to store request counts. The configuration allows each IP address to make up to 100 requests per 2 minutes.\n\n### Implementation\n\n``` javascript\nimport { rateLimit } from \"express-rate-limit\";\nimport { RedisStore } from \"rate-limit-redis\";\nimport redisClient from \"./redis\";\n// Create and use the rate limiter\nexport const limiter = rateLimit({\n  windowMs: 2 * 60 * 1000, // 2 minutes\n  max: 100, // Limit each IP to 100 requests per window (here, per 2 minutes)\n  standardHeaders: true, // Return rate limit info in the RateLimit-* headers\n  legacyHeaders: false, // Disable the X-RateLimit-* headers\n  store: new RedisStore({\n    sendCommand: (...args: string[]) => redisClient.call(...args),\n  }),\n});\n\n ```\n\n### Error Response\n\nIf the rate limit is exceeded, the API will return an HTTP 429 Too Many Requests status code.\n\n``` json\n{\n   status:429,\n   message: \"Too many requests\"\n}\n\n ```\n\n### Headers Returned\n\nEach API response includes headers to help you understand your usage status:\n\nAPI access rate limits apply at a per-API key basis in unit time. The limit is 300 requests per minute. Also, depending on your plan, you may have usage limits. If you exceed either limit, your request will return an HTTP 429 Too Many Requests status code.\n\nEach API response returns the following set of headers to help you identify your use status:\n\n| Header | Description |\n| --- | --- |\n| `X-RateLimit-Limit` | The maximum number of requests permitted per window (2 minutes). |\n| `X-RateLimit-Remaining` | The number of requests remaining in the current rate limit window. |\n| `X-RateLimit-Reset` | The time at which the current rate limit window resets in UTC epoch seconds |\n\n### 500 response\n\nAn HTTP `500` response from our servers indicates there is an unexpected error. The server is usually operational within the 4 hour. If the error persists or you receive any other form of an HTTP `5XX` error, [contact support](https://teamsyncpro.vercel.app/contact).","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"26033696","collectionId":"db985faf-26cb-45ff-ba4b-be52b3e1d116","publishedId":"2sA3dyiWb2","public":true,"publicUrl":"https://documenter-api.postman.tech/view/26033696/2sA3dyiWb2","privateUrl":"https://go.postman.co/documentation/26033696-db985faf-26cb-45ff-ba4b-be52b3e1d116","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"The TeamSyncPro API provides a robust set of endpoints to facilitate project and task management for teams. This API allows you to create and manage workspaces, projects, sections, and tasks, ensuring efficient and seamless collaboration within your organization."},{"name":"title","value":"TeamSyncPro API documentation"}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.0","publishDate":"2024-07-05T08:14:31.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"TeamSyncPro API documentation","description":"The TeamSyncPro API provides a robust set of endpoints to facilitate project and task management for teams. This API allows you to create and manage workspaces, projects, sections, and tasks, ensuring efficient and seamless collaboration within your organization."},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2sA3dyiWb2"}