# Gère les licences avec l’API Licensing

> Apprends à utiliser l’API REST de SecureMailMerge pour attribuer et retirer des licences automatiquement avec des clés API.

Le serveur de licences fournit une API REST qui te permet d’assigner et de désassigner des licences de manière programmatique. C’est utile pour les revendeurs gérant plusieurs clients, les équipes IT automatisant l’intégration, ou toute personne intégrant la gestion des licences dans ses propres outils.
## Authentification et URL de base

Toutes les requêtes API sont authentifiées à l'aide d'une clé API. La clé API est un GUID que tu inclus dans le corps de la requête (pas dans un en-tête).

Tous les points de terminaison API sont disponibles à :

```
https://licensing.solinventum.com/api/manage/{subscriptionType}/{subscriptionID}
```

Où :
- `subscriptionType` est l'un des suivants : `Paddle`, `Azure`, ou `Manual`
- `subscriptionID` est le GUID de ton abonnement

Tu n'as pas besoin de construire cette URL toi-même. Sur le serveur de licences, va à la page "Attribuer des licences" de ton abonnement et sélectionne l'onglet **Attribuer des licences via API**. Cela affichera l'URL de base complète, ta clé API, et un payload JSON prêt à l'emploi pour ton abonnement.

### Régénérer ta clé API

Si ta clé API est compromise, tu peux la régénérer depuis la même page. L'ancienne clé est invalidée immédiatement. Seul le propriétaire de l'abonnement peut régénérer les clés API. Utilise toujours HTTPS lorsque tu appelles l'API et garde ta clé API secrète - toute personne disposant de ta clé API peut attribuer et retirer des licences sur ton abonnement.

[Ouvrir le serveur de licences →](https://licensing.solinventum.com/app/)
## Attribuer des licences

Ajoute des attributions de licences à une ou plusieurs adresses e-mail.

```
PUT /api/manage/{subscriptionType}/{subscriptionID}
Content-Type: application/json
```

### Corps de la requête

```json
{
  "apiKey": "4024d0d8-9a7d-4ac3-9e61-efaeb7c278df",
  "emails": ["user1@example.com", "user2@example.com"]
}
```

| Champ | Type | Description |
|-------|------|-------------|
| `apiKey` | chaîne (GUID) | Ta clé API d'abonnement |
| `emails` | tableau de chaînes | Adresses e-mail auxquelles attribuer des licences |

### Réponse

**Succès (200) :**

```json
{
  "success": true,
  "errors": [],
  "assignmentStats": {
    "availableLicenses": 10,
    "assignedLicenses": 7
  }
}
```

**Licences insuffisantes (402) :**

Renvoyé lorsque tu essaies d'attribuer plus de licences que ce que ton abonnement permet.

**Mauvaise requête (400) :**

Renvoyé pour des erreurs de validation comme un format d'e-mail invalide, des e-mails en double ou des champs manquants.

### Règles de validation

- Au moins une adresse e-mail doit être fournie
- Chaque e-mail doit être dans un format valide et ne pas dépasser 256 caractères
- Les e-mails en double dans la même requête sont rejetés
- Tu ne peux pas attribuer plus de licences que ce que ton abonnement a de disponible

### Exemples

#### cURL

```bash
curl -X PUT \
  https://licensing.solinventum.com/api/manage/Paddle/ff3d3cf5-5388-40a0-915f-970c1d2d972f \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "4024d0d8-9a7d-4ac3-9e61-efaeb7c278df",
    "emails": ["newuser@example.com"]
  }'
```

#### PowerShell

```powershell
$body = @{
    apiKey = "4024d0d8-9a7d-4ac3-9e61-efaeb7c278df"
    emails = @("newuser@example.com")
} | ConvertTo-Json

Invoke-RestMethod `
  -Method Put `
  -Uri "https://licensing.solinventum.com/api/manage/Paddle/ff3d3cf5-5388-40a0-915f-970c1d2d972f" `
  -ContentType "application/json" `
  -Body $body
```
## Désattribuer des licences

Supprime les attributions de licence d'une ou plusieurs adresses e-mail.

```
DELETE /api/manage/{subscriptionType}/{subscriptionID}
Content-Type: application/json
```

### Corps de la requête

```json
{
  "apiKey": "4024d0d8-9a7d-4ac3-9e61-efaeb7c278df",
  "emails": ["user1@example.com"]
}
```

Le format du corps de la requête est le même que pour l'attribution des licences.

### Réponse

**Succès (200) :**

```json
{
  "success": true,
  "errors": [],
  "assignmentStats": {
    "availableLicenses": 10,
    "assignedLicenses": 6
  }
}
```

**Mauvaise requête (400) :**

Renvoyé si les adresses e-mail spécifiées ne sont pas actuellement attribuées à l'abonnement.

### Exemple

```bash
curl -X DELETE \
  https://licensing.solinventum.com/api/manage/Paddle/ff3d3cf5-5388-40a0-915f-970c1d2d972f \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "4024d0d8-9a7d-4ac3-9e61-efaeb7c278df",
    "emails": ["olduser@example.com"]
  }'
```
## Gestion des erreurs

| Code d'état | Signification |
|-------------|--------------|
| 200 | Requête réussie |
| 400 | Requête invalide (vérifie le tableau `errors` dans la réponse) |
| 402 | Licences insuffisantes disponibles |
| 404 | Abonnement non trouvé ou clé API ne correspond pas |

Vérifie toujours le champ `success` et le tableau `errors` dans le corps de la réponse pour les détails sur ce qui a mal tourné.
