{"_id":"@airplanegobrr/fmd-js-api","_rev":"10-70295efa7c63b473f30c0a47ef02bf8f","name":"@airplanegobrr/fmd-js-api","dist-tags":{"latest":"2.2.0"},"versions":{"1.0.1":{"name":"@airplanegobrr/fmd-js-api","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@airplanegobrr/fmd-js-api@1.0.1","maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"dist":{"shasum":"f902e94c7f3a773175e740f57e29abfd91b2c7ca","tarball":"https://registry.npmjs.org/@airplanegobrr/fmd-js-api/-/fmd-js-api-1.0.1.tgz","fileCount":4,"integrity":"sha512-H4/Jlbw6D6hrmN+VbddUn3c0i+J5y5smf7K76k9xTpn7Y9LZsBC4RxtQ0RULf1dMU5pDTlEPrtH5IcK9RTKP7Q==","signatures":[{"sig":"MEYCIQDLVrYiDnbAyQyNnCxLgCu4xBh5rW0ryiQsG/JPtdvU+wIhAKY/GQFezrPQ0JATB2vxz0tfKbtcIXGjTb6xXvsxALT2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13662},"main":"fmd-api.js","gitHead":"7c43d07d7a6aeddae2dc859bde120c3de1ae17f3","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"},"_npmVersion":"10.2.0","description":"An API for FMD!","directories":{},"_nodeVersion":"20.8.0","dependencies":{"axios":"^1.6.8","argon2":"^0.40.1","@peculiar/webcrypto":"^1.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fmd-js-api_1.0.1_1727297223930_0.8612598094174313","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@airplanegobrr/fmd-js-api","version":"1.0.2","keywords":[],"author":{"url":"https://airplanegobrr.xyz","name":"AirplaneGobrr","email":"airplane@airplanegobrr.xyz"},"license":"ISC","_id":"@airplanegobrr/fmd-js-api@1.0.2","maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"homepage":"https://github.com/AirplanegoBrr/fmd-js-api","bugs":{"url":"https://github.com/AirplanegoBrr/fmd-js-api/issues","email":"airplane@airplanegobrr.xyz"},"dist":{"shasum":"7762172ca7af114281e7b626876b50b011850182","tarball":"https://registry.npmjs.org/@airplanegobrr/fmd-js-api/-/fmd-js-api-1.0.2.tgz","fileCount":4,"integrity":"sha512-Nzvb31BUOOXp90oNeYkls/I/lT1YdsRm59iIzX4bjwPzZbNXgWSVJasc1wMKneTZPH7MxauQyO6SQ8CGxjfOzQ==","signatures":[{"sig":"MEQCICLDMJ+ccpcwXPS7PRE5tDCqllOCIeGOL8V4ivWT5pPWAiBrqIkGR27PJDgEziTOYBCaEc/1a0rXRYt3csJPgMFFog==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14099},"main":"fmd-api.js","gitHead":"6eee9e6cbd741a626aff445201648b703dbc02e3","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"},"repository":{"url":"git+https://github.com/AirplanegoBrr/fmd-js-api.git","type":"git"},"_npmVersion":"10.8.2","description":"An API for FMD!","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.6.8","argon2":"^0.40.1","@peculiar/webcrypto":"^1.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fmd-js-api_1.0.2_1727315858779_0.38376145049052846","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@airplanegobrr/fmd-js-api","version":"1.0.3","keywords":[],"author":{"url":"https://airplanegobrr.xyz","name":"AirplaneGobrr","email":"airplane@airplanegobrr.xyz"},"license":"ISC","_id":"@airplanegobrr/fmd-js-api@1.0.3","maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"homepage":"https://github.com/AirplanegoBrr/fmd-js-api","bugs":{"url":"https://github.com/AirplanegoBrr/fmd-js-api/issues","email":"airplane@airplanegobrr.xyz"},"dist":{"shasum":"c716ef8e17859c5a4135d14c3752b9d1b5710bca","tarball":"https://registry.npmjs.org/@airplanegobrr/fmd-js-api/-/fmd-js-api-1.0.3.tgz","fileCount":4,"integrity":"sha512-uW7iswzgfRhDXTKkuBptfOh4/WBtoY2DWxuizby0WOPb39rmNMMQuY7mox7yw26SaK1byRQveSG/MxFesdLkeA==","signatures":[{"sig":"MEUCIQCzhJrzg7/rLpFXi/nt6InUKioOySMJyDId+db6OcvGNQIgDBtFRWYS50aiFp8Ho/hkOrw3/D3bTrc7qEqeWFRp358=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14462},"main":"fmd-api.js","_from":"file:airplanegobrr-fmd-js-api-1.0.3.tgz","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"},"_resolved":"C:\\Users\\AIRPLA~1\\AppData\\Local\\Temp\\3e1f3332d88c7d33d3bb9b0287b5bea1\\airplanegobrr-fmd-js-api-1.0.3.tgz","_integrity":"sha512-uW7iswzgfRhDXTKkuBptfOh4/WBtoY2DWxuizby0WOPb39rmNMMQuY7mox7yw26SaK1byRQveSG/MxFesdLkeA==","repository":{"url":"git+https://github.com/AirplanegoBrr/fmd-js-api.git","type":"git"},"_npmVersion":"10.8.2","description":"An API for FMD!","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.8","argon2":"^0.40.1","@peculiar/webcrypto":"^1.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fmd-js-api_1.0.3_1730746977234_0.9541877176900937","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@airplanegobrr/fmd-js-api","version":"2.0.0","keywords":[],"author":{"url":"https://airplanegobrr.xyz","name":"AirplaneGobrr","email":"airplane@airplanegobrr.xyz"},"license":"ISC","_id":"@airplanegobrr/fmd-js-api@2.0.0","maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"homepage":"https://github.com/AirplanegoBrr/fmd-js-api","bugs":{"url":"https://github.com/AirplanegoBrr/fmd-js-api/issues","email":"airplane@airplanegobrr.xyz"},"dist":{"shasum":"5d53ba9b5d0525db84b87a3dccbba97e52c897de","tarball":"https://registry.npmjs.org/@airplanegobrr/fmd-js-api/-/fmd-js-api-2.0.0.tgz","fileCount":4,"integrity":"sha512-N/5cRrpvjDfulfC5mVcIhftRBiKL4owV2zsIDy2WzIt8ewaUnwfpkQcZxujG1AaDTGue2zjAUF9hEPVrdIr0Kw==","signatures":[{"sig":"MEQCIH1cC99pQmDfl968mFRxv+i9JxXNdZ3Qd9zPLOBTxgAYAiA7vUer+KsnM82ttP56MP5u9i4j0ddHCocsWe2xKyqW0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15491},"main":"fmd-api.js","_from":"file:airplanegobrr-fmd-js-api-2.0.0.tgz","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"airplanegobrr","actor":{"name":"airplanegobrr","type":"user","email":"airplanegobrrfeedback@gmail.com"},"email":"airplanegobrrfeedback@gmail.com"},"_resolved":"C:\\Users\\AIRPLA~1\\AppData\\Local\\Temp\\1ae6eb2927a88a908c0012a712839f76\\airplanegobrr-fmd-js-api-2.0.0.tgz","_integrity":"sha512-N/5cRrpvjDfulfC5mVcIhftRBiKL4owV2zsIDy2WzIt8ewaUnwfpkQcZxujG1AaDTGue2zjAUF9hEPVrdIr0Kw==","repository":{"url":"git+https://github.com/AirplanegoBrr/fmd-js-api.git","type":"git"},"_npmVersion":"10.8.2","description":"An API for FMD! (For FMD server v0.11.0)","directories":{},"_nodeVersion":"20.18.2","dependencies":{"axios":"^1.6.8","argon2":"^0.40.1","@peculiar/webcrypto":"^1.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fmd-js-api_2.0.0_1750913388599_0.5637495449718746","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@airplanegobrr/fmd-js-api","version":"2.1.0","keywords":[],"author":{"url":"https://airplanegobrr.xyz","name":"AirplaneGobrr","email":"airplane@airplanegobrr.xyz"},"license":"ISC","_id":"@airplanegobrr/fmd-js-api@2.1.0","maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"homepage":"https://github.com/AirplanegoBrr/fmd-js-api","bugs":{"url":"https://github.com/AirplanegoBrr/fmd-js-api/issues","email":"airplane@airplanegobrr.xyz"},"dist":{"shasum":"4080f00c421a6b67ae4936870a70f2f060c790c6","tarball":"https://registry.npmjs.org/@airplanegobrr/fmd-js-api/-/fmd-js-api-2.1.0.tgz","fileCount":4,"integrity":"sha512-1PJedxoon1/JgdBEqL2yD2+ILDh5HUOCHyc+1BXvmZHwT3HNLBbcX++/KAf1vdF1E3Aem1RvRXOPrMs/13xQyQ==","signatures":[{"sig":"MEQCIGz5MvOHwtZ/sAm0qPm4dj/5yhHZ3tAFrE9IpcAct6UFAiAKX82XpiO0kR9F2Bs8vbl9+nTXQamUCOVLxfdVaj2F+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15957},"main":"fmd-api.js","_from":"file:airplanegobrr-fmd-js-api-2.1.0.tgz","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"},"_resolved":"C:\\Users\\AIRPLA~1\\AppData\\Local\\Temp\\f5d7f99095b28ad71b1c818dcd0b9b26\\airplanegobrr-fmd-js-api-2.1.0.tgz","_integrity":"sha512-1PJedxoon1/JgdBEqL2yD2+ILDh5HUOCHyc+1BXvmZHwT3HNLBbcX++/KAf1vdF1E3Aem1RvRXOPrMs/13xQyQ==","repository":{"url":"git+https://github.com/AirplanegoBrr/fmd-js-api.git","type":"git"},"_npmVersion":"10.8.2","description":"An API for FMD! (For FMD server v0.11.0)","directories":{},"_nodeVersion":"20.18.2","dependencies":{"axios":"^1.6.8","argon2":"^0.40.1","@peculiar/webcrypto":"^1.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fmd-js-api_2.1.0_1754450610088_0.3954082230468492","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@airplanegobrr/fmd-js-api","version":"2.1.1","keywords":[],"author":{"url":"https://airplanegobrr.xyz","name":"AirplaneGobrr","email":"airplane@airplanegobrr.xyz"},"license":"ISC","_id":"@airplanegobrr/fmd-js-api@2.1.1","maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"homepage":"https://github.com/AirplanegoBrr/fmd-js-api","bugs":{"url":"https://github.com/AirplanegoBrr/fmd-js-api/issues","email":"airplane@airplanegobrr.xyz"},"dist":{"shasum":"c0800e00856c04d5cbc8e6a5a20bf841bf8fe514","tarball":"https://registry.npmjs.org/@airplanegobrr/fmd-js-api/-/fmd-js-api-2.1.1.tgz","fileCount":4,"integrity":"sha512-YoylCuLBkhBrxwHpfEIeCIeZhRgCBiNcLfShAp+0Rc+igVTuLWQ1xpgV4AhnswKoTjH/CASKiXmEvic0GKAUpQ==","signatures":[{"sig":"MEUCIQC/JQNfKxZNO0T6T4fuiiqzSkp7cv3lw/4dJHysQOhoJQIgIIsmWWuxc/PKdLjfbPu+IoUdpYfHbxF4Zdx0TVOMQhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17617},"main":"fmd-api.js","shasum":"c0800e00856c04d5cbc8e6a5a20bf841bf8fe514","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"},"_integrity":"sha512-YoylCuLBkhBrxwHpfEIeCIeZhRgCBiNcLfShAp+0Rc+igVTuLWQ1xpgV4AhnswKoTjH/CASKiXmEvic0GKAUpQ==","repository":{"url":"git+https://github.com/AirplanegoBrr/fmd-js-api.git","type":"git"},"_npmVersion":"10.8.3","description":"An API for FMD! (For FMD server v0.12.0)","directories":{},"_nodeVersion":"24.3.0","dependencies":{"axios":"^1.6.8","argon2":"^0.40.1","@peculiar/webcrypto":"^1.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fmd-js-api_2.1.1_1760999745027_0.9846752336188842","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@airplanegobrr/fmd-js-api","version":"2.2.0","description":"An API for FMD! (For FMD server v0.14.2)","main":"fmd-api.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":{"name":"AirplaneGobrr","email":"airplane@airplanegobrr.xyz","url":"https://airplanegobrr.xyz"},"license":"ISC","dependencies":{"@peculiar/webcrypto":"^1.5.0","argon2":"^0.40.1","axios":"^1.6.8"},"homepage":"https://github.com/AirplanegoBrr/fmd-js-api","bugs":{"url":"https://github.com/AirplanegoBrr/fmd-js-api/issues","email":"airplane@airplanegobrr.xyz"},"repository":{"type":"git","url":"git+https://github.com/AirplanegoBrr/fmd-js-api.git"},"_id":"@airplanegobrr/fmd-js-api@2.2.0","gitHead":"c705fefa3880c9ab5d3bd677ac396e080d23fd17","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-3yg1nzY2FMzHYp4fRvw8eGZUAjTUlb0qIl7gyzD9+CAidzeosrzN9PRASi7SbL4ae766u/lhMrp52InHEp835Q==","shasum":"00b3639849646e1fb38d7d45f1e1fe0d3facceec","tarball":"https://registry.npmjs.org/@airplanegobrr/fmd-js-api/-/fmd-js-api-2.2.0.tgz","fileCount":4,"unpackedSize":18962,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCVtgvbqRspa5uQHqY/z1AebZGx7g8ZkJhABswLoDiP8gIgC60PLvqqEkr4O1IM6PUZEy7L/z7xNYk7wk9b2xd4sl4="}]},"_npmUser":{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"},"directories":{},"maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fmd-js-api_2.2.0_1774490624157_0.6439936157596158"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-25T20:47:03.823Z","modified":"2026-03-26T02:03:44.441Z","1.0.0":"2024-09-25T20:35:46.081Z","1.0.1":"2024-09-25T20:47:05.505Z","1.0.2":"2024-09-26T01:57:38.946Z","1.0.3":"2024-11-04T19:02:57.523Z","2.0.0":"2025-06-26T04:49:48.763Z","2.1.0":"2025-08-06T03:23:30.345Z","2.1.1":"2025-10-20T22:35:45.204Z","2.2.0":"2026-03-26T02:03:44.324Z"},"bugs":{"url":"https://github.com/AirplanegoBrr/fmd-js-api/issues","email":"airplane@airplanegobrr.xyz"},"author":{"name":"AirplaneGobrr","email":"airplane@airplanegobrr.xyz","url":"https://airplanegobrr.xyz"},"license":"ISC","homepage":"https://github.com/AirplanegoBrr/fmd-js-api","keywords":[],"repository":{"type":"git","url":"git+https://github.com/AirplanegoBrr/fmd-js-api.git"},"description":"An API for FMD! (For FMD server v0.14.2)","maintainers":[{"name":"airplanegobrr","email":"airplanegobrrfeedback@gmail.com"}],"readme":"# @airplanegobrr/fmd-js-api\n\nThis is an API for the [FMD Server](https://gitlab.com/fmd-foss/fmd-server) (Version 0.14.2)\n\nAndroid app: [FMD App](https://gitlab.com/fmd-foss/fmd-android)\n\nThis uses the `Modern` encrytion, the API is based off the scripts found in [FMD Server Web](https://gitlab.com/fmd-foss/fmd-server) and looking at the network logs\n\nThis uses `axios`, `argon2`, and `@peculiar/webcrypto`\n\nThis also has [JsDocs](fmd-api.js#L6) so [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense) works!\n\nIf you like this project please make sure to :star: (star) it, it would mean alot to me :D\n\nPR's and Issues are welcome!\n\n# How to use\n\n```js\nconst FMD_API = require(\"@airplanegobrr/fmd-js-api\")\n\nlet fmdAPI = new FMD_API(\"<deviceID>\", \"<password>\", {\n    url: \"https://server.fmd-foss.org/\" // Defaults to https://server.fmd-foss.org/ if none is supplied\n})\n\n// You don't need to explicitly login- but its good practice\nfmdAPI.login().then(async (data)=>{\n    // Data has an object with accessToken and privateKey, You really dont need to use these but it's nice to have incase\n\n    await fmdAPI.commands.locate() // Tells the device to send its current location to the server, might take awhile for the device to send its loction back to the server.\n\n    let location = fmdAPI.locate(-1) // Gets the lastest location, keep in mind this will NOT ask for the device for its current location, it asks the server what the last location the device sent to the server!\n    console.log(location)\n\n    // fmdAPI.commands also has some commands like:\n    // locate\n    // locate_gps\n    // locate_cell\n    // locate_last\n    // ring\n    // lock\n    // camera_front\n    // camera_back\n\n    let picCount = await fmdAPI.getPictureCount() // Get ammount of pictures the server has\n    let picBuffer = await fmdAPI.getPicture(picCount) // Takes the picture index (biggest number == lastest)\n    console.log(picCount, picBuffer)\n})\n```\n\n# FAQ\n\n- Q: How do I get a list of devices the server has?\n- A: You can't, that would be a **big** security risk, it would be nice if it were available for private server but its not\n- Q: How do I delete my device?\n- A: This is a big risk, I didn't add it as again its a risk- if you want to do it do `fmdAPI.sendToPhone(\"delete <pin>\")`, this will **NOT** be added to the commands object- too risky\n\n# Updates\n\n## v2.2.0\n- Added locations API\n\n## v2.1.1\n- Fixed up code \n- Supports up to FMD server v0.12.1 (Tested- works like normal)\n- Updated default FMD server\n- Auto login and relogin (this was annoying to handle on the user end)\n\n# v2.1.0\n- Added alpha tags for support of FMD server v0.12.0\n\n## v2.0.0\n\n- Updated to support FMD server version 0.11.0, needed to add CmdSig to the /commands post endpoint\n- Not %100 tested but it should do fine-","readmeFilename":"README.md"}