Fonctionnement
Publier avec une IA sans projets en double
Avant de créer, consultez GET /projects et GET /subscription. Identifiez le projet demandé par projectId ou slug exact et conservez cet ID. Envoyez un slug stable à la création. Un 409 avec error.details.reason=PROJECT_ALREADY_EXISTS renvoie projectId et slug de cette organisation : vérifiez le projet et réutilisez-le. N’inventez pas de nom ou suffixe pour contourner conflit ou quota.
Pour POST /projects et POST /projects/<id>/deployments, envoyez Idempotency-Key, de 8–128 caractères [A-Za-z0-9._:-]. Gardez une clé pour la création et une autre par révision. Après une réponse perdue, répétez la MÊME clé et le MÊME corps : le succès est rejoué pendant 24 heures sans nouvelle opération. Un autre corps donne 409 IDEMPOTENCY_KEY_REUSED. Avec IDEMPOTENCY_PENDING ou IDEMPOTENCY_PREVIOUS_FAILURE, inspectez projets et déploiements avant d’agir ; ne changez pas de clé à l’aveugle. Une correction utilise un nouveau ZIP, sourceObjectKey et une nouvelle clé, en gardant projectId.
Distinguez l’état du projet du déploiement actuel : GET /deployments/<id>. Suivez le même deployment pendant QUEUED, BUILDING ou HEALTHCHECK ; signalez l’étape en attente à l’échéance. En FAILED, lisez /diagnostico (texte), /logs?from=tail et runtime-logs ; corrigez build, port, commande ou dépendances et republiez dans le MÊME projet. Ne créez pas un autre projet pour 500/502, timeout ou file. Après READY, vérifiez HTTPS et le parcours demandé, par exemple la connexion utilisateur, avant d’annoncer un succès fonctionnel.
Consultez GET /databases et GET /projects/<id>/storage avant de provisionner et réutilisez les ressources. Base et S3 ne sont pas de nouveaux projets. Utilisez connectionEnvKey, DATABASE_URL/REDIS_URL et les envKeys S3 retournées ; n’inventez pas d’hôte ou de mot de passe à partir du pays. Le stockage par défaut est réutilisé ; additional=true demande un autre lien et nécessite une demande du client. Gardez les identifiants hors du navigateur.
Utilisez data.effectiveLimits, data.usage, data.executionAllowed et data.subscription de GET /subscription, pas uniquement le nom de l’offre. 402 PLAN_LIMIT_EXCEEDED n’autorise ni suppression pour libérer un quota ni achat. Le nombre souhaité de réplicas ne prouve pas leur santé : consultez /replicas et /metrics. Autoscaling et copies payantes exigent limites et autorisation ; une région ne prouve pas la redondance des bases, Redis ou fichiers.