{"info":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","description":"<html><head></head><body><h1 id=\"chess-match-analytics-api\">♟️ Chess Match Analytics API</h1>\n<p>Welcome to the <strong>Chess Match Analytics API</strong> — a complete backend API for storing, managing, and deeply analyzing chess matches. Whether you're building a chess platform, studying game patterns, or exploring chess statistics, this API covers everything from basic match CRUD to advanced analytics, player profiles, opening theory, and admin controls.</p>\n<hr>\n<h2 id=\"🌐-base-url\">🌐 Base URL</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1\n</code></pre><blockquote>\n<p>Set the <code>baseUrl</code> variable in your Postman environment to your server address, for example: <code>http://localhost:3000</code></p>\n</blockquote>\n<hr>\n<h2 id=\"🔐-authentication\">🔐 Authentication</h2>\n<p>This API uses <strong>JWT (JSON Web Token)</strong> Bearer authentication.</p>\n<p><strong>How it works:</strong></p>\n<ol>\n<li>Register a new account or log in with existing credentials.</li>\n<li>You'll receive a <code>token</code> in the response.</li>\n<li>This token must be sent with every protected request in the <code>Authorization</code> header:</li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer &lt;your_token_here&gt;\n</code></pre><p>The collection is already configured to use <code>{{json_web_token_0tq4}}</code> as the Bearer token. Just set this variable in your environment after logging in and all protected requests will work automatically.</p>\n<hr>\n<h2 id=\"🚀-getting-started\">🚀 Getting Started</h2>\n<p>Follow these steps to start using the API:</p>\n<p><strong>Step 1 — Register</strong> → Send a <code>POST</code> request to <code>/api/v1/auth/register</code> with your username, email, and password.</p>\n<p><strong>Step 2 — Login</strong> → Send a <code>POST</code> request to <code>/api/v1/auth/login</code> with your credentials. Copy the <code>token</code> from the response.</p>\n<p><strong>Step 3 — Save your token</strong> → Set the <code>json_web_token_0tq4</code> variable in your Postman environment to the token value.</p>\n<p><strong>Step 4 — Explore</strong> → You're ready! Start with <code>GET /api/v1/matches</code> to browse chess matches.</p>\n<hr>\n<h2 id=\"📁-folder-overview\">📁 Folder Overview</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Folder</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Auth</strong></td>\n<td>Register, login, and view your profile</td>\n</tr>\n<tr>\n<td><strong>Matches</strong></td>\n<td>Full CRUD for chess matches — create, read, update, delete, filter, sort, bulk operations</td>\n</tr>\n<tr>\n<td><strong>Search</strong></td>\n<td>Search matches, players, openings, ECO codes, moves, and more</td>\n</tr>\n<tr>\n<td><strong>Analytics</strong></td>\n<td>Deep analytics — victory distribution, rating upsets, time control usage, hourly activity</td>\n</tr>\n<tr>\n<td><strong>Stats</strong></td>\n<td>Quick stats — total matches, win rates, draw rates, top openings</td>\n</tr>\n<tr>\n<td><strong>System</strong></td>\n<td>Server health, uptime, logs, config, performance metrics</td>\n</tr>\n<tr>\n<td><strong>Players</strong></td>\n<td>Player profiles, stats, win/loss/draw rates, rating history, comparisons</td>\n</tr>\n<tr>\n<td><strong>Openings Theory</strong></td>\n<td>Browse chess openings — popular, aggressive, defensive, gambits, by ECO code</td>\n</tr>\n<tr>\n<td><strong>Admin &amp; Middleware</strong></td>\n<td>Admin-only routes — manage users, clear cache, view logs, middleware inspection</td>\n</tr>\n<tr>\n<td><strong>Pagination</strong></td>\n<td>Examples of standard, cursor-based, and infinite scroll pagination</td>\n</tr>\n<tr>\n<td><strong>Sorting</strong></td>\n<td>Examples of sorting matches by date, rating, move count, duration, and more</td>\n</tr>\n<tr>\n<td><strong>HEAD &amp; OPTIONS</strong></td>\n<td>HTTP HEAD and OPTIONS requests for checking headers and CORS preflight</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h2 id=\"📦-match-object-fields\">📦 Match Object Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>Unique match identifier</td>\n</tr>\n<tr>\n<td><code>white</code></td>\n<td>string</td>\n<td>Username of the white player</td>\n</tr>\n<tr>\n<td><code>black</code></td>\n<td>string</td>\n<td>Username of the black player</td>\n</tr>\n<tr>\n<td><code>winner</code></td>\n<td>string</td>\n<td><code>\"white\"</code>, <code>\"black\"</code>, or <code>\"draw\"</code></td>\n</tr>\n<tr>\n<td><code>termination</code></td>\n<td>string</td>\n<td>How the game ended: <code>\"checkmate\"</code>, <code>\"resignation\"</code>, <code>\"timeout\"</code>, <code>\"draw\"</code></td>\n</tr>\n<tr>\n<td><code>opening</code></td>\n<td>string</td>\n<td>Name of the opening played</td>\n</tr>\n<tr>\n<td><code>eco</code></td>\n<td>string</td>\n<td>ECO code of the opening (e.g., <code>B20</code>)</td>\n</tr>\n<tr>\n<td><code>moves</code></td>\n<td>number</td>\n<td>Total number of moves in the game</td>\n</tr>\n<tr>\n<td><code>rated</code></td>\n<td>boolean</td>\n<td>Whether the game was rated</td>\n</tr>\n<tr>\n<td><code>timeControl</code></td>\n<td>string</td>\n<td>Time control: <code>\"bullet\"</code>, <code>\"blitz\"</code>, <code>\"rapid\"</code>, <code>\"classical\"</code></td>\n</tr>\n<tr>\n<td><code>whiteRating</code></td>\n<td>number</td>\n<td>Elo rating of the white player</td>\n</tr>\n<tr>\n<td><code>blackRating</code></td>\n<td>number</td>\n<td>Elo rating of the black player</td>\n</tr>\n<tr>\n<td><code>pgn</code></td>\n<td>string</td>\n<td>Full PGN notation of the game</td>\n</tr>\n<tr>\n<td><code>fen</code></td>\n<td>string</td>\n<td>Final FEN position of the game</td>\n</tr>\n<tr>\n<td><code>createdAt</code></td>\n<td>string</td>\n<td>ISO timestamp of when the match was recorded</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h2 id=\"💡-tips\">💡 Tips</h2>\n<ul>\n<li>All list endpoints support <code>?page=1&amp;limit=10</code> for pagination.</li>\n<li>Filter endpoints use dedicated routes like <code>/matches/filter/blitz</code>.</li>\n<li>Sorting endpoints use query params like <code>?sort=moves&amp;order=desc</code>.</li>\n<li>Admin routes require a valid JWT token with admin privileges.</li>\n<li>Use the <strong>HEAD</strong> method to check if a resource exists without downloading the full response body.</li>\n<li>Use the <strong>OPTIONS</strong> method to check which HTTP methods are allowed on an endpoint (useful for CORS).</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"♟️ Chess Match Analytics API","slug":"chess-match-analytics-api"}],"owner":"50839854","collectionId":"d095997f-866b-41ee-91f4-a38e92f51650","publishedId":"2sBXwtqpxw","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-06-17T18:06:28.000Z"},"item":[{"name":"Auth","item":[{"name":"Register","id":"fc9a3e36-777d-4e64-be91-e767b6047a6b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"username\": \"testuser1\",\n    \"email\": \"test1@example.com\",\n    \"password\": \"password123\"\n}"},"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/register","description":"<h2 id=\"register-a-new-account\">Register a New Account</h2>\n<p>Creates a <strong>new user account</strong>. This is the first step before you can log in and access protected endpoints.</p>\n<p><strong>Method:</strong> <code>POST</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/register</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"username\": \"harshit\",\n  \"email\": \"harshit@example.com\",\n  \"password\": \"yourpassword123\"\n}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>✅</td>\n<td>Your unique display name</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>✅</td>\n<td>A valid email address</td>\n</tr>\n<tr>\n<td><code>password</code></td>\n<td>✅</td>\n<td>A secure password</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>201 Created</strong> — Account created successfully.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"User registered successfully\",\n  \"userId\": \"abc123\"\n}\n</code></pre>\n<p><strong>400 Bad Request</strong> — Missing fields or email already in use.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","auth","register"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"fc9a3e36-777d-4e64-be91-e767b6047a6b"},{"name":"Login","id":"e3cdac97-b721-402b-bf40-5b77fba2b148","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"test@example.com\",\n    \"password\": \"password123\"\n}"},"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/login","description":"<h2 id=\"login\">Login</h2>\n<p>Authenticates a user and returns a <strong>JWT token</strong>. You must save this token and use it in the <code>Authorization</code> header for all protected requests.</p>\n<p><strong>Method:</strong> <code>POST</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/login</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"harshit@example.com\",\n  \"password\": \"yourpassword123\"\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Login successful. Copy the <code>token</code> value.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Login successful\",\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n}\n</code></pre>\n<p><strong>401 Unauthorized</strong> — Invalid email or password.</p>\n<blockquote>\n<p>💡 After logging in, set the <code>json_web_token_0tq4</code> environment variable to the token value. All protected requests in this collection will then work automatically.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","auth","login"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e3cdac97-b721-402b-bf40-5b77fba2b148"},{"name":"Get Profile","id":"16cc2950-1fa5-4041-a35a-5f6a5db0ffa2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{auth_secret_0fch}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/profile","description":"<h2 id=\"get-my-profile\">Get My Profile</h2>\n<p>Returns the <strong>profile of the currently logged-in user</strong> based on the JWT token provided.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/profile</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the authenticated user's profile.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"abc123\",\n  \"username\": \"harshit\",\n  \"email\": \"harshit@example.com\",\n  \"createdAt\": \"2024-01-01T00:00:00Z\"\n}\n</code></pre>\n<p><strong>401 Unauthorized</strong> — Token is missing or invalid.</p>\n","urlObject":{"path":["api","v1","auth","profile"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"16cc2950-1fa5-4041-a35a-5f6a5db0ffa2"}],"id":"cdf4041e-67f6-4379-bb36-39fe16623c45","_postman_id":"cdf4041e-67f6-4379-bb36-39fe16623c45","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Matches","item":[{"name":"Get Matches","id":"1ceb515e-0bd4-44bf-af9b-570ffe61585b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches?page=1&limit=10","description":"<h2 id=\"get-all-matches\">Get All Matches</h2>\n<p>Returns a <strong>paginated list of all chess matches</strong> stored in the database.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches?page=1&amp;limit=10</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Page number to retrieve (default: 1)</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Number of results per page (default: 10)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matches.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matches\": [\n    {\n      \"id\": \"TZJHLljE\",\n      \"white\": \"magnus\",\n      \"black\": \"hikaru\",\n      \"winner\": \"white\",\n      \"moves\": 42,\n      \"opening\": \"Sicilian Defense\"\n    }\n  ],\n  \"total\": 1500,\n  \"page\": 1,\n  \"limit\": 10\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"10"}],"variable":[]}},"response":[],"_postman_id":"1ceb515e-0bd4-44bf-af9b-570ffe61585b"},{"name":"Get Match By ID","id":"fdd33336-48da-4eca-b393-95c2095a5054","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/TZJHLljE","description":"<h2 id=\"get-match-by-id\">Get Match By ID</h2>\n<p>Returns the <strong>full details of a single chess match</strong> by its unique ID.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/TZJHLljE</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The unique ID of the match (e.g., <code>TZJHLljE</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the full match object.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"id\": \"TZJHLljE\",\n  \"white\": \"magnus\",\n  \"black\": \"hikaru\",\n  \"winner\": \"white\",\n  \"termination\": \"resignation\",\n  \"opening\": \"Sicilian Defense\",\n  \"eco\": \"B20\",\n  \"moves\": 42,\n  \"rated\": true,\n  \"timeControl\": \"blitz\",\n  \"whiteRating\": 2850,\n  \"blackRating\": 2780\n}\n</code></pre>\n<p><strong>404 Not Found</strong> — No match found with the given ID.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","TZJHLljE"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"fdd33336-48da-4eca-b393-95c2095a5054"},{"name":"Create Match","id":"523f1367-405e-431d-b3c2-176f51d212da","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_TOKEN_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"match_id\": \"test1234\",\n    \"rated\": true,\n    \"turns\": 50,\n    \"victory_status\": \"mate\",\n    \"winner\": \"white\",\n    \"white_id\": \"player1\",\n    \"black_id\": \"player2\",\n    \"white_rating\": 1500,\n    \"black_rating\": 1400,\n    \"opening_name\": \"Sicilian Defense\",\n    \"opening_eco\": \"B20\"\n}"},"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","description":"<h2 id=\"create-a-new-match\">Create a New Match</h2>\n<p>Adds a <strong>new chess match</strong> to the database. Use this to record a game that was played.</p>\n<p><strong>Method:</strong> <code>POST</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"white\": \"magnus\",\n  \"black\": \"hikaru\",\n  \"winner\": \"white\",\n  \"termination\": \"resignation\",\n  \"opening\": \"Sicilian Defense\",\n  \"eco\": \"B20\",\n  \"moves\": 42,\n  \"rated\": true,\n  \"timeControl\": \"blitz\",\n  \"whiteRating\": 2850,\n  \"blackRating\": 2780,\n  \"pgn\": \"1.e4 c5 2.Nf3 ...\",\n  \"fen\": \"rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR\"\n}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>white</code></td>\n<td>✅</td>\n<td>Username of the white player</td>\n</tr>\n<tr>\n<td><code>black</code></td>\n<td>✅</td>\n<td>Username of the black player</td>\n</tr>\n<tr>\n<td><code>winner</code></td>\n<td>✅</td>\n<td><code>\"white\"</code>, <code>\"black\"</code>, or <code>\"draw\"</code></td>\n</tr>\n<tr>\n<td><code>termination</code></td>\n<td>✅</td>\n<td>How the game ended</td>\n</tr>\n<tr>\n<td><code>moves</code></td>\n<td>✅</td>\n<td>Total number of moves</td>\n</tr>\n<tr>\n<td><code>rated</code></td>\n<td>✅</td>\n<td>Whether the game was rated</td>\n</tr>\n<tr>\n<td><code>timeControl</code></td>\n<td>✅</td>\n<td><code>\"bullet\"</code>, <code>\"blitz\"</code>, <code>\"rapid\"</code>, or <code>\"classical\"</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>201 Created</strong> — Match saved successfully.</p>\n<p><strong>400 Bad Request</strong> — Missing or invalid fields.</p>\n","urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"523f1367-405e-431d-b3c2-176f51d212da"},{"name":"Update Match","id":"cf03b1bd-c497-4aa8-8bf9-b9be15fcb821","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{auth_secret_0tq4}}"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Authorization","value":"Bearer YOUR_TOKEN_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"victory_status\": \"resign\"\n}\n","options":{"raw":{"language":"json"}}},"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/test1234","description":"<h2 id=\"update-a-match\">Update a Match</h2>\n<p>Updates <strong>one or more fields</strong> of an existing chess match. Only the fields you include in the request body will be changed.</p>\n<p><strong>Method:</strong> <code>PATCH</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/test1234</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The ID of the match to update (e.g., <code>test1234</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-json--send-only-the-fields-you-want-to-update\">Request Body (JSON) — send only the fields you want to update</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"winner\": \"black\",\n  \"termination\": \"checkmate\"\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Match updated successfully.</p>\n<p><strong>404 Not Found</strong> — Match with the given ID does not exist.</p>\n","urlObject":{"path":["api","v1","matches","test1234"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"cf03b1bd-c497-4aa8-8bf9-b9be15fcb821"},{"name":"Delete Match","id":"c3e04fdb-ea85-4124-a619-f911c85b61ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/test1234","description":"<h2 id=\"delete-a-match\">Delete a Match</h2>\n<p><strong>Permanently deletes</strong> a chess match from the database by its ID. This action cannot be undone.</p>\n<p><strong>Method:</strong> <code>DELETE</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/test1234</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The ID of the match to delete (e.g., <code>test1234</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Match deleted successfully.</p>\n<p><strong>404 Not Found</strong> — Match with the given ID does not exist.</p>\n<blockquote>\n<p>⚠️ This permanently removes the match. Consider using <strong>Archive Match</strong> if you want to hide it without deleting.</p>\n</blockquote>\n","urlObject":{"path":["api","v1","matches","test1234"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c3e04fdb-ea85-4124-a619-f911c85b61ed"},{"name":"Filter Rated","id":"36f35397-2273-42f5-b3be-8a57385d5240","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/rated","description":"<h2 id=\"filter-rated-matches\">Filter Rated Matches</h2>\n<p>Returns only <strong>rated matches</strong> — games where both players' Elo ratings were affected by the result.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/rated</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of rated matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","rated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"36f35397-2273-42f5-b3be-8a57385d5240"},{"name":"Filter Unrated","id":"ed9d6691-74d9-4475-9450-43d701c09350","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/unrated","description":"<h2 id=\"filter-unrated-matches\">Filter Unrated Matches</h2>\n<p>Returns only <strong>unrated (casual) matches</strong> — games played for fun where ratings were not affected.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/unrated</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of unrated matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","unrated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ed9d6691-74d9-4475-9450-43d701c09350"},{"name":"Filter White Wins","id":"ba2d96fd-6a46-4fbe-933f-6f9c5fc7861a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/white-wins","description":"<h2 id=\"filter-white-wins\">Filter White Wins</h2>\n<p>Returns only matches where <strong>white won</strong> the game.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/white-wins</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matches won by white.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","white-wins"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ba2d96fd-6a46-4fbe-933f-6f9c5fc7861a"},{"name":"Filter Black Wins","id":"d2f49931-50bb-463b-93fe-f049d30b930e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/black-wins","description":"<h2 id=\"filter-black-wins\">Filter Black Wins</h2>\n<p>Returns only matches where <strong>black won</strong> the game.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/black-wins</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matches won by black.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","black-wins"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d2f49931-50bb-463b-93fe-f049d30b930e"},{"name":"Filter Checkmates","id":"b3684068-fd02-43f8-aee6-74a74ef9e551","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/checkmates","description":"<h2 id=\"filter-checkmates\">Filter Checkmates</h2>\n<p>Returns only matches that <strong>ended in checkmate</strong> — where one player's king was put in an inescapable check.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/checkmates</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matches that ended by checkmate.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","checkmates"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b3684068-fd02-43f8-aee6-74a74ef9e551"},{"name":"Sort Longest","id":"0fee27f4-08cc-4e2f-bdc7-2d2e2821c423","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/longest","description":"<h2 id=\"sort-by-longest-games\">Sort by Longest Games</h2>\n<p>Returns matches <strong>sorted by move count in descending order</strong> — the longest games appear first.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/longest</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches sorted from most moves to fewest.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","longest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"0fee27f4-08cc-4e2f-bdc7-2d2e2821c423"},{"name":"Sort Shortest","id":"e19944b2-ee1d-438c-92ef-501cec5ec338","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/shortest","description":"<h2 id=\"sort-by-shortest-games\">Sort by Shortest Games</h2>\n<p>Returns matches <strong>sorted by move count in ascending order</strong> — the shortest games appear first.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/shortest</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches sorted from fewest moves to most.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","shortest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e19944b2-ee1d-438c-92ef-501cec5ec338"},{"name":"Sort Highest Rated","id":"6bcdd26f-6ab6-4207-af81-f19efbecb356","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/highest-rated","description":"<h2 id=\"sort-by-highest-rated\">Sort by Highest Rated</h2>\n<p>Returns matches <strong>sorted by the combined player rating</strong> in descending order — the highest-rated games appear first.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/highest-rated</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches sorted by combined rating (highest first).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","highest-rated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"6bcdd26f-6ab6-4207-af81-f19efbecb356"},{"name":"Match Moves","id":"1b5cb0f5-1791-4c43-bf09-b5c01df696a3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/moves","description":"<h2 id=\"get-match-moves\">Get Match Moves</h2>\n<p>Returns the <strong>full list of moves</strong> played in a specific match, in order.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/moves</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The unique ID of the match</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns an ordered list of moves.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matchId\": \"TZJHLljE\",\n  \"moves\": [\"e4\", \"c5\", \"Nf3\", \"d6\", \"d4\", \"cxd4\"]\n}\n</code></pre>\n<p><strong>404 Not Found</strong> — Match not found.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches",":matchId","moves"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","value":"Y1oXTO75","key":"matchId"}]}},"response":[],"_postman_id":"1b5cb0f5-1791-4c43-bf09-b5c01df696a3"},{"name":"Match PGN","id":"dc03906d-c7e4-442c-afd3-79e05067154f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/pgn","description":"<h2 id=\"get-match-pgn\">Get Match PGN</h2>\n<p>Returns the <strong>PGN (Portable Game Notation)</strong> of a specific match. PGN is the standard format for recording chess games and can be imported into any chess software.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/pgn</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The unique ID of the match</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the PGN string.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matchId\": \"TZJHLljE\",\n  \"pgn\": \"[Event \\\"Blitz\\\"]\\n[White \\\"magnus\\\"]\\n[Black \\\"hikaru\\\"]\\n1.e4 c5 2.Nf3 d6 ...\"\n}\n</code></pre>\n<p><strong>404 Not Found</strong> — Match not found.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches",":matchId","pgn"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","value":"Y1oXTO75","key":"matchId"}]}},"response":[],"_postman_id":"dc03906d-c7e4-442c-afd3-79e05067154f"},{"name":"Match FEN","id":"f0d9b2b5-7e2b-4ba4-b99e-1844584d9267","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/fen","description":"<h2 id=\"get-match-fen\">Get Match FEN</h2>\n<p>Returns the <strong>FEN (Forsyth-Edwards Notation)</strong> of the final board position of a specific match. FEN is a compact way to describe a chess board state.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/fen</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The unique ID of the match</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the FEN string of the final position.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matchId\": \"TZJHLljE\",\n  \"fen\": \"rnbqkb1r/pp2pppp/3p1n2/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4\"\n}\n</code></pre>\n<p><strong>404 Not Found</strong> — Match not found.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches",":matchId","fen"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","value":"Y1oXTO75","key":"matchId"}]}},"response":[],"_postman_id":"f0d9b2b5-7e2b-4ba4-b99e-1844584d9267"},{"name":"Match Engine Analysis","id":"bf0fa485-3ebb-4358-a17d-805aa46709f3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/analysis","description":"<h2 id=\"get-match-engine-analysis\">Get Match Engine Analysis</h2>\n<p>Returns a <strong>computer engine analysis</strong> of a specific match — including move evaluations, blunders, mistakes, and inaccuracies for both players.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/analysis</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The unique ID of the match</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the engine analysis report.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matchId\": \"TZJHLljE\",\n  \"white\": {\n    \"accuracy\": 91.2,\n    \"blunders\": 0,\n    \"mistakes\": 1,\n    \"inaccuracies\": 3\n  },\n  \"black\": {\n    \"accuracy\": 78.5,\n    \"blunders\": 2,\n    \"mistakes\": 2,\n    \"inaccuracies\": 4\n  }\n}\n</code></pre>\n<p><strong>404 Not Found</strong> — Match not found.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches",":matchId","analysis"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","value":"Y1oXTO75","key":"matchId"}]}},"response":[],"_postman_id":"bf0fa485-3ebb-4358-a17d-805aa46709f3"},{"name":"Latest Matches","id":"edce1126-90a1-499c-8b33-886ee5a5cf0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/latest","description":"<h2 id=\"get-latest-matches\">Get Latest Matches</h2>\n<p>Returns the <strong>most recently added</strong> chess matches, sorted by creation date in descending order.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/latest</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Number of recent matches to return (optional)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of the most recently added matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","latest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"edce1126-90a1-499c-8b33-886ee5a5cf0b"},{"name":"Trending Matches","id":"a31f712c-82fa-4b3e-9147-6d502bf10b92","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/trending","description":"<h2 id=\"get-trending-matches\">Get Trending Matches</h2>\n<p>Returns the <strong>most viewed or popular</strong> chess matches — based on engagement metrics like views or saves.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/trending</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Number of trending matches to return (optional)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of trending matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","trending"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a31f712c-82fa-4b3e-9147-6d502bf10b92"},{"name":"Random Match","id":"09b27582-cf63-4ba2-9c3f-6d5118ceb69f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/random","description":"<h2 id=\"get-a-random-match\">Get a Random Match</h2>\n<p>Returns a <strong>randomly selected</strong> chess match from the database. Great for exploring games or testing.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/random</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a single random match object.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","random"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"09b27582-cf63-4ba2-9c3f-6d5118ceb69f"},{"name":"Archive Match","id":"1e5d4262-e0a9-4440-b0a9-17144b24e915","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PATCH","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/archive","description":"<h2 id=\"archive-a-match\">Archive a Match</h2>\n<p><strong>Archives</strong> a match — hides it from regular listings without permanently deleting it. Archived matches can be restored later.</p>\n<p><strong>Method:</strong> <code>PATCH</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/archive</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The ID of the match to archive</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Match archived successfully.</p>\n<p><strong>404 Not Found</strong> — Match not found.</p>\n<blockquote>\n<p>💡 Use this instead of Delete when you want to keep the data but hide it from public listings.</p>\n</blockquote>\n","urlObject":{"path":["api","v1","matches",":matchId","archive"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","value":"Y1oXTO75","key":"matchId"}]}},"response":[],"_postman_id":"1e5d4262-e0a9-4440-b0a9-17144b24e915"},{"name":"Restore Match","id":"6e5d447c-211e-4c1a-b9bb-ddbd91f6abce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PATCH","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/restore","description":"<h2 id=\"restore-a-match\">Restore a Match</h2>\n<p>Restores a previously <strong>archived match</strong> back to active status so it appears in regular listings again.</p>\n<p><strong>Method:</strong> <code>PATCH</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId/restore</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>matchId</code></td>\n<td>The ID of the archived match to restore</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Match restored successfully.</p>\n<p><strong>404 Not Found</strong> — Match not found or not currently archived.</p>\n","urlObject":{"path":["api","v1","matches",":matchId","restore"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","value":"Y1oXTO75","key":"matchId"}]}},"response":[],"_postman_id":"6e5d447c-211e-4c1a-b9bb-ddbd91f6abce"},{"name":"Filter Draws","id":"d1af85e1-b432-4506-be6e-37301f169e66","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/draws","description":"<h2 id=\"filter-drawn-games\">Filter Drawn Games</h2>\n<p>Returns only matches that ended in a <strong>draw</strong> (e.g., stalemate, repetition, insufficient material, or agreement).</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/draws</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of drawn matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","draws"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d1af85e1-b432-4506-be6e-37301f169e66"},{"name":"Filter Resignations","id":"72fa8c71-1d9e-4d04-bcf1-67ffaa58ba70","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/resignations","description":"<h2 id=\"filter-resignation-games\">Filter Resignation Games</h2>\n<p>Returns only matches that ended by <strong>resignation</strong> — where one player gave up before checkmate.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/resignations</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of matches that ended by resignation.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","resignations"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"72fa8c71-1d9e-4d04-bcf1-67ffaa58ba70"},{"name":"Filter Timeouts","id":"46252f13-f01b-4ec6-b968-9fad8ec08e7b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/timeouts","description":"<h2 id=\"filter-timeout-games\">Filter Timeout Games</h2>\n<p>Returns only matches that ended due to a <strong>timeout</strong> — where one player ran out of time.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/timeouts</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of matches that ended by timeout.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","timeouts"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"46252f13-f01b-4ec6-b968-9fad8ec08e7b"},{"name":"Filter Rapid","id":"385416c9-a4c0-444d-9871-edc1a44f4d3f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/rapid","description":"<h2 id=\"filter-rapid-games\">Filter Rapid Games</h2>\n<p>Returns only matches played with a <strong>rapid time control</strong> — typically 10 to 25 minutes per player.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/rapid</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of rapid matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","rapid"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"385416c9-a4c0-444d-9871-edc1a44f4d3f"},{"name":"Filter Blitz","id":"0ec1c2ca-e18a-434d-b438-712cae32833f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/blitz","description":"<h2 id=\"filter-blitz-games\">Filter Blitz Games</h2>\n<p>Returns only matches played with a <strong>blitz time control</strong> — typically 3 to 5 minutes per player.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/blitz</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of blitz matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","blitz"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"0ec1c2ca-e18a-434d-b438-712cae32833f"},{"name":"Filter Bullet","id":"e362291d-f838-43cb-8aac-c2507f0c54e7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/bullet","description":"<h2 id=\"filter-bullet-games\">Filter Bullet Games</h2>\n<p>Returns only matches played with a <strong>bullet time control</strong> — typically 1 to 2 minutes per player. These are the fastest chess games.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/bullet</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of bullet matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","bullet"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e362291d-f838-43cb-8aac-c2507f0c54e7"},{"name":"Filter Classical","id":"f923a577-928b-42f8-88a0-192cc81ca7f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/classical","description":"<h2 id=\"filter-classical-games\">Filter Classical Games</h2>\n<p>Returns only matches played with a <strong>classical time control</strong> — typically 30+ minutes per player. These are the most traditional and in-depth chess games.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/classical</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of classical time control matches.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","classical"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"f923a577-928b-42f8-88a0-192cc81ca7f5"},{"name":"Filter High Rated","id":"998805a1-1778-46d8-81f1-664319ac04e6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/high-rated","description":"<h2 id=\"filter-high-rated-games\">Filter High Rated Games</h2>\n<p>Returns matches where both players have a <strong>high Elo rating</strong> (e.g., above 2000). Great for studying master-level games.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/high-rated</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of matches between high-rated players.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","high-rated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"998805a1-1778-46d8-81f1-664319ac04e6"},{"name":"Filter Low Rated","id":"7bf24177-710c-4aa7-8ad1-1ba6c0de1c8d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/low-rated","description":"<h2 id=\"filter-low-rated-games\">Filter Low Rated Games</h2>\n<p>Returns matches where both players have a <strong>low Elo rating</strong> (e.g., below 1200). Useful for studying beginner-level games.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/low-rated</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of matches between low-rated players.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","low-rated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7bf24177-710c-4aa7-8ad1-1ba6c0de1c8d"},{"name":"Filter Long Games","id":"b6b791fa-2f1e-416c-8d0e-dd6884656800","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/long-games","description":"<h2 id=\"filter-long-games\">Filter Long Games</h2>\n<p>Returns matches that had a <strong>high number of moves</strong> — typically games that lasted a long time before a result.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/filter/long-games</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of long matches (many moves).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","filter","long-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b6b791fa-2f1e-416c-8d0e-dd6884656800"},{"name":"Bulk Upload","id":"a6fb6738-133c-4290-8d1f-572f3aad0ef5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk-upload","description":"<h2 id=\"bulk-upload-matches\">Bulk Upload Matches</h2>\n<p>Uploads and saves <strong>multiple chess matches at once</strong> in a single request. Ideal for importing large datasets.</p>\n<p><strong>Method:</strong> <code>POST</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk-upload</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matches\": [\n    {\n      \"white\": \"magnus\",\n      \"black\": \"hikaru\",\n      \"winner\": \"white\",\n      \"moves\": 42,\n      \"rated\": true,\n      \"timeControl\": \"blitz\"\n    },\n    {\n      \"white\": \"fabiano\",\n      \"black\": \"anish\",\n      \"winner\": \"draw\",\n      \"moves\": 60,\n      \"rated\": true,\n      \"timeControl\": \"classical\"\n    }\n  ]\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p><strong>201 Created</strong> — All matches uploaded successfully.</p>\n<p><strong>400 Bad Request</strong> — One or more matches have invalid or missing fields.</p>\n","urlObject":{"path":["api","v1","matches","bulk-upload"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a6fb6738-133c-4290-8d1f-572f3aad0ef5"},{"name":"Bulk Update","id":"ed4c3a35-23df-4c39-b349-f1049ee2083e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PATCH","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk-update","description":"<h2 id=\"bulk-update-matches\">Bulk Update Matches</h2>\n<p>Updates <strong>multiple matches at once</strong> by providing an array of match IDs and the fields to update.</p>\n<p><strong>Method:</strong> <code>PATCH</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk-update</code>\n<strong>Auth Required:</strong> ✅ Yes (Bearer Token)</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"ids\": [\"matchId1\", \"matchId2\"],\n  \"updates\": {\n    \"rated\": true,\n    \"timeControl\": \"blitz\"\n  }\n}\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ids</code></td>\n<td>array</td>\n<td>✅ Yes</td>\n<td>Array of match IDs to update</td>\n</tr>\n<tr>\n<td><code>updates</code></td>\n<td>object</td>\n<td>✅ Yes</td>\n<td>Key-value pairs of fields to update</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — All specified matches updated successfully.</p>\n<p><strong>400 Bad Request</strong> — Invalid IDs or update fields.</p>\n","urlObject":{"path":["api","v1","matches","bulk-update"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ed4c3a35-23df-4c39-b349-f1049ee2083e"},{"name":"Bulk Delete","id":"7ed87e16-3e66-43d3-91fb-8ffafcbc7baa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk-delete","description":"<h2 id=\"bulk-delete-matches\">Bulk Delete Matches</h2>\n<p><strong>Permanently deletes multiple matches</strong> at once by providing an array of match IDs.</p>\n<p><strong>Method:</strong> <code>DELETE</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk-delete</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matchIds\": [\"abc001\", \"abc002\", \"abc003\"]\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — All specified matches deleted.</p>\n<p><strong>400 Bad Request</strong> — Invalid or missing match IDs.</p>\n<blockquote>\n<p>⚠️ This permanently removes all specified matches. This action cannot be undone.</p>\n</blockquote>\n","urlObject":{"path":["api","v1","matches","bulk-delete"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7ed87e16-3e66-43d3-91fb-8ffafcbc7baa"},{"name":"Bulk Archive","id":"3fc61ae9-ad06-4dea-b2f9-f18c96075c68","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PATCH","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk/archive","description":"<h2 id=\"bulk-archive-matches\">Bulk Archive Matches</h2>\n<p>Archives <strong>multiple matches at once</strong> by providing an array of match IDs. Much faster than archiving one by one.</p>\n<p><strong>Method:</strong> <code>PATCH</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk/archive</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matchIds\": [\"abc001\", \"abc002\", \"abc003\"]\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — All specified matches archived successfully.</p>\n<p><strong>400 Bad Request</strong> — Invalid or missing match IDs.</p>\n","urlObject":{"path":["api","v1","matches","bulk","archive"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3fc61ae9-ad06-4dea-b2f9-f18c96075c68"},{"name":"Bulk Restore","id":"7dfe7126-1e86-4e4b-a219-8c0f388138be","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PATCH","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk/restore","description":"<h2 id=\"bulk-restore-matches\">Bulk Restore Matches</h2>\n<p>Restores <strong>multiple archived matches at once</strong> back to active status.</p>\n<p><strong>Method:</strong> <code>PATCH</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/bulk/restore</code>\n<strong>Auth Required:</strong> Yes (Bearer Token)</p>\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"matchIds\": [\"abc001\", \"abc002\", \"abc003\"]\n}\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — All specified matches restored to active status.</p>\n<p><strong>400 Bad Request</strong> — Invalid or missing match IDs.</p>\n","urlObject":{"path":["api","v1","matches","bulk","restore"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7dfe7126-1e86-4e4b-a219-8c0f388138be"},{"name":"Scroll Pagination","id":"93c3a6fd-2a6d-4501-a0bf-a9bacc18912a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/scroll","description":"<h2 id=\"cursor-based-scroll-pagination\">Cursor-Based Scroll Pagination</h2>\n<p>Fetches matches using <strong>cursor-based pagination</strong> — instead of page numbers, a cursor points to a specific position in the dataset. More efficient for large datasets.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/scroll</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Number of results to return</td>\n</tr>\n<tr>\n<td><code>cursor</code></td>\n<td>string</td>\n<td>Cursor value from the previous response</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches and a <code>nextCursor</code> for the next batch.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","scroll"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"93c3a6fd-2a6d-4501-a0bf-a9bacc18912a"},{"name":"Infinite Pagination","id":"7e701d91-dc8e-4a30-80ad-2e4468a31eb6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/infinite","description":"<h2 id=\"infinite-scroll-pagination\">Infinite Scroll Pagination</h2>\n<p>Fetches matches using an <strong>infinite scroll</strong> pattern — loads a batch of results and provides a cursor or token to load the next batch. Ideal for mobile apps or continuous-scroll UIs.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/infinite</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Number of matches to return per batch</td>\n</tr>\n<tr>\n<td><code>after</code></td>\n<td>string</td>\n<td>Cursor from the previous response to get the next batch</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a batch of matches and a <code>nextCursor</code> for the next page.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","infinite"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7e701d91-dc8e-4a30-80ad-2e4468a31eb6"},{"name":"Sort Shortest","id":"2117d335-e6b5-47f2-8810-3d302fd4f8e9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/shortest","description":"<h2 id=\"sort-matches--shortest-first\">Sort Matches — Shortest First</h2>\n<p>Returns all matches sorted by <strong>number of moves in ascending order</strong> — shortest games appear first.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/shortest</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of matches sorted from fewest to most moves.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","shortest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2117d335-e6b5-47f2-8810-3d302fd4f8e9"},{"name":"Sort Longest","id":"5f951876-866c-479b-851b-29b9e2c9e2a3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/longest","description":"<h2 id=\"sort-matches--longest-first\">Sort Matches — Longest First</h2>\n<p>Returns all matches sorted by <strong>number of moves in descending order</strong> — longest games appear first.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/longest</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of matches sorted from most to fewest moves.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","longest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5f951876-866c-479b-851b-29b9e2c9e2a3"},{"name":"Sort Highest Rated","id":"3a9fd469-0beb-46fe-8e4c-b686b80576bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/highest-rated","description":"<h2 id=\"sort-matches--highest-rated-first\">Sort Matches — Highest Rated First</h2>\n<p>Returns all matches sorted by <strong>average player rating in descending order</strong> — highest-rated games appear first.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/highest-rated</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — A list of matches sorted from highest to lowest average rating.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","highest-rated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3a9fd469-0beb-46fe-8e4c-b686b80576bb"}],"id":"fcbb7798-f4c1-4457-96a0-bd45f72d5616","_postman_id":"fcbb7798-f4c1-4457-96a0-bd45f72d5616","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Search","item":[{"name":"Search Matches","id":"3c3f7bf9-46a6-45e5-be67-38d1251d4484","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/matches?q=white","description":"<h2 id=\"search-matches\">Search Matches</h2>\n<p>Performs a <strong>general keyword search</strong> across all matches. You can search by player name, opening, result, or any other match field.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/matches?q=white</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>The search keyword or phrase</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matches matching the search query.</p>\n<p><strong>400 Bad Request</strong> — Missing <code>q</code> parameter.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[{"key":"q","value":"white"}],"variable":[]}},"response":[],"_postman_id":"3c3f7bf9-46a6-45e5-be67-38d1251d4484"},{"name":"Search Players","id":"79187787-729f-46c7-b7ed-84f33ea91fb4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/players?q=carlsen","description":"<h2 id=\"search-players\">Search Players</h2>\n<p>Searches for <strong>players by name or username</strong>. Returns a list of players matching the query.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/players?q=carlsen</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Player name or username to search for</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matching player profiles.</p>\n<p><strong>400 Bad Request</strong> — Missing <code>q</code> parameter.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","players"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[{"key":"q","value":"carlsen"}],"variable":[]}},"response":[],"_postman_id":"79187787-729f-46c7-b7ed-84f33ea91fb4"},{"name":"Search Openings","id":"9c7e441e-ab90-444d-8a2f-590d3c82f0a1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/openings?q=sicilian","description":"<h2 id=\"search-openings\">Search Openings</h2>\n<p>Searches for <strong>chess openings by name</strong>. Returns openings that match the search query.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/openings?q=sicilian</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Opening name to search for (e.g., <code>sicilian</code>, <code>ruy lopez</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matching openings with their ECO codes and statistics.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","openings"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[{"key":"q","value":"sicilian"}],"variable":[]}},"response":[],"_postman_id":"9c7e441e-ab90-444d-8a2f-590d3c82f0a1"},{"name":"Search ECO","id":"66749f45-bce6-476e-8354-54d8258b2dfb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/eco?q=B20","description":"<h2 id=\"search-by-eco-code\">Search by ECO Code</h2>\n<p>Searches for matches or openings using a specific <strong>ECO (Encyclopaedia of Chess Openings) code</strong>. ECO codes are a standardized classification system for chess openings (e.g., <code>A00</code>–<code>E99</code>).</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/eco?q=B20</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>ECO code to search for (e.g., <code>B20</code>, <code>E60</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches or openings associated with the given ECO code.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","eco"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[{"key":"q","value":"B20"}],"variable":[]}},"response":[],"_postman_id":"66749f45-bce6-476e-8354-54d8258b2dfb"},{"name":"Search Moves","id":"388dd4a6-b49a-4907-8f63-bbc76222bd45","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/moves","description":"<h2 id=\"search-by-move-sequence\">Search by Move Sequence</h2>\n<p>Searches for matches that contain a <strong>specific sequence of moves</strong>. Useful for finding games that followed a particular line or variation.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/moves</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>moves</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Move sequence in algebraic notation (e.g., <code>e4 c5 Nf3</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of matches containing the specified move sequence.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","moves"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"388dd4a6-b49a-4907-8f63-bbc76222bd45"},{"name":"Search Fuzzy","id":"0fe22d4a-0e54-4910-b616-832ad96ee554","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/fuzzy","description":"<h2 id=\"fuzzy-search\">Fuzzy Search</h2>\n<p>Performs a <strong>fuzzy (approximate) search</strong> — finds results even if the query has slight spelling variations or typos. Great for searching player names or opening names when you're not sure of the exact spelling.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/fuzzy</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>The approximate search term</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns results that closely match the query, even with minor spelling differences.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","fuzzy"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"0fe22d4a-0e54-4910-b616-832ad96ee554"},{"name":"Search Autocomplete","id":"7000dc61-6864-4d17-80ef-63a0c8ac2f9f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/autocomplete","description":"<h2 id=\"search-autocomplete\">Search Autocomplete</h2>\n<p>Returns <strong>autocomplete suggestions</strong> as the user types — useful for building search bars that suggest player names, openings, or match titles in real time.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/autocomplete</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>q</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Partial text to get suggestions for</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns an array of suggested completions.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"suggestions\": [\"Sicilian Defense\", \"Sicilian Dragon\", \"Sicilian Najdorf\"]\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","autocomplete"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7000dc61-6864-4d17-80ef-63a0c8ac2f9f"},{"name":"Recent Searches","id":"d964aa63-5a22-4e9f-b08c-c7087d565a94","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/recent","description":"<h2 id=\"get-recent-searches\">Get Recent Searches</h2>\n<p>Returns the <strong>most recent search queries</strong> made by users. Useful for showing a search history or trending search terms.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/recent</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of recent search terms.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","recent"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d964aa63-5a22-4e9f-b08c-c7087d565a94"},{"name":"Popular Searches","id":"d58dafb0-80b2-4e8e-933b-2ad0360e5c15","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/popular","description":"<h2 id=\"get-popular-searches\">Get Popular Searches</h2>\n<p>Returns the <strong>most frequently searched terms</strong> across all users. Useful for discovering what players are most interested in.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/popular</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of popular search terms with their frequency counts.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","popular"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d58dafb0-80b2-4e8e-933b-2ad0360e5c15"},{"name":"Advanced Search","id":"5740fe10-942e-4988-bd9f-657b9103b4c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/advanced","description":"<h2 id=\"advanced-search\">Advanced Search</h2>\n<p>Performs a <strong>multi-field search</strong> with multiple filters applied simultaneously. Combine player names, openings, results, ratings, time controls, and date ranges in a single query.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/advanced</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>white</code></td>\n<td>string</td>\n<td>White player's username</td>\n</tr>\n<tr>\n<td><code>black</code></td>\n<td>string</td>\n<td>Black player's username</td>\n</tr>\n<tr>\n<td><code>result</code></td>\n<td>string</td>\n<td>Match result: <code>1-0</code>, <code>0-1</code>, <code>1/2-1/2</code></td>\n</tr>\n<tr>\n<td><code>opening</code></td>\n<td>string</td>\n<td>Opening name</td>\n</tr>\n<tr>\n<td><code>eco</code></td>\n<td>string</td>\n<td>ECO code</td>\n</tr>\n<tr>\n<td><code>timeControl</code></td>\n<td>string</td>\n<td>Time control type</td>\n</tr>\n<tr>\n<td><code>minRating</code></td>\n<td>number</td>\n<td>Minimum average player rating</td>\n</tr>\n<tr>\n<td><code>maxRating</code></td>\n<td>number</td>\n<td>Maximum average player rating</td>\n</tr>\n<tr>\n<td><code>from</code></td>\n<td>string</td>\n<td>Start date (ISO format)</td>\n</tr>\n<tr>\n<td><code>to</code></td>\n<td>string</td>\n<td>End date (ISO format)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches matching all provided filters.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","advanced"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5740fe10-942e-4988-bd9f-657b9103b4c3"},{"name":"Search by Player Rating","id":"c2a23064-b41b-4000-9d00-f1809ac45071","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/player-rating","description":"<h2 id=\"search-by-player-rating\">Search by Player Rating</h2>\n<p>Searches for matches within a <strong>specific Elo rating range</strong>. Useful for finding games between players of a particular skill level.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/player-rating</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>min</code></td>\n<td>number</td>\n<td>No</td>\n<td>Minimum Elo rating</td>\n</tr>\n<tr>\n<td><code>max</code></td>\n<td>number</td>\n<td>No</td>\n<td>Maximum Elo rating</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches where player ratings fall within the specified range.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","player-rating"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c2a23064-b41b-4000-9d00-f1809ac45071"},{"name":"Search by Date Range","id":"07cbcdfd-4b0d-43a5-ae9d-25b6c1a8b0e6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/date-range","description":"<h2 id=\"search-by-date-range\">Search by Date Range</h2>\n<p>Returns matches played within a <strong>specific date range</strong>. Useful for finding games from a particular time period.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/date-range</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>from</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Start date in ISO format (e.g., <code>2024-01-01</code>)</td>\n</tr>\n<tr>\n<td><code>to</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>End date in ISO format (e.g., <code>2024-12-31</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches played between the specified dates.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","date-range"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"07cbcdfd-4b0d-43a5-ae9d-25b6c1a8b0e6"},{"name":"Search Opening Family","id":"23e7d53b-164d-4c8a-bf7b-3f7ff702be9a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/opening-family","description":"<h2 id=\"search-by-opening-family\">Search by Opening Family</h2>\n<p>Searches for matches grouped by <strong>opening family</strong> — a broad category of related openings (e.g., all Sicilian variations, all King's Pawn openings).</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/opening-family</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>family</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Opening family name (e.g., <code>sicilian</code>, <code>kings-pawn</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches belonging to the specified opening family.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","opening-family"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"23e7d53b-164d-4c8a-bf7b-3f7ff702be9a"},{"name":"Search Checkmate Patterns","id":"811da279-a195-4017-8236-a68611cd39bd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/checkmate-patterns","description":"<h2 id=\"search-checkmate-patterns\">Search Checkmate Patterns</h2>\n<p>Searches for matches that ended with a <strong>specific checkmate pattern</strong> (e.g., back-rank mate, smothered mate, scholar's mate).</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/checkmate-patterns</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>pattern</code></td>\n<td>string</td>\n<td>No</td>\n<td>Checkmate pattern name to search for</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches that ended with the specified checkmate pattern.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","checkmate-patterns"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"811da279-a195-4017-8236-a68611cd39bd"},{"name":"Search Endgames","id":"71d8b453-c7bb-466d-9c32-bd57af7ac079","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/endgames","description":"<h2 id=\"search-endgames\">Search Endgames</h2>\n<p>Searches for matches that reached a specific <strong>endgame type</strong> (e.g., rook endgame, pawn endgame, king and pawn vs king).</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/endgames</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>No</td>\n<td>Endgame type to search for (e.g., <code>rook</code>, <code>pawn</code>, <code>queen</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns matches that reached the specified endgame type.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","endgames"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"71d8b453-c7bb-466d-9c32-bd57af7ac079"}],"id":"39a47438-381a-407a-835d-56473f33c500","_postman_id":"39a47438-381a-407a-835d-56473f33c500","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Analytics","item":[{"name":"Victory Distribution","id":"97011ef9-dca2-466e-bc99-e4815c514be5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/victory-distribution","description":"<h2 id=\"victory-distribution\">Victory Distribution</h2>\n<p>Returns a breakdown of <strong>how matches end</strong> — showing the percentage or count of white wins, black wins, and draws across all games.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/victory-distribution</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns victory distribution data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"whiteWins\": 45,\n  \"blackWins\": 35,\n  \"draws\": 20\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","victory-distribution"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"97011ef9-dca2-466e-bc99-e4815c514be5"},{"name":"Color Advantage","id":"44ded7ac-5326-4df3-9e27-ee4a1a4a200f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/color-advantage","description":"<h2 id=\"color-advantage-analysis\">Color Advantage Analysis</h2>\n<p>Analyzes the <strong>statistical advantage of playing White vs Black</strong> — showing win rates for each color across all matches in the database.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/color-advantage</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns win rate percentages for White and Black.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"whiteWinRate\": 52.3,\n  \"blackWinRate\": 44.1,\n  \"drawRate\": 3.6\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","color-advantage"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"44ded7ac-5326-4df3-9e27-ee4a1a4a200f"},{"name":"Turn Count Average","id":"9e80503a-914f-4749-94b1-ad54cd3caabd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/turn-count-average","description":"<h2 id=\"average-turn-count\">Average Turn Count</h2>\n<p>Returns the <strong>average number of moves</strong> per game across all matches. Useful for understanding typical game length.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/turn-count-average</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the average move count.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"averageMoves\": 38.7\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","turn-count-average"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9e80503a-914f-4749-94b1-ad54cd3caabd"},{"name":"Rated vs Casual","id":"b4a5dfe1-6007-423e-ab70-faa013eb8466","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/rated-vs-casual","description":"<h2 id=\"rated-vs-casual-games-analysis\">Rated vs Casual Games Analysis</h2>\n<p>Returns a comparison of <strong>rated vs unrated (casual) games</strong> — showing how many games of each type are in the database.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/rated-vs-casual</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns counts and percentages for rated and casual games.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"rated\": 320,\n  \"casual\": 180,\n  \"ratedPercentage\": 64\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","rated-vs-casual"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b4a5dfe1-6007-423e-ab70-faa013eb8466"},{"name":"Opening Success","id":"dcee15fc-6af2-4701-801d-073ca89783c2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/opening-success","description":"<h2 id=\"opening-success-rates\">Opening Success Rates</h2>\n<p>Returns <strong>win rate statistics for each opening</strong> — showing which openings lead to the most wins for White, Black, or draws.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/opening-success</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of openings with their win/draw/loss rates.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"opening\": \"Sicilian Defense\",\n    \"whiteWinRate\": 48,\n    \"blackWinRate\": 38,\n    \"drawRate\": 14\n  }\n]\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","opening-success"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"dcee15fc-6af2-4701-801d-073ca89783c2"},{"name":"Shortest Games","id":"160af1e6-10b7-4848-9f7e-3bf1048e4780","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/shortest-games","description":"<h2 id=\"shortest-games-analysis\">Shortest Games Analysis</h2>\n<p>Returns data about the <strong>shortest games</strong> in the database — including the minimum move count and a list of the quickest matches.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/shortest-games</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the shortest games with their move counts and details.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","shortest-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"160af1e6-10b7-4848-9f7e-3bf1048e4780"},{"name":"Longest Games","id":"82cc537a-f23f-4ccc-812d-fdabacc009bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/longest-games","description":"<h2 id=\"longest-games-analysis\">Longest Games Analysis</h2>\n<p>Returns data about the <strong>longest games</strong> in the database — including the maximum move count and a list of the most extended matches.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/longest-games</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the longest games with their move counts and details.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","longest-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"82cc537a-f23f-4ccc-812d-fdabacc009bb"},{"name":"Rating Gap Upsets","id":"9f9bb82f-175a-4bca-b2a5-8d66d460ed64","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/rating-gap-upsets","description":"<h2 id=\"rating-gap-upsets\">Rating Gap Upsets</h2>\n<p>Returns matches where a <strong>lower-rated player defeated a higher-rated player</strong> — the bigger the rating gap, the bigger the upset. Great for finding surprising results.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/rating-gap-upsets</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of upset matches sorted by rating gap (largest first).</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"matchId\": \"abc123\",\n    \"winner\": \"underdog\",\n    \"loser\": \"favorite\",\n    \"ratingGap\": 400\n  }\n]\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","rating-gap-upsets"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9f9bb82f-175a-4bca-b2a5-8d66d460ed64"},{"name":"Checkmate Frequency","id":"fc5f6aec-784e-4021-80a3-d3006f1cbef2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/checkmate-frequency","description":"<h2 id=\"checkmate-frequency\">Checkmate Frequency</h2>\n<p>Returns statistics on <strong>how often games end in checkmate</strong> versus other outcomes (resignation, timeout, draw). Useful for understanding game termination patterns.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/checkmate-frequency</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns checkmate frequency data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"checkmates\": 120,\n  \"total\": 500,\n  \"percentage\": 24\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","checkmate-frequency"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"fc5f6aec-784e-4021-80a3-d3006f1cbef2"},{"name":"Draw Frequency","id":"27ef584f-6dd7-4b83-8c3d-d05f0d4dad96","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/draw-frequency","description":"<h2 id=\"draw-frequency\">Draw Frequency</h2>\n<p>Returns statistics on <strong>how often games end in a draw</strong> — including stalemate, repetition, insufficient material, and mutual agreement.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/draw-frequency</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns draw frequency data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"draws\": 85,\n  \"total\": 500,\n  \"percentage\": 17\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","draw-frequency"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"27ef584f-6dd7-4b83-8c3d-d05f0d4dad96"},{"name":"Resignation Frequency","id":"55494067-d112-4a8b-95ae-d478374bd62d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/resignation-frequency","description":"<h2 id=\"resignation-frequency\">Resignation Frequency</h2>\n<p>Returns statistics on <strong>how often games end by resignation</strong> — where a player gives up before checkmate.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/resignation-frequency</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns resignation frequency data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"resignations\": 210,\n  \"total\": 500,\n  \"percentage\": 42\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","resignation-frequency"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"55494067-d112-4a8b-95ae-d478374bd62d"},{"name":"Timeouts","id":"c8667661-52e4-4840-a14f-fb14e69b4dcd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/timeouts","description":"<h2 id=\"timeout-frequency\">Timeout Frequency</h2>\n<p>Returns statistics on <strong>how often games end due to a timeout</strong> — where a player runs out of time on the clock.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/timeouts</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns timeout frequency data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"timeouts\": 65,\n  \"total\": 500,\n  \"percentage\": 13\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","timeouts"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c8667661-52e4-4840-a14f-fb14e69b4dcd"},{"name":"Player Growth","id":"4fa0823f-3522-4b79-86c8-35fee2cbc776","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/player-growth","description":"<h2 id=\"player-growth-analytics\">Player Growth Analytics</h2>\n<p>Returns data on <strong>how the number of players has grown over time</strong> — showing new player registrations by day, week, or month.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/player-growth</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns player growth data over time.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  { \"period\": \"2024-01\", \"newPlayers\": 45 },\n  { \"period\": \"2024-02\", \"newPlayers\": 62 }\n]\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","player-growth"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4fa0823f-3522-4b79-86c8-35fee2cbc776"},{"name":"Hourly Activity","id":"afa6fcca-e87a-412d-9f7c-7b989f6d3743","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/hourly-activity","description":"<h2 id=\"hourly-activity\">Hourly Activity</h2>\n<p>Returns a breakdown of <strong>when games are most frequently played</strong> — showing match counts grouped by hour of the day (0–23). Useful for understanding peak usage times.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/hourly-activity</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns match counts per hour.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  { \"hour\": 14, \"matches\": 87 },\n  { \"hour\": 20, \"matches\": 134 }\n]\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","hourly-activity"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"afa6fcca-e87a-412d-9f7c-7b989f6d3743"},{"name":"Time Control Usage","id":"150691bf-1bb3-4f61-81c9-11442d0a5115","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/time-control-usage","description":"<h2 id=\"time-control-usage\">Time Control Usage</h2>\n<p>Returns a breakdown of <strong>which time controls are most commonly used</strong> — showing the distribution of bullet, blitz, rapid, and classical games.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/time-control-usage</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns time control distribution data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"bullet\": 120,\n  \"blitz\": 250,\n  \"rapid\": 100,\n  \"classical\": 30\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","time-control-usage"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"150691bf-1bb3-4f61-81c9-11442d0a5115"}],"id":"680262fd-82c2-4ad5-882c-20b746c9e435","_postman_id":"680262fd-82c2-4ad5-882c-20b746c9e435","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Stats","item":[{"name":"Total Matches","id":"f3c295f6-71e5-40b8-b9fb-6dbce1dd1f53","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/total-matches","description":"<h2 id=\"total-matches\">Total Matches</h2>\n<p>Returns the <strong>total number of chess matches</strong> stored in the database.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/total-matches</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the total match count.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"totalMatches\": 1500\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","total-matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"f3c295f6-71e5-40b8-b9fb-6dbce1dd1f53"},{"name":"Total Players","id":"299b913d-1d7b-4f25-9988-35d4a1adf921","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/total-players","description":"<h2 id=\"total-players\">Total Players</h2>\n<p>Returns the <strong>total number of unique players</strong> in the database.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/total-players</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the total player count.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"totalPlayers\": 342\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","total-players"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"299b913d-1d7b-4f25-9988-35d4a1adf921"},{"name":"Average Rating","id":"b404e782-05eb-425d-a664-b0aeb9986fb5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/average-rating","description":"<h2 id=\"average-player-rating\">Average Player Rating</h2>\n<p>Returns the <strong>average Elo rating</strong> across all players in the database.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/average-rating</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the average rating.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"averageRating\": 1487\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","average-rating"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b404e782-05eb-425d-a664-b0aeb9986fb5"},{"name":"Top Openings","id":"5d2eaae4-f063-4019-beb7-8e656667711d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/top-openings","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","top-openings"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5d2eaae4-f063-4019-beb7-8e656667711d"},{"name":"White Win Rate","id":"45ffe2c2-59f6-485c-b867-3c473393e31c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/white-win-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","white-win-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"45ffe2c2-59f6-485c-b867-3c473393e31c"},{"name":"Black Win Rate","id":"e4d88476-e15c-41a9-93c4-3f21aaf6e740","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/black-win-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","black-win-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e4d88476-e15c-41a9-93c4-3f21aaf6e740"},{"name":"Draw Rate","id":"f346c6d7-a6f9-470f-9853-65dbff9d3f2a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/draw-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","draw-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"f346c6d7-a6f9-470f-9853-65dbff9d3f2a"},{"name":"Checkmate Rate","id":"008bee44-e073-4ff9-b1ef-528bea32b671","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/checkmate-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","checkmate-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"008bee44-e073-4ff9-b1ef-528bea32b671"},{"name":"Resignation Rate","id":"18c0d9bf-b2af-4ef9-b65e-8839119d8d2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/resignation-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","resignation-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"18c0d9bf-b2af-4ef9-b65e-8839119d8d2e"},{"name":"Timeout Rate","id":"5a4b7911-b322-406d-9cd9-41a67548986e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/timeout-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","timeout-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5a4b7911-b322-406d-9cd9-41a67548986e"},{"name":"Rated Games","id":"e9144af2-5a73-40ae-b80f-41b20e2ed05e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/rated-games","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","rated-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e9144af2-5a73-40ae-b80f-41b20e2ed05e"},{"name":"Unrated Games","id":"e0a32bda-5cc4-4999-8592-18b6de6916d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/unrated-games","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","unrated-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e0a32bda-5cc4-4999-8592-18b6de6916d5"},{"name":"Daily Games","id":"d41cdc45-efd7-416f-94d1-964dc54bc099","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/daily-games","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","daily-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d41cdc45-efd7-416f-94d1-964dc54bc099"},{"name":"Monthly Games","id":"be8aa578-3685-4564-b3fe-9356b14f3797","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/monthly-games","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","monthly-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"be8aa578-3685-4564-b3fe-9356b14f3797"},{"name":"Yearly Games","id":"b55c8e08-fd71-4054-a51b-339d8b912b12","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/stats/yearly-games","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","stats","yearly-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b55c8e08-fd71-4054-a51b-339d8b912b12"}],"id":"ef15c7e2-3a6d-4599-8a16-57204a9c75b7","_postman_id":"ef15c7e2-3a6d-4599-8a16-57204a9c75b7","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"System","item":[{"name":"Health Check","id":"5c70d63d-73a2-4633-aefa-dade7f83227e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/health","description":"<h2 id=\"health-check\">Health Check</h2>\n<p>Checks whether the <strong>API server is running and healthy</strong>. This is the simplest endpoint to verify that the server is up and responding.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/health</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Server is healthy and running.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"ok\",\n  \"message\": \"Server is healthy\"\n}\n</code></pre>\n<blockquote>\n<p>💡 Use this endpoint to monitor server availability or as a ping check in uptime monitoring tools.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","health"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5c70d63d-73a2-4633-aefa-dade7f83227e"},{"name":"System Status","id":"f9bfb99b-6204-449c-b810-04b8aa95097f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/status","description":"<h2 id=\"system-status\">System Status</h2>\n<p>Returns the <strong>overall status of the system</strong> — including whether all services (database, cache, etc.) are operational.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/status</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns system status summary.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"operational\",\n  \"services\": {\n    \"database\": \"up\",\n    \"cache\": \"up\"\n  }\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","status"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"f9bfb99b-6204-449c-b810-04b8aa95097f"},{"name":"System Version","id":"155c4c91-8978-4822-9d6c-fa1acff5bbc5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/version","description":"<h2 id=\"system-version\">System Version</h2>\n<p>Returns the <strong>current version of the API</strong> — useful for checking which release is deployed.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/version</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the API version string.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"version\": \"1.0.0\",\n  \"releaseDate\": \"2024-01-15\"\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","version"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"155c4c91-8978-4822-9d6c-fa1acff5bbc5"},{"name":"System Uptime","id":"a98c5269-1780-4b6f-9caf-c62b3b1ed5ca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/uptime","description":"<h2 id=\"system-uptime\">System Uptime</h2>\n<p>Returns <strong>how long the server has been running</strong> since its last restart — expressed in seconds, minutes, or a human-readable format.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/uptime</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the server uptime.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"uptime\": 86400,\n  \"uptimeFormatted\": \"1 day, 0 hours\"\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","uptime"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a98c5269-1780-4b6f-9caf-c62b3b1ed5ca"},{"name":"Database Status","id":"c585d922-5a10-4a18-9745-27907aef3d91","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/database/status","description":"<h2 id=\"database-status\">Database Status</h2>\n<p>Returns the <strong>current status of the database connection</strong> — whether it's connected, the number of active connections, and any relevant metrics.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/database/status</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns database connection status.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"connected\": true,\n  \"activeConnections\": 5,\n  \"latency\": \"2ms\"\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","database","status"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c585d922-5a10-4a18-9745-27907aef3d91"},{"name":"System Info","id":"64fec3fc-491b-4629-bc92-ee6c36af5099","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/info","description":"<h2 id=\"system-info\">System Info</h2>\n<p>Returns <strong>detailed information about the server environment</strong> — including Node.js version, platform, memory usage, and CPU details.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/info</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns system environment details.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"nodeVersion\": \"v18.12.0\",\n  \"platform\": \"linux\",\n  \"memory\": {\n    \"total\": \"8GB\",\n    \"used\": \"2.1GB\"\n  },\n  \"cpus\": 4\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","info"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"64fec3fc-491b-4629-bc92-ee6c36af5099"},{"name":"System Logs","id":"a5afaf6b-2fec-4ec8-96d2-0ed152f36f42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/logs","description":"<h2 id=\"system-logs\">System Logs</h2>\n<p>Returns the <strong>most recent server logs</strong> — useful for debugging errors, monitoring activity, and auditing system events.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/logs</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns an array of recent log entries.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"timestamp\": \"2024-01-15T10:30:00Z\",\n    \"level\": \"info\",\n    \"message\": \"Server started on port 3000\"\n  },\n  {\n    \"timestamp\": \"2024-01-15T10:31:00Z\",\n    \"level\": \"error\",\n    \"message\": \"Database connection timeout\"\n  }\n]\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","logs"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a5afaf6b-2fec-4ec8-96d2-0ed152f36f42"},{"name":"Cache Status","id":"d0591d4d-a0bc-4c4e-9a69-98e09da4555a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/cache/status","description":"<h2 id=\"cache-status\">Cache Status</h2>\n<p>Returns the <strong>current status of the cache layer</strong> — including whether it's active, hit/miss rates, and memory usage.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/cache/status</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns cache status details.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"enabled\": true,\n  \"hitRate\": \"87%\",\n  \"memoryUsed\": \"512MB\"\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","cache","status"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"d0591d4d-a0bc-4c4e-9a69-98e09da4555a"},{"name":"Recalculate Stats","id":"9c87d654-eff8-4b8d-a87a-258f08f26d16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/recalculate-stats","description":"<h2 id=\"recalculate-stats\">Recalculate Stats</h2>\n<p>Triggers a <strong>manual recalculation of all statistics</strong> in the database — such as win rates, average ratings, and match counts. Use this after bulk data imports or corrections.</p>\n<p><strong>Method:</strong> <code>POST</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/recalculate-stats</code>\n<strong>Auth Required:</strong> Yes (Admin)</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Stats recalculation triggered successfully.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Stats recalculation started\",\n  \"status\": \"processing\"\n}\n</code></pre>\n<blockquote>\n<p>⚠️ This is an admin-level operation. Ensure you have the appropriate permissions before calling this endpoint.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","recalculate-stats"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9c87d654-eff8-4b8d-a87a-258f08f26d16"},{"name":"Reindex DB","id":"1f63f506-73a3-4f2f-bd6a-f23b56462b71","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/reindex","description":"<h2 id=\"reindex-database\">Reindex Database</h2>\n<p>Triggers a <strong>manual reindexing of the database</strong> — rebuilding search indexes to improve query performance. Useful after large data imports or schema changes.</p>\n<p><strong>Method:</strong> <code>POST</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/reindex</code>\n<strong>Auth Required:</strong> Yes (Admin)</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Reindexing started successfully.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Database reindexing started\",\n  \"status\": \"processing\"\n}\n</code></pre>\n<blockquote>\n<p>⚠️ This operation may temporarily slow down the database. Run it during off-peak hours.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","reindex"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1f63f506-73a3-4f2f-bd6a-f23b56462b71"},{"name":"Restart System","id":"7d55cca0-7101-45ef-af31-c44cdbe90a87","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/restart","description":"<h2 id=\"restart-system\">Restart System</h2>\n<p>Triggers a <strong>graceful restart of the API server</strong>. All active connections are closed cleanly before the server restarts.</p>\n<p><strong>Method:</strong> <code>POST</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/restart</code>\n<strong>Auth Required:</strong> Yes (Admin)</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Restart initiated.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"System restart initiated\",\n  \"estimatedDowntime\": \"5 seconds\"\n}\n</code></pre>\n<blockquote>\n<p>⚠️ <strong>Use with caution.</strong> This will temporarily make the API unavailable. Only use in emergencies or during scheduled maintenance.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","restart"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7d55cca0-7101-45ef-af31-c44cdbe90a87"},{"name":"System Config","id":"96501e8c-de1f-4e7f-bad6-242d599944d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/config","description":"<h2 id=\"system-config\">System Config</h2>\n<p>Returns the <strong>current server configuration</strong> — including environment settings, feature flags, and runtime parameters.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/config</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the active configuration.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"environment\": \"production\",\n  \"maxPageSize\": 100,\n  \"cacheEnabled\": true,\n  \"rateLimitPerMinute\": 60\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","config"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"96501e8c-de1f-4e7f-bad6-242d599944d5"},{"name":"Security Events","id":"bac58e30-c598-4aad-9b99-b6c6e587366d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/security/events","description":"<h2 id=\"security-events\">Security Events</h2>\n<p>Returns a log of <strong>recent security-related events</strong> — such as failed login attempts, unauthorized access, and suspicious activity.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/security/events</code>\n<strong>Auth Required:</strong> Yes (Admin)</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of security events.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"timestamp\": \"2024-01-15T09:00:00Z\",\n    \"event\": \"failed_login\",\n    \"ip\": \"192.168.1.1\",\n    \"username\": \"unknown\"\n  }\n]\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","security","events"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"bac58e30-c598-4aad-9b99-b6c6e587366d"},{"name":"Performance Metrics","id":"2eab121a-25ca-4167-b114-2a612f33e92d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/performance","description":"<h2 id=\"performance-metrics\">Performance Metrics</h2>\n<p>Returns <strong>real-time performance metrics</strong> for the API server — including response times, request throughput, memory usage, and CPU load.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/performance</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns performance data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"avgResponseTime\": \"45ms\",\n  \"requestsPerMinute\": 120,\n  \"memoryUsage\": \"1.8GB\",\n  \"cpuLoad\": \"12%\"\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","performance"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2eab121a-25ca-4167-b114-2a612f33e92d"},{"name":"Storage Analytics","id":"e36bef78-ccca-462b-adb6-ee96b17cdadf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/storage","description":"<h2 id=\"storage-analytics\">Storage Analytics</h2>\n<p>Returns <strong>storage usage statistics</strong> for the system — including total disk space, used space, and a breakdown by data type (matches, logs, etc.).</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/storage</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns storage usage data.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"totalStorage\": \"100GB\",\n  \"usedStorage\": \"34GB\",\n  \"breakdown\": {\n    \"matches\": \"20GB\",\n    \"logs\": \"5GB\",\n    \"other\": \"9GB\"\n  }\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","storage"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e36bef78-ccca-462b-adb6-ee96b17cdadf"}],"id":"0eacaa81-9ee4-4962-871b-9915d11d6e63","_postman_id":"0eacaa81-9ee4-4962-871b-9915d11d6e63","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Players","item":[{"name":"Get All Players","id":"bcc88ffa-3261-4cbb-8f83-faa3b6e54f59","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players","description":"<h2 id=\"get-all-players\">Get All Players</h2>\n<p>Returns a <strong>paginated list of all players</strong> in the database, including their usernames and basic profile information.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Page number (default: 1)</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Results per page (default: 10)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of players.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"players\": [\n    { \"username\": \"magnus\", \"rating\": 2850 },\n    { \"username\": \"hikaru\", \"rating\": 2780 }\n  ],\n  \"total\": 342,\n  \"page\": 1\n}\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"bcc88ffa-3261-4cbb-8f83-faa3b6e54f59"},{"name":"Get Player Details","id":"c2d8b03f-1382-4afb-b12e-1c2e76231569","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus","description":"<h2 id=\"get-player-details\">Get Player Details</h2>\n<p>Returns <strong>detailed profile information</strong> for a specific player by their username.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>The player's username (e.g., <code>magnus</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns the player's full profile.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"username\": \"magnus\",\n  \"rating\": 2850,\n  \"country\": \"Norway\",\n  \"totalGames\": 1200,\n  \"wins\": 800,\n  \"losses\": 200,\n  \"draws\": 200\n}\n</code></pre>\n<p><strong>404 Not Found</strong> — Player does not exist.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c2d8b03f-1382-4afb-b12e-1c2e76231569"},{"name":"Get Player History","id":"8ac0542a-e3ad-4230-a115-14a76922a0f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/history","description":"<h2 id=\"get-player-history\">Get Player History</h2>\n<p>Returns the <strong>full match history</strong> for a specific player — a list of all games they have played, with results and opponents.</p>\n<p><strong>Method:</strong> <code>GET</code>\n<strong>URL:</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/history</code>\n<strong>Auth Required:</strong> No</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>The player's username (e.g., <code>magnus</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p><strong>200 OK</strong> — Returns a list of past matches for the player.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"matchId\": \"abc123\",\n    \"opponent\": \"hikaru\",\n    \"result\": \"win\",\n    \"date\": \"2024-01-10\"\n  }\n]\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","history"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"8ac0542a-e3ad-4230-a115-14a76922a0f5"},{"name":"Get Player Stats","id":"1b445d42-2d4a-4b73-9391-94bb76d503c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/stats","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","stats"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1b445d42-2d4a-4b73-9391-94bb76d503c0"},{"name":"Get Player Openings","id":"3d187ba6-3c9f-4432-a2b6-1fd3c9d9d276","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/openings","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","openings"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3d187ba6-3c9f-4432-a2b6-1fd3c9d9d276"},{"name":"Get Player Rating History","id":"50234731-8b82-40d5-aada-c7c9ebc47a51","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/rating-history","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","rating-history"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"50234731-8b82-40d5-aada-c7c9ebc47a51"},{"name":"Get Player Win Rate","id":"88b52aca-62c8-486e-9ba0-a543118a6815","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/win-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","win-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"88b52aca-62c8-486e-9ba0-a543118a6815"},{"name":"Get Player Loss Rate","id":"c603f7a5-41d6-480d-817a-aacaf21eb1e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/loss-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","loss-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c603f7a5-41d6-480d-817a-aacaf21eb1e2"},{"name":"Get Player Draw Rate","id":"4aaa7348-6657-4063-bf7c-6ee36290421c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/draw-rate","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","draw-rate"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4aaa7348-6657-4063-bf7c-6ee36290421c"},{"name":"Get Recent Matches","id":"1116e29d-3525-4381-a30d-328ac745ff9c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/magnus/recent","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","magnus","recent"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1116e29d-3525-4381-a30d-328ac745ff9c"},{"name":"Get Top Rated Players","id":"91240b31-f450-4ec6-9f75-19643a4b19dd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/top-rated","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","top-rated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"91240b31-f450-4ec6-9f75-19643a4b19dd"},{"name":"Get Top Active Players","id":"e50da67a-4b33-40c7-9a8e-8e1aae9531ac","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/top-active","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","top-active"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e50da67a-4b33-40c7-9a8e-8e1aae9531ac"},{"name":"Get Top Winning Players","id":"4b7d9ddb-3876-472b-8b4e-913916e22e47","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/top-winning","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","top-winning"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4b7d9ddb-3876-472b-8b4e-913916e22e47"},{"name":"Compare Players","id":"faff7c48-41cf-44da-a464-6347a4f48c12","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/compare/player1/player2","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","compare","player1","player2"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"faff7c48-41cf-44da-a464-6347a4f48c12"},{"name":"Filter by Rating","id":"c5e43d22-4596-48a9-9618-f37afb6f4111","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/rating-range","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players","rating-range"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c5e43d22-4596-48a9-9618-f37afb6f4111"}],"id":"c565afae-dd73-470a-a45c-98eb9ba94c9c","_postman_id":"c565afae-dd73-470a-a45c-98eb9ba94c9c","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Openings Theory","item":[{"name":"Get All Openings","id":"78e48bd3-1d4a-4297-b891-f5d509411026","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"78e48bd3-1d4a-4297-b891-f5d509411026"},{"name":"Popular Openings","id":"99e66ff0-cf0e-4e80-a9b4-bd1fe16e9aa9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/popular","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","popular"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"99e66ff0-cf0e-4e80-a9b4-bd1fe16e9aa9"},{"name":"Trending Openings","id":"a3156da3-1904-4305-bdbd-52b4016ed618","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/trending","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","trending"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a3156da3-1904-4305-bdbd-52b4016ed618"},{"name":"Search Openings","id":"5c16b055-3e0d-481d-8e51-eec63da84523","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/search","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","search"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5c16b055-3e0d-481d-8e51-eec63da84523"},{"name":"Opening Win Rates","id":"96bcc922-c055-460b-bff7-7049b017359e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/win-rates","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","win-rates"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"96bcc922-c055-460b-bff7-7049b017359e"},{"name":"Aggressive Openings","id":"bc57d500-3033-4ef9-b81c-8e5439e19b21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/aggressive","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","aggressive"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"bc57d500-3033-4ef9-b81c-8e5439e19b21"},{"name":"Defensive Openings","id":"838c7498-af84-4b4a-be0c-8ad2cc75ecaa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/defensive","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","defensive"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"838c7498-af84-4b4a-be0c-8ad2cc75ecaa"},{"name":"Gambits","id":"3f76298f-e469-4a99-af88-87ba8faff98e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/gambits","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","gambits"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"3f76298f-e469-4a99-af88-87ba8faff98e"},{"name":"Checkmates","id":"bd7d1fcd-7fdb-4f6c-8ed8-13d2abfb1562","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/checkmates","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","checkmates"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"bd7d1fcd-7fdb-4f6c-8ed8-13d2abfb1562"},{"name":"Rare Openings","id":"1dfb8f31-efd4-4b84-9f49-bebdce3dbfe1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/rare","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","rare"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1dfb8f31-efd4-4b84-9f49-bebdce3dbfe1"},{"name":"White Advantage","id":"4ee6319d-2846-46fd-b2cf-77442f6beec5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/white-advantage","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","white-advantage"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4ee6319d-2846-46fd-b2cf-77442f6beec5"},{"name":"Black Advantage","id":"b564a1c8-6abb-4551-afed-966e26d5ad88","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/black-advantage","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","black-advantage"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b564a1c8-6abb-4551-afed-966e26d5ad88"},{"name":"Beginner Friendly","id":"91db6a9c-77e0-4210-b059-702b837fd48e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/beginner-friendly","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","beginner-friendly"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"91db6a9c-77e0-4210-b059-702b837fd48e"},{"name":"Complexity","id":"874e890c-2ee5-41eb-b6fd-14b7b3a18aba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/complexity","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","complexity"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"874e890c-2ee5-41eb-b6fd-14b7b3a18aba"},{"name":"By ECO Code","id":"a18c1401-1432-4b77-86a8-111f73e93527","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings/eco/B20","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings","eco","B20"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a18c1401-1432-4b77-86a8-111f73e93527"}],"id":"7e6dacbd-91b0-4943-9b3d-f89260f521cf","description":"<h1 id=\"openings-theory\">Openings Theory</h1>\n<p>This folder contains endpoints for exploring and analyzing <strong>chess openings</strong> — the initial moves of a chess game that establish the foundation for middlegame strategy. Chess opening theory is a vast, well-documented field where each sequence of moves has been studied, named, and classified based on strategic goals, pawn structures, and tactical patterns.</p>\n<p>Openings are broadly categorized by the <strong>ECO (Encyclopaedia of Chess Openings)</strong> code system, which organizes all known openings into five volumes (A through E), each subdivided into 100 codes (e.g., <code>A00</code>–<code>A99</code>). This API supports ECO-based lookups alongside a rich set of filters for style, complexity, and statistical performance.</p>\n<hr />\n<h2 id=\"endpoints-overview\">Endpoints Overview</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Endpoint</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>GET /api/v1/openings</code></td>\n<td>Retrieve the full list of all known openings in the database</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/popular</code></td>\n<td>Fetch the most frequently played openings across all skill levels</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/trending</code></td>\n<td>Get openings that are currently gaining popularity in recent games</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/search</code></td>\n<td>Search openings by name, ECO code, or move sequence</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/win-rates</code></td>\n<td>Retrieve win rate statistics (White wins, Black wins, draws) per opening</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/aggressive</code></td>\n<td>List openings known for sharp, attacking, and tactical play</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/defensive</code></td>\n<td>List openings focused on solid, positional, and defensive setups</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/gambits</code></td>\n<td>Retrieve openings that involve material sacrifices (gambits) for initiative</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/checkmates</code></td>\n<td>Openings associated with common checkmate patterns or mating attacks</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/rare</code></td>\n<td>Discover uncommon or unorthodox openings rarely seen in competitive play</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/white-advantage</code></td>\n<td>Openings that statistically favor White</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/black-advantage</code></td>\n<td>Openings that statistically favor Black</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/beginner-friendly</code></td>\n<td>Openings recommended for beginners due to simplicity and clear plans</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/complexity</code></td>\n<td>Retrieve openings ranked or filtered by theoretical complexity</td>\n</tr>\n<tr>\n<td><code>GET /api/v1/openings/eco/:code</code></td>\n<td>Look up a specific opening by its ECO code (e.g., <code>B20</code> for the Sicilian Defense)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"eco-code-system\">ECO Code System</h2>\n<p>The <strong>ECO (Encyclopaedia of Chess Openings)</strong> classification is the standard reference system for chess openings:</p>\n<ul>\n<li><strong>Volume A</strong> (<code>A00–A99</code>) — Flank openings, Dutch Defense, English Opening, and other irregular openings</li>\n<li><strong>Volume B</strong> (<code>B00–B99</code>) — Semi-Open Games (e.g., Sicilian Defense <code>B20–B99</code>, Caro-Kann <code>B10–B19</code>)</li>\n<li><strong>Volume C</strong> (<code>C00–C99</code>) — Open Games and French Defense (e.g., Ruy López <code>C60–C99</code>, Italian Game <code>C50–C59</code>)</li>\n<li><strong>Volume D</strong> (<code>D00–D99</code>) — Closed Games and Semi-Closed Games (e.g., Queen's Gambit <code>D06–D69</code>)</li>\n<li><strong>Volume E</strong> (<code>E00–E99</code>) — Indian Defenses (e.g., King's Indian <code>E60–E99</code>, Nimzo-Indian <code>E20–E59</code>)</li>\n</ul>\n<p>Use the <code>GET /api/v1/openings/eco/:code</code> endpoint to query a specific ECO code directly (e.g., <code>/eco/B20</code> for the Sicilian Defense).</p>\n<hr />\n<h2 id=\"opening-categories\">Opening Categories</h2>\n<p>Openings in this API are tagged across several strategic dimensions:</p>\n<ul>\n<li><strong>Aggressive / Tactical</strong> — Openings like the King's Gambit or Sicilian Dragon that lead to sharp, double-edged positions</li>\n<li><strong>Defensive / Positional</strong> — Openings like the Berlin Defense or Caro-Kann that prioritize solidity and long-term structure</li>\n<li><strong>Gambits</strong> — Openings where a player sacrifices material (usually a pawn) for rapid development or attacking chances (e.g., Queen's Gambit, Evans Gambit)</li>\n<li><strong>Beginner-Friendly</strong> — Openings with straightforward plans and minimal theoretical depth, ideal for learning (e.g., London System, Italian Game)</li>\n<li><strong>Rare / Unorthodox</strong> — Offbeat openings that deviate from mainstream theory, often used as surprise weapons</li>\n</ul>\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li>All endpoints use <code>https://chess-game-dataset-harshit-kumar.onrender.com</code> as the base URL variable. Ensure this is set in your active environment (e.g., <code>http://localhost:3000</code> or your deployed API URL).</li>\n<li>Win rate data from <code>/win-rates</code> reflects aggregate statistics across all matches stored in the database and may vary based on dataset size.</li>\n<li>The <code>/trending</code> endpoint reflects recent activity and may return different results over time as new match data is ingested.</li>\n<li>ECO codes are case-insensitive in most implementations, but it is recommended to use uppercase (e.g., <code>B20</code>, <code>C65</code>) for consistency.</li>\n</ul>\n","_postman_id":"7e6dacbd-91b0-4943-9b3d-f89260f521cf","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Admin & Middleware","item":[{"name":"Get All Users","id":"5d24f412-3320-4b41-8583-afa8d93943cb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","users"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5d24f412-3320-4b41-8583-afa8d93943cb"},{"name":"Get System Logs","id":"c0cb748d-48c7-4806-80d6-ca3cff2fc157","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/logs","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","logs"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c0cb748d-48c7-4806-80d6-ca3cff2fc157"},{"name":"Admin System Health","id":"057d7d5f-39d8-486c-b580-f82f79998b2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/system/health","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","system","health"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"057d7d5f-39d8-486c-b580-f82f79998b2e"},{"name":"Clear Cache","id":"55191a9e-30cf-4180-bfd8-1aadc433fb11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/cache/clear","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","cache","clear"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"55191a9e-30cf-4180-bfd8-1aadc433fb11"},{"name":"Ban User","id":"c3e44bcd-19b6-4e77-9f0d-e7072dc02971","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users/123/ban","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","users","123","ban"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c3e44bcd-19b6-4e77-9f0d-e7072dc02971"},{"name":"Unban User","id":"1e82faf1-d0da-46b0-a451-e9d1e8a33ba0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users/123/unban","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","users","123","unban"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1e82faf1-d0da-46b0-a451-e9d1e8a33ba0"},{"name":"Protected Dashboard","id":"327e5acd-4957-47eb-8cdc-772b58027d21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/protected/dashboard","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","protected","dashboard"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"327e5acd-4957-47eb-8cdc-772b58027d21"},{"name":"Logger Middleware","id":"2dfbf79c-e077-446e-a63a-505caffc19c9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/logger","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","middleware","logger"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2dfbf79c-e077-446e-a63a-505caffc19c9"},{"name":"Auth Middleware","id":"7a292f87-1a62-4dc3-9d6e-e4e30c1046d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/auth","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","middleware","auth"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7a292f87-1a62-4dc3-9d6e-e4e30c1046d5"},{"name":"Rate Limit Middleware","id":"901c5352-015a-4593-8dfb-f8ebb0ce3ac6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/rate-limit","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","middleware","rate-limit"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"901c5352-015a-4593-8dfb-f8ebb0ce3ac6"},{"name":"Error Handler","id":"23b69d65-3700-4e3a-9af0-bb24eeabedbd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/error-handler","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","middleware","error-handler"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"23b69d65-3700-4e3a-9af0-bb24eeabedbd"},{"name":"Protected Matches","id":"c1eeed24-87ef-4fcc-8091-22218e533aa3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/protected/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","protected","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c1eeed24-87ef-4fcc-8091-22218e533aa3"}],"id":"bc09bbf7-0ef0-4180-bcb3-58708c16c252","description":"<h1 id=\"admin--middleware\">Admin &amp; Middleware</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>This folder contains endpoints for <strong>admin-only operations</strong> and <strong>middleware testing</strong> within the Chess Match Analytics API. It is divided into two logical groups:</p>\n<ul>\n<li><strong>Admin Routes</strong> — Privileged endpoints for managing users, monitoring system health, viewing logs, and performing administrative actions such as banning/unbanning users and clearing cache.</li>\n<li><strong>Middleware Routes</strong> — Dedicated test endpoints that isolate and validate individual middleware layers including authentication, rate limiting, request logging, and error handling.</li>\n</ul>\n<hr />\n<h2 id=\"authentication--authorization\">Authentication &amp; Authorization</h2>\n<blockquote>\n<p>⚠️ <strong>All admin routes require elevated privileges.</strong></p>\n</blockquote>\n<ul>\n<li>Requests must include a valid <strong>Bearer token</strong> in the <code>Authorization</code> header:<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer &lt;admin_token&gt;\n</code></pre></li>\n<li>The authenticated user must have an <strong>admin role</strong>. Requests from non-admin users will receive a <code>403 Forbidden</code> response.</li>\n<li>Middleware test routes may require a valid auth token depending on the middleware being tested (see individual request notes below).</li>\n</ul>\n<hr />\n<h2 id=\"admin-endpoints\">Admin Endpoints</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>#</th>\n<th>Request</th>\n<th>Method</th>\n<th>Endpoint</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>Get All Users</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users</code></td>\n</tr>\n<tr>\n<td>2</td>\n<td>Get System Logs</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/logs</code></td>\n</tr>\n<tr>\n<td>3</td>\n<td>Admin System Health</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/system/health</code></td>\n</tr>\n<tr>\n<td>4</td>\n<td>Clear Cache</td>\n<td><code>DELETE</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/cache/clear</code></td>\n</tr>\n<tr>\n<td>5</td>\n<td>Ban User</td>\n<td><code>PATCH</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users/123/ban</code></td>\n</tr>\n<tr>\n<td>6</td>\n<td>Unban User</td>\n<td><code>PATCH</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users/123/unban</code></td>\n</tr>\n<tr>\n<td>7</td>\n<td>Protected Dashboard</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/protected/dashboard</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-details\">Request Details</h3>\n<p><strong>1. Get All Users</strong>\nRetrieves a paginated list of all registered users in the system. Useful for user management and auditing. Returns user metadata such as IDs, roles, and account status.</p>\n<p><strong>2. Get System Logs</strong>\nFetches server-side system logs for monitoring and debugging. Logs may include request traces, error events, and system-level activity. Supports filtering by log level or time range (if query params are available).</p>\n<p><strong>3. Admin System Health</strong>\nReturns the current health status of the system, including service uptime, database connectivity, memory usage, and other infrastructure metrics. Useful for operational monitoring.</p>\n<p><strong>4. Clear Cache</strong>\nPerforms a <code>DELETE</code> operation to flush the server-side cache. Use with caution — this may temporarily impact performance while the cache is rebuilt. Typically used after bulk data updates or deployments.</p>\n<p><strong>5. Ban User</strong>\nApplies a ban to the user with the specified ID (e.g., <code>123</code>). Banned users are restricted from accessing protected resources. The user ID in the path should be replaced with the actual target user's ID.</p>\n<p><strong>6. Unban User</strong>\nReverses a previously applied ban for the specified user ID. Restores the user's access to the platform. The user ID in the path should be replaced with the actual target user's ID.</p>\n<p><strong>7. Protected Dashboard</strong>\nAccesses the admin-only dashboard view. This endpoint validates both authentication and admin-role authorization, making it a good end-to-end test for the full admin access control flow.</p>\n<hr />\n<h2 id=\"middleware-endpoints\">Middleware Endpoints</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>#</th>\n<th>Request</th>\n<th>Method</th>\n<th>Endpoint</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>8</td>\n<td>Logger Middleware</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/logger</code></td>\n</tr>\n<tr>\n<td>9</td>\n<td>Auth Middleware</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/auth</code></td>\n</tr>\n<tr>\n<td>10</td>\n<td>Rate Limit Middleware</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/rate-limit</code></td>\n</tr>\n<tr>\n<td>11</td>\n<td>Error Handler</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/middleware/error-handler</code></td>\n</tr>\n<tr>\n<td>12</td>\n<td>Protected Matches</td>\n<td><code>GET</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/protected/matches</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"middleware-details\">Middleware Details</h3>\n<p><strong>8. Logger Middleware</strong>\nTests the request logging middleware. Verifies that incoming requests are properly logged with relevant metadata (method, path, timestamp, response time). Check server logs to confirm logging behavior.</p>\n<p><strong>9. Auth Middleware</strong>\nValidates the authentication middleware in isolation. Sending a request with and without a valid <code>Authorization</code> header allows you to confirm that the middleware correctly allows or rejects access based on token validity.</p>\n<p><strong>10. Rate Limit Middleware</strong>\nTests the rate limiting middleware. Sending repeated requests in quick succession should trigger a <code>429 Too Many Requests</code> response once the threshold is exceeded. Use this to verify rate limit configuration and headers (e.g., <code>X-RateLimit-Limit</code>, <code>X-RateLimit-Remaining</code>).</p>\n<p><strong>11. Error Handler</strong>\nTriggers the global error handling middleware. This endpoint is designed to produce an error response, allowing you to verify that errors are caught, formatted consistently, and returned with appropriate HTTP status codes and messages.</p>\n<p><strong>12. Protected Matches</strong>\nA protected route that returns match data accessible only to authenticated users. Tests that the auth middleware correctly gates access to sensitive resources. Requires a valid Bearer token.</p>\n<hr />\n<h2 id=\"variables\">Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com</code></td>\n<td>The base URL of the API server (e.g., <code>http://localhost:3000</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><p>Ensure <code>https://chess-game-dataset-harshit-kumar.onrender.com</code> is set in your active Postman environment before running these requests.</p>\n","_postman_id":"bc09bbf7-0ef0-4180-bcb3-58708c16c252","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Pagination","item":[{"name":"Standard pagination","id":"4569a658-ce68-4704-bf0b-96681cb07db8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4569a658-ce68-4704-bf0b-96681cb07db8"},{"name":"Fetch second page","id":"56dafecf-da47-4729-9f04-0b42592ac8ce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"56dafecf-da47-4729-9f04-0b42592ac8ce"},{"name":"Cursor based pagination","id":"a0a295f7-4696-4d01-a8d2-f6ad48e9c2f9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/scroll","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","scroll"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a0a295f7-4696-4d01-a8d2-f6ad48e9c2f9"},{"name":"Infinite scroll pagination","id":"c8f11a0d-1178-459c-8aad-f295c54c4b53","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/infinite","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","infinite"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"c8f11a0d-1178-459c-8aad-f295c54c4b53"},{"name":"Paginated latest matches","id":"7040f4e4-1db9-4c8b-8e4e-6a8c86f912bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/latest","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","latest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7040f4e4-1db9-4c8b-8e4e-6a8c86f912bb"},{"name":"Paginated trending matches","id":"06b3225b-715b-40f6-ab1c-bcbf947cf21e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/trending","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","trending"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"06b3225b-715b-40f6-ab1c-bcbf947cf21e"},{"name":"Paginated player history","id":"f1619cd9-fd88-4e75-8a1b-1e891c451fff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/:username/history","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players",":username","history"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","key":"username"}]}},"response":[],"_postman_id":"f1619cd9-fd88-4e75-8a1b-1e891c451fff"},{"name":"Paginated openings","id":"571a0008-5e87-4020-8f9c-bb2419da56ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"571a0008-5e87-4020-8f9c-bb2419da56ea"},{"name":"Paginated search results","id":"2d6d751d-7902-46c9-8b76-1107258c9ef8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2d6d751d-7902-46c9-8b76-1107258c9ef8"},{"name":"Paginated analytics results","id":"93aff8f2-23a0-423b-9544-29d3a81711e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/top-games","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","analytics","top-games"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"93aff8f2-23a0-423b-9544-29d3a81711e4"}],"id":"866b597f-4dd3-4ace-aca2-f18715e8cdee","description":"<h1 id=\"pagination\">Pagination</h1>\n<p>Pagination is a technique used to divide large datasets into smaller, manageable chunks (pages), allowing clients to retrieve data incrementally rather than fetching everything at once. It is essential for improving API performance, reducing server load, and delivering a better user experience — especially when dealing with large collections of chess matches, player histories, or analytics results.</p>\n<hr />\n<h2 id=\"pagination-strategies\">Pagination Strategies</h2>\n<h3 id=\"offset-based-pagination\">Offset-Based Pagination</h3>\n<p>The most common approach. Clients specify a <code>page</code> number and a <code>limit</code> (number of records per page). The server calculates the offset as <code>(page - 1) * limit</code> and returns the corresponding slice of data.</p>\n<ul>\n<li><strong>Pros:</strong> Simple to implement; supports random access to any page.</li>\n<li><strong>Cons:</strong> Can produce inconsistent results on frequently updated datasets (e.g., new records shifting pages).</li>\n</ul>\n<p><strong>Common query parameters:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>integer</td>\n<td>The page number to retrieve (default: <code>1</code>)</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Number of records per page (default: <code>10</code>)</td>\n</tr>\n<tr>\n<td><code>sort</code></td>\n<td>string</td>\n<td>Field to sort by (e.g., <code>date</code>, <code>rating</code>)</td>\n</tr>\n<tr>\n<td><code>order</code></td>\n<td>string</td>\n<td>Sort direction: <code>asc</code> or <code>desc</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"cursor-based-pagination\">Cursor-Based Pagination</h3>\n<p>Instead of page numbers, the server returns a <code>cursor</code> (an opaque token or encoded pointer) that the client passes in the next request to fetch the following page. Ideal for real-time or frequently updated feeds.</p>\n<ul>\n<li><strong>Pros:</strong> Consistent results even as data changes; efficient for large datasets.</li>\n<li><strong>Cons:</strong> No random access; clients must traverse pages sequentially.</li>\n</ul>\n<p><strong>Common query parameters:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>cursor</code></td>\n<td>string</td>\n<td>Opaque token returned by the previous response</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Number of records to return per request</td>\n</tr>\n<tr>\n<td><code>after</code></td>\n<td>string</td>\n<td>Fetch records after this cursor (forward pagination)</td>\n</tr>\n<tr>\n<td><code>before</code></td>\n<td>string</td>\n<td>Fetch records before this cursor (backward pagination)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"requests-in-this-folder\">Requests in This Folder</h2>\n<h3 id=\"1-standard-pagination\">1. Standard Pagination</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code></p>\n<p>Retrieves the first page of chess matches using offset-based pagination. Use <code>page</code> and <code>limit</code> query parameters to control which page and how many results are returned.</p>\n<hr />\n<h3 id=\"2-fetch-second-page\">2. Fetch Second Page</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code></p>\n<p>Same endpoint as Standard Pagination, but with <code>page=2</code> (or equivalent offset) to retrieve the second page of results. Demonstrates how to navigate through pages sequentially.</p>\n<hr />\n<h3 id=\"3-cursor-based-pagination\">3. Cursor-Based Pagination</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/scroll</code></p>\n<p>Retrieves matches using cursor-based pagination. Pass the <code>cursor</code> value returned from a previous response to fetch the next batch of results. Suitable for scenarios where data consistency across pages is critical.</p>\n<hr />\n<h3 id=\"4-infinite-scroll-pagination\">4. Infinite Scroll Pagination</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/infinite</code></p>\n<p>Designed for infinite scroll UI patterns. Returns a batch of matches along with a <code>nextCursor</code> token. Clients append results to the existing list and use the cursor to load more on demand.</p>\n<hr />\n<h3 id=\"5-paginated-latest-matches\">5. Paginated Latest Matches</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/latest</code></p>\n<p>Returns the most recently played matches in paginated form. Supports <code>page</code> and <code>limit</code> parameters to browse through the latest activity feed.</p>\n<hr />\n<h3 id=\"6-paginated-trending-matches\">6. Paginated Trending Matches</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/trending</code></p>\n<p>Returns trending or highly-viewed matches in paginated form. Useful for surfacing popular games to users in a browsable list.</p>\n<hr />\n<h3 id=\"7-paginated-player-history\">7. Paginated Player History</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players/:username/history</code></p>\n<p>Returns the match history for a specific player identified by <code>:username</code>. Supports pagination to browse through potentially large game histories. Replace <code>:username</code> with the actual player's username.</p>\n<hr />\n<h3 id=\"8-paginated-openings\">8. Paginated Openings</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings</code></p>\n<p>Returns a paginated list of chess openings available in the system. Use <code>page</code> and <code>limit</code> to navigate through the full catalog of openings.</p>\n<hr />\n<h3 id=\"9-paginated-search-results\">9. Paginated Search Results</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/matches</code></p>\n<p>Returns paginated results for a match search query. Combine search/filter parameters with <code>page</code> and <code>limit</code> to browse through matching records efficiently.</p>\n<hr />\n<h3 id=\"10-paginated-analytics-results\">10. Paginated Analytics Results</h3>\n<p><strong>GET</strong> <code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/analytics/top-games</code></p>\n<p>Returns a paginated list of top-performing or analytically significant games. Useful for leaderboards, reports, and data exploration features.</p>\n<hr />\n<h2 id=\"tips\">Tips</h2>\n<ul>\n<li>Always check the response for <code>totalPages</code>, <code>totalCount</code>, <code>nextCursor</code>, or <code>hasMore</code> fields to determine if more data is available.</li>\n<li>Use a consistent <code>limit</code> value across requests to avoid gaps or overlaps in paginated data.</li>\n<li>For cursor-based endpoints, store the <code>cursor</code> from each response and pass it as a query parameter in the next request.</li>\n<li>Avoid using very large <code>limit</code> values, as they can degrade API performance.</li>\n</ul>\n","_postman_id":"866b597f-4dd3-4ace-aca2-f18715e8cdee","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"Sorting","item":[{"name":"Sort by oldest matches","id":"56478ae1-d0ef-44a7-a82a-f285f121cb51","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"56478ae1-d0ef-44a7-a82a-f285f121cb51"},{"name":"Sort by newest matches","id":"5f9505e9-ff6c-4af7-b28b-e4de7d1d6da3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5f9505e9-ff6c-4af7-b28b-e4de7d1d6da3"},{"name":"Sort by move count","id":"7638fcd6-eeaf-4fda-b7a5-e1f6885b36f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7638fcd6-eeaf-4fda-b7a5-e1f6885b36f8"},{"name":"Sort by longest games","id":"4b9146b3-e499-406e-8cca-dd22bb9bf003","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"4b9146b3-e499-406e-8cca-dd22bb9bf003"},{"name":"Sort by duration","id":"e4f5611c-ff41-4277-ac57-685c95208d84","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e4f5611c-ff41-4277-ac57-685c95208d84"},{"name":"Sort by white player rating","id":"05f85484-a994-4f8a-b433-d1a601e6596a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"05f85484-a994-4f8a-b433-d1a601e6596a"},{"name":"Sort by black player rating","id":"87ab6954-848f-4160-9d2b-7b08e7ff8882","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"87ab6954-848f-4160-9d2b-7b08e7ff8882"},{"name":"Sort by winner","id":"191306f6-3669-473a-8752-cd3b49ea8d88","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"191306f6-3669-473a-8752-cd3b49ea8d88"},{"name":"Sort by time control","id":"6a450b50-eb4b-4e4f-91bc-a84c5c26cba5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"6a450b50-eb4b-4e4f-91bc-a84c5c26cba5"},{"name":"Sort by opening name","id":"64ecfbca-d6d2-4197-a929-8815060df87c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"64ecfbca-d6d2-4197-a929-8815060df87c"},{"name":"Sort by popularity","id":"396f1b29-cedc-43fb-b712-364c809ee482","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"396f1b29-cedc-43fb-b712-364c809ee482"},{"name":"Sort by engine accuracy","id":"606ff38d-95bf-4aa2-8737-d82637454e59","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"606ff38d-95bf-4aa2-8737-d82637454e59"},{"name":"Shortest matches first","id":"9cbd0643-a950-4eed-8119-749e4213705a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/shortest","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","shortest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9cbd0643-a950-4eed-8119-749e4213705a"},{"name":"Longest matches first","id":"72c64daa-3979-4ad4-bf77-144191ee18a9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/longest","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","longest"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"72c64daa-3979-4ad4-bf77-144191ee18a9"},{"name":"Highest rated matches","id":"492efd01-1655-408f-a272-328168063574","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/highest-rated","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches","sort","highest-rated"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"492efd01-1655-408f-a272-328168063574"}],"id":"aa38650b-3f99-40dc-8cb2-9a631d778239","description":"<h1 id=\"sorting\">Sorting</h1>\n<p>This folder contains all sorting-related endpoints for the <strong>Chess Match Analytics API</strong>. These requests allow you to retrieve chess match records ordered by a variety of fields — from temporal data and game length to player ratings, openings, and engine accuracy. Both generic query-parameter-based sorting and dedicated sort endpoints are included.</p>\n<hr />\n<h2 id=\"overview\">Overview</h2>\n<p>The Chess Match Analytics API supports flexible sorting of match data through two mechanisms:</p>\n<ol>\n<li><strong>Query Parameter Sorting</strong> — Use <code>GET https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code> with <code>sort</code>, <code>sortBy</code>, and <code>order</code> query parameters to dynamically sort results by any supported field.</li>\n<li><strong>Dedicated Sort Endpoints</strong> — Pre-built endpoints under <code>/api/v1/matches/sort/</code> that return matches sorted by a specific criterion without requiring query parameters.</li>\n</ol>\n<hr />\n<h2 id=\"common-query-parameters\">Common Query Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>sort</code></td>\n<td><code>string</code></td>\n<td>The field to sort results by (e.g., <code>date</code>, <code>moves</code>, <code>duration</code>, <code>rating</code>, <code>winner</code>, <code>opening</code>, <code>popularity</code>, <code>accuracy</code>)</td>\n</tr>\n<tr>\n<td><code>sortBy</code></td>\n<td><code>string</code></td>\n<td>Alternative to <code>sort</code> — used in some endpoints to specify the sort field</td>\n</tr>\n<tr>\n<td><code>order</code></td>\n<td><code>string</code></td>\n<td>Sort direction: <code>asc</code> for ascending, <code>desc</code> for descending</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"requests\">Requests</h2>\n<h3 id=\"query-parameterbased-sorting-get-baseurlapiv1matches\">Query Parameter–Based Sorting (<code>GET https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code>)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>#</th>\n<th>Request</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td><strong>Sort by Oldest Matches</strong></td>\n<td>Returns matches sorted by date in ascending order (<code>sort=date&amp;order=asc</code>), showing the earliest recorded games first.</td>\n</tr>\n<tr>\n<td>2</td>\n<td><strong>Sort by Newest Matches</strong></td>\n<td>Returns matches sorted by date in descending order (<code>sort=date&amp;order=desc</code>), showing the most recently played games first.</td>\n</tr>\n<tr>\n<td>3</td>\n<td><strong>Sort by Move Count</strong></td>\n<td>Sorts matches by the total number of moves played (<code>sort=moves</code>), useful for identifying short tactical games vs. long endgames.</td>\n</tr>\n<tr>\n<td>4</td>\n<td><strong>Sort by Longest Games</strong></td>\n<td>Returns matches ordered by move count descending (<code>sort=moves&amp;order=desc</code>), surfacing the most complex, drawn-out games.</td>\n</tr>\n<tr>\n<td>5</td>\n<td><strong>Sort by Duration</strong></td>\n<td>Sorts matches by total game duration (<code>sort=duration</code>), useful for analyzing time usage across different time controls.</td>\n</tr>\n<tr>\n<td>6</td>\n<td><strong>Sort by White Player Rating</strong></td>\n<td>Orders matches by the Elo rating of the white player (<code>sort=whiteRating</code>), enabling analysis by skill level.</td>\n</tr>\n<tr>\n<td>7</td>\n<td><strong>Sort by Black Player Rating</strong></td>\n<td>Orders matches by the Elo rating of the black player (<code>sort=blackRating</code>), enabling analysis by skill level.</td>\n</tr>\n<tr>\n<td>8</td>\n<td><strong>Sort by Winner</strong></td>\n<td>Groups and sorts matches by the outcome/winner (<code>sort=winner</code>), making it easy to compare win distributions.</td>\n</tr>\n<tr>\n<td>9</td>\n<td><strong>Sort by Time Control</strong></td>\n<td>Sorts matches by their time control setting (<code>sort=timeControl</code>), useful for filtering bullet, blitz, rapid, or classical games.</td>\n</tr>\n<tr>\n<td>10</td>\n<td><strong>Sort by Opening Name</strong></td>\n<td>Alphabetically sorts matches by the chess opening played (<code>sort=opening</code>), helpful for studying specific opening repertoires.</td>\n</tr>\n<tr>\n<td>11</td>\n<td><strong>Sort by Popularity</strong></td>\n<td>Orders matches by a popularity score (<code>sort=popularity</code>), surfacing the most-viewed or most-referenced games.</td>\n</tr>\n<tr>\n<td>12</td>\n<td><strong>Sort by Engine Accuracy</strong></td>\n<td>Sorts matches by engine evaluation accuracy (<code>sort=accuracy</code>), useful for identifying the most precisely played games.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"dedicated-sort-endpoints\">Dedicated Sort Endpoints</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>#</th>\n<th>Request</th>\n<th>Endpoint</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>13</td>\n<td><strong>Shortest Matches First</strong></td>\n<td><code>GET https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/shortest</code></td>\n<td>Returns matches sorted by move count ascending — the quickest games appear first.</td>\n</tr>\n<tr>\n<td>14</td>\n<td><strong>Longest Matches First</strong></td>\n<td><code>GET https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/longest</code></td>\n<td>Returns matches sorted by move count descending — the longest, most complex games appear first.</td>\n</tr>\n<tr>\n<td>15</td>\n<td><strong>Highest Rated Matches</strong></td>\n<td><code>GET https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/sort/highest-rated</code></td>\n<td>Returns matches sorted by the combined or average player rating descending — elite-level games appear first.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"available-sort-fields\">Available Sort Fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>date</code></td>\n<td>Date the match was played</td>\n</tr>\n<tr>\n<td><code>moves</code></td>\n<td>Total number of moves in the game</td>\n</tr>\n<tr>\n<td><code>duration</code></td>\n<td>Total duration of the game</td>\n</tr>\n<tr>\n<td><code>whiteRating</code></td>\n<td>Elo rating of the white player</td>\n</tr>\n<tr>\n<td><code>blackRating</code></td>\n<td>Elo rating of the black player</td>\n</tr>\n<tr>\n<td><code>winner</code></td>\n<td>Match outcome / winning side</td>\n</tr>\n<tr>\n<td><code>timeControl</code></td>\n<td>Time control format (bullet, blitz, rapid, classical)</td>\n</tr>\n<tr>\n<td><code>opening</code></td>\n<td>Name of the chess opening used</td>\n</tr>\n<tr>\n<td><code>popularity</code></td>\n<td>Popularity score of the match</td>\n</tr>\n<tr>\n<td><code>accuracy</code></td>\n<td>Engine-evaluated accuracy score</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"aa38650b-3f99-40dc-8cb2-9a631d778239","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"HEAD & OPTIONS","item":[{"name":"OPTIONS /matches","id":"1e445424-42f4-4d92-a2e6-637d29c7b923","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1e445424-42f4-4d92-a2e6-637d29c7b923"},{"name":"OPTIONS /matches/:matchId","id":"d8e750eb-fe02-48b3-80b4-2f8f2d77e31a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches",":matchId"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","key":"matchId"}]}},"response":[],"_postman_id":"d8e750eb-fe02-48b3-80b4-2f8f2d77e31a"},{"name":"OPTIONS /players","id":"57971131-aee4-4377-a9bf-6fdfef43725d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"57971131-aee4-4377-a9bf-6fdfef43725d"},{"name":"OPTIONS /openings","id":"603d47bf-0a27-4f77-934b-2564025a3572","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"603d47bf-0a27-4f77-934b-2564025a3572"},{"name":"OPTIONS /search/matches","id":"e4dd3d99-4a4f-4c21-b7e5-fbd18c5aa340","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","search","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"e4dd3d99-4a4f-4c21-b7e5-fbd18c5aa340"},{"name":"OPTIONS /auth/login","id":"5face1f7-250e-4f57-95dc-cbf3bc6eaf1e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/login","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","auth","login"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"5face1f7-250e-4f57-95dc-cbf3bc6eaf1e"},{"name":"OPTIONS /admin/users","id":"aca9d13c-0a2a-42d4-92d0-4f7f7de39425","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","admin","users"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"aca9d13c-0a2a-42d4-92d0-4f7f7de39425"},{"name":"HEAD /matches","id":"2fa09f2f-ed83-4962-b9c0-ec79d48ff1b9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"HEAD","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2fa09f2f-ed83-4962-b9c0-ec79d48ff1b9"},{"name":"HEAD /matches/:matchId","id":"99e05e37-3704-451c-9bdd-d4e48381d464","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"HEAD","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches",":matchId"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[{"type":"any","key":"matchId"}]}},"response":[],"_postman_id":"99e05e37-3704-451c-9bdd-d4e48381d464"},{"name":"HEAD /players","id":"be4ea2df-2ffe-4adb-aa88-2475732fabd3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"HEAD","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","players"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"be4ea2df-2ffe-4adb-aa88-2475732fabd3"},{"name":"HEAD /openings","id":"75394659-6669-4eb0-a57a-34e1d3516cec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"HEAD","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","openings"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"75394659-6669-4eb0-a57a-34e1d3516cec"},{"name":"HEAD /system/status","id":"21f86362-7ed2-4544-9b2b-051369dfe082","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"HEAD","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/status","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","system","status"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"21f86362-7ed2-4544-9b2b-051369dfe082"}],"id":"a609dd73-a6e4-44b4-b971-dad57e1df901","description":"<h1 id=\"head--options-methods\">HEAD &amp; OPTIONS Methods</h1>\n<p>This folder contains requests that demonstrate the <strong>HEAD</strong> and <strong>OPTIONS</strong> HTTP methods across the Chess Match Analytics API. These methods are essential for efficient API communication, capability discovery, and CORS compliance — without transferring unnecessary response body data.</p>\n<hr />\n<h2 id=\"http-method-overview\">HTTP Method Overview</h2>\n<h3 id=\"head\">HEAD</h3>\n<p>The <code>HEAD</code> method is identical to <code>GET</code>, but the server <strong>returns only the response headers — no body</strong>. It is used to:</p>\n<ul>\n<li>Check if a resource exists (via status code) without downloading its content</li>\n<li>Retrieve metadata such as <code>Content-Type</code>, <code>Content-Length</code>, <code>Last-Modified</code>, or <code>ETag</code></li>\n<li>Validate caches and check for resource updates efficiently</li>\n<li>Perform lightweight health or availability checks</li>\n</ul>\n<h3 id=\"options\">OPTIONS</h3>\n<p>The <code>OPTIONS</code> method is used to <strong>discover the communication capabilities</strong> of a resource or server. It is used to:</p>\n<ul>\n<li>Retrieve the list of HTTP methods allowed on a specific endpoint (via the <code>Allow</code> header)</li>\n<li>Perform <strong>CORS preflight requests</strong> — browsers automatically send <code>OPTIONS</code> before cross-origin requests to verify that the server permits the operation</li>\n<li>Inspect supported headers, content types, and authentication requirements without side effects</li>\n</ul>\n<p>Both methods are <strong>safe</strong> (they do not modify server state) and <strong>idempotent</strong> (repeated calls produce the same result).</p>\n<hr />\n<h2 id=\"requests-in-this-folder\">Requests in This Folder</h2>\n<h3 id=\"options-requests\">OPTIONS Requests</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>#</th>\n<th>Request</th>\n<th>Endpoint</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td><strong>OPTIONS /matches</strong></td>\n<td><code>OPTIONS https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code></td>\n<td>Discover allowed methods and CORS policy for the matches collection endpoint</td>\n</tr>\n<tr>\n<td>2</td>\n<td><strong>OPTIONS /matches/:matchId</strong></td>\n<td><code>OPTIONS https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId</code></td>\n<td>Discover allowed methods for a specific match resource</td>\n</tr>\n<tr>\n<td>3</td>\n<td><strong>OPTIONS /players</strong></td>\n<td><code>OPTIONS https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players</code></td>\n<td>Retrieve supported methods and CORS headers for the players endpoint</td>\n</tr>\n<tr>\n<td>4</td>\n<td><strong>OPTIONS /openings</strong></td>\n<td><code>OPTIONS https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings</code></td>\n<td>Check allowed operations on the chess openings endpoint</td>\n</tr>\n<tr>\n<td>5</td>\n<td><strong>OPTIONS /search/matches</strong></td>\n<td><code>OPTIONS https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/search/matches</code></td>\n<td>Inspect CORS and method support for the match search endpoint</td>\n</tr>\n<tr>\n<td>6</td>\n<td><strong>OPTIONS /auth/login</strong></td>\n<td><code>OPTIONS https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/auth/login</code></td>\n<td>Verify allowed methods and preflight CORS for the authentication login endpoint</td>\n</tr>\n<tr>\n<td>7</td>\n<td><strong>OPTIONS /admin/users</strong></td>\n<td><code>OPTIONS https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/admin/users</code></td>\n<td>Discover allowed methods and access policies for the admin users endpoint</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"head-requests\">HEAD Requests</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>#</th>\n<th>Request</th>\n<th>Endpoint</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>8</td>\n<td><strong>HEAD /matches</strong></td>\n<td><code>HEAD https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code></td>\n<td>Check existence and retrieve metadata (e.g., <code>Content-Length</code>, <code>ETag</code>) for the matches collection without fetching the body</td>\n</tr>\n<tr>\n<td>9</td>\n<td><strong>HEAD /matches/:matchId</strong></td>\n<td><code>HEAD https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches/:matchId</code></td>\n<td>Verify that a specific match exists and retrieve its headers</td>\n</tr>\n<tr>\n<td>10</td>\n<td><strong>HEAD /players</strong></td>\n<td><code>HEAD https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/players</code></td>\n<td>Retrieve response headers for the players endpoint to check availability and metadata</td>\n</tr>\n<tr>\n<td>11</td>\n<td><strong>HEAD /openings</strong></td>\n<td><code>HEAD https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/openings</code></td>\n<td>Check the openings endpoint for availability and content metadata</td>\n</tr>\n<tr>\n<td>12</td>\n<td><strong>HEAD /system/status</strong></td>\n<td><code>HEAD https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/system/status</code></td>\n<td>Perform a lightweight system health check — confirms the API is reachable without parsing a response body</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"common-response-headers-to-inspect\">Common Response Headers to Inspect</h2>\n<p>When working with these requests, pay attention to the following response headers:</p>\n<ul>\n<li><strong><code>Allow</code></strong> — Lists the HTTP methods permitted on the endpoint (returned by OPTIONS)</li>\n<li><strong><code>Access-Control-Allow-Origin</code></strong> — Indicates which origins are permitted (CORS)</li>\n<li><strong><code>Access-Control-Allow-Methods</code></strong> — Lists methods allowed in cross-origin requests</li>\n<li><strong><code>Access-Control-Allow-Headers</code></strong> — Specifies which request headers are allowed</li>\n<li><strong><code>Content-Type</code></strong> — The media type of the resource</li>\n<li><strong><code>Content-Length</code></strong> — The size of the response body (useful in HEAD requests)</li>\n<li><strong><code>ETag</code></strong> / <strong><code>Last-Modified</code></strong> — Cache validation headers</li>\n</ul>\n<hr />\n<h2 id=\"variable-reference\">Variable Reference</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com</code></td>\n<td>The base URL of the Chess Match Analytics API (e.g., <code>http://localhost:3000</code>)</td>\n</tr>\n<tr>\n<td><code>:matchId</code></td>\n<td>The unique identifier of a chess match</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"a609dd73-a6e4-44b4-b971-dad57e1df901","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}},{"name":"HEAD & OPTIONS","item":[{"name":"OPTIONS Matches","id":"6afe471f-fadf-4149-9c27-070dbd8bb943","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"OPTIONS","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"6afe471f-fadf-4149-9c27-070dbd8bb943"},{"name":"HEAD Matches","id":"22350a10-82a2-4459-b402-ba02672a8875","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"HEAD","header":[],"url":"https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}},"urlObject":{"path":["api","v1","matches"],"host":["https://chess-game-dataset-harshit-kumar.onrender.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"22350a10-82a2-4459-b402-ba02672a8875"}],"id":"40863e25-7e02-48fa-8b82-f1b656c79537","description":"<h2 id=\"head--options\">HEAD &amp; OPTIONS</h2>\n<p>This folder contains requests that use the <strong>HEAD</strong> and <strong>OPTIONS</strong> HTTP methods against the <code>/api/v1/matches</code> endpoint. These methods are essential for API introspection, capability discovery, and efficient metadata retrieval without transferring response bodies.</p>\n<hr />\n<h3 id=\"head-method\">HEAD Method</h3>\n<p>The <code>HEAD</code> method is identical to <code>GET</code>, but the server <strong>does not return a response body</strong>. Only the response headers are returned. This makes HEAD requests highly efficient for:</p>\n<ul>\n<li><strong>Checking resource existence</strong> — verify a resource is available without downloading its content.</li>\n<li><strong>Inspecting metadata</strong> — retrieve headers such as <code>Content-Type</code>, <code>Content-Length</code>, <code>Last-Modified</code>, or <code>ETag</code>.</li>\n<li><strong>Cache validation</strong> — determine whether a cached resource is still fresh before making a full GET request.</li>\n<li><strong>Bandwidth optimization</strong> — useful in scenarios where only header information is needed.</li>\n</ul>\n<hr />\n<h3 id=\"options-method\">OPTIONS Method</h3>\n<p>The <code>OPTIONS</code> method is used to <strong>describe the communication options</strong> available for a target resource. It is commonly used for:</p>\n<ul>\n<li><strong>Discovering allowed HTTP methods</strong> — the server responds with an <code>Allow</code> header listing the methods supported on the endpoint (e.g., <code>GET, POST, PUT, DELETE, HEAD, OPTIONS</code>).</li>\n<li><strong>CORS preflight requests</strong> — browsers automatically send an OPTIONS request before cross-origin requests to verify that the server permits the actual request. The server responds with CORS headers such as <code>Access-Control-Allow-Origin</code>, <code>Access-Control-Allow-Methods</code>, and <code>Access-Control-Allow-Headers</code>.</li>\n<li><strong>API capability discovery</strong> — clients can programmatically determine what operations are permitted on a resource without attempting them.</li>\n</ul>\n<hr />\n<h3 id=\"requests\">Requests</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Request</th>\n<th>Method</th>\n<th>Endpoint</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>OPTIONS Matches</strong></td>\n<td><code>OPTIONS</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code></td>\n<td>Retrieves the communication options for the matches endpoint. Returns the allowed HTTP methods and CORS-related headers, enabling capability discovery and preflight validation.</td>\n</tr>\n<tr>\n<td><strong>HEAD Matches</strong></td>\n<td><code>HEAD</code></td>\n<td><code>https://chess-game-dataset-harshit-kumar.onrender.com/api/v1/matches</code></td>\n<td>Fetches only the response headers for the matches collection — no body is returned. Useful for checking availability, content metadata, and cache freshness of the matches resource.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<blockquote>\n<p><strong>Note:</strong> Use <code>https://chess-game-dataset-harshit-kumar.onrender.com</code> as the base URL variable, configured in your active Postman environment, to point these requests at the correct server (e.g., <code>http://localhost:3000</code> for local development).</p>\n</blockquote>\n","_postman_id":"40863e25-7e02-48fa-8b82-f1b656c79537","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]},"isInherited":true,"source":{"_postman_id":"d095997f-866b-41ee-91f4-a38e92f51650","id":"d095997f-866b-41ee-91f4-a38e92f51650","name":"Chess Match Analytics API","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{json_web_token_0tq4}}"}]}},"event":[{"listen":"prerequest","script":{"id":"3d1b0fc4-2c3f-4f99-b24e-60b4816a55b9","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"e0bc426c-2e8d-4f41-bd44-9cca50a0412d","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"key":"baseUrl","value":"https://chess-game-dataset-harshit-kumar.onrender.com"},{"key":"json_web_token_0tq4","secret":true},{"key":"auth_secret_0fch","secret":true},{"key":"auth_secret_0tq4","secret":true},{"key":"bearer_token_0i4p","secret":true}]}