// POST /api/send-link — Kirim magic link ke email const sendMagicLink = async (email) => { const res = await fetch('https://am.panpan.biz.id/api/send-link', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email }) }); const data = await res.json(); if (data.success) console.log('Link terkirim!'); else throw new Error(data.message); return data; }; // Penggunaan: await sendMagicLink('user@gmail.com');
// POST /api/send-link — dengan Axios (Node.js) const axios = require('axios'); const sendMagicLink = async (email) => { const { data } = await axios.post( 'https://am.panpan.biz.id/api/send-link', { email }, { headers: { 'Content-Type': 'application/json' } } ); if (!data.success) throw new Error(data.message); return data; }; // Penggunaan: sendMagicLink('user@gmail.com').then(console.log);
// POST /api/verify-link — Verifikasi & aktivasi premium const verifyAndActivate = async (email, magicLink) => { const res = await fetch('https://am.panpan.biz.id/api/verify-link', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, magicLink }) }); const { success, data, message } = await res.json(); if (!success) throw new Error(message); // data berisi: idToken, refreshToken, uid, orderId, validUntil, ... const { idToken, refreshToken, orderId } = data; console.log('Premium aktif! Order:', orderId); return data; };
// POST /api/verify-link — dengan Axios const axios = require('axios'); const verifyAndActivate = async (email, magicLink) => { try { const { data } = await axios.post( 'https://am.panpan.biz.id/api/verify-link', { email, magicLink } ); console.log('idToken:', data.data.idToken); return data.data; } catch (err) { console.error(err.response?.data?.message ?? err.message); } };
// GET /api/status — Cek server online const checkStatus = async () => { const res = await fetch('https://am.panpan.biz.id/api/status'); const { status, timestamp } = await res.json(); console.log(`Server: ${status} @ ${timestamp}`); return status === 'online'; }; // GET /api/stats — Total & today aktivasi const getStats = async () => { const res = await fetch('https://am.panpan.biz.id/api/stats'); const { total, today } = await res.json(); console.log(`Total: ${total} | Hari ini: ${today}`); return { total, today }; };
// GET /api/status + /api/stats — dengan Axios const axios = require('axios'); const BASE = 'https://am.panpan.biz.id'; // Parallel request — lebih efisien const getDashboard = async () => { const [statusRes, statsRes] = await Promise.all([ axios.get(`${BASE}/api/status`), axios.get(`${BASE}/api/stats`), ]); return { online: statusRes.data.status === 'online', ...statsRes.data, }; }; getDashboard().then(console.log);
Cek apakah server sedang online. Tidak memerlukan body.
curl -X GET 'https://am.panpan.biz.id/api/status'
Mengembalikan total aktivasi dan jumlah hari ini.
curl -X GET 'https://am.panpan.biz.id/api/stats'
Mengirim magic link Firebase ke email yang diberikan.
curl -X POST 'https://am.panpan.biz.id/api/send-link' \
-H 'Content-Type: application/json' \
-d '{"email": "user@gmail.com"}'
Verifikasi oobCode dan aktifkan Alight Motion Premium.
curl -X POST 'https://am.panpan.biz.id/api/verify-link' \
-H 'Content-Type: application/json' \
-d '{
"email": "user@gmail.com",
"magicLink": "https://alightcreative..."
}'
{
"success": true,
"message": "verifikasi berhasil, premium aktif.",
"data": {
"email": "...", "uid": "...",
"status": "ACTIVE",
"membershipStatus": "PREMIUM_ACTIVE",
"idToken": "...", "refreshToken": "...",
"orderId": "neo-xxxx", "validUntil": "..."
}
}