Référence de l'API d'import de sites
La référence complète de l'API REST d'import de sites. Voir le guide de l'API d'import de sites pour des exemples d'usage.
L'authentification
Tous les points d'accès exigent une authentification, par l'un de ces moyens :
| Méthode | En-tête | Cas d'usage |
|---|---|---|
| Clé d'API | Authorization: Bearer <clé> | Les scripts et l'automatisation |
| Clé d'API (variante) | x-api-key: <clé> | La prise en charge de l'existant |
| Session | Par cookie | L'interface du tableau de bord |
POST /api/site-import
Crée un site, avec toutes ses ressources.
La requête
{
"organizationId": "string (obligatoire)",
"name": "string (obligatoire)",
"domain": "string (facultatif)",
"database": {
"type": "mariadb | mysql | postgres | mongodb",
"name": "string",
"user": "string",
"password": "string"
},
"source": {
"type": "github | gitlab | docker | git",
"repo": "string (propriétaire/nom, pour github et gitlab)",
"branch": "string (par défaut : main)",
"buildPath": "string (par défaut : /)",
"buildType": "dockerfile | nixpacks (par défaut : dockerfile)",
"dockerImage": "string (pour le type docker)",
"githubId": "string (pour le type github)",
"gitlabId": "string (pour le type gitlab)",
"customGitUrl": "string (pour le type git)",
"customGitSSHKeyId": "string (pour le type git, facultatif)"
},
"envVars": { "CLÉ": "VALEUR" },
"port": 80
}
La réponse 200
{
"importId": "string",
"status": "success",
"projectId": "string",
"applicationId": "string",
"databaseId": "string | undefined",
"databaseType": "string | undefined",
"databaseServiceHost": "string | undefined",
"domainId": "string | undefined"
}
La réponse 422 (échec partiel)
La même forme que le 200, avec status: "partial" ou status: "failed", et des champs supplémentaires :
{
"importId": "string",
"status": "partial",
"errorMessage": "string",
"errorStep": "project_creation | database_creation | application_creation | domain_creation | deployment"
}
La réponse 401
{ "error": "Unauthorized" }
La réponse 400
{ "error": "Invalid input", "details": { "fieldErrors": {}, "formErrors": [] } }
POST /api/site-import/preview
Valide les données sans créer de ressource.
La requête
Le même corps que POST /api/site-import.
La réponse 200
{
"valid": true,
"resources": {
"project": { "name": "string" },
"database": { "type": "string", "name": "string" },
"application": { "name": "string", "sourceType": "string", "buildType": "string" },
"domain": { "host": "string" }
},
"warnings": ["string"],
"errors": ["string"]
}
GET /api/site-import
Liste l'historique des imports de l'organisation de l'utilisateur authentifié.
Les paramètres de requête
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
limit | nombre | 50 | Le nombre maximal de résultats (1 à 100) |
offset | nombre | 0 | Le décalage de pagination |
La réponse 200
Un tableau d'enregistrements d'import.
GET /api/site-import/:id
Récupère un enregistrement d'import unique, par son identifiant.
La réponse 200
L'enregistrement d'import complet, y compris inputConfig, status, les identifiants de ressources et le détail des erreurs.
La réponse 404
L'import est introuvable, ou appartient à une autre organisation.
Les points d'accès tRPC
Les mêmes fonctionnalités sont disponibles par tRPC, pour un usage depuis le tableau de bord ou depuis un client TypeScript :
| Procédure | Type | Entrée |
|---|---|---|
siteImport.import | mutation | La même que le corps du POST |
siteImport.preview | requête | La même que le corps du POST |
siteImport.list | requête | { limit?, offset? } |
siteImport.get | requête | { siteImportId } |
siteImport.retry | mutation | { siteImportId } — idempotente, met à jour l'enregistrement sur place |
siteImport.delete | mutation | { siteImportId, rollbackResources? } — supprime l'enregistrement, et éventuellement défait les ressources |
Les états d'un import
| État | Description | Actions possibles |
|---|---|---|
pending | L'import est en cours | Attendre |
success | Toutes les ressources ont été créées, le déploiement est déclenché | Supprimer l'enregistrement |
partial | Certaines ressources ont été créées avant l'échec | Réessayer, défaire, supprimer |
failed | Aucune ressource n'a été créée | Réessayer, supprimer |
success signifie que les ressources ont été mises en service et le déploiement déclenché. La construction et le déploiement sont asynchrones : consultez les journaux de déploiement de l'application pour connaître l'état de la construction.