API Développeurs StockPro Desktop

L'API StockPro Desktop permet aux partenaires approuvés de générer et de gérer des licences de manière automatique, directement depuis leurs propres systèmes.

Cette API est exclusivement réservée aux partenaires disposant d'un accès validé. Pour obtenir vos identifiants, consultez notre Programme Partenaire.

URL de base

BASE URLhttps://stockpro-desktop.com/api/v1

Authentification

Toutes les requêtes envoyées à l'API doivent inclure deux en-têtes d'authentification. Votre clé API est disponible dans votre espace partenaire.

En-têteValeurRequis
AuthorizationBearer YOUR_API_KEYRequis
X-Partner-KeyYOUR_API_KEYRequis
Content-Typeapplication/jsonRecommandé

Exemple d'en-têtes :

                            
Authorization: Bearer sp_partner_a1b2c3d4e5f6...
X-Partner-Key: sp_partner_a1b2c3d4e5f6...
Content-Type: application/json
                        
Les requêtes sans authentification valide seront automatiquement rejetées avec une erreur 401 Unauthorized. Assurez-vous que les deux en-têtes sont identiques et correspondent bien à votre clé API active.

Codes de réponse HTTP

CodeSignification
200Succès — la requête a été traitée correctement
400Mauvaise requête — corps ou paramètres invalides
401Non autorisé — clé API manquante ou invalide
403Accès refusé — le compte partenaire est inactif
404Non trouvé — la ressource demandée n'existe pas
429Trop de requêtes — limite de débit dépassée
500Erreur serveur — erreur interne lors du traitement

Limite de débit

L'API est soumise à une limite de débit de 30 requêtes par minute par clé API. Si cette limite est dépassée, l'API répond avec un code 429 et un en-tête Retry-After indiquant le nombre de secondes avant de pouvoir réessayer.

HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0

{
"status": "error",
"message": "Too many requests. Please try again later.",
"retry_after_seconds": 42
}
POST/licensesCréer une licence

Génère une nouvelle licence pour un client au nom du partenaire authentifié. La génération d'une licence déclenche la facturation côté partenaire. Une licence créée ne peut pas être annulée.

Corps de la requête

ChampTypeRequisDescription
customer_namestringRequisNom du client
customer_emailstringRequisEmail du client (doit correspondre à l'email admin dans le logiciel)
license_typestringRequisType de licence : standard ou pro

Exemple de requête

POST https://stockpro-desktop.com/api/v1/licenses
Authorization: Bearer sp_partner_a1b2c3d4e5f6...
X-Partner-Key: sp_partner_a1b2c3d4e5f6...
Content-Type: application/json

{
  "customer_name": "Jean Dupont",
  "customer_email": "jean.dupont@example.com",
  "license_type": "pro"
}

Réponse en cas de succès (200)

{
  "status": "success",
  "license_key": "SPRO-AB123-CD456-EF789",
  "license_type": "pro"
}

Réponse en cas d'erreur de validation (400)

{
  "status": "error",
  "message": "Validation failed.",
  "errors": [
    "customer_email is required and must be a valid email address.",
    "license_type is required and must be either \"standard\" or \"pro\"."
  ]
}
⚠️
L'adresse email du client doit correspondre exactement à l'adresse email de l'administrateur enregistré dans le logiciel StockPro Desktop. Sans correspondance, la licence ne pourra pas être activée par le client.
GET/licensesLister les licences

Retourne la liste de toutes les licences générées par le partenaire authentifié, triées par date de création décroissante.

Paramètres de requête (optionnels)

ParamètreTypeDescription
license_typestringFiltrer par type : standard ou pro
limitintegerNombre maximum de résultats à retourner
offsetintegerDécalage pour la pagination (commence à 0)

Exemple de requête

GET https://stockpro-desktop.com/api/v1/licenses?license_type=pro&limit=10
Authorization: Bearer sp_partner_a1b2c3d4e5f6...
X-Partner-Key: sp_partner_a1b2c3d4e5f6...

Réponse en cas de succès (200)

{
  "status": "success",
  "count": 2,
  "licenses": [
    {
      "id": "a1b2c3d4-...",
      "license_key": "SPRO-AB123-CD456-EF789",
      "partner_id": "uuid-partenaire",
      "customer_name": "Jean Dupont",
      "customer_email": "jean.dupont@example.com",
      "license_type": "pro",
      "created_at": "2026-03-08T10:30:00.000Z"
    },
    {
      "id": "e5f6g7h8-...",
      "license_key": "SPRO-CD789-EF012-GH345",
      "partner_id": "uuid-partenaire",
      "customer_name": "Marie Curie",
      "customer_email": "marie.curie@example.com",
      "license_type": "standard",
      "created_at": "2026-03-07T14:15:00.000Z"
    }
  ]
}
GET/licenses/:licenseKeyRécupérer une licence

Retourne les informations d'une licence spécifique identifiée par sa clé. Seules les licences appartenant au partenaire authentifié sont accessibles.

Paramètre de chemin

ParamètreTypeDescription
licenseKeystringLa clé de licence (ex. SPRO-AB123-CD456-EF789)

Exemple de requête

GET https://stockpro-desktop.com/api/v1/licenses/SPRO-AB123-CD456-EF789
Authorization: Bearer sp_partner_a1b2c3d4e5f6...
X-Partner-Key: sp_partner_a1b2c3d4e5f6...

Réponse en cas de succès (200)

{
  "status": "success",
  "license": {
    "id": "a1b2c3d4-...",
    "license_key": "random@thing-some-string-CD456-EF789",
    "partner_id": "uuid-partenaire",
    "customer_name": "Jean Dupont",
    "customer_email": "jean.dupont@example.com",
    "license_type": "pro",
    "created_at": "2026-03-08T10:30:00.000Z"
  }
}

Réponse si non trouvé (404)

{
  "status": "error",
  "message": "License not found."
}

Bonnes pratiques de sécurité

  • Ne jamais exposer votre clé API publiquement. Votre clé ne doit jamais apparaître dans du code JavaScript côté navigateur, dans un dépôt Git public ou dans une application mobile.
  • Stocker la clé API côté serveur. Toutes les requêtes à l'API StockPro doivent être effectuées depuis votre backend. Utilisez des variables d'environnement pour stocker vos credentials.
  • Utiliser exclusivement HTTPS. L'API n'accepte que les connexions chiffrées. Ne transmettez jamais votre clé via HTTP.
  • Gérer les erreurs correctement. Vérifiez systématiquement le code de réponse HTTP et le champ status dans le corps de la réponse avant de considérer qu'une licence a été générée.
  • Respecter les limites de débit. Implémentez un mécanisme de retry avec backoff exponentiel si vous recevez un code 429.
  • Ne pas régénérer une licence existante. Vérifiez avant toute génération si une licence a déjà été créée pour l'adresse email concernée via le endpoint GET /licenses.

Exemple d'intégration (Node.js)

Voici un exemple complet de génération de licence depuis un backend Node.js :

const response = await fetch(
  'https://stockpro-desktop.com/api/v1/licenses',
  {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${ process.env.STOCKPRO_API_KEY } `,
      'X-Partner-Key': process.env.STOCKPRO_API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      customer_name: 'Jean Dupont',
      customer_email: 'jean.dupont@example.com',
      license_type: 'pro',
    }),
  }
);

const result = await response.json();

if (result.status === 'success') {
  console.log('Licence générée :', result.license_key);
  // Envoyer la licence au client...
} else {
  console.error('Erreur :', result.message);
}

Support développeurs

Si vous rencontrez des difficultés lors de l'intégration de l'API, notre équipe technique est disponible pour vous accompagner.

Objet : Support API