Skip to main content
DigiCert, Sectigo and GeoTrust SSL certificates
+90 850 259 76 06 WhatsApp Support Become a Reseller
SSL Certificates
Brands
Code Signing LEI Code
Tools
Support Contact WhatsApp Cart
Language
Currency
Get an SSL Certificate
v3.0

API Documentation

Connect SSL certificate management to automation with the DATASSL Reseller API

Getting Started

DATASSL Reseller API v3.0 lets you programmatically manage SSL certificate orders, invoicing operations and credit payments through your reseller account.

Requirements
  • An active reseller account and a defined reseller group
  • API key (you can create it from your reseller panel)
  • API erişimi açık olmalı (Panel > API & Entegrasyonlar)

Base URL

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

Request Format

All requests and responses are in JSON format.

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

General Response Structure

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

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

Identity Validation

Use one of the following methods in all API requests:

Method 1: X-API-Key Header

X-API-Key: YOUR_API_KEY

Method 2: Bearer Token

Authorization: Bearer YOUR_API_KEY
How to Get an API Key?
  1. Log in to your reseller panel
  2. API & Entegrasyonlar Open the page
  3. Click the "Create API Key" button
  4. Store the generated key in a safe place

All Endpoints

Method Endpoint Description
Products
GET /products Product list (with filter support)
GET /products/{id} Product details + SAN prices
GET /san-pricing/{id} SAN/Wildcard SAN pricing
Orders
GET /orders Order list (with filter support)
GET /orders/{id} Order details
POST /orders Create new order (SAN supported)
PUT /orders/{id} Order actions (cancel)
SSL Management
POST /ssl/configure SSL configuration (CSR, DCV, admin details)
GET /ssl/{order_id} SSL status query + validation details
POST /ssl/resend-validation Resend validation email
POST /ssl/change-dcv Change DCV method
POST /ssl/reissue Reissue certificate
POST /csr/decode CSR decode (domain, org, SAN details)
Invoices
GET /invoices Invoice list
GET /invoices/{id} Invoice details
Credit & Payment
GET /credits Credit balance + transaction history
POST /credits Pay order with credit
GET /balance Balance and recent transactions
Certificate
GET /certificate/{order_id} Certificate status information
GET /certificate/{order_id}/download Download certificate (PEM + CA Bundle)
Account & Statistics
GET /account Account information
GET /stats Statistics and charts

Products

Group-Based Access: The API returns only the products assigned to your reseller group. Prices are calculated automatically using group-specific prices.

Product List

GET /products
Filter Parameters
Brand Brand filter (Sectigo, DigiCert, Thawte...)
Type Type filter (ssl, wildcard, multi-domain, code-signing)
validation Validation type (dv, ov, ev)
GET /products?brand=Sectigo&type=ssl&validation=dv

Response

{
  "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."
}

Product Details

GET /products/{id}

Returns SAN prices, all multi-year pricing and all detail information for a single product.

SAN Pricing

GET /san-pricing/{product_id}

Returns detailed SAN and Wildcard SAN prices for the product.

Orders

Order List

GET /orders
Filter Parameters
Status Status filter (pending, processing, completed, cancelled)
domain Domain search
limit Records per page (max. 100, default 50)
offset Starting point (pagination)
GET /orders?status=pending&limit=20&offset=0

Order Details

GET /orders/{id}

Create New Order

POST /orders
Body Parameters
product_id * Product ID (must be defined in your group)
domain * Domain name (except code signing)
period Duration (months, default 12). This is the subscription period; certificate validity is max. 200 days and is renewed automatically.
san_count Number of additional SANs
san_wildcard_count Number of additional Wildcard SANs
Automatic Credit Payment

When the order is created, the amount is automatically deducted from your credit balance. The order cannot be created if the balance is insufficient (HTTP 402).

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

Response

{
  "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"
}

Cancel Order

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

Only Pending or Processing orders can be cancelled.

Order Statuses

Pending Pending (awaiting payment)
Processing Processing
validation_pending Awaiting domain validation
pending_configuration Awaiting configuration
Completed Completed / Active
Cancelled Cancelled
Expired Expired

SSL Management

SSL endpoints are used for certificate configuration after ordering, status queries, DCV changes and reissue operations.

SSL Configuration

POST /ssl/configure

After the order is created, configure the SSL certificate by sending the CSR and DCV details.

order_id * Order ID
csr * Certificate Signing Request (PEM)
dcv_method Validation method: email, http, https, dns (default: email)
approver_email Approval email (for email DCV)

SSL Status Query

GET /ssl/{order_id}

Returns real-time status, validation details (HTTP/DNS/Email instructions) and SAN validation information. Saves the certificate automatically if it is ready.

Change DCV Method

POST /ssl/change-dcv
order_id * Order ID
dcv_method * New DCV method: email, http, https, dns
approver_email New approval email

Resend Validation Email

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

Reissue Certificate (Reissue)

POST /ssl/reissue
Auto-Renewal: Under the 198-day rule, the system automatically performs a reissue before your certificate's validity period expires. A manual reissue can also be done with this endpoint.
order_id * Order ID (active certificate required)
csr New CSR (optional; if empty, the existing one is used)
dcv_method DCV method
approver_email Approval email

CSR Decode

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

Extracts the domain, organization, SAN list and other details from the CSR.

198-Day Rule & Automatic Renewal

CA/Browser Forum Decision: As of March 15, 2026, SSL/TLS certificates may be valid for a maximum of 200 days (~6.5 months). Code Signing certificates are exempt from this rule.

How It Works?

When a customer buys a 1-year SSL certificate:

  1. Certificate max. 200 days validity is issued
  2. The certificate is automatically reissued 14 days before it expires (reissue)
  3. Throughout the purchase period (1/2/3 years), this process at no extra charge is repeated

New Fields in the Order Response

auto_reissue_enabled boolean — Whether automatic renewal is active (in all SSL products except code signing true)
max_validity_days integer — Max. certificate validity period (days). Currently: 200
purchase_end_date string (YYYY-MM-DD) — Subscription end date (end of the paid period)
next_reissue_at string (YYYY-MM-DD) — Sonraki otomatik yenileme tarihi
reissue_count integer — Number of automatic renewals performed to date

Validity Phases (Roadmap)

Date Max. Validity Status
15 March 2026 200 days Active
15 March 2027 100 days Upcoming
15 March 2029 47 days Upcoming

Example Scenario: 1-Year 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"
}
Code Signing Exception: Code Signing and EV Code Signing certificates are exempt from the 198-day rule. For these products auto_reissue_enabled always returns false as the value.

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
AlanRequiredDescription
product_idYesAbonelik ürününün kimliği
domainYesAlan adı. wildcard_only ürünlerde *.example.com biçiminde. www adresi kendiliğinden eklenir.
contact_emailais –Sertifika 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" }
}

Setup details

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.

Invoices

Invoice List

GET /invoices
Status Status filter (unpaid, paid, cancelled, sent)
limit Records per page (max. 100)
offset Starting point

Response

{
  "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 }
}

Invoice Details

GET /invoices/{id}

Credit & Payment

USD-Based: All credit balances and transactions are kept in USD.

Credit Balance & Transaction History

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 }
}

Pay Order with Credit

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
}
An error is returned if the balance is insufficient. We recommend checking your balance before payment.

Check Balance (Short)

GET /balance

Returns the balance information together with the last 10 transactions.

Certificate

Certificate Status

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
  }
}

Download Certificate

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."
  }
}

Statistics

GET /stats

Returns comprehensive statistics and chart data for your reseller account.

{
  "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
    }
  }
}

Account Information

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
    }
  }
}

Error Codes

Code Meaning Description
400 Bad Request Invalid or missing parameters
401 Unauthorized Invalid API key or API access disabled
403 Forbidden Reseller group undefined or no access to the product
404 Not Found Resource not found (order, certificate)
405 Method Not Allowed HTTP method is not supported for this endpoint
500 Server Error Server error

Error Response

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

Code Examples

<?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 Module

You can easily sell DATASSL products through WHMCS. Full integration with an Addon + Server module structure.

WHMCS Addon + Server Module v5.9.0

Full management panel, product builder, order synchronization and automatic provisioning.

  • compatible with WHMCS 7.x / 8.x / 9.x
  • Addon Panel: Product builder, order management, statistics
  • Bulk product import and automatic pricing
  • Automatic order synchronization via cron
  • Admin and client interface
  • No need to add a server - the API comes built in

Installation

  1. Download and extract the ZIP file
  2. Copy the two folders to your WHMCS directory:
    • modules/addons/datassl → Addon paneli
    • modules/servers/datassl → Provisioning module
  3. WHMCS Admin → Setup → Addon Modules → "DATASSL SSL Certificates" → Activate
  4. Select the admin roles in Access Control
  5. Add the products with Addons → DATASSL → Product Builder
No need to add a server or enter an API key. The API details come built into the module.