{"_id":"3x-ui-panel-client","name":"3x-ui-panel-client","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.1":{"name":"3x-ui-panel-client","version":"0.1.1","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":"","license":"ISC","description":"## init client","dependencies":{"axios":"^1.7.5","qs":"^6.13.0","uuid":"^10.0.0"},"type":"module","_id":"3x-ui-panel-client@0.1.1","gitHead":"540a2026004262b38151c706110a2bd2f2b9a85e","_nodeVersion":"22.5.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Wc/9/VZcUY8zwulJdsJjB0k5RM9hk95od/axHTaxTmYjXrg9MxifVrbfBG/tvEZnkTmGxLw6gKybZlaqA4DUAw==","shasum":"dc6b357df5434cb0cced458679a02aa706688b91","tarball":"https://registry.npmjs.org/3x-ui-panel-client/-/3x-ui-panel-client-0.1.1.tgz","fileCount":5,"unpackedSize":8581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjOa+D+OHBzwCRawkNZ3AcWi3GZMQXMq1B5IqmYPZr0QIgMlZ8fNyAK5RtOzAVWpOkQwVpxO130p2aOX6yDO1KL0o="}]},"_npmUser":{"name":"eugene.chernyshenko","email":"chernyshenko.eugene@gmail.com"},"directories":{},"maintainers":[{"name":"eugene.chernyshenko","email":"chernyshenko.eugene@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/3x-ui-panel-client_0.1.1_1724540564655_0.4806065541092759"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-24T23:02:44.524Z","0.1.1":"2024-08-24T23:02:44.787Z","modified":"2024-08-24T23:02:45.115Z"},"maintainers":[{"name":"eugene.chernyshenko","email":"chernyshenko.eugene@gmail.com"}],"description":"## init client","keywords":[],"license":"ISC","readme":"# 3X-UI client\n\n## init client\n\n```.js\n(async () => {\n  const panelClient = new Client({\n    username: process.env.PANEL_USER,\n    password: process.env.PANEL_PASSWORD,\n    host: process.env.PANEL_HOST,\n    port: process.env.PANEL_PORT,\n    scheme: process.env.PANEL_SCHEME, // http/https\n  });\n\n  // call login once before other calls\n  await panelClient.login();\n})();\n```\n\n## list clients\n\n```.js\nconst inbounds = await panelClient.getInbounds();\n// find vless inbound\nconst inbound = inbounds.find((inbound) => inbound.protocol === \"vless\");\nconsole.log(inbound.id);\nconst { clientStats, settings } = inbound;\nclientStats.forEach((clientStat) =>\n  console.log(\n    clientStat.id,\n    clientStat.enable,\n    clientStat.email,\n    (clientStat.up + clientStat.down) / 1024 / 1024 / 1024\n  )\n);\nconst settingsObj = JSON.parse(settings);\nconsole.log(settingsObj.clients);\n```\n\n## create clients\n\n```.js\nconst inboundId = 1;\n\nawait panelClient.addClient({\n  inboundId,\n  email: \"test1\",\n  totalGB: 0, // no traffic limit\n});\nawait panelClient.addClient({\n  inboundId,\n  email: \"test2\",\n  totalGB: 107374182400, // 100Gb traffic limit\n});\n```\n\n## delete client\n\n```.js\nconst client = settingsObj.clients.find((client) => client.email === \"test1\");\nawait panelClient.delClient({ inboundId, clientId: client.id });\n```\n\n## update client (enable, disable, update totalGB)\n\n```\nconst client = settingsObj.clients.find((client) => client.email === \"test1\");\nawait panelClient.updateClient({\n  inboundId,\n  clientSettings: {\n    ...client,\n    enable: false,\n    // totalGB: 0,\n  },\n});\n```\n\n## reset client traffic\n\n```.js\nconst client = settingsObj.clients.find((client) => client.email === \"test1\");\nawait panelClient.resetClientTraffic({ inboundId, email: client.email });\n```\n","readmeFilename":"README.md"}