Son Kullanıcıları Listeleme
Bu uçları kim çağırır?Dış API (s2s)
- Taban yol
/api/v1/wallet- Kimlik
- Ed25519 istek imzası —
X-Key-Id,X-Date,X-Nonce,Digest(body varsa),X-Signature. Zaman penceresi ±5 dk, nonce tek kullanımlık, anahtarda IP allow-list olabilir. - Yetki
- Anahtarınız cüzdan ürününü ve çağrının gerektirdiği cüzdan iznini taşımalıdır; izni olmayan çağrı
403 WALLET_INSUFFICIENT_SCOPEalır. Uç başına izinler: Anahtar izinleri. - Çapraz yüzey
- Aynı liste merchant panelde de vardır. Bu uç için anahtarınızda bir cüzdan okuma izni (
wallet:enduser:read) gerekir.
GET /api/v1/wallet/end-usersSize ait son kullanıcıları en yeniden eskiye (oluşturulma anına göre) listeler. Telefon ve ad yalnız maskeli döner.
Sorgu parametreleri
Tümü isteğe bağlıdır. Birden fazla süzgeç verirseniz hepsi birlikte uygulanır.
| Parametre | Tip | Kural ve anlamı |
|---|---|---|
programId | UUID | Yalnız bu programın kullanıcıları. |
accountType | string | PERSONAL ya da BUSINESS. |
status | string | ACTIVE, FROZEN ya da CLOSED. |
corporateAccountId | UUID | Yalnız bu işverene (kurumsal hesaba) bağlı çalışanlar. Kurumsal hesap size ait değilse 404 WALLET_NOT_FOUND döner; filtresiz listeye düşülmez. |
merchantCategoryState | string | UNSET = kategorisi atanmamış kayıtlar, SET = kategorisi atanmış kayıtlar. Kişisel (PERSONAL) kayıtların kategorisi her zaman boştur; kategorisiz işletmeleri bulmak için accountType=BUSINESS ile birlikte kullanın. |
limit | tam sayı | Sayfa boyutu, 1–100. Gönderilmezse 20. |
cursor | string | Önceki yanıttaki nextCursor değeri. İlk sayfada gönderilmez. Değer opaktır; üretmeyin, değiştirmeyin. |
Tanımlı değerler dışındaki bir değer ya da listede olmayan bir parametre 400 VALIDATION_ERROR ile reddedilir.
Örnek
curl "https://api-gateway.lunixi.com/api/v1/wallet/end-users?programId=5b9e2f3a-7c41-4d8e-a6f2-9e1b3c4d5f60&status=ACTIVE&limit=2" \
-H "X-Key-Id: …" -H "X-Date: …" -H "X-Nonce: …" -H "X-Signature: …"{
"status": "success",
"code": "SUCCESS",
"message": "…",
"data": {
"items": [
{
"id": "8d4c2a1f-3b6e-4f7a-9c5d-2e8b1a0f6c34",
"programId": "5b9e2f3a-7c41-4d8e-a6f2-9e1b3c4d5f60",
"accountType": "PERSONAL",
"externalCustomerId": "crm-88213",
"corporateAccountId": null,
"corporateOffboardedAt": null,
"kycRef": null,
"kycLevelCache": "LOW",
"kycLevelRefreshedAt": "2026-10-11T10:02:44.105Z",
"phoneMasked": "9053******67",
"displayNameMasked": "A*** Y*****",
"merchantCategory": null,
"status": "ACTIVE",
"createdAt": "2026-10-11T09:15:02.418Z",
"updatedAt": "2026-10-11T10:02:44.105Z"
},
{
"id": "3f9a6c2e-1d7b-4e5a-8c4f-6b2d9e0a1c75",
"programId": "5b9e2f3a-7c41-4d8e-a6f2-9e1b3c4d5f60",
"accountType": "BUSINESS",
"externalCustomerId": "crm-77104",
"corporateAccountId": null,
"corporateOffboardedAt": null,
"kycRef": null,
"kycLevelCache": null,
"kycLevelRefreshedAt": null,
"phoneMasked": "9053******09",
"displayNameMasked": "K**** K*****",
"merchantCategory": null,
"status": "ACTIVE",
"createdAt": "2026-10-10T16:41:19.007Z",
"updatedAt": "2026-10-10T16:41:19.007Z"
}
],
"nextCursor": "MjAyNi0xMC0xMCAxNjo0MToxOS4wMDcwMDArMDB8M2Y5YTZjMmU…",
"pageInfo": { "hasMore": true, "nextCursor": "MjAyNi0xMC0xMCAxNjo0MToxOS4wMDcwMDArMDB8M2Y5YTZjMmU…", "totalCount": null }
},
"pageInfo": { "hasMore": true, "nextCursor": "MjAyNi0xMC0xMCAxNjo0MToxOS4wMDcwMDArMDB8M2Y5YTZjMmU…", "totalCount": null },
"requestId": "…"
}Her kaydın alanları Detay ve Arama sayfasındaki endUser ile aynıdır.
Sayfalama
- Kayıtlar
data.itemsiçindedir. - Sonraki sayfa varsa
data.nextCursordoludur vepageInfo.hasMoretrue'dur; bu değeri bir sonraki istektecursorolarak gönderin. Aynı süzgeçleri koruyun. - Son sayfada
nextCursornull,pageInfo.hasMorefalse'tur. - Bu uç toplam kayıt sayısı döndürmez (
totalCount: null).
let cursor;
do {
const qs = new URLSearchParams({ programId, limit: '100', ...(cursor && { cursor }) });
const res = await signedGet(`/api/v1/wallet/end-users?${qs}`); // imzalı istek
const { data } = await res.json();
for (const endUser of data.items) handle(endUser);
cursor = data.nextCursor;
} while (cursor);Listede telefonla arama yoktur. Belirli bir kullanıcıya kendi kimliğinizle ulaşmak için by-external ucunu, bir telefonun programda kayıtlı olup olmadığını öğrenmek için cüzdan sorgulamayı kullanın.
Hatalar
| HTTP | Kod | Ne zaman |
|---|---|---|
| 400 | VALIDATION_ERROR | Parametre kurallara uymuyor (örneğin limit=500, status=OPEN) |
| 403 | WALLET_INSUFFICIENT_SCOPE | Anahtarda cüzdan okuma izni yok |
| 404 | WALLET_NOT_FOUND | corporateAccountId size ait bir kurumsal hesap değil |