hizmetler
18 uç · /api/v1/hizmetler
İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 18 ucun elle doğrulanmış gövde örneği henüz yok; o uçlarda iskelet gövdesizdir — uydurma bir alan yazmıyoruz.
POST /api/v1/hizmetler — sipariş + ilk ödeme denemesi. Sipariş HER durumda doğar
(**201**): ödeme alınamadıysa fatura ve ödeme linki açık kalır; müşteri linkten (kart ya
da havale) öder ve ödeme kurulumu settle'dan başlatır.
Kapılar: kiracının ödenmemiş siparişi [ACIK_SIPARIS_TAVANI]ndan azsa (409
acik_siparis_siniri); aynı (paket · ad · dönem) [SIPARIS_TEKRAR_PENCERESI] içinde ya da
aynı Idempotency-Key [IDEMPOTENCY_OMRU] içinde ikinci kez açılmaz (409
siparis_tekrar). Stok · kapasite · alan adı BAYAT bir siparişe takılırsa o sipariş
serbest bırakılır.
curl -X POST "https://api.blesyum.com/api/v1/hizmetler" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /api/v1/hizmetler/{id} — HizmetOzet + ürün, ayrıntılar, olaylar, işler,
idfaturalar, yenileme tutarı, yükseltme seçenekleri, yeniden kurulum şablonları.
curl -X GET "https://api.blesyum.com/api/v1/hizmetler/<id>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /api/v1/hizmetler/{id}/canli — sağlayıcıdan anlık durum (yalnız etkin/askıda;
iddeğilse {}). Yanıt anlik::canlinın AYNISIDIR: ham sağlayıcı hatası zaten genel cümleye
çevrilmiştir.
curl -X GET "https://api.blesyum.com/api/v1/hizmetler/<id>/canli" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/guc — {islem: baslat|durdur|sifirla|kapat|yeniden_baslat}.
idcurl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/guc" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/iptal — {mod: donem_sonu | vazgec | siparis} →
id{hizmet}.
- donem_sonu: önce donem_sonu_iptal = true (işçinin kartı çekmesi durur), sonra AÇIK
yenileme faturası (ve e-postayla gitmiş linki) iptal — ödemesi uçuştaysa (409) bayrak
ve otomatik yenileme GERİ ALINIR ve 409 iletilir (link ödenip hizmeti uzatmasın).
- vazgec: dönem sonu iptalini geri al.
- siparis: ödenmemiş sipariş — ÖNCE açık faturalar iptal (ödemesi sürüyorsa 409, hiçbir
şey değişmez), SONRA iptal. Ters sırada uçuştaki ödeme iptal siparişi yine kurardı
(odeme_alindi_in_tx iptali de kabul eder).
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/iptal" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/konsol — 60 sn'lik tek kullanımlık konsol anahtarı. Anahtar
idonu basan oturuma bağlanır: oturum kapanınca açık konsol da kapanır.
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/konsol" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/ode — açık faturayı (sipariş · yenileme · yükseltme)
idkayıtlı karttan çek; açık fatura yoksa etkin/askıdaki hizmette ERKEN yenileme faturası
kes + çek → {odeme, hizmet, hizmet_id}.
Yeni (erken) yenileme faturası kesilecekse hizmet başına [ERKEN_YENILEME_BEKLEMESI]lik
bir kilit alınır (409 yakinda_yenilendi): ilk istek bitip dönemi uzattıktan SONRA gelen
ikinci basış (yanıtı kaybolmuş ya da çift tık) açık fatura bulamaz ve yeni bir dönem keserdi.
Redis'e ulaşılamazsa bu yol KAPALI kalır (503) — para yolu.
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/ode" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/otomatik-yenile — {acik} → {otomatik_yenile}.
idcurl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/otomatik-yenile" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/panel-giris — etkin hosting hesabına tek tıkla cPanel/Plesk
idgirişi ({url}; yeni sekmede açılır).
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/panel-giris" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/parola-goster — {parola /*hesap parolası*/} →
id{kullanici_adi, parola}. Denetime + olay defterine yazılır; yanıt ÖNBELLEĞE ALINMAZ.
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/parola-goster" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/parola-sifirla — {parola?} → 202 {is}. Hosting'te müşteri
idparolayı seçebilir (iş verisine MÜHÜRLÜ girer); sunucuda parola güvenlik için rastgele üretilir — seçilen parola YOK SAYILMAZ, açıkça reddedilir (gösterilen kutu çalışır).
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/parola-sifirla" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/yeniden-kur — {sablon_id, onay, parola} → 202 {is}.
idSunucunun diski SİLİNİR: hizmetin adı birebir yazılır + hesap parolası (422).
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/yeniden-kur" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/{id}/yukselt — {urun_id} → {odeme, hizmet, hizmet_id}. Ücretli
idfarkta fatura + kart çekimi (ödeme kancası paket_degistiri açar); ücretsiz farkta (dönem
bitmek üzere) fatura KESİLMEZ, iş doğrudan eklenir — ÖNCE açık (ücretli) yükseltme faturası
iptal edilir. Canlı iş ya da ödenmiş-uygulanmamış yükseltme (bekleyen_yukseltme, veri
katmanının TEK tanımı) varken 409 is_suruyor.
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/<id>/yukselt" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /api/v1/hizmetler/{id}/yukseltme?urun_id= — fark önizlemesi (billing'in TEK tanımı:
idYukseltme::hesapla + kirilim_oranla).
curl -X GET "https://api.blesyum.com/api/v1/hizmetler/<id>/yukseltme" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /api/v1/hizmetler/katalog?tur= — satılabilir ürünler, KDV dahil fiyatlar, konum ve
şablon seçenekleri, kayıtlı kart. Yalnız aktif ve fiyatı olan ürün; sunucuda kullanılabilir
konum + şablonu olmayan ürün LİSTELENMEZ (seçilemeyecek bir paketi göstermek sözü
tutulmayan bir vitrin olurdu). Stok (stok_var) ürünün tavanı + sunucuda boş IP, hosting'te
uygun sunucu varlığından türer.
curl -X GET "https://api.blesyum.com/api/v1/hizmetler/katalog" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /api/v1/hizmetler/konsol/ws?k= — tarayıcı (noVNC) ↔ ESXi WebMKS aktarımı.
Sıra: anahtar BİÇİMİ (yoksa 404) → WebSocket isteği mi (değilse anahtar YAKILMAZ) →
anahtarı tüket (yoksa 410) → [konsol_yetkisi] → konsol bileti → ESXi'ye bağlan → ancak
SONRA yükselt. ESXi'ye ulaşılamazsa HTTP 503 döner (yükseltilmiş bağlantıyı açıp hemen
kapatmak noVNC'de "bağlandı, sonra koptu" görünür).
curl -X GET "https://api.blesyum.com/api/v1/hizmetler/konsol/ws" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/v1/hizmetler/teklif — paket + ek kaynak için dönem fiyatı ÖNİZLEMESİ (sipariş
AÇMAZ). Tutar sipariş ve faturayla AYNI fonksiyonlardan (urun::donem_toplami +
kirilim_oranla): panel toplam HESAPLAMAZ, bu yanıtı çizer.
curl -X POST "https://api.blesyum.com/api/v1/hizmetler/teklif" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}