Asosiy kontentga oʻtish
DigiCert, Sectigo va GeoTrust SSL sertifikatlari
+90 850 259 76 06 WhatsApp Yordam Diler boʻlish
SSL sertifikatlari
Brendlar
Kod imzolash Entrust HSM Thales HSM LEI kodi
Vositalar
Yordam Aloqa WhatsApp Savat
Til
Valyuta
SSL sertifikatini olish
v3.0

API hujjatlari

DATASSL Reseller API orqali SSL sertifikatlarini boshqarishni avtomatlashtiring

Ishni boshlash

DATASSL Reseller API v3.0 diler hisobingiz orqali SSL sertifikati buyurtmalari, hisob-faktura amallari va kredit toʻlovlarini dasturiy boshqarish imkonini beradi.

Talablar
  • Faol diler hisobi va belgilangan diler guruhi
  • API kaliti (diler panelingizdan yaratishingiz mumkin)
  • API erişimi açık olmalı (Panel > API & Entegrasyonlar)

Base URL

https://www.datassl.com/api/reseller/

Soʻrov formati

Barcha soʻrovlar va javoblar JSON formatida.

Content-Type: application/json
Accept: application/json

Umumiy javob tuzilmasi

// Başarılı
{
  "success": true,
  "message": "İşlem açıklaması",
  ...data
}

// Hata
{
  "success": false,
  "error": "Hata mesajı"
}

Shaxsni tekshirish

Barcha API soʻrovlarida quyidagi usullardan birini ishlating:

1-usul: X-API-Key Header

X-API-Key: YOUR_API_KEY

2-usul: Bearer Token

Authorization: Bearer YOUR_API_KEY
API kalitini qanday olish mumkin?
  1. Diler panelingizga kiring
  2. API va integratsiyalar sahifasini oching
  3. "API kalitini yaratish" tugmasini bosing
  4. Yaratilgan kalitni xavfsiz joyda saqlang

Barcha endpoint'lar

Usul Endpoint Tavsif
Mahsulotlar
GET /products Mahsulotlar roʻyxati (filtr bilan)
GET /products/{id} Mahsulot tafsilotlari + SAN narxlari
GET /san-pricing/{id} SAN/Wildcard SAN narxlari
Buyurtmalar
GET /orders Buyurtmalar roʻyxati (filtr bilan)
GET /orders/{id} Buyurtma tafsiloti
POST /orders Yangi buyurtma yaratish (SAN qoʻllab-quvvatlanadi)
PUT /orders/{id} Buyurtma amallari (bekor qilish)
SSL boshqaruvi
POST /ssl/configure SSL sozlash (CSR, DCV, administrator maʼlumotlari)
GET /ssl/{order_id} SSL holatini tekshirish + tasdiqlash tafsilotlari
POST /ssl/resend-validation Tekshiruv xatini qayta yuborish
POST /ssl/change-dcv DCV usulini oʻzgartirish
POST /ssl/reissue Sertifikatni qayta chiqarish (reissue)
POST /csr/decode CSR dekodlash (domen, tashkilot, SAN maʼlumotlari)
Hisob-fakturalar
GET /invoices Hisob-fakturalar roʻyxati
GET /invoices/{id} Hisob-faktura tafsilotlari
Kredit & Toʻlov
GET /credits Kredit balansi + operatsiyalar tarixi
POST /credits Buyurtmani kredit bilan toʻlash
GET /balance Balans va soʻnggi operatsiyalar
Sertifikat
GET /certificate/{order_id} Sertifikat holati haqida maʼlumot
GET /certificate/{order_id}/download Sertifikatni yuklab olish (PEM + CA Bundle)
Hisob & Statistika
GET /account Hisob maʼlumotlari
GET /stats Statistika va grafiklar

Mahsulotlar

Guruhga asoslangan ruxsat: API faqat diler guruhingizga biriktirilgan mahsulotlarni qaytaradi. Narxlar guruhga xos narxlar bilan avtomatik hisoblanadi.

Mahsulotlar roʻyxati

GET /products
Filtr parametrlari
Brand Brend filtri (Sectigo, DigiCert, Thawte...)
Type Tur filtri (ssl, wildcard, multi-domain, code-signing)
tasdiqlash Tekshiruv turi (dv, ov, ev)
GET /products?brand=Sectigo&type=ssl&validation=dv

Javob

{
  "success": true,
  "products": [
    {
      "id": 1,
      "name": "Sectigo PositiveSSL",
      "brand": "Sectigo",
      "type": "ssl",
      "validation_type": "dv",
      "domain_type": "single",
      "list_price": 49.99,
      "list_pricing": { "1": 49.99, "2": 89.99, "3": 119.99 },
      "reseller_price": 12.99,
      "pricing": { "1": 12.99, "2": 22.99, "3": 29.99 },
      "max_years": 3,
      "warranty": "$50,000",
      "san_enabled": false
    }
  ],
  "count": 25,
  "group_id": 1,
  "note": "Sadece grubunuza tanımlanmış ürünler listelenmektedir."
}

Mahsulot tafsilotlari

GET /products/{id}

Bitta mahsulot uchun SAN narxlari, barcha koʻp yillik narxlar va barcha batafsil maʼlumotlarni qaytaradi.

SAN narxlari

GET /san-pricing/{product_id}

Mahsulotning SAN va Wildcard SAN narxlarini batafsil qaytaradi.

Buyurtmalar

Buyurtmalar roʻyxati

GET /orders
Filtr parametrlari
Status Holat filtri (pending, processing, completed, cancelled)
domain Domen qidiruvi
limit Sahifadagi yozuvlar soni (maks. 100, standart 50)
offset Boshlangʻich nuqta (sahifalash)
GET /orders?status=pending&limit=20&offset=0

Buyurtma tafsilotlari

GET /orders/{id}

Yangi buyurtma yaratish

POST /orders
Body parametrlari
product_id * Mahsulot ID (guruhingizda belgilangan boʻlishi kerak)
domain * Domen nomi (kod imzolashdan tashqari)
period Muddat (oy, standart 12). Bu obuna muddati; sertifikat amal qilishi maks. 200 kun boʻlib, avtomatik yangilanadi.
san_count Qoʻshimcha SAN soni
san_wildcard_count Qoʻshimcha Wildcard SAN soni
Kredit bilan avtomatik toʻlov

Buyurtma yaratilganda summa kredit balansingizdan avtomatik yechib olinadi. Balans yetarli boʻlmasa, buyurtma yaratilmaydi (HTTP 402).

// Örnek istek
{
  "product_id": 1,
  "domain": "example.com",
  "period": 12,
  "san_count": 2,
  "san_wildcard_count": 0
}

Javob

{
  "success": true,
  "message": "Sipariş başarıyla oluşturuldu",
  "order_id": 12345,
  "order_number": "ORD-2026-0042",
  "domain": "example.com",
  "base_price": 49.99,
  "san_total": 15.98,
  "discount_amount": 37.00,
  "total": 28.97,
  "status": "pending",
  "payment_status": "paid",
  "credit_used": 28.97,
  "new_balance": 1221.03,
  "invoice_number": "INV-2026-0078",
  "auto_reissue_enabled": true,
  "max_validity_days": 200,
  "purchase_end_date": "2027-02-14",
  "next_reissue_at": "2026-08-19"
}

Buyurtmani bekor qilish

PUT /orders/{id}
// Body
{ "action": "cancel" }

Faqat Pending yoki Processing holatidagi buyurtmalarni bekor qilish mumkin.

Buyurtma holatlari

Pending Kutilmoqda (toʻlov kutilmoqda)
Processing Qayta ishlanmoqda
validation_pending Domen tekshiruvi kutilmoqda
pending_configuration Sozlash kutilmoqda
Completed Yakunlandi / Faol
Cancelled Bekor qilindi
Expired Muddati tugagan

SSL boshqaruvi

SSL endpointlari buyurtmadan keyin sertifikatni sozlash, holatni tekshirish, DCV oʻzgartirish va reissue amallari uchun ishlatiladi.

SSL sozlamalari

POST /ssl/configure

Buyurtma yaratilgandan soʻng CSR va DCV maʼlumotlarini yuborib, SSL sertifikatini sozlang.

order_id * Buyurtma ID
csr * Certificate Signing Request (PEM)
dcv_method Tekshiruv usuli: email, http, https, dns (standart: email)
approver_email Tasdiqlash xati (email DCV uchun)

SSL holatini tekshirish

GET /ssl/{order_id}

Real vaqtdagi holat, tekshiruv tafsilotlari (HTTP/DNS/Email koʻrsatmalari) va SAN tekshiruvi maʼlumotlarini qaytaradi. Sertifikat tayyor boʻlsa, uni avtomatik saqlaydi.

DCV usulini oʻzgartirish

POST /ssl/change-dcv
order_id * Buyurtma ID
dcv_method * Yangi DCV usuli: email, http, https, dns
approver_email Yangi tasdiqlash xati

Tekshiruv xatini qayta yuborish

POST /ssl/resend-validation
{ "order_id": 12345 }

Sertifikatni qayta chiqarish (Reissue)

POST /ssl/reissue
Avtomatik yangilash: 198 kun qoidasi doirasida sertifikatingiz amal qilish muddati tugashidan oldin tizim reissue amalini avtomatik bajaradi. Qoʻlda reissue ham shu endpoint orqali bajarilishi mumkin.
order_id * Buyurtma ID (faol sertifikat talab qilinadi)
csr Yangi CSR (ixtiyoriy, boʻsh boʻlsa, mavjudi ishlatiladi)
dcv_method DCV usuli
approver_email Tasdiqlash xati

CSR Decode

POST /csr/decode
{ "csr": "-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----" }

CSR’dan domen, tashkilot, SAN roʻyxati va boshqa maʼlumotlarni ajratib oladi.

198 kun qoidasi va avtomatik yangilash

CA/Browser Forum qarori: 2026-yil 15-martdan boshlab SSL/TLS sertifikatlari koʻpi bilan 200 kun (~6.5 oy) amal qilishi mumkin. Kod imzolash (Code Signing) sertifikatlari bu qoidaga bu qoidaga boʻysunmaydi.

Qanday ishlaydi?

Mijoz 1 yillik SSL sertifikatini sotib olganda:

  1. Sertifikat maks. 200 kun amal qilish muddati bilan beriladi
  2. Sertifikat muddati tugashiga 14 kun qolganda avtomatik qayta chiqariladi (reissue)
  3. Xarid muddati (1/2/3 yil) davomida bu jarayon qoʻshimcha toʻlovsiz takrorlanadi

Buyurtma javobidagi yangi maydonlar

auto_reissue_enabled boolean — Avtomatik yangilash faolmi (kod imzolashdan tashqari barcha SSL mahsulotlarida true)
max_validity_days integer — Sertifikatning maksimal amal qilish muddati (kun). Hozir: 200
purchase_end_date string (YYYY-MM-DD) — Obuna tugash sanasi (toʻlangan davr oxiri)
next_reissue_at string (YYYY-MM-DD) — Sonraki otomatik yenileme tarihi
reissue_count integer — Shu kungacha amalga oshirilgan avtomatik yangilashlar soni

Amal qilish bosqichlari (Yoʻl xaritasi)

Sana Maks. amal qilish muddati Holat
15 mart 2026 200 kun Faol
15 mart 2027 100 kun Kelgusi
15 mart 2029 47 kun Kelgusi

Namuna ssenariy: 1 yillik DV SSL

// Sipariş oluşturuldu: 21 Mart 2026
// Abonelik süresi: 1 yıl (21 Mart 2027'ye kadar)

// 1. Sertifika: 21 Mar 2026 → 7 Eki 2026 (200 gün)
// Otomatik reissue: 23 Eyl 2026 (bitiş - 14 gün)
// 2. Sertifika: 23 Eyl 2026 → 11 Nis 2027 (200 gün)
// Abonelik 21 Mar 2027'de bitiyor → reissue yapılmaz

{
  "order_id": 12345,
  "period": 12,
  "auto_reissue_enabled": true,
  "max_validity_days": 200,
  "purchase_end_date": "2027-03-21",
  "next_reissue_at": "2026-09-23",
  "reissue_count": 0,
  "cert_valid_from": "2026-03-21",
  "cert_valid_till": "2026-10-07"
}
Kod imzolash istisnosi: Code Signing va EV Code Signing sertifikatlari 198 kun qoidasidan ozod. Bu mahsulotlarda auto_reissue_enabled har doim false qaytaradi.

Otomatik SSL (ACME) Abonelikleri

Sectigo ACME ve "Plan + Automate" ürünleri yıllık aboneliktir. Bu ürünlerde CSR ve doğrulama adımı yoktur; sertifikayı müşterinin sunucusundaki ACME istemcisi ya da AutoInstall SSL alır ve yeniler.

Ürünleri listeleme

Abonelik ürünleri yalnızca istendiğinde listelenir:

GET /products?include=acme

Bu ürünlerde şu alanlar döner: fulfillment: "acme_subscription", requires_csr: false, acme_type (caas = ACME istemcisi, ais = AutoInstall SSL), wildcard_only.

Abonelik siparişi

POST /orders
AlanMajburiyTavsif
product_idHaAbonelik ürününün kimliği
domainHaAlan adı. wildcard_only ürünlerde *.example.com biçiminde. www adresi kendiliğinden eklenir.
contact_emailais uchunSertifika ve abonelik bildirimlerinin gideceği adres

Sipariş tutarı bakiyenizden düşülür ve abonelik hemen oluşturulur. Abonelik oluşturulamazsa sipariş iptal edilir ve tutar bakiyenize iade edilir.

{
  "success": true,
  "order_id": 1234,
  "status": "completed",
  "fulfillment": "acme_subscription",
  "acme": { "status": "created", "subscription_id": 12, "details_endpoint": "/orders/1234/acme" }
}

Sozlash maʼlumotlari

GET /orders/{order_id}/acme

ACME sunucu adresini ve EAB kimlik bilgilerini döndürür. Bilgiler sağlayıcıdan anlık alınır; EAB anahtarını parola gibi saklayın.

{
  "success": true,
  "acme": {
    "status": "active",
    "category": "caas",
    "domains": [ { "id": "123", "name": "ornek.com" }, { "id": "124", "name": "www.ornek.com" } ],
    "subscription": { "begin": "2026-10-04", "next_renewal": "2027-10-04", "end": null },
    "account": { "eab_kid": "...", "eab_hmac_key": "...", "server_url": "https://acme.sectigo.com/v2/DV", "status": "pending" },
    "autoinstall": null
  }
}

AutoInstall ürünlerinde autoinstall.login_url alanı kurulum panelinin bağlantısını verir. GET /orders/{order_id} yanıtında da aboneliğin özeti (acme) yer alır.

Hisob-fakturalar

Hisob-fakturalar roʻyxati

GET /invoices
Status Holat filtri (unpaid, paid, cancelled, sent)
limit Sahifadagi yozuvlar (maks. 100)
offset Boshlangʻich nuqta

Javob

{
  "success": true,
  "invoices": [
    {
      "id": 78,
      "invoice_number": "INV-2026-0078",
      "order_number": "ORD-2026-0042",
      "domain": "example.com",
      "total": 28.97,
      "currency": "USD",
      "status": "unpaid",
      "due_date": "2026-02-21",
      "created_at": "2026-02-14 10:30:00"
    }
  ],
  "pagination": { "total": 156, "limit": 50, "offset": 0 }
}

Hisob-faktura tafsilotlari

GET /invoices/{id}

Kredit & Toʻlov

USD asosida: Barcha kredit qoldiqlari va amallar USD'da yuritiladi.

Kredit balansi & Operatsiyalar tarixi

GET /credits
{
  "success": true,
  "balance": 1250.00,
  "currency": "USD",
  "transactions": [
    {
      "id": 45,
      "amount": -28.97,
      "type": "debit",
      "description": "Sipariş ödemesi: ORD-2026-0042",
      "balance_after": 1221.03,
      "created_at": "2026-02-14 10:31:00"
    },
    {
      "id": 44,
      "amount": 500.00,
      "type": "credit",
      "description": "Kredi yükleme",
      "balance_after": 1250.00,
      "created_at": "2026-02-13 09:00:00"
    }
  ],
  "pagination": { "total": 45, "limit": 50, "offset": 0 }
}

Buyurtmani kredit bilan toʻlash

POST /credits
// İstek
{ "order_id": 12345 }

// Yanıt
{
  "success": true,
  "message": "Ödeme başarıyla alındı",
  "order_id": 12345,
  "amount_paid": 28.97,
  "new_balance": 1221.03
}
Balans yetarli boʻlmasa, xato qaytariladi. Toʻlovdan oldin balansni tekshirishni tavsiya qilamiz.

Balansni tekshirish (qisqa)

GET /balance

Oxirgi 10 ta amal bilan birga balans maʼlumotini qaytaradi.

Sertifikat

Sertifikat holati

GET /certificate/{order_id}
{
  "success": true,
  "certificate": {
    "order_id": 12345,
    "domain": "example.com",
    "product": "Sectigo PositiveSSL",
    "brand": "Sectigo",
    "status": "completed",
    "valid_from": "2026-03-21",
    "valid_till": "2026-10-07",
    "has_certificate": true,
    "has_ca_bundle": true,
    "days_remaining": 200,
    "is_expired": false,
    "auto_reissue_enabled": true,
    "max_validity_days": 200,
    "next_reissue_at": "2026-09-23",
    "purchase_end_date": "2027-03-21",
    "reissue_count": 0
  }
}

Sertifikatni yuklab olish

GET /certificate/{order_id}/download
{
  "success": true,
  "certificate": {
    "domain": "example.com",
    "valid_from": "2026-03-21",
    "valid_till": "2026-10-07",
    "certificate_pem": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
    "ca_bundle": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
    "private_key_note": "Private key sipariş oluşturulurken size iletilmiştir."
  }
}

Statistika

GET /stats

Diler hisobingiz boʻyicha toʻliq statistika va grafik maʼlumotlarini qaytaradi.

{
  "success": true,
  "stats": {
    "total_orders": 156,
    "active_orders": 89,
    "pending_orders": 3,
    "total_revenue": 15420.00,
    "monthly_revenue": 2340.00,
    "credit_balance": 1250.00
  },
  "charts": {
    "daily_sales": [
      { "date": "2026-02-13", "orders": 5, "revenue": 245.50 },
      { "date": "2026-02-14", "orders": 3, "revenue": 189.97 }
    ],
    "brand_distribution": [
      { "brand": "Sectigo", "count": 78 },
      { "brand": "DigiCert", "count": 45 }
    ],
    "status_distribution": {
      "completed": 89,
      "pending": 3,
      "processing": 5,
      "cancelled": 12
    }
  }
}

Hisob maʼlumotlari

GET /account
{
  "success": true,
  "reseller": {
    "id": 42,
    "name": "Bayi Adı",
    "email": "bayi@example.com",
    "company": "Örnek Şirket Ltd.",
    "discount_rate": 30.0,
    "credit_balance": 1250.00,
    "stats": {
      "order_count": 156,
      "total_revenue": 15420.00
    }
  }
}

Xato kodlari

Code Maʼnosi Tavsif
400 Bad Request Parametrlar yaroqsiz yoki yetishmaydi
401 Unauthorized API kaliti yaroqsiz yoki API ruxsati oʻchirilgan
403 Forbidden Diler guruhi belgilanmagan yoki mahsulotga ruxsat yoʻq
404 Topilmadi Resurs topilmadi (buyurtma, sertifikat)
405 Method Not Allowed Bu endpoint uchun HTTP usuli qoʻllab-quvvatlanmaydi
500 Server Error Server xatosi

Xato javobi

{
  "success": false,
  "error": "Yetersiz bakiye. Gerekli: $28.97 Mevcut: $10.00"
}

Kod namunalari

<?php
class DataSSLClient {
    private $apiKey;
    private $baseUrl = 'https://www.datassl.com/api/reseller';

    public function __construct($apiKey) {
        $this->apiKey = $apiKey;
    }

    private function request($method, $endpoint, $data = null) {
        $ch = curl_init($this->baseUrl . $endpoint);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'Content-Type: application/json',
                'X-API-Key: ' . $this->apiKey
            ]
        ]);
        if ($method === 'POST') {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        }
        if ($method === 'PUT') {
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        }
        if ($method === 'DELETE') {
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
        }
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        return json_decode($response, true);
    }

    // Ürünler
    public function getProducts($filters = []) {
        $query = $filters ? '?' . http_build_query($filters) : '';
        return $this->request('GET', '/products' . $query);
    }

    public function getProduct($id) {
        return $this->request('GET', '/products/' . $id);
    }

    // Siparişler
    public function getOrders($filters = []) {
        $query = $filters ? '?' . http_build_query($filters) : '';
        return $this->request('GET', '/orders' . $query);
    }

    public function createOrder($data) {
        return $this->request('POST', '/orders', $data);
    }

    public function cancelOrder($id) {
        return $this->request('PUT', '/orders/' . $id, ['action' => 'cancel']);
    }

    // Faturalar
    public function getInvoices($status = '') {
        $query = $status ? '?status=' . $status : '';
        return $this->request('GET', '/invoices' . $query);
    }

    // Kredi
    public function getCredits() {
        return $this->request('GET', '/credits');
    }

    public function payWithCredit($orderId) {
        return $this->request('POST', '/credits', ['order_id' => $orderId]);
    }

    // Sertifika
    public function getCertificateStatus($orderId) {
        return $this->request('GET', '/certificate/' . $orderId);
    }

    public function downloadCertificate($orderId) {
        return $this->request('GET', '/certificate/' . $orderId . '/download');
    }

    // Hesap & İstatistik
    public function getAccount() { return $this->request('GET', '/account'); }
    public function getBalance() { return $this->request('GET', '/balance'); }
    public function getStats()   { return $this->request('GET', '/stats'); }
}

// ─── Kullanım Örnekleri ───

$client = new DataSSLClient('YOUR_API_KEY');

// 1. Ürünleri listele
$products = $client->getProducts(['brand' => 'Sectigo', 'type' => 'ssl']);

// 2. Sipariş oluştur (kredi bakiyesinden otomatik kesilir)
$order = $client->createOrder([
    'product_id' => 1,
    'domain' => 'example.com',
    'period' => 12,
    'san_count' => 2
]);

// 3. Sipariş zaten ödenmiş, SSL yapılandırabilirsiniz
if ($order['success']) {
    echo "Sipariş: " . $order['order_number'] . "\n";
    echo "Tutar: $" . $order['total'] . "\n";
    echo "Kalan bakiye: $" . $order['new_balance'] . "\n";
}

// 4. Sertifika indir
$cert = $client->downloadCertificate(12345);
if ($cert['success']) {
    file_put_contents('certificate.pem', $cert['certificate']['certificate_pem']);
    file_put_contents('ca-bundle.pem', $cert['certificate']['ca_bundle']);
}
?>
import requests

class DataSSLClient:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = 'https://www.datassl.com/api/reseller'
        self.headers = {
            'Content-Type': 'application/json',
            'X-API-Key': api_key
        }

    def get_products(self, **filters):
        return requests.get(f'{self.base_url}/products', params=filters, headers=self.headers).json()

    def create_order(self, data):
        return requests.post(f'{self.base_url}/orders', json=data, headers=self.headers).json()

    def cancel_order(self, order_id):
        return requests.put(f'{self.base_url}/orders/{order_id}', json={'action': 'cancel'}, headers=self.headers).json()

    def get_invoices(self, status=''):
        params = {'status': status} if status else {}
        return requests.get(f'{self.base_url}/invoices', params=params, headers=self.headers).json()

    def pay_with_credit(self, order_id):
        return requests.post(f'{self.base_url}/credits', json={'order_id': order_id}, headers=self.headers).json()

    def get_certificate(self, order_id):
        return requests.get(f'{self.base_url}/certificate/{order_id}', headers=self.headers).json()

    def download_certificate(self, order_id):
        return requests.get(f'{self.base_url}/certificate/{order_id}/download', headers=self.headers).json()

    def get_stats(self):
        return requests.get(f'{self.base_url}/stats', headers=self.headers).json()

    def get_balance(self):
        return requests.get(f'{self.base_url}/balance', headers=self.headers).json()

# ─── Kullanım ───
client = DataSSLClient('YOUR_API_KEY')

# Ürünleri listele
products = client.get_products(brand='Sectigo', type='ssl')
for p in products.get('products', []):
    print(f"{p['name']} - ${p['reseller_price']}")

# Sipariş oluştur + öde
order = client.create_order({
    'product_id': 1,
    'domain': 'example.com'
})

if order['success']:
    payment = client.pay_with_credit(order['order_id'])
    print(f"Ödendi: ${payment['amount_paid']} | Bakiye: ${payment['new_balance']}")

# İstatistikler
stats = client.get_stats()
print(f"Bu ay gelir: ${stats['stats']['monthly_revenue']}")
const axios = require('axios');

class DataSSLClient {
    constructor(apiKey) {
        this.client = axios.create({
            baseURL: 'https://www.datassl.com/api/reseller',
            headers: { 'Content-Type': 'application/json', 'X-API-Key': apiKey }
        });
    }

    async getProducts(filters = {}) {
        return (await this.client.get('/products', { params: filters })).data;
    }

    async createOrder(data) {
        return (await this.client.post('/orders', data)).data;
    }

    async cancelOrder(id) {
        return (await this.client.put(`/orders/${id}`, { action: 'cancel' })).data;
    }

    async getInvoices(status = '') {
        return (await this.client.get('/invoices', { params: { status } })).data;
    }

    async payWithCredit(orderId) {
        return (await this.client.post('/credits', { order_id: orderId })).data;
    }

    async getCertificate(orderId) {
        return (await this.client.get(`/certificate/${orderId}`)).data;
    }

    async downloadCertificate(orderId) {
        return (await this.client.get(`/certificate/${orderId}/download`)).data;
    }

    async getStats() { return (await this.client.get('/stats')).data; }
    async getBalance() { return (await this.client.get('/balance')).data; }
    async getAccount() { return (await this.client.get('/account')).data; }
}

// ─── Kullanım ───
(async () => {
    const client = new DataSSLClient('YOUR_API_KEY');

    // Ürünler
    const { products } = await client.getProducts({ brand: 'Sectigo' });
    products.forEach(p => console.log(`${p.name} - $${p.reseller_price}`));

    // Sipariş + Ödeme
    const order = await client.createOrder({
        product_id: 1, domain: 'example.com',
        san_count: 2
    });

    if (order.success) {
        const payment = await client.payWithCredit(order.order_id);
        console.log(`Ödendi: $${payment.amount_paid}`);
    }

    // İstatistik
    const stats = await client.getStats();
    console.log(`Toplam sipariş: ${stats.stats.total_orders}`);
})();
# ─── Ürünler ───
curl -X GET "https://www.datassl.com/api/reseller/products?brand=Sectigo&type=ssl" \
  -H "X-API-Key: YOUR_API_KEY"

# ─── Sipariş Oluştur ───
curl -X POST "https://www.datassl.com/api/reseller/orders" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "product_id": 1,
    "domain": "example.com",
    "san_count": 2
  }'

# ─── Sipariş İptal ───
curl -X PUT "https://www.datassl.com/api/reseller/orders/12345" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{ "action": "cancel" }'

# ─── Faturalar ───
curl -X GET "https://www.datassl.com/api/reseller/invoices?status=unpaid" \
  -H "X-API-Key: YOUR_API_KEY"

# ─── Kredi ile Öde ───
curl -X POST "https://www.datassl.com/api/reseller/credits" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{ "order_id": 12345 }'

# ─── Sertifika Durumu ───
curl -X GET "https://www.datassl.com/api/reseller/certificate/12345" \
  -H "X-API-Key: YOUR_API_KEY"

# ─── Sertifika İndir ───
curl -X GET "https://www.datassl.com/api/reseller/certificate/12345/download" \
  -H "X-API-Key: YOUR_API_KEY"

# ─── İstatistikler ───
curl -X GET "https://www.datassl.com/api/reseller/stats" \
  -H "X-API-Key: YOUR_API_KEY"

# ─── Bakiye ───
curl -X GET "https://www.datassl.com/api/reseller/balance" \
  -H "X-API-Key: YOUR_API_KEY"

# ─── Hesap Bilgileri ───
curl -X GET "https://www.datassl.com/api/reseller/account" \
  -H "X-API-Key: YOUR_API_KEY"

WHMCS moduli

WHMCS orqali DATASSL mahsulotlarini osongina sotishingiz mumkin. Addon + Server modul tuzilmasi bilan toʻliq integratsiya.

WHMCS Addon + Server Module v5.9.0

Toʻliq boshqaruv paneli, mahsulot konstruktori, buyurtmalarni sinxronlash va avtomatik taʼminlash.

  • WHMCS 7.x / 8.x / 9.x bilan mos
  • Addon paneli: mahsulot konstruktori, buyurtmalarni boshqarish, statistika
  • Mahsulotlarni ommaviy qoʻshish va avtomatik narxlash
  • Cron orqali buyurtmalarni avtomatik sinxronlash
  • Administrator va mijoz interfeysi
  • Server qoʻshish shart emas - API ichiga oʻrnatilgan holda keladi

Oʻrnatish

  1. ZIP faylni yuklab oling va oching
  2. Ikki jildni WHMCS katalogingizga nusxalang:
    • modules/addons/datassl → Addon paneli
    • modules/servers/datassl → Provisioning moduli
  3. WHMCS Admin → Setup → Addon Modules → "DATASSL SSL Certificates" → Activate
  4. Access Control boʻlimidan administrator rollarini tanlang
  5. Addons → DATASSL → Mahsulot konstruktori orqali mahsulotlarni qoʻshing
Server qoʻshish yoki API kalitini kiritish shart emas. API maʼlumotlari modul ichiga oʻrnatilgan holda keladi.