Créer et suspendre un MSP par l'API
Ce que fait ce parcours
Un revendeur vend BaaStide dans son propre produit. Son produit crée un MSP par client, enrôle les machines, lance les sauvegardes et suspend un MSP quand le client arrête de payer. Aucune personne n'ouvre le portail.
Ce parcours utilise deux clés :
| Clé de provisionnement | Clé API du MSP | |
|---|---|---|
| Début de la clé | bst_prov_ | bst_msp_ |
| Qui la détient | Le revendeur. Une seule clé pour tous ses MSP. | Un seul MSP. |
| Qui la crée | L'équipe de la plateforme. | La clé de provisionnement, à la création du MSP ou plus tard. |
| Ce qu'elle fait | Crée un MSP, liste ses MSP, les suspend et les réactive, gère leurs clés API. | Appelle l'API de son MSP : clients, machines, sauvegardes, politiques, restaurations, alertes, jetons d'enrôlement, journal d'audit. |
| Expiration | Aucune par défaut. | 365 jours par défaut, 730 jours au plus. |
| Renouvellement | Non. | Oui : deux clés vivantes par MSP. |
Cette page donne les étapes dans l'ordre. Chaque étape nomme la clé et la portée nécessaires.
Prérequis
- Une clé de provisionnement. Voir Clés de provisionnement.
- L'adresse du portail qui vous sert, par exemple
https://portail.example.com/api. - Un coffre à secrets pour garder les clés API des MSP.
- Les règles communes des appels. Voir Appeler l'API REST.
1. Créer un MSP
- Appelez
POST /provisioning/mspsavec la clé de provisionnement. - Dans le corps, donnez
name: le nom du MSP, de 1 à 100 caractères. - Ajoutez
api_keysi vous voulez choisir le nom, les portées, l'expiration ou les adresses de la première clé API. - Lisez la réponse. Le champ
mspdonne l'identifiant du MSP. Le champapi_keydécrit sa première clé API. Le champsecretdonne la clé elle-même. - Enregistrez
secretdans votre coffre à secrets.
POST /api/provisioning/msps HTTP/1.1
Authorization: Bearer bst_prov_...
Content-Type: application/json
{"name": "Acme IT", "api_key": {"name": "integration-acme"}}
Le champ secret est affiché dans cette réponse seulement. BaaStide ne le garde pas en clair.
Sans champ api_key, la première clé prend le nom provisioning, les portées read, operate et
browse, et une expiration de un an.
Le nouveau MSP n'a aucun utilisateur. BaaStide n'envoie aucune invitation et aucun email. Ses sauvegardes vont vers le stockage par défaut de la plateforme.
Dans les étapes suivantes, la clé API du MSP remplace la clé de provisionnement.
2. Vérifier la clé API du MSP
- Appelez
GET /mspavec la clé API du MSP. Cette route demande la portéeread. - Lisez la réponse : elle donne
id,nameetstatus.
Un status égal à active confirme que la clé fonctionne.
3. Créer un client
Un client est l'entreprise dont vous sauvegardez les machines.
- Appelez
POST /clientsavec la clé API du MSP. Cette route demande la portéeoperate. - Dans le corps, donnez
name: le nom du client. - Lisez le champ
idde la réponse : c'est l'identifiant du client.
Voir Clients pour la même action dans le portail.
4. Enrôler une machine
- Appelez
POST /enrollment-tokensavec la portéeoperate. Dans le corps, donnezclient_id. - Lisez la réponse. Le champ
tokenest le jeton. Le champinstall_commanddonne la commande d'installation Linux. Le champinstall_command_windowsdonne la commande PowerShell. - Lancez
install_commanden tant que root sur la machine Linux, ouinstall_command_windowsdans une console PowerShell élevée sur la machine Windows. - Appelez
GET /enrollment-tokens?client_id=<identifiant du client>et cherchez votre jeton dansitems. Quand son champused_by_endpoint_idest rempli, la machine est enrôlée. Cet identifiant est celui de l'endpoint. - Appelez
GET /endpoints/{id}/agentjusqu'à unstatuségal àonline.
Un jeton d'enrôlement est à usage unique. Il vit 7 jours. Voir Créer un jeton d'enrôlement.
Pour beaucoup de machines, utilisez un jeton de déploiement. Voir Déployer sur beaucoup de machines.
5. Créer une politique de sauvegarde
Une machine enrôlée n'a aucune politique. Elle ne sauvegarde rien avant d'en recevoir une.
- Appelez
POST /endpoints/{id}/policiesavec la portéeoperate. - Dans le corps, donnez
name,enabled,dataset,schedules,timezoneetretention. - Dans
dataset, donneztypeégal àfiles, etpaths: au moins un dossier à sauvegarder. - Lisez le champ
idde la réponse : c'est l'identifiant de la politique.
POST /api/endpoints/<id>/policies HTTP/1.1
Authorization: Bearer bst_msp_...
Content-Type: application/json
{"name": "Fichiers", "enabled": true,
"dataset": {"type": "files", "paths": ["/etc"], "excludes": [], "exclude_caches": true, "one_file_system": false},
"schedules": [{"frequency": "daily", "start_at": "2026-01-05T00:00:00Z", "times": ["22:00"]}],
"timezone": "Europe/Paris", "retention": {"keep_daily": 7}}
Pour modifier une politique existante, appelez PUT /endpoints/{id}/policies/{policyId} avec la
portée operate. Voir
Politique de sauvegarde de fichiers.
6. Lancer une sauvegarde
- Appelez
POST /endpoints/{id}/jobsavec la portéeoperateet le corps{"type": "backup"}. - Lisez le champ
idde la réponse : c'est l'identifiant de la tâche. - Appelez
GET /jobs/{id}avec la portéeread, jusqu'à un état final :succeeded,partial,failed,cancelled,interruptedoumissed. - Sur un succès, lisez le champ
snapshot_id: c'est le nouveau point de restauration.
Sans politique de sauvegarde de fichiers, ou avec une politique sans chemin, l'appel reçoit
409 no_file_policy. Aucune tâche n'est créée. Faites l'étape 5 d'abord.
Juste après l'enrôlement, la réponse peut être 409 repo_not_ready pendant quelques secondes. La
plateforme prépare le dépôt. Réessayez.
7. Parcourir un point de restauration
- Appelez
POST /endpoints/{id}/snapshots/{snapshot_id}/treeavec la portéebrowseet le corps{"path": "/"}. - Lisez le tableau
entries. Chaque entrée donnenameettype. Le champsizeest donné pour un fichier seulement. Le champmtimeest facultatif. - Pour la page suivante, rappelez la route avec le champ
cursorégal aunext_cursorreçu. - Pour descendre d'un niveau, rappelez la route avec le chemin du dossier.
Pour chercher un fichier par son nom, appelez
POST /endpoints/{id}/snapshots/{snapshot_id}/search.
8. Restaurer un fichier
- Appelez
POST /endpoints/{id}/restoresavec la portéeoperate. - Donnez
snapshot_id,paths(de 1 à 1000 chemins) ettarget. - Pour écrire dans un nouveau dossier, utilisez
"target": {"mode": "directory", "path": "<dossier>"}. Pour écrire les fichiers à leur place d'origine, utilisez"target": {"mode": "original"}. - Lisez le champ
restore_session_idde la réponse. - Appelez
GET /restore-sessions/{id}avec la portéeread, jusqu'à un étatsucceeded,partial,failedoucancelled.
POST /api/endpoints/<id>/restores HTTP/1.1
Authorization: Bearer bst_msp_...
Content-Type: application/json
{"snapshot_id": "...", "paths": ["/etc/hostname"], "target": {"mode": "directory", "path": "/tmp/restauration-1"}}
Sans champ overwrite, BaaStide n'écrase aucun fichier existant.
Le mode original écrit sur la machine d'origine, ou sur une autre machine du même client avec le
même système. Pour une autre machine, ajoutez target_endpoint_id.
- Une autre machine du même client avec un autre système reçoit
409 original_not_allowed. - Une machine d'un autre client reçoit
403 forbidden: une clé API ne restaure jamais vers un autre client. - Un fichier d'un partage réseau revient à sa place d'origine sur la machine d'origine seulement. Sur une autre machine, restaurez dans un dossier.
Voir Restaurer des fichiers depuis le portail pour la même action dans le portail.
9. Suspendre un MSP
Suspendez un MSP quand votre client arrête de payer.
- Appelez
POST /provisioning/msps/{id}/suspendavec la clé de provisionnement. - N'envoyez aucun en-tête
Content-Type, ou envoyez le corps{}. - Lisez la réponse : le champ
statusvautsuspended.
Après la suspension :
- Les clés API du MSP reçoivent
403 msp_suspendedsur toutes les routes, saufGET /msp. - Aucune nouvelle sauvegarde ne démarre. Les sauvegardes déjà planifiées sont annulées, et le planificateur n'en crée plus. Aucune alerte n'est envoyée pour ces annulations.
- Une sauvegarde en cours au moment de la suspension se termine normalement.
- Rien n'est supprimé : les points de restauration, les clés, les politiques et les clients restent.
Un deuxième appel sur un MSP déjà suspendu ne change rien et répond 200.
10. Réactiver un MSP
- Appelez
POST /provisioning/msps/{id}/reactivateavec la clé de provisionnement. - Lisez la réponse : le champ
statusvautactive.
Les politiques sont planifiées à partir de la réactivation. Les sauvegardes de la période de suspension ne sont pas rattrapées.
Un deuxième appel sur un MSP déjà actif ne change rien et répond 200.
11. Renouveler la clé API d'un MSP
Renouvelez une clé avant son expiration, ou quand vous pensez qu'elle a fuité.
- Appelez
GET /provisioning/msps/{id}/api-keysavec la clé de provisionnement. Lisezlast_used_atetlast_used_ipde chaque clé. - Appelez
POST /provisioning/msps/{id}/api-keys/{key_id}/rotate. La nouvelle clé garde le nom, les portées et les adresses de l'ancienne. - Enregistrez le champ
secretde la réponse dans votre coffre à secrets, puis mettez la nouvelle clé dans votre produit. Les deux clés fonctionnent en même temps. - Vérifiez que l'ancienne clé n'est plus utilisée : son champ
last_used_atn'avance plus. - Appelez
DELETE /provisioning/msps/{id}/api-keys/{ancien_key_id}.
Un MSP a au plus deux clés vivantes. Une troisième création reçoit 409 api_key_limit : révoquez
d'abord une clé.
Une révocation agit tout de suite, sur tous les serveurs. Vous ne pouvez pas l'annuler.
Limites et précautions
- Testez une restauration après le premier enrôlement de chaque client. Une sauvegarde n'est utile que si la restauration marche. Voir Tester ses restaurations.
- Une clé de provisionnement ne lit aucune donnée d'un MSP. Pour l'état du parc, utilisez la clé API du MSP.
- Une clé de provisionnement ne supprime pas un MSP. Demandez-le à l'équipe de la plateforme.
- Un MSP créé dans le portail ne peut pas être géré avec une clé de provisionnement. Il répond
404 not_found. - Une installation qui n'accepte qu'un seul MSP refuse la création d'un deuxième MSP, avec le code
409 msp_limit_reached. - Une suppression de client ou d'endpoint attend 72 heures. Une clé API ne raccourcit pas ce délai ; elle peut seulement annuler l'action. Voir Délai de 72 heures.
- Gardez chaque clé API dans un coffre à secrets, et donnez une clé différente à chaque intégration. Le journal d'audit nomme la clé qui a agi. Voir Journal d'audit.
Référence
- Clé de provisionnement : Provisioning.
- Suspendre un MSP : Suspend provisioned msp.
- Réactiver un MSP : Reactivate provisioned msp.
- Clients : Create client.
- Jetons d'enrôlement : Create enrollment token.
- Politiques de sauvegarde : Create backup policy.
- Sauvegardes : Create endpoint job et Get job.
- Parcours d'un point de restauration : List snapshot tree.
- Restaurations : Create restore et Get restore session.