#!/usr/bin/env node /** * Quick script to check SIM status in Freebit * Usage: node scripts/check-sim-status.mjs */ const account = process.argv[2] || "02000002470010"; const FREEBIT_BASE_URL = "https://i1-q.mvno.net/emptool/api"; const FREEBIT_OEM_ID = "PASI"; const FREEBIT_OEM_KEY = "6Au3o7wrQNR07JxFHPmf0YfFqN9a31t5"; async function getAuthKey() { const request = { oemId: FREEBIT_OEM_ID, oemKey: FREEBIT_OEM_KEY, }; const response = await fetch(`${FREEBIT_BASE_URL}/authOem/`, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `json=${JSON.stringify(request)}`, }); if (!response.ok) { throw new Error(`HTTP ${response.status}: ${response.statusText}`); } const data = await response.json(); if (data.resultCode !== 100 && data.resultCode !== "100") { throw new Error(`Auth failed: ${data.status?.message || JSON.stringify(data)}`); } return data.authKey; } async function getTrafficInfo(authKey, account) { const request = { authKey, account }; const response = await fetch(`${FREEBIT_BASE_URL}/mvno/getTrafficInfo/`, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `json=${JSON.stringify(request)}`, }); return response.json(); } async function getAccountDetails(authKey, account) { const request = { authKey, version: "2", requestDatas: [{ kind: "MVNO", account }], }; const response = await fetch(`${FREEBIT_BASE_URL}/master/getAcnt/`, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `json=${JSON.stringify(request)}`, }); return response.json(); } async function main() { console.log(`\nšŸ” Checking SIM status for: ${account}\n`); try { const authKey = await getAuthKey(); console.log("āœ“ Authenticated with Freebit\n"); // Try getTrafficInfo first (simpler) console.log("--- Traffic Info (/mvno/getTrafficInfo/) ---"); const trafficInfo = await getTrafficInfo(authKey, account); console.log(JSON.stringify(trafficInfo, null, 2)); // Try getAcnt for full details console.log("\n--- Account Details (/master/getAcnt/) ---"); const details = await getAccountDetails(authKey, account); console.log(JSON.stringify(details, null, 2)); } catch (error) { console.error("āŒ Error:", error.message); } } main();