Aller au contenu

Tape un mot pour chercher dans les pages.

↑↓ Choisir↵ OuvrirÉchap Fermer

Référence

Créer un déploiement, lire son état, suivre ses logs en direct. Corps de requête, champs de l'objet déploiement et erreurs.

Un déploiement est une version figée de ton site, avec sa propre adresse. Créer un déploiement est l’appel central de vercel deploy.

Déroulement d’une création

  1. Envoie la liste des fichiers avec leur empreinte SHA1.
  2. Si des fichiers manquent, l’API répond 400 missing_files, avec leurs empreintes dans missing. Envoie-les par /v2/files.
  3. Renvoie exactement la même requête. Elle crée le déploiement.

Les petits fichiers peuvent aussi être inclus directement dans le corps, dans le champ data, sans passer par /v2/files. La limite de 20 Mo vaut alors pour l’ensemble des fichiers inclus.

POST /v13/deployments

curl -X POST https://api.host.hgdc.ch/v13/deployments \
-H "Authorization: Bearer $VERCEL_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "site-atelier",
"target": "production",
"files": [
{ "file": "index.html", "data": "<h1>Bonjour</h1>" }
]
}'

Corps

ChampTypeRequisDescription
namestringSi project est absentNom du projet. Le projet est créé s’il n’existe pas
projectstringNonIdentifiant ou nom du projet. Prioritaire sur name
target"production" ou nullNonproduction pour la production. Toute autre valeur crée une preview
filesobject[]OuiFichiers du déploiement, 15 000 au plus. Voir ci-dessous
projectSettings.frameworkstring ou nullNonFramework, enregistré si le déploiement crée le projet
gitMetadataobjectNoncommitRef (branche), commitSha et commitMessage, affichés dans la console
metaRecord<string, string>NonMétadonnées libres. githubCommitRef, githubCommitSha et githubCommitMessage remplacent gitMetadata quand il manque

Chaque élément de files prend l’une de ces formes :

  • { "file", "sha", "size" } : chemin relatif, empreinte SHA1 et taille en octets, pour un fichier déjà envoyé par /v2/files ;
  • { "file", "data", "encoding" } : contenu inclus. encoding vaut utf-8 (par défaut) ou base64.

mode (permissions Unix) est accepté et conservé. Un dossier vide, { "file", "mode" }, est ignoré.

Réponse

Réponse 200 : l’objet déploiement. Le déploiement naît le plus souvent à l’état QUEUED. Suis-le avec GET /v13/deployments/:id, plus bas sur cette page, ou avec le flux de logs GET /v3/deployments/:id/events.

Erreurs

StatutCodeCause
400bad_requestCorps invalide, ou nom de projet absent. Le message nomme le champ
400missing_filesDes fichiers sont à envoyer avant de créer le déploiement
403forbiddenLa clé est limitée à un autre projet
409deployment_closedLe déploiement a été annulé ou a échoué : rien n’est publié
413payload_too_largeLes fichiers inclus dépassent 20 Mo au total

GET /v13/deployments/:id

Lit un déploiement.

curl https://api.host.hgdc.ch/v13/deployments/jd7f2k9m3x8q1p5s6t4v0w7y2z \
-H "Authorization: Bearer $VERCEL_TOKEN"

Réponse 200 :

{
"id": "jd7f2k9m3x8q1p5s6t4v0w7y2z",
"uid": "jd7f2k9m3x8q1p5s6t4v0w7y2z",
"url": "site-atelier-h3k9x2.hgdc.cloud",
"name": "site-atelier",
"projectId": "j97d3k2m8x1q4p6s7t9v0w2y5z",
"ownerId": "k57a1b2c3d4e5f6g7h8j9k0m1n",
"readyState": "READY",
"status": "READY",
"target": "production",
"type": "LAMBDAS",
"createdAt": 1760259600000,
"buildingAt": 1760259601000,
"ready": 1760259604000,
"alias": ["site-atelier.hgdc.cloud"],
"aliasAssigned": true,
"aliasAssignedAt": 1760259604000,
"aliasError": null,
"errorMessage": null,
"inspectorUrl": "https://host.hgdc.ch/atelier/site-atelier/deployments/jd7f2k9m3x8q1p5s6t4v0w7y2z",
"meta": {
"branch": "main",
"commitSha": "4c3e2f1a9b8d7c6e5f4a3b2c1d0e9f8a7b6c5d4e",
"commitMessage": "Nouvelle page Tarifs"
},
"creator": { "uid": "u1a2b3c4d5" }
}
ChampTypeDescription
idstringIdentifiant du déploiement. uid porte la même valeur
urlstringAdresse du déploiement, sans https://. Elle reste valable tant que le déploiement existe
namestringNom du projet
projectIdstringIdentifiant du projet
ownerIdstringIdentifiant de l’organisation
readyStatestringÉtat : QUEUED, BUILDING, READY, ERROR ou CANCELED. status porte la même valeur
target"production" ou nullproduction, ou null pour une preview
createdAtnumberDate de création, en millisecondes
buildingAtnumberDébut du traitement, en millisecondes
readynumber ou nullFin du traitement. null tant que le déploiement n’est pas prêt
aliasstring[]Adresse de production du projet (<projet>.hgdc.cloud), une fois un déploiement de production prêt. Vide pour une preview. La CLI l’affiche sur la ligne « Aliased »
aliasAssignedbooleantrue quand le déploiement est prêt
aliasAssignedAtnumber ou nullMoment où l’adresse de production lui a été attribuée. null pour une preview
aliasErrornullToujours null
errorMessagestring ou nullCause de l’échec, quand readyState vaut ERROR
inspectorUrlstringPage du déploiement dans la console
type"LAMBDAS"Valeur fixe, pour la CLI
metaobjectInformations Git connues : branch, commitSha, commitMessage
creator.uidstringPersonne qui a créé la clé utilisée

Attendre la fin

Pour attendre qu’un déploiement soit prêt, interroge cet endpoint toutes les secondes jusqu’à READY, ERROR ou CANCELED. Tu peux aussi ouvrir le flux GET /v3/deployments/:id/events décrit plus bas, qui se ferme tout seul à la fin.

ErreurCodeCause
404not_foundDéploiement inconnu, d’une autre organisation, ou hors de la portée de la clé

GET /v3/deployments/:id/events

Renvoie les logs de build d’un déploiement, un événement JSON par ligne (NDJSON). Avec follow=1, la connexion reste ouverte et reçoit les nouvelles lignes au fil de l’eau.

curl -N "https://api.host.hgdc.ch/v3/deployments/jd7f2k9m3x8q1p5s6t4v0w7y2z/events?follow=1" \
-H "Authorization: Bearer $VERCEL_TOKEN"
ParamètreValeurRôle
follow1Garde la connexion ouverte jusqu’à la fin du déploiement, 9 minutes au plus

Le type de réponse est application/x-ndjson. Chaque ligne de log ressemble à ceci :

{"type":"stdout","created":1760259601000,"date":1760259601000,"deploymentId":"jd7f2k9m3x8q1p5s6t4v0w7y2z","id":"l3k…","text":"Publication de 42 fichiers","payload":{"id":"l3k…","text":"Publication de 42 fichiers","date":1760259601000,"deploymentId":"jd7f2k9m3x8q1p5s6t4v0w7y2z"}}
ChampTypeDescription
type"stdout" ou "stderr"stderr pour une ligne d’erreur
textstringTexte de la ligne
datenumberDate de la ligne, en millisecondes. created porte la même valeur
payloadobjectLes mêmes champs, au format historique de la CLI

Une fois le déploiement terminé, une dernière ligne donne son état, puis le flux se ferme :

{"type":"state","event":"state","date":1760259604000,"payload":{"value":"READY"}}

Les lignes du build GitHub Actions ne sont pas renvoyées ici : elles sont dans le run GitHub, et la console les affiche sur la page du déploiement.

Le même endpoint répond aussi sous /v3/now/deployments/:id/events.

ErreurCodeCause
404not_foundDéploiement inconnu, ou hors de la portée de la clé