Yönetim API'si
Manuel hizmetleri, ödemeleri, kullanıcıları ve destek taleplerini kendi yazılımınızdan yönetin; v1 (PerfectPanel uyumlu) ve v2 (REST).
Anahtarlar
Admin → Yönetim API'si sayfasından yalnızca panel sahibi anahtar oluşturabilir.
- Oluşturmak 2FA kodu (yoksa admin şifresi) ister. Anahtar (
nxa_+ 48 karakter) bir kez gösterilir. - En fazla 20 etkin anahtar; her anahtara bir ad ve en az bir yetki verilir.
- Silinen anahtar hemen geçersiz olur. Son kullanım ve istek sayısı listede görünür.
- Alt panellerde yönetim API'si yoktur.
| Yetki | Neye izin verir |
|---|---|
orders.view, orders.manage | Siparişleri görme / güncelleme, manuel sipariş çekme, telafi ve iptal görevleri |
users.view, users.manage, users.balance | Kullanıcıları görme / düzenleme / bakiye değiştirme |
payments.view, payments.manage | Ödemeleri görme / ödeme ekleme |
services.view, services.manage, providers.manage | Hizmetler ve sağlayıcılar |
tickets.view, tickets.reply | Destek talepleri |
dashboard.view, reports.view, content.manage, coupons.manage, settings.manage, audit.view | Diğer alanlar |
Hız sınırı: IP başına ve anahtar başına dakikada 600 istek.
v1 — PerfectPanel uyumlu
POST https://paneliniz.com/adminapi/v1, anahtar key alanında ya da X-Api-Key başlığında. Başarı: {"status":"success", ...}; hata: {"status":"fail","error":"<kod>"}. Geçersiz anahtar veya eksik yetki bad_auth, bilinmeyen işlem bad_action döner.
Manuel sipariş işleme
| İşlem | Parametreler | Açıklama |
|---|---|---|
getorder | type (manuel hizmet ID) | En eski bekleyen siparişi alır, "işleniyor" yapar: {id, link, quantity, charge, user_id, comments} |
getorders | type | Aynısı, en fazla 100 sipariş: {orders:[…]} |
updateorders | orders = JSON dizi [{id, status, start_count, remains}] (en fazla 100) | Toplu güncelleme |
setinprogress | id, isteğe bağlı start_count | |
setprocessing, setcompleted | id | |
setstartcount | id, start_count | |
setpartial, setremains | id, remains | |
setcanceled | id | İptal eder ve iade yapar |
updateorders durum değerleri: pending, in progress, processing, completed, partial, canceled.
curl -X POST https://paneliniz.com/adminapi/v1 -d key=nxa_xxx -d action=getorder -d type=42
curl -X POST https://paneliniz.com/adminapi/v1 -d key=nxa_xxx -d action=setcompleted -d id=1001
Telafi ve iptal görevleri
| İşlem | Parametreler | Yanıt |
|---|---|---|
getrefill | isteğe bağlı service_id | {id, refill, order_id, service_id, link, start_count, current_count, quantity} |
setrefillcompleted, setrefillrejected, setrefillinprogress | refill | |
getcancel | isteğe bağlı service_id | {cancel, order_id, service_id, link} |
setcancelrejected | cancel |
Ödeme ve destek
| İşlem | Parametreler | Açıklama |
|---|---|---|
addpayment | username (e-posta) veya id, amount (0–1.000.000), details | Ödenmiş yükleme oluşturur ve bakiyeyi artırır (users.balance) |
addticket | username, subject (≤200), message (≤5000) | Müşteriye destek talebi açar (tickets.reply) |
v2 — REST / JSON
Temel adres https://paneliniz.com/adminapi/v2, anahtar yalnızca X-Api-Key başlığında. Başarı {"data": …}, hata {"error":{"code","message"}}. Listelerde ?limit= (1–500, varsayılan 50) ve ?offset=.
| Yöntem ve yol | Yetki | Açıklama |
|---|---|---|
GET /orders | orders.view | ?status=in_progress, ?service_id= |
GET /orders/:id | orders.view | Tek sipariş |
POST /orders/pull | orders.manage | {service_id, limit} → manuel siparişleri çeker |
PATCH /orders/:id | orders.manage | {status?, start_count?, remains?} |
POST /orders/:id/cancel | orders.manage | İptal ve iade |
GET /refills, POST /refills/pull, PATCH /refills/:id | orders.* | Telafi görevleri; PATCH {status: completed|rejected|in_progress} |
GET /cancels, POST /cancels/pull, POST /cancels/:id/reject | orders.* | İptal görevleri |
GET /users | users.view | ?email= içerir araması |
GET /users/:id | users.view | ID ya da e-posta |
POST /users/:id/balance | users.balance | {amount}; eksi değer bakiyeden düşer |
GET /payments | payments.view | ?status= |
POST /payments | payments.manage + users.balance | {user, amount, details} |
GET /tickets | tickets.view | ?status= |
POST /tickets | tickets.reply | {user, subject, message} |
POST /tickets/:id/reply | tickets.reply | {message} |
GET /services | services.view | {id, name, type, cost, min, max, active, manual, provider} |
Sipariş nesnesi: {id, status, service:{id,name}, user:{id,email}, link, quantity, charge, cost, refunded, start_count, remains, provider_order_id, source, created_at, completed_at}.
curl https://paneliniz.com/adminapi/v2/orders?status=pending -H "X-Api-Key: nxa_xxx"
curl -X PATCH https://paneliniz.com/adminapi/v2/orders/1001 \
-H "X-Api-Key: nxa_xxx" -H "Content-Type: application/json" \
-d '{"status":"completed","start_count":1200}'
Hata kodları: 401 unauthorized, 403 forbidden ("This key needs the … permission"), 404 not_found, 400 (ör. bad_json), 429 rate_limited, 500 internal_error.