{"generatedAt":"2026-04-12T18:03:58.586Z","api":{"name":"Altered Public API","version":"v1","docsPath":"/api/","totalEndpoints":27,"groupOrder":["Maps","Alterations","Leaderboards","Clubs","Hub","Tracker","Aggregator","Webhooks","Catalog"]},"endpoints":[{"key":"public-api-catalog","method":"GET","path":"/api/v1/public/endpoints","group":"Catalog","access":"public","stability":"stable","title":"Endpoint Catalog","description":"Lists all documented API endpoints with integration guidance.","pathParams":[],"queryParams":[],"notes":["Use this endpoint to discover the current public surface programmatically."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Catalog","body":"{\n  \"generatedAt\": \"2026-03-14T18:00:00.000Z\",\n  \"api\": {\n    \"name\": \"Altered Public API\",\n    \"version\": \"v1\",\n    \"totalEndpoints\": 28\n  },\n  \"endpoints\": [\n    \"...\"\n  ]\n}"}]},{"key":"public-map-detail","method":"GET","path":"/api/v1/public/maps/:mapUid","group":"Maps","access":"public","stability":"stable","title":"Map Detail","description":"Canonical data for a single Altered-tracked map, including recent WR history.","pathParams":[{"name":"mapUid","type":"string","required":true,"example":"ixgRz0phSb2_luKbkuFu7PK0Iea","description":"Trackmania map UID stored by the Altered service."}],"queryParams":[{"name":"wrHistoryLimit","type":"integer","required":false,"default":5,"description":"Number of recent WR events to include (1–25)."}],"notes":["Returns HTTP 404 when the requested map is not known by Altered."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","Unknown map UIDs return HTTP 404."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Map detail","body":"{\n  \"exists\": true,\n  \"generatedAt\": \"2026-03-15T12:00:00.000Z\",\n  \"api\": {\n    \"name\": \"Altered Public API\",\n    \"version\": \"v1\",\n    \"docsPath\": \"/api/\"\n  },\n  \"map\": {\n    \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n    \"mapId\": \"84f939cb-d43e-47cf-b110-1b953ba3ba16\",\n    \"name\": \"Fall 2024 - 08 Cleaned\",\n    \"filename\": \"Fall 2024 - 08 Cleaned.Map.Gbx\",\n    \"fileUrl\": \"https://core.trackmania.nadeo.live/maps/84f939cb-d43e-47cf-b110-1b953ba3ba16/file\",\n    \"thumbnailUrl\": \"https://core.trackmania.nadeo.live/maps/84f939cb-d43e-47cf-b110-1b953ba3ba16/thumbnail.jpg\",\n    \"author\": \"60a05b90-17d3-4d34-99d1-008874b82dd8\",\n    \"submitter\": \"60a05b90-17d3-4d34-99d1-008874b82dd8\",\n    \"authorScore\": 56093,\n    \"goldScore\": 60000,\n    \"silverScore\": 68000,\n    \"bronzeScore\": 85000,\n    \"collectionName\": \"Stadium\",\n    \"mapStyle\": \"\",\n    \"mapType\": \"TrackMania\\\\TM_Race\",\n    \"isPlayable\": true,\n    \"createdWithGamepadEditor\": false,\n    \"createdWithSimpleEditor\": false,\n    \"timestamp\": \"2024-10-06T14:57:31+00:00\",\n    \"season\": \"Fall\",\n    \"year\": 2024,\n    \"mapnumber\": [\n      8\n    ],\n    \"alteration\": \"Cleaned\",\n    \"type\": null,\n    \"wrMs\": 54321,\n    \"wrHolder\": \"Example Player\",\n    \"tracked\": true,\n    \"status\": \"active\"\n  },\n  \"wrHistory\": [\n    {\n      \"eventId\": 101,\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"mapName\": \"Fall 2024 - 08 Cleaned\",\n      \"accountId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n      \"holder\": \"Example Player\",\n      \"wrMs\": 54321,\n      \"recordedAt\": \"2026-03-10T18:30:00.000Z\",\n      \"receivedAt\": \"2026-03-10T18:30:05.000Z\"\n    }\n  ],\n  \"links\": {\n    \"self\": \"/api/v1/public/maps/ixgRz0phSb2_luKbkuFu7PK0Iea\",\n    \"legacy\": \"/api/v1/maps/info/ixgRz0phSb2_luKbkuFu7PK0Iea\",\n    \"docs\": \"/api/endpoints/public-map-detail\"\n  }\n}"},{"status":404,"label":"Not found","body":"{\n  \"error\": \"Map not found.\",\n  \"mapUid\": \"unknown-map-uid\"\n}"}]},{"key":"legacy-map-info","method":"GET","path":"/api/v1/maps/info/:mapUid","group":"Maps","access":"public","stability":"legacy","title":"Legacy Map Info","description":"Backward-compatible map lookup alias. Prefer /api/v1/public/maps/:mapUid for new integrations.","pathParams":[{"name":"mapUid","type":"string","required":true,"example":"ixgRz0phSb2_luKbkuFu7PK0Iea","description":"Trackmania map UID."}],"queryParams":[],"notes":["Prefer /api/v1/public/maps/:mapUid for new integrations."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","Prefer /api/v1/public/maps/:mapUid for new integrations."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Map info","body":"{\n  \"alteration\": \"Cleaned\",\n  \"author\": \"60a05b90-17d3-4d34-99d1-008874b82dd8\",\n  \"authorScore\": 56093,\n  \"bronzeScore\": 85000,\n  \"collectionName\": \"Stadium\",\n  \"createdWithGamepadEditor\": false,\n  \"createdWithSimpleEditor\": false,\n  \"fileUrl\": \"https://core.trackmania.nadeo.live/maps/84f939cb-d43e-47cf-b110-1b953ba3ba16/file\",\n  \"filename\": \"Fall 2024 - 08 Cleaned.Map.Gbx\",\n  \"goldScore\": 60000,\n  \"isPlayable\": true,\n  \"mapId\": \"84f939cb-d43e-47cf-b110-1b953ba3ba16\",\n  \"mapStyle\": \"\",\n  \"mapType\": \"TrackMania\\\\TM_Race\",\n  \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n  \"mapnumber\": [\n    8\n  ],\n  \"name\": \"Fall 2024 - 08 Cleaned\",\n  \"season\": \"Fall\",\n  \"silverScore\": 68000,\n  \"submitter\": \"60a05b90-17d3-4d34-99d1-008874b82dd8\",\n  \"thumbnailUrl\": \"https://core.trackmania.nadeo.live/maps/84f939cb-d43e-47cf-b110-1b953ba3ba16/thumbnail.jpg\",\n  \"timestamp\": \"2024-10-06T14:57:31+00:00\",\n  \"type\": null,\n  \"year\": 2024\n}"},{"status":404,"label":"Not found","body":"{\n  \"error\": \"Map not found.\",\n  \"mapUid\": \"unknown-map-uid\"\n}"}]},{"key":"alterations-stats","method":"GET","path":"/api/v1/alterations/stats","group":"Alterations","access":"public","stability":"existing","title":"Stats","description":"Aggregate counters for maps, records, and tracking activity.","pathParams":[],"queryParams":[],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Stats","body":"{\n  \"total_maps\": 120,\n  \"actively_tracked\": 96,\n  \"total_wr_changes\": 340,\n  \"total_campaigns\": 15,\n  \"total_players\": 2840\n}"}]},{"key":"alterations-maps","method":"GET","path":"/api/v1/alterations/maps","group":"Alterations","access":"public","stability":"existing","title":"Maps Inventory","description":"Paginated inventory of all Altered-tracked maps.","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"default":120,"description":"Maximum rows returned."},{"name":"offset","type":"integer","required":false,"default":0,"description":"Pagination offset."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Maps","body":"{\n  \"maps\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"name\": \"Fall 2024 - 08 Cleaned\",\n      \"season\": \"Fall\",\n      \"year\": 2024,\n      \"alteration\": \"Cleaned\",\n      \"wrMs\": 54321,\n      \"wrHolder\": \"Example Player\",\n      \"tracked\": true\n    }\n  ],\n  \"total\": 120,\n  \"limit\": 120,\n  \"offset\": 0\n}"}]},{"key":"alterations-campaigns","method":"GET","path":"/api/v1/alterations/campaigns","group":"Alterations","access":"public","stability":"existing","title":"Campaigns","description":"Campaign inventory tracked by Altered.","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"default":120,"description":"Maximum rows returned."},{"name":"offset","type":"integer","required":false,"default":0,"description":"Pagination offset."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Campaigns","body":"{\n  \"campaigns\": [\n    {\n      \"campaignId\": 1,\n      \"name\": \"Fall 2024\",\n      \"mapCount\": 25,\n      \"externalId\": 54321\n    }\n  ],\n  \"total\": 15,\n  \"limit\": 120,\n  \"offset\": 0\n}"}]},{"key":"alterations-uploads","method":"GET","path":"/api/v1/alterations/uploads","group":"Alterations","access":"public","stability":"existing","title":"Upload Buckets","description":"Upload bucket data discovered from the tracked club.","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"default":120,"description":"Maximum rows returned."},{"name":"offset","type":"integer","required":false,"default":0,"description":"Pagination offset."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Uploads","body":"{\n  \"uploads\": [\n    {\n      \"bucketId\": 12,\n      \"name\": \"Fall 2024 Uploads\",\n      \"mapCount\": 25,\n      \"discoveredAt\": \"2024-10-01T00:00:00.000Z\"\n    }\n  ],\n  \"total\": 8,\n  \"limit\": 120,\n  \"offset\": 0\n}"}]},{"key":"alterations-leaderboards","method":"GET","path":"/api/v1/alterations/leaderboards","group":"Leaderboards","access":"public","stability":"existing","title":"WR Leaderboards","description":"Overall and bucketed WR leaderboards across all Altered maps.","pathParams":[],"queryParams":[{"name":"overallLimit","type":"integer","required":false,"default":100,"description":"Overall leaderboard size."},{"name":"overallOffset","type":"integer","required":false,"default":0,"description":"Overall leaderboard offset."},{"name":"perBucketLimit","type":"integer","required":false,"default":10,"description":"Per-bucket leaderboard size."},{"name":"includeMaps","type":"boolean","required":false,"default":true,"description":"Include map rows."},{"name":"includeBuckets","type":"boolean","required":false,"default":true,"description":"Include bucketed leaderboards."},{"name":"includeMedals","type":"boolean","required":false,"default":true,"description":"Include medal aggregates."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Leaderboards","body":"{\n  \"summary\": {\n    \"trackedMaps\": 96,\n    \"totalPlayers\": 2840\n  },\n  \"overall\": [\n    {\n      \"accountId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n      \"holder\": \"Example Player\",\n      \"totalWrs\": 18,\n      \"latestWrAt\": \"2026-03-10T18:30:00.000Z\"\n    }\n  ],\n  \"buckets\": [\n    {\n      \"bucket\": \"Fall 2024\",\n      \"leaders\": [\n        {\n          \"holder\": \"Example Player\",\n          \"totalWrs\": 5\n        }\n      ]\n    }\n  ]\n}"}]},{"key":"alterations-leaderboards-live","method":"GET","path":"/api/v1/alterations/leaderboards/live","group":"Leaderboards","access":"public","stability":"existing","title":"Live Leaderboards","description":"Live leaderboard data with recent WR feed.","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"default":50,"description":"Leaderboard row count."},{"name":"feedLimit","type":"integer","required":false,"default":24,"description":"Event feed size."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Live","body":"{\n  \"leaderboard\": [\n    {\n      \"accountId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n      \"holder\": \"Example Player\",\n      \"totalWrs\": 18\n    }\n  ],\n  \"feed\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"mapName\": \"Fall 2024 - 08 Cleaned\",\n      \"holder\": \"Example Player\",\n      \"wrMs\": 54321,\n      \"recordedAt\": \"2026-03-10T18:30:00.000Z\"\n    }\n  ]\n}"}]},{"key":"hook-status","method":"GET","path":"/api/v1/hook/altered","group":"Clubs","access":"public","stability":"existing","title":"Hook Status","description":"Primary Altered club hook status and latest sync metadata.","pathParams":[],"queryParams":[],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Hook status","body":"{\n  \"hook\": {\n    \"hookKey\": \"altered-club\",\n    \"clubId\": 24231,\n    \"clubName\": \"Altered Nadeo\",\n    \"enabled\": true,\n    \"lastSyncAt\": \"2026-03-15T11:45:00.000Z\",\n    \"mapCount\": 120\n  }\n}"}]},{"key":"hook-maps","method":"GET","path":"/api/v1/hook/altered/maps","group":"Clubs","access":"public","stability":"existing","title":"Hook Maps","description":"Maps currently linked to the primary Altered hook.","pathParams":[],"queryParams":[{"name":"q","type":"string","required":false,"default":"","description":"Name or UID search filter."},{"name":"limit","type":"integer","required":false,"default":1200,"description":"Maximum map rows."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Hook maps","body":"{\n  \"maps\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"name\": \"Fall 2024 - 08 Cleaned\",\n      \"author\": \"60a05b90-17d3-4d34-99d1-008874b82dd8\",\n      \"thumbnailUrl\": \"https://core.trackmania.nadeo.live/maps/84f939cb-d43e-47cf-b110-1b953ba3ba16/thumbnail.jpg\"\n    }\n  ],\n  \"count\": 120\n}"}]},{"key":"hook-runs","method":"GET","path":"/api/v1/hook/altered/runs","group":"Clubs","access":"public","stability":"existing","title":"Hook Sync Runs","description":"Recent sync runs for the primary Altered club hook.","pathParams":[],"queryParams":[{"name":"limit","type":"integer","required":false,"default":30,"description":"Maximum run count."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Sync runs","body":"{\n  \"runs\": [\n    {\n      \"runId\": 42,\n      \"hookKey\": \"altered-club\",\n      \"status\": \"ok\",\n      \"mapsSeen\": 120,\n      \"mapsAdded\": 0,\n      \"mapsRemoved\": 0,\n      \"startedAt\": \"2026-03-15T11:45:00.000Z\",\n      \"finishedAt\": \"2026-03-15T11:45:12.000Z\"\n    }\n  ],\n  \"count\": 30\n}"}]},{"key":"aggregator-club-summary","method":"GET","path":"/api/v1/clubs/:clubId/summary","group":"Clubs","service":"aggregator","access":"public","stability":"existing","title":"Club Summary","description":"Overview summary for a tracked club.","pathParams":[{"name":"clubId","type":"integer","required":true,"example":"24231","description":"Trackmania club ID."}],"queryParams":[],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Summary","body":"{\n  \"club\": {\n    \"clubId\": 24231,\n    \"name\": \"Altered Nadeo\",\n    \"campaignCount\": 15,\n    \"mapCount\": 120,\n    \"memberCount\": 850,\n    \"createdAt\": \"2023-01-15T00:00:00.000Z\"\n  }\n}"}]},{"key":"aggregator-club-campaigns","method":"GET","path":"/api/v1/clubs/:clubId/campaigns","group":"Clubs","service":"aggregator","access":"public","stability":"existing","title":"Club Campaigns","description":"Campaigns belonging to a tracked club.","pathParams":[{"name":"clubId","type":"integer","required":true,"example":"24231","description":"Trackmania club ID."}],"queryParams":[],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Campaigns","body":"{\n  \"campaigns\": [\n    {\n      \"campaignId\": 54321,\n      \"name\": \"Fall 2024\",\n      \"mapCount\": 25,\n      \"createdAt\": \"2024-10-01T00:00:00.000Z\"\n    }\n  ]\n}"}]},{"key":"aggregator-club-maps","method":"GET","path":"/api/v1/clubs/:clubId/maps","group":"Clubs","service":"aggregator","access":"public","stability":"existing","title":"Club Maps","description":"Maps belonging to a tracked club, with search.","pathParams":[{"name":"clubId","type":"integer","required":true,"example":"24231","description":"Trackmania club ID."}],"queryParams":[{"name":"q","type":"string","required":false,"default":"","description":"Search filter."},{"name":"limit","type":"integer","required":false,"default":100,"description":"Maximum rows."},{"name":"offset","type":"integer","required":false,"default":0,"description":"Pagination offset."}],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Maps","body":"{\n  \"maps\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"name\": \"Fall 2024 - 08 Cleaned\",\n      \"author\": \"60a05b90-17d3-4d34-99d1-008874b82dd8\",\n      \"thumbnailUrl\": \"https://core.trackmania.nadeo.live/maps/84f939cb-d43e-47cf-b110-1b953ba3ba16/thumbnail.jpg\"\n    }\n  ],\n  \"total\": 120,\n  \"limit\": 100,\n  \"offset\": 0\n}"}]},{"key":"dashboard-summary","method":"GET","path":"/api/v1/dashboard","group":"Hub","access":"public","stability":"existing","title":"Dashboard Summary","description":"Public dashboard counters, tracked maps, and recent WR feed.","pathParams":[],"queryParams":[{"name":"mapsLimit","type":"integer","required":false,"default":24,"description":"Maps to return."},{"name":"mapsOffset","type":"integer","required":false,"default":0,"description":"Map offset."},{"name":"wrFeedLimit","type":"integer","required":false,"default":12,"description":"WR feed item count."},{"name":"includeMapOptions","type":"boolean","required":false,"default":true,"description":"Include map selection options."},{"name":"includeTracker","type":"boolean","required":false,"default":true,"description":"Include tracker runtime data."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Dashboard","body":"{\n  \"stats\": {\n    \"total_maps\": 120,\n    \"actively_tracked\": 96,\n    \"total_wr_changes\": 340\n  },\n  \"maps\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"name\": \"Fall 2024 - 08 Cleaned\",\n      \"season\": \"Fall\",\n      \"year\": 2024,\n      \"alteration\": \"Cleaned\",\n      \"wrMs\": 54321,\n      \"wrHolder\": \"Example Player\"\n    }\n  ],\n  \"wrFeed\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"mapName\": \"Fall 2024 - 08 Cleaned\",\n      \"holder\": \"Example Player\",\n      \"wrMs\": 54321,\n      \"recordedAt\": \"2026-03-10T18:30:00.000Z\"\n    }\n  ],\n  \"tracker\": {\n    \"enabled\": true,\n    \"lastRunAt\": \"2026-03-15T11:50:00.000Z\"\n  }\n}"}]},{"key":"latest-wr","method":"GET","path":"/api/v1/latest-wr","group":"Hub","access":"public","stability":"existing","title":"Latest WR Feed","description":"Latest WR event and a recent history slice.","pathParams":[],"queryParams":[{"name":"includeRecent","type":"boolean","required":false,"default":true,"description":"Include the recent WR list."},{"name":"limit","type":"integer","required":false,"default":24,"description":"Recent WR item count."},{"name":"offset","type":"integer","required":false,"default":0,"description":"Recent WR offset."}],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Latest WR","body":"{\n  \"latest\": {\n    \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n    \"mapName\": \"Fall 2024 - 08 Cleaned\",\n    \"accountId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n    \"holder\": \"Example Player\",\n    \"wrMs\": 54321,\n    \"recordedAt\": \"2026-03-10T18:30:00.000Z\"\n  },\n  \"recent\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"mapName\": \"Fall 2024 - 08 Cleaned\",\n      \"holder\": \"Example Player\",\n      \"wrMs\": 54321,\n      \"recordedAt\": \"2026-03-10T18:30:00.000Z\"\n    }\n  ]\n}"}]},{"key":"tracker-status","method":"GET","path":"/api/v1/tracker/status","group":"Tracker","access":"public","stability":"existing","title":"Tracker Status","description":"Tracker runtime health and latest execution state.","pathParams":[],"queryParams":[],"notes":[],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Tracker status","body":"{\n  \"runtime\": {\n    \"enabled\": true,\n    \"intervalSeconds\": 300,\n    \"trackedMaps\": 96\n  },\n  \"latestRun\": {\n    \"finishedAt\": \"2026-03-15T11:50:00.000Z\",\n    \"mapsChecked\": 96,\n    \"wrChanges\": 3,\n    \"duration\": \"12.4s\"\n  }\n}"}]},{"key":"aggregator-meta","method":"GET","path":"/api/v1/meta","group":"Aggregator","service":"aggregator","access":"public","stability":"existing","title":"Service Meta","description":"Aggregator service metadata and health summary.","pathParams":[],"queryParams":[],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Meta","body":"{\n  \"service\": \"tracker-aggregator\",\n  \"version\": \"1.0.0\",\n  \"uptime\": \"4d 12h 30m\",\n  \"summary\": {\n    \"projects\": 2,\n    \"totalMaps\": 240,\n    \"totalEvents\": 1200\n  }\n}"}]},{"key":"aggregator-metrics-overview","method":"GET","path":"/api/v1/metrics/overview","group":"Aggregator","service":"aggregator","access":"public","stability":"existing","title":"Metrics Overview","description":"High-level metrics across all aggregated tracking data.","pathParams":[],"queryParams":[],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Metrics","body":"{\n  \"metrics\": {\n    \"totalEvents\": 1200,\n    \"totalMaps\": 240,\n    \"totalProjects\": 2,\n    \"totalClubs\": 3,\n    \"lastEventAt\": \"2026-03-15T11:30:00.000Z\"\n  }\n}"}]},{"key":"aggregator-projects","method":"GET","path":"/api/v1/projects","group":"Aggregator","service":"aggregator","access":"public","stability":"existing","title":"Projects","description":"Lists all tracking projects registered with the aggregator.","pathParams":[],"queryParams":[],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Projects","body":"{\n  \"projects\": [\n    {\n      \"projectKey\": \"local-tracker-main\",\n      \"name\": \"Local Tracker Main\",\n      \"mapCount\": 120,\n      \"enabled\": true,\n      \"lastSyncAt\": \"2026-03-15T11:50:00.000Z\"\n    }\n  ]\n}"}]},{"key":"aggregator-project-detail","method":"GET","path":"/api/v1/projects/:projectKey","group":"Aggregator","service":"aggregator","access":"public","stability":"existing","title":"Project Detail","description":"Detail for a single tracking project.","pathParams":[{"name":"projectKey","type":"string","required":true,"example":"local-tracker-main","description":"Unique project key."}],"queryParams":[],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Project","body":"{\n  \"project\": {\n    \"projectKey\": \"local-tracker-main\",\n    \"name\": \"Local Tracker Main\",\n    \"mapCount\": 120,\n    \"enabled\": true,\n    \"lastSyncAt\": \"2026-03-15T11:50:00.000Z\",\n    \"checkIntervalSeconds\": 300\n  }\n}"}]},{"key":"aggregator-project-maps","method":"GET","path":"/api/v1/projects/:projectKey/maps","group":"Aggregator","service":"aggregator","access":"public","stability":"existing","title":"Project Maps","description":"Maps tracked by a specific project, with search.","pathParams":[{"name":"projectKey","type":"string","required":true,"example":"local-tracker-main","description":"Unique project key."}],"queryParams":[{"name":"q","type":"string","required":false,"default":"","description":"Search filter."},{"name":"limit","type":"integer","required":false,"default":100,"description":"Maximum rows."},{"name":"offset","type":"integer","required":false,"default":0,"description":"Pagination offset."}],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Project maps","body":"{\n  \"maps\": [\n    {\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"name\": \"Fall 2024 - 08 Cleaned\",\n      \"wrMs\": 54321,\n      \"wrHolder\": \"Example Player\",\n      \"tracked\": true\n    }\n  ],\n  \"total\": 120,\n  \"limit\": 100,\n  \"offset\": 0\n}"}]},{"key":"aggregator-events-recent","method":"GET","path":"/api/v1/events/recent","group":"Aggregator","service":"aggregator","access":"public","stability":"existing","title":"Recent Events","description":"Recent tracking events across all projects, with filtering and search.","pathParams":[],"queryParams":[{"name":"project","type":"string","required":false,"default":"","description":"Filter by project key."},{"name":"q","type":"string","required":false,"default":"","description":"Search filter."},{"name":"limit","type":"integer","required":false,"default":50,"description":"Maximum rows."},{"name":"offset","type":"integer","required":false,"default":0,"description":"Pagination offset."}],"notes":["Served by the aggregator service."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Events","body":"{\n  \"events\": [\n    {\n      \"eventId\": 101,\n      \"type\": \"wr_change\",\n      \"projectKey\": \"local-tracker-main\",\n      \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n      \"mapName\": \"Fall 2024 - 08 Cleaned\",\n      \"accountId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n      \"holder\": \"Example Player\",\n      \"wrMs\": 54321,\n      \"recordedAt\": \"2026-03-10T18:30:00.000Z\"\n    }\n  ],\n  \"total\": 50,\n  \"limit\": 50,\n  \"offset\": 0\n}"}]},{"key":"aggregator-display-names","method":"GET","path":"/api/v1/display-names","group":"Aggregator","service":"aggregator","access":"public","stability":"existing","title":"Display Names","description":"Fetch player display names by account ID.","pathParams":[],"queryParams":[{"name":"accountIds","type":"string","required":true,"default":"","description":"Comma-separated account IDs to look up."}],"notes":["Served by the aggregator service.","Accepts up to 50 account IDs per request."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."}],"remarks":["No authentication is required for this endpoint.","Responses are returned as JSON.","This endpoint is served by the aggregator service (aggregator.xjk.yt)."],"requestBodyExample":null,"exampleResponses":[{"status":200,"label":"Names","body":"{\n  \"names\": {\n    \"60a05b90-17d3-4d34-99d1-008874b82dd8\": \"Example Player\"\n  },\n  \"found\": 1,\n  \"requested\": 1\n}"}]},{"key":"request-update","method":"POST","path":"/api/v1/request-update","group":"Webhooks","access":"public","stability":"existing","title":"Request Map Update","description":"Submit a public request for a manual map update.","pathParams":[],"queryParams":[],"notes":["JSON body: { uid|mapUid, name|mapName, reason }"],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."},{"name":"Content-Type","value":"application/json","required":true,"description":"Send the request body as JSON."}],"remarks":["No authentication is required for this endpoint.","Invalid or incomplete submissions can return HTTP 400."],"requestBodyExample":"{\n  \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n  \"mapName\": \"Fall 2024 - 08 Cleaned\",\n  \"reason\": \"Please refresh this map after a recent record change.\"\n}","exampleResponses":[{"status":200,"label":"Queued","body":"{\n  \"ok\": true,\n  \"request\": {\n    \"requestId\": 42,\n    \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n    \"mapName\": \"Fall 2024 - 08 Cleaned\",\n    \"status\": \"queued\",\n    \"createdAt\": \"2026-03-15T12:00:00.000Z\"\n  }\n}"},{"status":400,"label":"Invalid","body":"{\n  \"error\": \"mapUid is required.\"\n}"}]},{"key":"wr-webhook","method":"POST","path":"/api/v1/webhook/wr","group":"Webhooks","access":"protected","stability":"existing","title":"WR Webhook","description":"Receives shared-secret WR events from trusted services.","pathParams":[],"queryParams":[],"notes":["Requires the x-webhook-secret header.","Not intended for anonymous public clients."],"headers":[{"name":"Accept","value":"application/json","required":false,"description":"Request a JSON response payload."},{"name":"Content-Type","value":"application/json","required":true,"description":"Send the request body as JSON."},{"name":"x-webhook-secret","value":"<shared-secret>","required":true,"description":"Shared secret configured on the Altered service."}],"remarks":["This endpoint is intended for trusted services only."],"requestBodyExample":"{\n  \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n  \"mapName\": \"Fall 2024 - 08 Cleaned\",\n  \"accountId\": \"60a05b90-17d3-4d34-99d1-008874b82dd8\",\n  \"holder\": \"Example Player\",\n  \"wrMs\": 54321,\n  \"recordedAt\": \"2026-03-14T18:00:00.000Z\"\n}","exampleResponses":[{"status":200,"label":"Accepted","body":"{\n  \"ok\": true,\n  \"event\": {\n    \"mapUid\": \"ixgRz0phSb2_luKbkuFu7PK0Iea\",\n    \"mapName\": \"Fall 2024 - 08 Cleaned\",\n    \"accountId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n    \"holder\": \"Example Player\",\n    \"wrMs\": 54321,\n    \"recordedAt\": \"2026-03-10T18:30:00.000Z\"\n  }\n}"},{"status":401,"label":"Unauthorized","body":"{\n  \"error\": \"Unauthorized\"\n}"}]}]}