Skip to content

API Secrets

Gérez les secrets avec chiffrement côté client et architecture Zero Knowledge en utilisant nos SDK officiels.

🔐 Aperçu

L'API Secrets vous permet de créer, récupérer, lister et supprimer des secrets chiffrés à travers nos librairies clientes officielles. Tout le chiffrement, l'authentification et les détails techniques sont gérés automatiquement par les SDK.

SDK Officiels :

📋 Lister les Secrets

Obtenez les secrets de votre entreprise avec pagination automatique.

Utilisation SDK

bash
sharokey list --status active --limit 10
javascript
const secrets = await client.listSecrets({ status: 'active', limit: 10 });
javascript
const secrets = await Sharokey.list({ status: 'active', limit: 10 });
python
secrets = await client.list_secrets(status='active', limit=10)

Format de Réponse

json
{
  "success": true,
  "message": "Secrets récupérés avec succès",
  "data": [
    {
      "slug": "ABC123XY",
      "description": "Mot de passe base de données",
      "message": "Manipuler avec précaution",
      "creator": "[email protected]",
      "maximum_views": 1,
      "current_views": 0,
      "expiration": "2025-08-11T18:52:37.000000Z",
      "has_password": false,
      "has_attachments": true,
      "attachments_count": 2,
      "is_expired": false,
      "status": "active",
      "created_at": "2025-08-10T18:52:37.000000Z",
      "updated_at": "2025-08-10T18:52:37.000000Z"
    }
  ],
  "pagination": {
    "current_page": 1,
    "per_page": 50,
    "total": 125,
    "last_page": 3
  }
}

✨ Créer un Secret

Créez un nouveau secret chiffré avec pièces jointes optionnelles.

Utilisation SDK

bash
sharokey create "Mon contenu secret" --hours 24 --views 1 --description "Identifiants base de données"
javascript
const secret = await client.createSecret("Mon contenu secret", {
  hours: 24,
  views: 1,
  description: "Identifiants base de données",
  password: "secure123"
});
javascript
const secret = await Sharokey.create("Mon contenu secret", 24, 1, {
  description: "Identifiants base de données",
  password: "secure123"
});
python
secret = await client.create("Mon contenu secret", 
  hours=24, 
  views=1,
  description="Identifiants base de données",
  password="secure123"
)

Format de Réponse

json
{
  "success": true,
  "message": "Secret créé avec succès",
  "data": {
    "slug": "ABC123XY",
    "description": "Identifiants base de données",
    "message": "À utiliser dans les 24 heures", 
    "expires_in_hours": 24,
    "maximum_views": 1,
    "current_views": 0,
    "expiration": "2025-08-11T18:52:37.000000Z",
    "has_attachments": true,
    "attachments_count": 1,
    "share_url": "https://passlink.domaindev/ABC123XY#keyB_part_here",
    "created_at": "2025-08-10T18:52:37.000000Z"
  }
}

👁️ Obtenir les Détails d'un Secret

Récupérez les métadonnées d'un secret spécifique (sans déchiffrer le contenu).

Utilisation SDK

bash
sharokey get ABC123XY --details-only
javascript
const details = await client.getSecretDetails("ABC123XY");
javascript
const details = await Sharokey.getDetails("ABC123XY");
python
details = await client.get_details("ABC123XY")

Format de Réponse

json
{
  "success": true,
  "data": {
    "slug": "ABC123XY",
    "description": "Identifiants base de données",
    "message": "À utiliser dans les 24 heures",
    "creator": "[email protected]",
    "maximum_views": 1,
    "current_views": 0,
    "expiration": "2025-08-11T18:52:37.000000Z",
    "has_password": true,
    "has_attachments": true,
    "attachments": [
      {
        "name": "config.json"
      }
    ],
    "captcha": false,
    "otp_type": "email",
    "ip_whitelist": "192.168.1.0/24,10.0.0.1",
    "geolocation": "FR,US,CA",
    "is_expired": false,
    "status": "active",
    "share_url": "https://passlink.domaindev/ABC123XY",
    "created_at": "2025-08-10T18:52:37.000000Z",
    "updated_at": "2025-08-10T18:52:37.000000Z"
  }
}

🗑️ Supprimer un Secret

Supprimez un secret en effaçant son contenu et en l'expirant immédiatement.

Utilisation SDK

bash
sharokey delete ABC123XY
javascript
await client.deleteSecret("ABC123XY");
javascript
await Sharokey.delete("ABC123XY");
python
await client.delete("ABC123XY")

Format de Réponse

json
{
  "success": true,
  "message": "Secret supprimé avec succès",
  "data": null
}

📊 Statistiques d'Entreprise

Obtenez les statistiques d'utilisation de votre entreprise.

Utilisation SDK

bash
sharokey stats
javascript
const stats = await client.getStats();
javascript
const stats = await Sharokey.getStats();
python
stats = await client.get_stats()

Format de Réponse

json
{
  "success": true,
  "message": "Statistiques des secrets récupérées avec succès",
  "data": {
    "total_secrets": 1247,
    "active_secrets": 89,
    "expired_secrets": 1158,
    "total_views": 5432,
    "secrets_with_password": 156,
    "secrets_created_today": 12,
    "secrets_created_this_week": 87,
    "secrets_created_this_month": 234
  }
}

🚨 Réponses d'Erreur

Tous les SDK gèrent ces erreurs automatiquement et fournissent des objets d'erreur structurés.

Erreurs d'Authentification

json
{
  "success": false,
  "error": {
    "code": "AUTHENTICATION_ERROR",
    "message": "Token invalide ou expiré"
  }
}

Erreurs de Validation

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Le champ content est requis",
    "details": {
      "content": ["Le champ content est requis"],
      "expiration": ["Doit être entre 1 et 1000 heures"]
    }
  }
}

Quota Dépassé

json
{
  "success": false,
  "error": {
    "code": "QUOTA_EXCEEDED", 
    "message": "Vous avez atteint le nombre maximum de secrets autorisés pour votre plan actuel."
  }
}

Non Trouvé

json
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Secret non trouvé ou expiré"
  }
}

Permission Refusée

json
{
  "success": false,
  "error": {
    "code": "PERMISSION_DENIED",
    "message": "Permissions insuffisantes pour créer des secrets"
  }
}

🔐 Sécurité & Chiffrement

Architecture Zero Knowledge

Tous les SDK implémentent le chiffrement côté client automatiquement :

  • Algorithme : AES-256-GCM avec dérivation de clé PBKDF2
  • Division de clé : Le serveur stocke keyA, le fragment d'URL contient keyB
  • IV/Salt : Générés automatiquement par secret
  • Aucun texte clair : Le serveur ne voit jamais le contenu de vos secrets

Fonctionnalités de Sécurité SDK

  • Gestion automatique des tokens et stockage sécurisé
  • Chiffrement côté client avant transmission
  • Génération et division sécurisées des clés
  • Validation et assainissement des entrées
  • Gestion d'erreurs sans exposition de données

🔗 Documentation Liée

Released under the MIT License.