{"info":{"_postman_id":"9e4ae121-2cf2-4f11-bf5c-8fefb1b77b22","name":"B3 Docs","description":"<html><head></head><body><p>Welcome to the Basement.fun documentation! This guide will help you integrate your game with our platform using B3’s API. By following these steps, you’ll discover how to effortlessly connect your game and unlock a range of exciting features and functionalities.</p>\n<p>See more documentation at <a href=\"https://docs.b3.fun\">https://docs.b3.fun</a></p>\n<h2 id=\"authorization\"><strong>Authorization</strong></h2>\n<p>To call the APIs, there are two steps of authorization. The launcherJwt (A JSON-Web-Token that links to the specific user's session with the game (passed in the request body), and the client secret (passed as Authorization header)</p>\n<h5 id=\"obtaining-a-launcher-jwt-for\">Obtaining a Launcher JWT For:</h5>\n<ol>\n<li><p>Embedded games in launcher, or external web games: the launcher loads the link of the game with an additional query parameter which contains the token. Easy.<br> i.e if the game's target is <code>example.com</code> the launcher will load <code>example.com/?token=</code>.</p>\n</li>\n<li><p>External non-web games (Telegram, desktop, etc.): to get a JWT and maintain the session, you must manually create a session and call the heartbeat API to keep it alive.</p>\n<ol>\n<li><p>Call CreateUnverifiedChannel to create a new session for the user.</p>\n</li>\n<li><p>Get the \"signRequest\" value from the response and have your user sign it with their wallet.</p>\n</li>\n<li><p>Call VerifyUnverifiedChannel with the user's sign hash to verify their presence. Get the launcherJwt from its response and use for all other API calls.</p>\n</li>\n<li><p>Keep the session alive by calling RenewChannelHeartbeat at least once every 3 minutes. Capture authentication errors from the APIs and repeat from a if the JWT has expired.</p>\n</li>\n</ol>\n</li>\n</ol>\n<h2 id=\"session-management-important-for-external-games\">Session Management (Important for external games)</h2>\n<p>In order for B3 to accurately measure user metrics of the game, and to provide the APIs via valid sessions that use JWT for authorization, we require the user context to continuously keep the session alive using the heartbeat APIs.</p>\n<ul>\n<li><p>For embedded games: We manually maintain the session, no required integration on the game's side.</p>\n</li>\n<li><p>For external WEB games: When your game is opened in a new window, we pass the session JWT as an additional query parameter. You can either use it to manually call the heartbeat API every 3 minutes, OR, simply use our already made script which does this all automatically for you.</p>\n<ul>\n<li><p>Simply add the following HTML code to all the html pages of your game</p>\n<ul>\n<li><code>`https://cdn.basement.fun/heartbeat-script.js``\" type=\"text/javascript\"&gt;`</code></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><code>For external non-web games (i.e Telegram), follow the instructions of \"Obtaining a Launcher JWT For: [external non-web games]\"</code></p>\n</li>\n</ul>\n<h2 id=\"payload-verification---anti-client-side-request-forgery\">Payload Verification - Anti client-side request forgery</h2>\n<p>By default, requests going to the backend from your client-side game, will appear in the devtools window of the browser. Devtools lets users easily edit and resend requests, which means that anyone with a basic technical knowledge could edit outgoing requests, and increase their scores, or otherwise modify their data.</p>\n<p>To ensure that is not possible, we offer a feature flag for games, \"launcherSignatureVerification\" (can be turned on in dashboard), which adds an additional layer of authentication with each request.</p>\n<p><strong>How to sign requests using launcher signature verification:</strong></p>\n<ol>\n<li><p>Take your game's secret, hash it using MD5, and store it in the game.</p>\n</li>\n<li><p>For each request to the basement API, construct and include the following headers:</p>\n<ol>\n<li><p>\"X-Request-Nonce\": a random string, identifier for the specific request. (we recommend up to 32 randomly selected characters)</p>\n</li>\n<li><p>\"X-Request-Signature\": this is the MD5 hash of the nonce prepended to the md5 of the game's secret ( = MD5(nonce + MD5(gameSecret))</p>\n</li>\n</ol>\n</li>\n</ol>\n<p>With this enabled, each request signature is unique, and validated to ensure the it is useable only once. Now if a user attempts to modify a request and resend it with the same signature, they will be flagged as potential cheater, and the request will fail.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"37856942","collectionId":"9e4ae121-2cf2-4f11-bf5c-8fefb1b77b22","publishedId":"2sAXjF7u4i","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"8d4cf6"},"publishDate":"2024-08-23T17:56:47.000Z"},"item":[{"name":"GetChannelStatus","id":"470ef06f-2b21-47e5-9eb3-272c9d152f89","protocolProfileBehavior":{"disabledSystemHeaders":{},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"channelStatus","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Provides detailed information about the current status of a specific channel. It can be utilized to determine whether a user is actively engaged in an ongoing session. By checking the channel status, you can gain insights into user activity, helping you to understand whether the user is participating in real-time or if they have become inactive.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"1ce37271-8c0c-4b0f-815b-04a61e8dd6ec","name":"GetChannelStatus","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"channelStatus","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:04:13 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"sxl52I0qQl-BQGuvB23Mlw_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=gbbwpBcn0Eark9Q7a7SoJSVkyg1MxbiIr%2BYvgRbzGnQAvV6bR7GEr%2F3Uv9SmiCil%2BKBcZPbVYOMf9nxRd7p3S%2BMx9PQnY63HZG75y6x%2F2%2BsMkKicS5kuQczg%2F9GJ6Rgfx44%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3b1f291b8661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"exists\": true,\n    \"present\": true,\n    \"wallet\": \"0xB4590641ba39B2F2d38354e2A1Af8e62A6744174\",\n    \"openedAt\": 1724270624344\n}"}],"_postman_id":"470ef06f-2b21-47e5-9eb3-272c9d152f89"},{"name":"SendNotification","id":"a71c6a83-ea7c-4ec4-8e0d-2e8c80e7d333","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"sendNotification","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"message\": \"notification message\",\r\n    \"type\": \"success or error\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Enables you to send a notification directly to the user, triggering a popup that will appear on their screen when invoked. It’s an effective tool for keeping users informed and engaged by providing them with timely updates and important game-related information. Whether it’s alerting them to new events, reminders, or critical updates, this feature ensures that users stay up to date with everything they need to know as they navigate through the game.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"b91d9d49-6f52-4fb0-ae11-bdc8250f7213","name":"SendNotification","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"sendNotification","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"message\": \"notification message\",\r\n    \"type\": \"success or error\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:04:19 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"AXUc5pRIQhq4wB-SCld4NQ_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=yvqn4IWcvmqtnnni73tycjXf95NSNvvAGPESwEEoYwHsBOh0OdYNy%2Bs9P2qiQ8Z1jf6cuyRKIfN0uHx8GshIBIaBWC82FpV8KhUJYJOO5P1NBe832kn8ugdEPtEL0knzgms%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3b41aace8661-PER"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true\n}"}],"_postman_id":"a71c6a83-ea7c-4ec4-8e0d-2e8c80e7d333"},{"name":"GetUserActivities","id":"4936a7ad-405f-4c3d-a3d8-a62c53d85b2d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.basement.fun/activities?pageSize=10&pageNumber=1&walletAddress=0xB4590641ba39B2F2d38354e2A1Af8e62A6744174&type=off-chain","description":"<p>Retrieves user activities that were previously set using the <code>SendCustomActivity</code> function. It's particularly useful for tracking and displaying in-game events, achievements, or custom leaderboards.</p>\n","urlObject":{"protocol":"https","path":["activities"],"host":["api","basement","fun"],"query":[{"key":"pageSize","value":"10"},{"key":"pageNumber","value":"1"},{"key":"walletAddress","value":"0xB4590641ba39B2F2d38354e2A1Af8e62A6744174"},{"description":{"content":"<p>on-chain also allowed</p>\n","type":"text/plain"},"key":"type","value":"off-chain"}],"variable":[]}},"response":[{"id":"9834dde2-f0d6-4ac9-a46b-4055981175eb","name":"GetUserActivities","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.basement.fun/activities?pageSize=10&pageNumber=1&walletAddress=0xB4590641ba39B2F2d38354e2A1Af8e62A6744174&type=off-chain","protocol":"https","host":["api","basement","fun"],"path":["activities"],"query":[{"key":"pageSize","value":"10"},{"key":"pageNumber","value":"1"},{"key":"walletAddress","value":"0xB4590641ba39B2F2d38354e2A1Af8e62A6744174"},{"key":"type","value":"off-chain","description":"on-chain also allowed"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:04:24 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"6Jwq62J_TF2P6I6fuA7WsQ_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=i0vy%2BIA6l5GIEcDUnskhvp%2Frnbyl05GRLD3XV6rraaisTrG6hEYQyfwfD2UA8XO7A%2FFlJaEcQ%2FvY9UVIoW48CHmjvMveBlo16tPN4V624hMZeiEpYOxRNHVagTJWa7zyukw%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3b5f086e8661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"result\": {\n        \"pageNumber\": 1,\n        \"pageSize\": 10,\n        \"data\": [\n            {\n                \"type\": \"off-chain\",\n                \"eventId\": \"@{username} just finished a run with a score of 150\",\n                \"gameId\": \"eac4c757-3e6e-4e26-b3d5-e444d0a015d1\",\n                \"gameName\": \"Mewchant's Island Adventure\",\n                \"gameSlug\": \"mewchants-island-adventure\",\n                \"user\": {\n                    \"id\": \"669f2bc3ebef11aab95a6ae2\",\n                    \"address\": \"0xb4590641ba39b2f2d38354e2a1af8e62a6744174\",\n                    \"username\": \"sneakz.b3.fun\"\n                },\n                \"displayText\": \"Run Finished\",\n                \"timestamp\": 1723726706386\n            }\n        ]\n    }\n}"}],"_postman_id":"4936a7ad-405f-4c3d-a3d8-a62c53d85b2d"},{"name":"GetGameActivities","id":"788f3973-d848-4ea9-9f8a-49893707d921","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-Service-Method","value":"getGameActivities","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"gameId\": {{GameId}},\r\n    \"type:\": \"on-chain\"// off-chain can also be used\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/activities?gameId={{GameId}}&type=off-chain","description":"<p>Retrieves game activities set by the <code>SendCustomActivity</code> function, making it useful for tracking in-game events or custom leaderboards &amp; allows you to provide players with real-time updates.</p>\n","urlObject":{"protocol":"https","path":["activities"],"host":["api","basement","fun"],"query":[{"key":"gameId","value":"{{GameId}}"},{"description":{"content":"<p>on-chain also allowed</p>\n","type":"text/plain"},"key":"type","value":"off-chain"}],"variable":[]}},"response":[],"_postman_id":"788f3973-d848-4ea9-9f8a-49893707d921"},{"name":"SendCustomActivity","id":"5f4de996-d567-46d0-82c4-a9d7bb171ee4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"sendCustomActivity","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"label\": \"@{username} with wallet {wallet} just finished a run!\", //appends {username} and {wallet} if in label\r\n    \"eventId\": \"Run Finished\", //this will be used for grouping,\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>This function sends custom activities to the backend, allowing you to track specific events or metrics in your game. It works with the <code>GetActivities</code> function to retrieve and display these activities as needed.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"8f750b0c-f462-4e04-967f-6ad32eaad976","name":"SendCustomActivity","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"sendCustomActivity","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"label\": \"@{username} with wallet {wallet} just finished a run!\", //appends {username} and {wallet} if in label\r\n    \"eventId\": \"Run Finished\", //this will be used for grouping,\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:04:39 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"ivA5ac4XRcKPd4g6eunS5g_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=dTxoMHbw7nJDxgDh4rRhax1VthnE3nS0hBg59JSw3fg%2FS7WaXfvn7U5PUPrYuk06hVFgk6ESd2pf9D038H1SHmivTS7DxYohV7izJyTC4j9nSoWqG85nHcBLSSVXqEpsqHw%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3bbb6ba58661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"activity\": {\n        \"_id\": \"66c6485604fabf2ab30d6ab9\",\n        \"label\": \"@sneakz.b3.fun with wallet 0xB459...4174 just finished a run!\",\n        \"normalizedAddress\": \"0xb4590641ba39b2f2d38354e2a1af8e62a6744174\",\n        \"timestamp\": 1724270678768,\n        \"eventId\": \"Run Finished\",\n        \"gameId\": \"eac4c757-3e6e-4e26-b3d5-e444d0a015d1\"\n    }\n}"}],"_postman_id":"5f4de996-d567-46d0-82c4-a9d7bb171ee4"},{"name":"GetState","id":"92903633-818c-47fc-a99c-d9725daeb951","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"getStates","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"limit\": 20,\r\n    \"skip\": 0,\r\n    \"label\": \"SaveData\",\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Gets custom state data according to the selected label, making it useful for managing game saves, tracking items, or handling in-game currency. It allows you to store and retrieve specific data related to the player's progress and inventory.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"be3eb2a3-8efa-4fbe-91b4-547ada4daf72","name":"GetState","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"getStates","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"limit\": 20,\r\n    \"skip\": 0,\r\n    \"label\": \"SaveData\",\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:05:04 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"_krwNCmTSjeOXZ4KvLf0-A_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=Isu%2FPcfoLQleknDKWKari0%2F%2FGnekBLWafOsKC%2FYRyoCi6FIoX30WFI120yw4E5Lebs5nzUUya4Xr1u5E4XN7XbbENdhRrMSHZJ36zNhsJaCBrHSUVuxF7lvDHa7JvCt18nM%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3c5d7cb28661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"states\": [\n        {\n            \"_id\": \"66bdfb727130bef94a2800e3\",\n            \"gameId\": \"eac4c757-3e6e-4e26-b3d5-e444d0a015d1\",\n            \"ipfsHash\": \"ipfs://Qmaqt56Bay5MPJkuPbDShQoV6X9PzLvsy9CRfWoDrCEALS/eac4c757-3e6e-4e26-b3d5-e444d0a015d1%2F0xB4590641ba39B2F2d38354e2A1Af8e62A6744174%2FSaveData.json\",\n            \"normalizedAddress\": \"0xb4590641ba39b2f2d38354e2a1af8e62a6744174\",\n            \"label\": \"SaveData\",\n            \"updatedAt\": 1723744750916,\n            \"state\": {\n                \"data\": {\n                    \"questValue\": 0,\n                    \"itemUnlocks\": [\n                        1,\n                        0,\n                        0\n                    ]\n                }\n            }\n        }\n    ]\n}"}],"_postman_id":"92903633-818c-47fc-a99c-d9725daeb951"},{"name":"SetState","id":"5e1de3eb-19a9-405d-bcd6-28f805ca284c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"setState","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"state\": \"{\\\"data\\\": {\\\"questValue\\\": 100, \\\"itemUnlocks\\\": [0, 0, 0]}}\",\r\n    \"label\": \"SaveData\",\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Sets custom state data according to the selected label, making it useful for managing game saves, tracking items, or handling in-game currency. It allows you to store and retrieve specific data related to the player's progress and inventory.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"70850032-a704-4e23-8a40-167dfd431ab4","name":"SetState","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"setState","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"state\": \"{\\\"data\\\": {\\\"questValue\\\": 100, \\\"itemUnlocks\\\": [0, 0, 0]}}\",\r\n    \"label\": \"SaveData\",\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:05:12 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"GzrPbN__TZ2yHp1orvsYsA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=uYrD3Fg58mPV%2BXN9kHiRSYsHcfdZmOMICuZMlWMzQeiZtpo3%2FWAfpCyl1a91NwaAPtGlaCoykl8QEr0eF8X0lSohx8IHW6OsnrmCZ3wOaJDVnHsfRVTtRwVsWZ3yKcpKXoE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3c884f468661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"newState\": {\n        \"_id\": \"66bdfb727130bef94a2800e3\",\n        \"gameId\": \"eac4c757-3e6e-4e26-b3d5-e444d0a015d1\",\n        \"ipfsHash\": \"ipfs://Qmf8CzWsjzFy2fdsQ3qxLAjmcZRtVzB9nwVQaLwewSnyAy/eac4c757-3e6e-4e26-b3d5-e444d0a015d1%2F0xB4590641ba39B2F2d38354e2A1Af8e62A6744174%2FSaveData.json\",\n        \"normalizedAddress\": \"0xb4590641ba39b2f2d38354e2a1af8e62a6744174\",\n        \"label\": \"SaveData\",\n        \"updatedAt\": 1724270712069\n    }\n}"}],"_postman_id":"5e1de3eb-19a9-405d-bcd6-28f805ca284c"},{"name":"TrackGameSessions","id":"105c98cf-2ca6-40c1-a7c5-4a22580152ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"trackGameSessions","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sessionId\": \"c5e8d394-1c3a-42c8-b889-66a3e6c8f7d0\",\r\n  \"state\": \"{\\\"currentScore\\\": 1250, \\\"position\\\": {\\\"x\\\": 156.7, \\\"y\\\": 42.3, \\\"z\\\": 0.5}, \\\"health\\\": 85, \\\"level\\\": 3, \\\"inventory\\\": [\\\"sword\\\", \\\"shield\\\", \\\"potion\\\"], \\\"collectibles\\\": {\\\"coins\\\": 37, \\\"gems\\\": 5}, \\\"timePlayed\\\": 342, \\\"checkpoints\\\": [\\\"spawn\\\", \\\"forest\\\", \\\"cave\\\"], \\\"currentObjective\\\": \\\"defeat_boss\\\"}\",\r\n  \"endTime\": 1691842367000,\r\n  \"launcherJwt\": \"{{JWT}}\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>The trackGameSessions endpoint allows games to record player session state data throughout gameplay. It can be used to track game progression, player metrics, and game state at various points during a session.</p>\n<p>This API plays a crucial role in anti-cheating detection and enforcement. By monitoring state changes over time, the system can detect impossible or suspicious progressions (e.g., score jumps that exceed possible gameplay mechanics)</p>\n<h3 id=\"fields\">Fields</h3>\n<ul>\n<li><p>sessionId (required): UUID string that uniquely identifies the play session. Use the same ID for all updates within one gameplay session.</p>\n</li>\n<li><p>state (required): JSON string containing structured game state data (max size 1MB). Can include:</p>\n<ul>\n<li><p>currentScore: Player's current score</p>\n</li>\n<li><p>position: Player's current coordinates in the game world</p>\n</li>\n<li><p>health: Player's health/status value</p>\n</li>\n<li><p>level: Current game level or stage</p>\n</li>\n<li><p>Any other custom game state data</p>\n</li>\n</ul>\n</li>\n<li><p>endTime (optional): Timestamp in milliseconds marking the end of the session. Include only on the final update.</p>\n</li>\n<li><p>launcherJwt (required): Valid JWT token for authentication.</p>\n</li>\n</ul>\n<h2 id=\"usage-guidelines\">Usage Guidelines</h2>\n<ul>\n<li><p>Call this method at regular intervals during gameplay (e.g., every 5 seconds, after level completion, or when reaching checkpoints)</p>\n</li>\n<li><p>The first call for a sessionId creates a new session record</p>\n</li>\n<li><p>Subsequent calls for the same sessionId append new states to the existing session</p>\n</li>\n<li><p>Include endTime parameter only when the session ends</p>\n</li>\n<li><p>State data must be a valid JSON string that parses to an object</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"20ea1660-bf67-464c-bbfc-63198fe7a67a","name":"TrackGameSessions","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"trackGameSessions","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sessionId\": \"c5e8d394-1c3a-42c8-b889-66a3e6c8f7d0\",\r\n  \"state\": \"{\\\"currentScore\\\": 1250, \\\"position\\\": {\\\"x\\\": 156.7, \\\"y\\\": 42.3, \\\"z\\\": 0.5}, \\\"health\\\": 85, \\\"level\\\": 3, \\\"inventory\\\": [\\\"sword\\\", \\\"shield\\\", \\\"potion\\\"], \\\"collectibles\\\": {\\\"coins\\\": 37, \\\"gems\\\": 5}, \\\"timePlayed\\\": 342, \\\"checkpoints\\\": [\\\"spawn\\\", \\\"forest\\\", \\\"cave\\\"], \\\"currentObjective\\\": \\\"defeat_boss\\\"}\",\r\n  \"endTime\": 1691842367000,\r\n  \"launcherJwt\": \"{{JWT}}\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 19 May 2025 07:38:58 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"107"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-railway-edge","value":"railway/us-east4"},{"key":"x-railway-request-id","value":"WIHP1kJkSYCpQqwTI_kN5A"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=72dqjqeig9M%2F%2B7Zar9Z2brG6Q1kJAqc%2BFkgrPDEJInsUk1Q6EppoeUl0hFJWXJSbZF%2Bp9FSZaq4PI8%2Flo%2FMMHjS5CvUWS1tZbJkXsmVVYECPi2pF2z2XT9c7YCKS2DHdIGM%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"9421f013d983c5b1-IAD"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"},{"key":"server-timing","value":"cfL4;desc=\"?proto=TCP&rtt=2468&min_rtt=2279&rtt_var=989&sent=4&recv=5&lost=0&retrans=0&sent_bytes=2829&recv_bytes=1296&delivery_rate=1270732&cwnd=240&unsent_bytes=0&cid=ec761badf1bd9c7f&ts=56&x=0\""}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"BadRequest\",\n    \"message\": \"Invalid JWT\",\n    \"code\": 400,\n    \"className\": \"bad-request\",\n    \"data\": {\n        \"success\": false\n    }\n}"}],"_postman_id":"105c98cf-2ca6-40c1-a7c5-4a22580152ed"},{"name":"GetLeaderBoard","id":"092f7431-7a33-4059-bd49-94a76561ab0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Service-Method","value":"getGameScoresLeaderboard","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"gameId\": {{GameId}},\r\n    \"limit\": 50,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/scores","description":"<p>Retrieves data from the game leaderboard, providing you with information on player rankings and scores. It helps you monitor and display competitive standings within the game.</p>\n","urlObject":{"protocol":"https","path":["scores"],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"50916271-a32c-4a10-9575-a93b1df60f6d","name":"GetLeaderBoard","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"getGameScoresLeaderboard","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"gameId\": {{GameId}},\r\n    \"limit\": 50,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/scores"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:05:18 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"_EeenU-hSpm3hbpwoDThVg_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=iPEjemPNxvCXk%2F1b85nyp9L9qR9YGJc%2BVLTuGk4VyKcexgvUKfGw%2FGGQplQ9IqfP6n6vq0lP2o%2B3ABdOXt4FrS%2FxaeJmLKs6Vo0JQUdpU0bCbQJQLs4lZmQt6vNzASYUi4U%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3cb258cd8661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"leaderboard\": [\n        {\n            \"_id\": \"66be1728e812b615ee04603e\",\n            \"nonce\": \"6ogj0c\",\n            \"gameId\": \"eac4c757-3e6e-4e26-b3d5-e444d0a015d1\",\n            \"normalizedAddress\": \"0xe2b85af88f01ca1445ef44990e3e9fe5bd62d93f\",\n            \"score\": 225,\n            \"updatedAt\": 1723733800205,\n            \"username\": \"nikita.b3.fun\",\n            \"avatar\": \"https://models.readyplayer.me/66bd31a6355de9cd99c4711c.png\"\n        },\n        {\n            \"_id\": \"66bdfb727130bef94a2800e1\",\n            \"nonce\": \"pqbcof\",\n            \"gameId\": \"eac4c757-3e6e-4e26-b3d5-e444d0a015d1\",\n            \"normalizedAddress\": \"0xb4590641ba39b2f2d38354e2a1af8e62a6744174\",\n            \"score\": 150,\n            \"updatedAt\": 1723726706351,\n            \"username\": \"sneakz.b3.fun\"\n        }\n    ]\n}"}],"_postman_id":"092f7431-7a33-4059-bd49-94a76561ab0b"},{"name":"GetUserLeaderboardPosition","id":"b41af21b-a300-4936-be4a-8394fd17979d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-Service-Method","value":"getUsersPositionInGameScoreLeaderboard","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"gameId\": {{GameId}},\r\n    \"wallet\": \"0xB4590641ba39B2F2d38354e2A1Af8e62A6744174\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher","description":"<p>Retrieves data from the game leaderboard via wallet address, providing you with information on player rankings and scores. It helps you monitor and display competitive standings within the game.</p>\n","urlObject":{"protocol":"https","path":["launcher"],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"ade109a9-1aaa-44b4-ad91-001447a6b650","name":"GetUserLeaderboardPosition","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"getUsersPositionInGameScoreLeaderboard","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"gameId\": {{GameId}},\r\n    \"wallet\": \"0xB4590641ba39B2F2d38354e2A1Af8e62A6744174\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:05:48 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"29"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"uEYC2Oc_T82kZHpjj1bGVw_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=rPXdO%2BtwY3OfuNB6uTHLBWw%2FdEod8nuKFWDaUcCRZ7g4qtiJ5yff0lKkeyHA%2BmnGmbR%2Fgg6Z6dn3APXP%2FunkF5PJdmPLju1%2FkpPseQQ4jbejjChhg2FcDD2PgW6%2FErVkUNw%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3d6c687a8661-PER"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"position\": 2\n}"}],"_postman_id":"b41af21b-a300-4936-be4a-8394fd17979d"},{"name":"GetUserScores (+Nonce)","id":"916cf086-4711-4781-8242-0cb47e2f6e11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"getUserScores","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"limit\": 50,\r\n    \"skip\": 0,\r\n    \"nonce\": \"nonce=50zpzg\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Retrieves a user's scores saved to the backend using a nonce to query a unique entry. It allows you to access specific score data for individual users, aswell as personalized score tracking and management.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"ba493599-98ec-4a02-aa65-c0df9b89f6e7","name":"GetUserScores (+Nonce)","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"getUserScores","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"limit\": 50,\r\n    \"skip\": 0,\r\n    \"nonce\": \"nonce=50zpzg\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:05:53 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"28"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"2RkHRzlDRueJQN2lM8_svg_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=fIIzNt5RlXSGBYOL4AVkMFvcjYZBCZ8rNT%2BM4RGwuTq3fECUhkWu0Q47ycxho2GJQRAWnPj5K5W0abdA3VtlAtAN1LrBaH2tgqpu3cKOxeeolauweQYh5ZKp09Wg2AtmTRg%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3d8b4f798661-PER"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"scores\": []\n}"}],"_postman_id":"916cf086-4711-4781-8242-0cb47e2f6e11"},{"name":"GetUserScores (-Nonce)","id":"852005c4-f9c7-4304-ab67-c198bdec681c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"getUserScores","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"limit\": 50,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Retrieves a user's scores saved to the backend. It allows you to access specific score data for individual users, aswell as personalized score tracking and management.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"0e5d7c96-cb54-4c69-8f83-5290c6ec0125","name":"GetUserScores (-Nonce)","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"getUserScores","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"limit\": 50,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:00 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"HGJmm8zaTjyrk_Ufc2l7mA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=EpaQ%2BJtfInpC67DS22xhde2zLRFsKxCTMZFIlhwFmvumP0aPHwHelp9ILxffL%2B37hsWtznCOFSIz1h9nt6lZeZFrjh33jdCn2u9SY4ReUA1JHjRdNFZ0Mk%2BT61wNFWAF33o%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3dba79a78661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"scores\": [\n        {\n            \"score\": 150,\n            \"nonce\": \"pqbcof\",\n            \"updatedAt\": 1723726706351\n        }\n    ]\n}"}],"_postman_id":"852005c4-f9c7-4304-ab67-c198bdec681c"},{"name":"SetUserScore","id":"54287ce5-db7b-45cf-a978-933916103ca8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"setUserScore","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"nonce\": \"nonce=50zpzg\",\r\n    \"score\": 155\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Sets a user's score and makes it accessible through the API using the <code>getUserScores</code> function. It enables you to update and retrieve individual scores for personalized tracking and display.</p>\n<p>Nonce is a random ID that can be used to query the score later.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"10a8c0bf-68d3-4025-9fe3-d8c2ebde2ef9","name":"SetUserScore","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"setUserScore","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"nonce\": \"nonce=50zpzg\",\r\n    \"score\": 155\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:07 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"R2OWw56gQRi4pfOtoY3Bfg_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=rvKib%2FRd%2BDpzSC71E%2FS9rDXvxrAnp0IeycRYY6MtC1PiHOtDTKipZzKaQbeHXudw%2BJVoBLn4lps3Q4e44HuKOHelrnhmSX3sFmrEYx8mukep4wCr3Xi6ozVTC25uegnxfmE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3de20acb8661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"newScore\": {\n        \"_id\": \"66c648ae24000ad431044935\",\n        \"nonce\": \"nonce=50zpzg\",\n        \"gameId\": \"eac4c757-3e6e-4e26-b3d5-e444d0a015d1\",\n        \"normalizedAddress\": \"0xb4590641ba39b2f2d38354e2a1af8e62a6744174\",\n        \"score\": 155,\n        \"updatedAt\": 1724270766839\n    }\n}"}],"_postman_id":"54287ce5-db7b-45cf-a978-933916103ca8"},{"name":"CreateUnverifiedChannel","id":"e5e1b84b-38c2-4459-9810-777b13a229ff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"createUnverifiedChannel","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"wallet\": \"0xee621dDcbD066cc1C94FFF1fecD83e10b4b1C67a\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Creates an unverified channel and initiates the verification process. It's useful for games hosted outside of B3's launcher that need to obtain or refresh a JWT (JSON Web Token). This allows for secure communication and integration with the B3 platform.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"b8793e48-8549-4b97-b1e6-84771b5206ee","name":"CreateUnverifiedChannel","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"createUnverifiedChannel","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"wallet\": \"0xee621dDcbD066cc1C94FFF1fecD83e10b4b1C67a\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:11 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"oMOJ4pmjQTystygTdtwClg_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=SRZfB%2FRtK2ejQ4z3bbkWVo6XZa%2FdooNXjPMvS6a8dREXrWhXe0PPIHdl3VPizsLV7RUKhLQo%2BAmT8gXP1yp25Ft5C4YL8oRQH08clVfIHb7hzBlohTsuaRaSvXxClWLCLMc%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e00c9548661-PER"},{"key":"Content-Encoding","value":"br"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"signRequest\": \"Begin \\\"Mewchant's Island Adventure\\\" game session for wallet 0xee621dDcbD066cc1C94FFF1fecD83e10b4b1C67a.\",\n    \"channelId\": \"66c648b304fabf2ab30d6aca\"\n}"}],"_postman_id":"e5e1b84b-38c2-4459-9810-777b13a229ff"},{"name":"VerifyUnverifiedChannel","id":"703486c7-6146-4f1a-9103-f223368f7572","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"verifyUnverifiedChannel","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"channelId\": \"66c65852ea5916edc3b3276a\",\r\n    \"signature\": \"0x124fba8017557a89fce2d9c7bc36e44bb7a08669308cf797828674281ae654521c406f04d3e7c9eb9e43f8b4fa98fcc058c03d0561c45a42f662d9ad78d4c01b1b\",\r\n    \"chainId\": 1\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Verifies the signed channel data and generates a JWT (JSON Web Token). It ensures the authenticity of the channel information and provides a secure token for authentication and communication.</p>\n<p>The body takes an optional <code>chainId</code> parameter, only required when the signature is provided by a non standard wallet address (for smart wallets, standards like 1271 or 6492)</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"00c97214-34f3-40b9-88e8-91d061c91c92","name":"VerifyUnverifiedChannel","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"verifyUnverifiedChannel","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"channelId\": \"66c65852ea5916edc3b3276a\",\r\n    \"signature\": \"0x124fba8017557a89fce2d9c7bc36e44bb7a08669308cf797828674281ae654521c406f04d3e7c9eb9e43f8b4fa98fcc058c03d0561c45a42f662d9ad78d4c01b1b\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 21:39:39 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"221"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"cLDcivRXT8OuHZQGQrpg5w_1721921752"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=WSdkW4XAFStIvlWJF%2F4UjCIkDXk1cbqqnNZ3rG%2Bu98J10Pm7J5nwmdJooQdBStCOU7jvz1%2BNZ3G4ghzEo5In9R19dDVo9QCrP7%2F3lF4K5pV%2FUsEjSBnzszvH5WOQxDjtQm8%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6dc6ea4c4a87be-PER"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"NotAuthenticated\",\n    \"message\": \"Error\",\n    \"code\": 401,\n    \"className\": \"not-authenticated\",\n    \"data\": {\n        \"success\": false,\n        \"error\": \"Signature request expired. Please try again, and sign the message withing 3 minutes of its issue.\"\n    }\n}"}],"_postman_id":"703486c7-6146-4f1a-9103-f223368f7572"},{"name":"RenewChannelHeartbeat","id":"096fd3c1-2f39-48e0-afa8-5eb20681befe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"channelHeartbeat","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Verifies the heartbeat signature from the previous step and generates a new JWT (JSON Web Token). It ensures the integrity of the heartbeat data and provides a secure token for continued authentication and communication.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"d3714a45-4174-4c79-acf2-08c3737bb962","name":"RenewChannelHeartbeat","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"channelHeartbeat","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:29 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"151"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"3TwetsA2RCio8TzSfoDBsA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=UBjPYNnUpiul8Oa3TDUm1R%2BMwUBnIDBMIhgS%2BT6WYS16bcXsEZ%2BXZGfUY%2FEEulQi7ng4gI8HZ%2BtobTxp0GGlOF6XGP3yUhTJoCzaYLWnV9SQtUmMKrwsrR6WigZq%2F46lsMg%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e6fcbab8661-PER"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"NotAuthenticated\",\n    \"message\": \"Error\",\n    \"code\": 401,\n    \"className\": \"not-authenticated\",\n    \"data\": {\n        \"success\": false,\n        \"error\": \"Could not verify JWT.\"\n    }\n}"}],"_postman_id":"096fd3c1-2f39-48e0-afa8-5eb20681befe"},{"name":"TriggerRulesEngine","id":"b50d1a74-1de4-4245-b73f-c2790f5aff97","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"triggerRulesEngine","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"trigger\": \"test\",\r\n    \"nonce\": \"qwerty\",\r\n    \"value\": 150\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Used to trigger custom events configured by the game's developers in the backend. It allows you to initiate specific actions or notifications based on predefined settings in the backend configuration.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"c8022d4e-0c8e-4a92-b9fe-c95b2b8a26c4","name":"TriggerRulesEngine","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"triggerRulesEngine","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"trigger\": \"test\",\r\n    \"nonce\": \"qwerty\",\r\n    \"value\": 150\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:36 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"I1vn7hpWRrSEnQt8CqmwvA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=MOYpfOfHR%2B3jEFH%2FcS9%2F8YzjIHXH1DlnXvjrXXLkKO2%2B430vjpso56RTxTcQFacLEHJcz03ebkkLcirQ9C4fxloSqjLPXy6OBq1wI7bhqavYEznqlX9BUQnY3lvqn7q87UE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e98ad768661-PER"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true\n}"}],"_postman_id":"b50d1a74-1de4-4245-b73f-c2790f5aff97"},{"name":"CreateMessageChannel","id":"77cd0dff-7f8d-45bf-81c2-2009a9aa9182","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"createMessageChannel","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"otherParticipants\": [\r\n        \"0x...aaa\",\r\n        \"0x...123\",\r\n        \"0x...abc\"\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Creates a new chat for this game with the provided users. The id of the channel returned can be used to reference the channel when sending or retrieving messages.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"04c0d095-c683-4132-bb11-b816cfd57f8a","name":"CreateMessageChannel","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"createMessageChannel","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"otherParticipants\": [\r\n        \"0x...aaa\",\r\n        \"0x...123\",\r\n        \"0x...abc\"\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:36 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"I1vn7hpWRrSEnQt8CqmwvA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=MOYpfOfHR%2B3jEFH%2FcS9%2F8YzjIHXH1DlnXvjrXXLkKO2%2B430vjpso56RTxTcQFacLEHJcz03ebkkLcirQ9C4fxloSqjLPXy6OBq1wI7bhqavYEznqlX9BUQnY3lvqn7q87UE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e98ad768661-PER"}],"cookie":[],"responseTime":null,"body":"{\n  \"_id\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n  \"name\": \"General Chat\",\n  \"chatPicture\": \"https://example.com/chat-picture.jpg\",\n  \"createdAt\": 1698178235,\n  \"updatedAt\": 1698179240,\n  \"participants\": [\n    {\n      \"wallet\": \"0x1234567890abcdef1234567890abcdef12345678\",\n      \"userGroup\": 1,\n      \"permissions\": [\"send-messages\", \"add-members\"]\n    },\n    {\n      \"wallet\": \"0xabcdefabcdefabcdefabcdefabcdefabcdef123456\",\n      \"userGroup\": 2,\n      \"permissions\": [\"send-messages\", \"edit-info\", \"super-admin\"]\n    }\n  ],\n  \"gameId\": \"550e8400-e29b-41d4-a716-446655440000\"\n}"}],"_postman_id":"77cd0dff-7f8d-45bf-81c2-2009a9aa9182"},{"name":"GetMessageChannels","id":"338c525a-eca1-4001-be87-781003828298","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"getMessageChannels","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"limit\": 20,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>This method will return all the channels for this user for this game.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"13985b88-5a07-4c1a-90ea-bf3988bb15bb","name":"GetMessageChannels","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"getMessageChannels","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"limit\": 20,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:36 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"I1vn7hpWRrSEnQt8CqmwvA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=MOYpfOfHR%2B3jEFH%2FcS9%2F8YzjIHXH1DlnXvjrXXLkKO2%2B430vjpso56RTxTcQFacLEHJcz03ebkkLcirQ9C4fxloSqjLPXy6OBq1wI7bhqavYEznqlX9BUQnY3lvqn7q87UE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e98ad768661-PER"}],"cookie":[],"responseTime":null,"body":"{\n  \"total\": 2,\n  \"limit\": 10,\n  \"skip\": 0,\n  \"data\": [\n    {\n      \"_id\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n      \"name\": \"General Chat\",\n      \"chatPicture\": \"https://example.com/chat-picture.jpg\",\n      \"createdAt\": 1698178235,\n      \"updatedAt\": 1698179240,\n      \"participants\": [\n        {\n          \"wallet\": \"0x1234567890abcdef1234567890abcdef12345678\",\n          \"userGroup\": 1,\n          \"permissions\": [\"send-messages\", \"add-members\"]\n        },\n        {\n          \"wallet\": \"0xabcdefabcdefabcdefabcdefabcdefabcdef123456\",\n          \"userGroup\": 2,\n          \"permissions\": [\"send-messages\", \"edit-info\", \"super-admin\"]\n        }\n      ],\n      \"gameId\": \"550e8400-e29b-41d4-a716-446655440000\"\n    },\n    {\n      \"_id\": \"6521d7f7e1f3a4b1e8d9a7c9\",\n      \"name\": \"Strategy Group\",\n      \"chatPicture\": \"https://example.com/strategy-picture.png\",\n      \"createdAt\": 1698178456,\n      \"participants\": [\n        {\n          \"wallet\": \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef\",\n          \"userGroup\": 1,\n          \"permissions\": [\"send-messages\"]\n        }\n      ],\n      \"gameId\": \"66d9e430-d6f1-4a61-8e4c-2d2a57d8b880\"\n    }\n  ]\n}"}],"_postman_id":"338c525a-eca1-4001-be87-781003828298"},{"name":"GetChannelMessages","id":"d2c0728e-aff0-47e8-9a86-99becbd585b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"getChannelMessages","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"channelId\": \"66a960d1ad731726b1bf8ddd\",\r\n    \"limit\": 30,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Use this to get paginated messages for a particular channel.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"b3f91c15-46e1-4da1-b021-17b36f6d9b17","name":"GetChannelMessages","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"getChannelMessages","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"channelId\": \"66a960d1ad731726b1bf8ddd\",\r\n    \"limit\": 30,\r\n    \"skip\": 0\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:36 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"I1vn7hpWRrSEnQt8CqmwvA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=MOYpfOfHR%2B3jEFH%2FcS9%2F8YzjIHXH1DlnXvjrXXLkKO2%2B430vjpso56RTxTcQFacLEHJcz03ebkkLcirQ9C4fxloSqjLPXy6OBq1wI7bhqavYEznqlX9BUQnY3lvqn7q87UE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e98ad768661-PER"}],"cookie":[],"responseTime":null,"body":"{\n  \"total\": 3,\n  \"limit\": 10,\n  \"skip\": 0,\n  \"data\": [\n    {\n      \"_id\": \"6521d7f7e1f3a4b1e8d9a7d0\",\n      \"channelId\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n      \"senderId\": \"6521d7f7e1f3a4b1e8d9a7b1\",\n      \"content\": \"Hey everyone, let's meet at 5!\",\n      \"createdAt\": 1698179400\n    },\n    {\n      \"_id\": \"6521d7f7e1f3a4b1e8d9a7d1\",\n      \"channelId\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n      \"senderId\": \"6521d7f7e1f3a4b1e8d9a7b2\",\n      \"content\": \"Sure thing, see you there!\",\n      \"createdAt\": 1698180000\n    },\n    {\n      \"_id\": \"6521d7f7e1f3a4b1e8d9a7d2\",\n      \"channelId\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n      \"senderId\": \"6521d7f7e1f3a4b1e8d9a7b3\",\n      \"content\": \"Does 5:30 work better for some of us?\",\n      \"createdAt\": 1698180200,\n      \"updatedAt\": 1698180400\n    }\n  ]\n}"}],"_postman_id":"d2c0728e-aff0-47e8-9a86-99becbd585b0"},{"name":"SendChannelMessage","id":"6fda45a9-844a-4056-8d54-c3f2cd73cdaf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"sendChannelMessage","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"channelId\": \"66a960d1ad731726b1bf8ddd\",\r\n    \"content\": \"Hello channel!\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Sends a new message to a channel for this game.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"6b6bd4c7-feb5-47a7-adb3-897b11943887","name":"SendChannelMessage","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"sendChannelMessage","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"channelId\": \"66a960d1ad731726b1bf8ddd\",\r\n    \"content\": \"Hello channel!\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:36 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"I1vn7hpWRrSEnQt8CqmwvA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=MOYpfOfHR%2B3jEFH%2FcS9%2F8YzjIHXH1DlnXvjrXXLkKO2%2B430vjpso56RTxTcQFacLEHJcz03ebkkLcirQ9C4fxloSqjLPXy6OBq1wI7bhqavYEznqlX9BUQnY3lvqn7q87UE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e98ad768661-PER"}],"cookie":[],"responseTime":null,"body":"{\n  \"_id\": \"6521d7f7e1f3a4b1e8d9a7d0\",\n  \"channelId\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n  \"senderId\": \"6521d7f7e1f3a4b1e8d9a7b1\",\n  \"content\": \"Hey everyone, let's meet at 5!\",\n  \"createdAt\": 1698179400,\n  \"updatedAt\": 1698179450\n}"}],"_postman_id":"6fda45a9-844a-4056-8d54-c3f2cd73cdaf"},{"name":"EditChannelMessage","id":"64693486-cd22-4352-9e35-4e74636c0e51","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"editChannelMessage","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"messageId\": \"66a960d1ad731726b1bf8ddd\",\r\n    \"newContent\": \"Hello everyone!\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Will edit a message in a channel by id</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"8cad904b-1bb0-4411-b498-4aea37c91b12","name":"EditChannelMessage","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"editChannelMessage","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"messageId\": \"66a960d1ad731726b1bf8ddd\",\r\n    \"newContent\": \"Hello everyone!\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:36 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"I1vn7hpWRrSEnQt8CqmwvA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=MOYpfOfHR%2B3jEFH%2FcS9%2F8YzjIHXH1DlnXvjrXXLkKO2%2B430vjpso56RTxTcQFacLEHJcz03ebkkLcirQ9C4fxloSqjLPXy6OBq1wI7bhqavYEznqlX9BUQnY3lvqn7q87UE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e98ad768661-PER"}],"cookie":[],"responseTime":null,"body":"{\n  \"_id\": \"6521d7f7e1f3a4b1e8d9a7d0\",\n  \"channelId\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n  \"senderId\": \"6521d7f7e1f3a4b1e8d9a7b1\",\n  \"content\": \"Hey everyone, let's meet at 5:30!\",\n  \"createdAt\": 1698179400,\n  \"updatedAt\": 1698181050\n}"}],"_postman_id":"64693486-cd22-4352-9e35-4e74636c0e51"},{"name":"UnsendChannelMessage","id":"18bb3d51-a05e-4ecd-9fd5-d67fee1f5cc1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{Bearer}}"}]},"isInherited":false},"method":"POST","header":[{"key":"X-Service-Method","value":"unsendChannelMessage","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"messageId\": \"66a960d1ad731726b1bf8ddd\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/","description":"<p>Unsends a message by id sent from this user.</p>\n","urlObject":{"protocol":"https","path":["launcher",""],"host":["api","basement","fun"],"query":[],"variable":[]}},"response":[{"id":"da3ad4bc-0e8f-4cc2-ae98-61448ecd9f95","name":"UnsendChannelMessage","originalRequest":{"method":"POST","header":[{"key":"X-Service-Method","value":"unsendChannelMessage","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"launcherJwt\": {{JWT}},\r\n    \"messageId\": \"66a960d1ad731726b1bf8ddd\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api.basement.fun/launcher/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 21 Aug 2024 20:06:36 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"16"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-origin","value":"*"},{"key":"vary","value":"Origin"},{"key":"x-request-id","value":"I1vn7hpWRrSEnQt8CqmwvA_603524580"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=MOYpfOfHR%2B3jEFH%2FcS9%2F8YzjIHXH1DlnXvjrXXLkKO2%2B430vjpso56RTxTcQFacLEHJcz03ebkkLcirQ9C4fxloSqjLPXy6OBq1wI7bhqavYEznqlX9BUQnY3lvqn7q87UE%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"8b6d3e98ad768661-PER"}],"cookie":[],"responseTime":null,"body":"{\n  \"_id\": \"6521d7f7e1f3a4b1e8d9a7d0\",\n  \"channelId\": \"6521d7f7e1f3a4b1e8d9a7c8\",\n  \"senderId\": \"6521d7f7e1f3a4b1e8d9a7b1\",\n  \"content\": \"Hey everyone, let's meet at 5!\",\n  \"createdAt\": 1698179400,\n  \"updatedAt\": 1698179450\n}"}],"_postman_id":"18bb3d51-a05e-4ecd-9fd5-d67fee1f5cc1"}]}