RÉFÉRENCE API

API REST complète pour la plateforme de scan de sécurité et conformité WarDek.

AUTHENTIFICATION

Toutes les requêtes API nécessitent une authentification via un jeton Bearer dans l’en-tête Authorization header. Les clés API peuvent être générées depuis votre Tableau de bord dans Paramètres.

Authorization: Bearer ssk_live_your_api_key_here
Les clés API commencent par ssk_live_ pour la production and ssk_test_ pour le bac à sable. Gardez vos clés secrètes et ne les committez jamais dans le contrôle de version.

URL DE BASE

https://wardek.io

ENDPOINTS

POST/api/v1/scanAUTH REQUISE

Lancer un scan

Démarrer un nouveau scan de sécurité sur une URL cible. Retourne les résultats du scan avec un score de sécurité.

Corps de la requête

interface ScanRequest {
  url: string;
  ci?: {
    minScore?: number;
    maxCritical?: number;
    maxHigh?: number;
  };
}

Réponse

interface ScanResponse {
  schemaVersion: string;
  id: string;
  url: string;
  domain: string;
  status: string;
  score: number;
  grade: string;
  duration: number;
  findingSummary: FindingSummary;
  criticalCount: number;
  highCount: number;
  reportUrl: string;
  ci?: CiGateResult;
  results: Record<string, object>;
  recommendations: string[];
  createdAt: string;
}

Exemples

cURL
curl -X POST https://wardek.io/api/v1/scan \
  -H "Authorization: Bearer ssk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'
TypeScript
const res = await fetch('https://wardek.io/api/v1/scan', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ssk_live_...',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ url: 'https://example.com' }),
});
const scan = await res.json();
GET/api/v1/scansAUTH REQUISE

Lister les scans

Récupérer une liste paginée de vos scans, triés du plus récent au plus ancien.

Réponse

interface ScanListResponse {
  data: ScanSummary[];
  pagination: {
    total: number;
    limit: number;     // 1-100, default 10
    offset: number;    // default 0
    hasMore: boolean;
  };
}

Exemples

cURL
curl "https://wardek.io/api/v1/scans?limit=10&offset=0" \
  -H "Authorization: Bearer ssk_live_..."
TypeScript
const res = await fetch(
  'https://wardek.io/api/v1/scans?limit=10&offset=0',
  { headers: { 'Authorization': 'Bearer ssk_live_...' } }
);
const { data, pagination } = await res.json();
GET/api/v1/scans/:idAUTH REQUISE

Détails d’un scan

Récupérer les détails complets d’un scan spécifique, y compris tous les résultats de modules et les conclusions.

Réponse

// Same structure as POST /api/v1/scan response
// with additional fields: auditTrail, proof, remediation

Exemples

cURL
curl https://wardek.io/api/v1/scans/scan_abc123 \
  -H "Authorization: Bearer ssk_live_..."
TypeScript
const res = await fetch(
  'https://wardek.io/api/v1/scans/scan_abc123',
  { headers: { 'Authorization': 'Bearer ssk_live_...' } }
);
const scan = await res.json();
GET/api/scans/:id/exportAUTH REQUISE

Exporter les résultats

Exporter les résultats d’un scan. Formats supportés : json, yaml, csv, sarif. Ajoutez ?format=<format>.

Réponse

// JSON format: Full scan object
// YAML format: YAML-serialized scan object
// Content-Type varies by format

Exemples

cURL
# JSON export
curl https://wardek.io/api/scans/scan_abc123/export?format=json \
  -H "Authorization: Bearer ssk_live_..."

# YAML export
curl https://wardek.io/api/scans/scan_abc123/export?format=yaml \
  -H "Authorization: Bearer ssk_live_..."
TypeScript
const res = await fetch(
  'https://wardek.io/api/scans/scan_abc123/export?format=json',
  { headers: { 'Authorization': 'Bearer ssk_live_...' } }
);
const data = await res.json();

LIMITES DE DÉBIT

Les limites de débit sont appliquées par clé API. Le dépassement des limites retourne un statut 429 status avec un en-tête Retry-After header.

PlanScansDébit
FREE3 / monthTableau de bord uniquement
PRO50 / monthTableau de bord uniquement
COMPLIANCE+UnlimitedTableau de bord uniquement
ENTERPRISEUnlimitedAccès API (limite quotidienne)

CODES D’ERREUR

CodeMessageDescription
400Bad RequestURL invalide ou corps de requête malformé.
401UnauthorizedClé API manquante ou invalide.
403ForbiddenLimite de scans atteinte pour votre plan.
429Too Many RequestsLimite de débit dépassée. Réessayez après la valeur de l’en-tête Retry-After.
500Internal Server ErrorErreur serveur inattendue. Contactez le support si persistant.

Format de réponse d’erreur

{
  "error": {
    "code": 429,
    "message": "Rate limit exceeded",
    "retryAfter": 60
  }
}