Valider le Token d'Accès
curl --request GET \
--url https://api.oneclickdz.com/v3/validate \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/validate"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/validate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/validate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/validate")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"username": "<string>",
"apiKey": {
"key": "<string>",
"isEnabled": true,
"type": "<string>",
"allowedips": [
{}
],
"scope": "<string>"
}
}
}Core
Valider le Token d'Accès
Valider votre clé API et obtenir des informations sur le compte
GET
/
v3
/
validate
Valider le Token d'Accès
curl --request GET \
--url https://api.oneclickdz.com/v3/validate \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/validate"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/validate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/validate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/validate")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"username": "<string>",
"apiKey": {
"key": "<string>",
"isEnabled": true,
"type": "<string>",
"allowedips": [
{}
],
"scope": "<string>"
}
}
}Vue d’Ensemble
L’endpoint de validation vous permet de vérifier que votre clé API est valide et de récupérer les informations sur le compte associé ainsi que les permissions de la clé.Cet endpoint est utile pour vérifier la validité de la clé API lors du
démarrage de l’application ou après la rotation de la clé.
Réponse
boolean
requis
true si la validation a réussiobject
requis
Afficher properties
Afficher properties
string
Nom d’utilisateur associé à la clé API
object
Détails de la clé API
Exemple de Requête
curl --request GET \
--url https://api.oneclickdz.com/v3/validate \
--header 'X-Access-Token: YOUR_API_KEY'
const response = await fetch("https://api.oneclickdz.com/v3/validate", {
headers: {
"X-Access-Token": process.env.ONECLICKDZ_API_KEY,
},
});
const data = await response.json();
if (data.success) {
console.log("✓ API key is valid");
console.log("Account:", data.data.username);
console.log("Type:", data.data.apiKey.type);
} else {
console.error("✗ API key validation failed");
}
import requests
import os
response = requests.get(
'https://api.oneclickdz.com/v3/validate',
headers={'X-Access-Token': os.getenv('ONECLICKDZ_API_KEY')}
)
data = response.json()
if data['success']:
print('✓ API key is valid')
print(f"Account: {data['data']['username']}")
print(f"Type: {data['data']['apiKey']['type']}")
else:
print('✗ API key validation failed')
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.oneclickdz.com/v3/validate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-Access-Token: ' . getenv('ONECLICKDZ_API_KEY')
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['success']) {
echo "✓ API key is valid\n";
echo "Account: " . $data['data']['username'] . "\n";
echo "Type: " . $data['data']['apiKey']['type'] . "\n";
} else {
echo "✗ API key validation failed\n";
}
?>
Exemple de Réponse
{
"success": true,
"data": {
"username": "+213665983439",
"apiKey": {
"key": "ea27b376-9f5c-4b09-883f-1b96cd7b541c",
"isEnabled": true,
"type": "SANDBOX",
"allowedips": [],
"scope": "READ-WRITE"
}
}
}
Réponses d’Erreur
400 - Token d'Accès Manquant
400 - Token d'Accès Manquant
{
"success": false,
"error": {
"code": "MISSING_ACCESS_TOKEN",
"message": "Access token is required"
},
"requestId": "req_abc123"
}
401 - Token d'Accès Invalide
401 - Token d'Accès Invalide
{
"success": false,
"error": {
"code": "INVALID_ACCESS_TOKEN",
"message": "The provided access token is invalid",
"details": {
"attemptsLeft": 3
}
},
"requestId": "req_abc123"
}
Après 5 tentatives échouées, votre IP sera temporairement bloquée pendant 15 minutes.
403 - IP Bloquée
403 - IP Bloquée
{
"success": false,
"error": {
"code": "IP_BLOCKED",
"message": "Your IP has been temporarily blocked due to too many invalid attempts"
},
"requestId": "req_abc123"
}
Cas d’Utilisation
Validation au Démarrage
Vérifiez la clé API lors de l’initialisation de l’application
Vérifications de Santé
Incluez dans les routines de vérification de santé de l’application
Vérification de l'Environnement
Confirmez que vous utilisez la bonne clé (sandbox ou production)
Vérification des Permissions
Vérifiez la portée et les permissions de la clé avant les opérations
Exemple d’Intégration
class OneClickDzClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = "https://api.oneclickdz.com";
this.validated = false;
}
async validate() {
const response = await fetch(`${this.baseUrl}/v3/validate`, {
headers: { "X-Access-Token": this.apiKey },
});
const data = await response.json();
if (!data.success) {
throw new Error(`API key validation failed: ${data.error.message}`);
}
this.username = data.data.username;
this.keyType = data.data.apiKey.type;
this.scope = data.data.apiKey.scope;
this.validated = true;
console.log(`✓ Authenticated as ${this.username} (${this.keyType})`);
return data.data;
}
async request(endpoint, options = {}) {
if (!this.validated) {
await this.validate();
}
// Check if operation requires write access
if (
options.method &&
options.method !== "GET" &&
this.scope === "READ-ONLY"
) {
throw new Error("This operation requires READ-WRITE access");
}
return fetch(`${this.baseUrl}${endpoint}`, {
...options,
headers: {
...options.headers,
"X-Access-Token": this.apiKey,
},
});
}
}
// Usage
const client = new OneClickDzClient(process.env.ONECLICKDZ_API_KEY);
await client.validate();
// Now make requests
const response = await client.request("/v3/account/balance");
Bonnes Pratiques
Valider au Démarrage
Valider au Démarrage
Validez toujours votre clé API lors du démarrage de l’application
// During app initialization
async function initializeApp() {
try {
await client.validate();
console.log('✓ API client initialized');
} catch (error) {
console.error('✗ Failed to initialize API client:', error);
process.exit(1);
}
}
Mettre en Cache le Résultat de Validation
Mettre en Cache le Résultat de Validation
Ne validez pas à chaque requête - mettez en cache le résultat
let validationCache = {
validated: false,
timestamp: 0,
data: null
};
async function getValidatedClient() {
const now = Date.now();
const cacheExpiry = 5 * 60 * 1000; // 5 minutes
if (validationCache.validated && (now - validationCache.timestamp) < cacheExpiry) {
return validationCache.data;
}
const response = await fetch('https://api.oneclickdz.com/v3/validate', {
headers: { 'X-Access-Token': API_KEY }
});
const data = await response.json();
if (data.success) {
validationCache = {
validated: true,
timestamp: now,
data: data.data
};
}
return data.data;
}
Vérifier l'Environnement
Vérifier l'Environnement
Vérifiez que vous utilisez le bon environnement
const data = await validateApiKey();
const isProduction = process.env.NODE_ENV === 'production';
const keyType = data.apiKey.type;
if (isProduction && keyType === 'SANDBOX') {
throw new Error('⚠️ Using SANDBOX key in production environment!');
}
if (!isProduction && keyType === 'PRODUCTION') {
console.warn('⚠️ Using PRODUCTION key in development environment!');
}
Gérer Gracieusement
Gérer Gracieusement
Implémentez une gestion d’erreur appropriée
async function validateWithRetry(maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch('https://api.oneclickdz.com/v3/validate', {
headers: { 'X-Access-Token': API_KEY }
});
const data = await response.json();
if (data.success) {
return data.data;
}
if (data.error.code === 'INVALID_ACCESS_TOKEN') {
throw new Error('Invalid API key - check your configuration');
}
if (data.error.code === 'IP_BLOCKED') {
throw new Error('IP blocked - too many failed attempts');
}
} catch (error) {
if (i === maxRetries - 1) throw error;
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)));
}
}
}
Endpoints Connexes
Vérification de Santé
Vérifier l’état du service API
Obtenir le Solde
Vérifier le solde de votre compte
⌘I

