API ini memakai kunci Bearer dan JSON biasa, tanpa tanda tangan. Aturan persetujuannya sama dengan Auth API.
Dasar
| Hal | Aturan |
|---|---|
| Alamat | https://auth.wiracode.com/v1/integrations |
| Autentikasi | Authorization: Bearer wpk_<prefix>_<secret> |
| Badan | JSON (Content-Type: application/json), paling besar 128 KiB. |
| Kesalahan | {"error": "NOT_ENROLLED", "message": "…"}. error adalah kode mesin; data tambahan seperti until dan retryAfterSec ada di tingkat atas. |
API ini dan Auth API memakai permintaan persetujuan yang sama. Nilai txid dari Auth API bisa dibaca dengan GET /v1/integrations/requests milik integrasi yang sama, dan sebaliknya.
Endpoint
Bisakah Pengguna Ini Diminta Persetujuan?
POST/v1/integrations/check
Header Authorization: Bearer wpk_….
Nilai ready benar bila ada HP penyetuju aktif yang sedang masuk ke WiraPass. Email yang tidak dikenal menjawab semua nol.
| Parameter | Di | Wajib | Keterangan |
|---|---|---|---|
email | JSON | Ya | Email WiraPass pengguna. |
Jawaban 200. Kesiapan pengguna.
{
"ready": true,
"devices": 2,
"signedInDevices": 1,
"backupCode": true
}Kesalahan: UNAUTHORIZED, INVALID_EMAIL, RATE_LIMITED (artinya).
Kirim Permintaan Persetujuan
POST/v1/integrations/requests
Header Authorization: Bearer wpk_….
Membuat permintaan dan mengirim push ke HP pengguna yang sedang masuk ke WiraPass.
| Parameter | Di | Wajib | Keterangan |
|---|---|---|---|
email | JSON | Ya | Email WiraPass pengguna. |
title | JSON | Tidak | Judul di HP. Bawaan: "Masuk ke <nama integrasi>". |
context | JSON | Tidak | Hanya app, account, ip, location, device; masing-masing paling banyak 120 karakter. |
ttlSeconds | JSON | Tidak | Umur permintaan, 30 sampai 300 detik, bawaan 60. |
Jawaban 201. Permintaan dibuat. delivered = push yang diterima FCM (0 mungkin terjadi).
{
"id": "3f2b8c1e-5d4a-4e6f-9a7b-1c2d3e4f5a6b",
"expiresAt": "2026-09-27T08:17:00.000Z",
"delivered": 1
}Kesalahan: UNAUTHORIZED, INVALID_EMAIL, RATE_LIMITED, NOT_ENROLLED, NO_SIGNED_IN_DEVICE, FROZEN, TOO_MANY_PENDING (artinya).
Status Permintaan
GET/v1/integrations/requests
Header Authorization: Bearer wpk_….
Hanya approved yang berarti ya. reported berarti pengguna menekan "Bukan saya".
| Parameter | Di | Wajib | Keterangan |
|---|---|---|---|
id | query | Ya | ID permintaan. |
wait | query | Tidak | Long-poll 0 sampai 25 detik. |
Jawaban 200. Status saat ini.
{
"id": "3f2b8c1e-5d4a-4e6f-9a7b-1c2d3e4f5a6b",
"status": "approved",
"expiresAt": "2026-09-27T08:17:00.000Z",
"answeredAt": "2026-09-27T08:16:21.412Z",
"reason": null
}Kesalahan: UNAUTHORIZED, NOT_FOUND, RATE_LIMITED (artinya).
Batalkan Permintaan
POST/v1/integrations/cancel
Header Authorization: Bearer wpk_….
Membatalkan permintaan yang masih menunggu, misalnya bila pengguna memilih kode cadangan.
| Parameter | Di | Wajib | Keterangan |
|---|---|---|---|
id | JSON | Ya | ID permintaan. |
Jawaban 200. Status setelah dibatalkan.
{
"id": "3f2b8c1e-5d4a-4e6f-9a7b-1c2d3e4f5a6b",
"status": "cancelled",
"expiresAt": "2026-09-27T08:17:00.000Z",
"answeredAt": "2026-09-27T08:16:05.000Z",
"reason": "integration"
}Kesalahan: UNAUTHORIZED, NOT_FOUND, RATE_LIMITED (artinya).
Periksa Kode Cadangan
POST/v1/integrations/backup-code
Header Authorization: Bearer wpk_….
Untuk HP tanpa internet. Kode salah, sudah dipakai, atau email tidak dikenal mendapat jawaban yang sama.
| Parameter | Di | Wajib | Keterangan |
|---|---|---|---|
email | JSON | Ya | Email WiraPass pengguna. |
code | JSON | Ya | Kode cadangan 6 digit. |
Jawaban 200. Kode benar.
{
"ok": true
}Kesalahan: UNAUTHORIZED, WRONG_CODE, CODE_LOCKED, RATE_LIMITED (artinya).