Erreurs de l’API
Chaque erreur de l’API fremforge est au format application/problem+json de la RFC 9457 et porte une URI type qui désigne l’erreur précise :
{
"type": "https://docs.frem.sh/reference/api/errors/seat-cap-reached",
"title": "Seat cap reached",
"status": 409,
"detail": "Your org has 10 of 10 contracted seats in use. Buy more seats from the billing page before provisioning new users."
}Basez votre logique sur type. title et detail sont destinés à être lus par un humain et peuvent être reformulés ; type et status forment le contrat stable.
Les tableaux ci-dessous listent 259 types d’erreur.
400 Bad Request
La requête est mal formée, ou un champ n’a pas passé la validation.
| Type d’erreur | |
|---|---|
confirm-mismatch | Confirmation non concordante |
create-failed | Échec de la création |
css-too-large | CSS trop volumineux |
digest-mismatch | Digest non concordant |
empty-update | Mise à jour vide |
format-mismatch | Format non concordant |
group-team-map-foreign-org | La correspondance groupe-équipe désigne une autre organisation |
group-team-map-unknown-team | La correspondance groupe-équipe désigne une équipe inexistante |
ids-required | Identifiants requis |
invalid-access | Accès invalide |
invalid-allowed-audiences | Audiences autorisées invalides |
invalid-allowlist | Liste d’autorisation invalide |
invalid-api-key | Clé d’API invalide |
invalid-artifact-name | Nom d’artefact invalide |
invalid-artifact-version | Version d’artefact invalide |
invalid-attestation-format | Format d’attestation invalide |
invalid-audiences | Audiences invalides |
invalid-azure-deployment | Déploiement Azure invalide |
invalid-base-url | URL de base invalide |
invalid-billing-emails | Adresses e-mail de facturation invalides |
invalid-block-action | Action de blocage invalide |
invalid-block-severity | Sévérité de blocage invalide |
invalid-body | Corps de requête invalide |
invalid-ca-keys | Clés d’AC invalides |
invalid-cidr | CIDR invalide |
invalid-client-id | Identifiant client invalide |
invalid-commit-sha | SHA de commit invalide |
invalid-content | Contenu invalide |
invalid-css | CSS invalide |
invalid-cursor | Curseur invalide |
invalid-days | Nombre de jours invalide |
invalid-digest | Digest invalide |
invalid-domain | Domaine invalide |
invalid-email | Adresse e-mail invalide |
invalid-enabled | Valeur enabled invalide |
invalid-environment | Environnement invalide |
invalid-expected-current-seat-cap | Plafond d’utilisateurs actuel attendu invalide |
invalid-expires-at | Date d’expiration invalide |
invalid-feature | Fonctionnalité invalide |
invalid-field | Champ invalide |
invalid-format | Format invalide |
invalid-gates | Contrôles invalides |
invalid-git-ref | Référence Git invalide |
invalid-group-team-map | Correspondance groupe-équipe invalide |
invalid-input | Entrée invalide |
invalid-json | JSON invalide |
invalid-label | Label invalide |
invalid-max-tokens | Nombre maximal de tokens invalide |
invalid-messages | Messages invalides |
invalid-mode | Mode invalide |
invalid-model | Modèle invalide |
invalid-multipart | Corps multipart invalide |
invalid-name | Nom invalide |
invalid-pattern | Motif invalide |
invalid-pr-number | Numéro de pull request invalide |
invalid-provider | Fournisseur invalide |
invalid-purpose | Finalité invalide |
invalid-repo | Dépôt invalide |
invalid-repo-filter | Filtre de dépôt invalide |
invalid-repo-full-name | Nom complet de dépôt invalide |
invalid-request | Requête invalide |
invalid-require-cert | Exigence de certificat invalide |
invalid-role | Rôle invalide |
invalid-rules-url | URL de règles invalide |
invalid-run-id | Identifiant d’exécution invalide |
invalid-scope | Scope invalide |
invalid-scopes | Scopes invalides |
invalid-seat-cap | Plafond d’utilisateurs invalide |
invalid-seats | Nombre d’utilisateurs invalide |
invalid-secret | Secret invalide |
invalid-since | Date de début invalide |
invalid-sla | SLA invalide |
invalid-slug | Slug invalide |
invalid-source-repo | Dépôt source invalide |
invalid-status | Statut invalide |
invalid-sub-template | Sous-modèle invalide |
invalid-target-url | URL cible invalide |
invalid-team | Équipe invalide |
invalid-technical-admin-email | Adresse e-mail de l’administrateur technique invalide |
invalid-temperature | Température invalide |
invalid-tenant-slug | Slug de tenant invalide |
invalid-term | Durée invalide |
invalid-ttl | TTL invalide |
invalid-type | Type invalide |
invalid-url | URL invalide |
invalid-username | Nom d’utilisateur invalide |
invalid-value | Valeur invalide |
invalid-vendor | Éditeur invalide |
missing-assertion | Assertion manquante |
missing-params | Paramètres manquants |
missing-sbom | SBOM manquant |
no-fields | Aucun champ |
no-scopes | Aucun scope |
pause-failed | Échec de la mise en pause |
reason-required | Motif requis |
reason-too-long | Motif trop long |
removed-setting | Paramètre supprimé |
reserved-prefix | Préfixe réservé |
saml-not-offered | SAML non proposé |
seat-change-failed | Échec du changement du nombre d’utilisateurs |
too-many-events | Trop d’événements |
too-many-ids | Trop d’identifiants |
too-many-messages | Trop de messages |
too-many-teams | Trop d’équipes |
unknown-scope | Scope inconnu |
unsupported-grant-type | Type d’autorisation (grant type) non pris en charge |
unsupported-spec-version | Version de spécification non prise en charge |
value-too-large | Valeur trop grande |
401 Unauthorized
L’authentification est absente, ou l’identifiant a été refusé.
| Type d’erreur | |
|---|---|
authentication-required | Authentification requise |
invalid-client | Client invalide |
invalid-token | Jeton invalide |
403 Forbidden
L’identifiant est valide, mais il n’est pas autorisé à effectuer cette action.
| Type d’erreur | |
|---|---|
auditor-read-only | Auditeur en lecture seule |
console-only | Console uniquement |
cross-tenant | Accès inter-tenants |
insufficient-scope | Scope insuffisant |
not-in-allowlist | Absent de la liste d’autorisation |
oauth-session-pat-mint-forbidden | Création de PAT interdite depuis une session OAuth |
protected-account | Compte protégé |
repo-owner-mismatch | Propriétaire du dépôt non concordant |
scope-escalation | Élévation de scope |
step-up-required | Réauthentification renforcée requise |
tenant-scope-required | Scope de tenant requis |
user-identity-required | Identité d’utilisateur requise |
wildcard-mint-refused | Création avec joker refusée |
404 Not Found
La ressource n’existe pas, ou votre jeton ne peut pas la voir.
| Type d’erreur | |
|---|---|
attempt-not-found | Tentative introuvable |
no-active-approval | Aucune approbation active |
no-findings | Aucun résultat |
not-found | Introuvable |
rule-fix-not-found | Correctif à base de règles : le résultat n’existe pas |
tenant-not-found | Tenant introuvable |
409 Conflict
La requête entre en conflit avec l’état actuel de la ressource.
| Type d’erreur | |
|---|---|
already-accepted | Déjà accepté |
already-cancelled | Déjà annulé |
already-disabled | Déjà désactivé |
already-paused | Déjà en pause |
already-resolved | Déjà résolu |
checkout-in-flight | Paiement déjà en cours |
domain-verification-required | Vérification du domaine requise |
dry-run-expired | Simulation expirée |
duplicate-grant | Autorisation en double |
duplicate-key | Clé en double |
duplicate-name | Nom en double |
duplicate-pattern | Motif en double |
duplicate-pending | Demande en attente en double |
internal-tenant | Tenant interne |
last-owner | Dernier propriétaire |
name-conflict | Conflit de nom |
no-ca-keys | Aucune clé d’AC |
no-rewrites | Aucune réécriture |
no-seats-available | Aucun utilisateur disponible |
not-cancelled | Non annulé |
not-cancelling | Annulation non en cours |
not-enabled | Non activé |
not-enrolled | Non inscrit |
not-pending | Non en attente |
not-removed | Non retiré |
operator-managed | Géré par l’opérateur |
overage-frozen | Dépassement gelé |
overage-paid-plan-only | Dépassement réservé aux offres payantes |
refund-unavailable | Remboursement indisponible |
rescan-skipped | Nouvelle analyse ignorée |
rule-fix-already-proposed | Correctif à base de règles : un correctif est déjà en cours ou ouvert |
rule-fix-disabled | Correctif à base de règles : AutoFix est désactivé pour l’organisation |
rule-fix-not-open | Correctif à base de règles : le résultat est écarté |
seat-cap-reached | Plafond d’utilisateurs atteint |
self-approve | Auto-approbation |
send-in-progress | Envoi en cours |
stale-seat-cap | Plafond d’utilisateurs obsolète |
tenant-not-accepting | Le tenant n’accepte pas la demande |
410 Gone
La ressource a existé et a définitivement disparu.
| Type d’erreur | |
|---|---|
challenge-expired | Défi expiré |
logs-purged | Journaux purgés |
413 Payload Too Large
Le corps de la requête dépasse la taille acceptée par cet endpoint.
| Type d’erreur | |
|---|---|
payload-too-large | Charge utile trop volumineuse |
too-many-rows | Trop de lignes |
415 Unsupported Media Type
Le Content-Type de la requête n’est pas pris en charge.
| Type d’erreur | |
|---|---|
unsupported-media-type | Type de média non pris en charge |
422 Unprocessable Content
La requête est bien formée, mais la ressource ne peut pas être traitée de cette manière.
| Type d’erreur | |
|---|---|
rule-fix-check-not-supported | Correctif à base de règles : le contrôle IaC n’a pas de correctif à base de règles |
rule-fix-language-not-supported | Correctif à base de règles : le langage du fichier n’est pas pris en charge |
rule-fix-path-refused | Correctif à base de règles : AutoFix ne modifie jamais ce fichier |
rule-fix-pr-finding | Correctif à base de règles : le résultat a été signalé sur une pull request |
429 Too Many Requests
Vous avez dépassé une limite de débit.
| Type d’erreur | |
|---|---|
rate-limited | Limite de débit atteinte |
rate-limited-global | Limite de débit globale atteinte |
rule-fix-org-daily-limit | Correctif à base de règles : l’organisation a atteint sa limite AutoFix quotidienne |
rule-fix-rate-limited | Correctif à base de règles : un correctif a été tenté récemment |
rule-fix-repo-limit | Correctif à base de règles : le dépôt a trop de pull requests AutoFix ouvertes |
500 Internal Server Error
Une erreur s’est produite de notre côté.
| Type d’erreur | |
|---|---|
db-error | Erreur de base de données |
insert-failed | Échec de l’insertion |
internal | Interne |
internal-error | Erreur interne |
rate-limit-misconfigured | Limite de débit mal configurée |
sign-failed | Échec de la signature |
501 Not Implemented
Pas encore implémenté.
| Type d’erreur | |
|---|---|
not-implemented-yet | Pas encore implémenté |
502 Bad Gateway
Une dépendance en amont a renvoyé une erreur.
| Type d’erreur | |
|---|---|
approve-failed | Échec de l’approbation |
ci-bot-mint-failed | Échec de la création du bot CI |
ci-bot-revoke-failed | Échec de la révocation du bot CI |
forgejo-error | Erreur Forgejo |
forgejo-failed | Échec de Forgejo |
forgejo-upstream-error | Erreur en amont de Forgejo |
install-failed | Échec de l’installation |
mollie-error | Erreur Mollie |
mollie-unavailable | Mollie indisponible |
obs-put-failed | Échec de l’écriture OBS |
pr-open-failed | Échec de l’ouverture de la pull request |
provisioning-failed | Échec du provisionnement |
remove-failed | Échec de la suppression |
revoke-failed | Échec de la révocation |
test-failed | Échec du test |
upstream-auth-failed | Échec de l’authentification en amont |
upstream-error | Erreur en amont |
upstream-unreachable | Service en amont injoignable |
503 Service Unavailable
Une dépendance est temporairement indisponible.
| Type d’erreur | |
|---|---|
ai-disabled | IA désactivée |
attestations-disabled | Attestations désactivées |
billing-unavailable | Facturation indisponible |
ci-bots-unavailable | Bots CI indisponibles |
forgejo-not-configured | Forgejo non configuré |
forgejo-proxy-disabled | Proxy Forgejo désactivé |
forgejo-unavailable | Forgejo indisponible |
forgejo-unreachable | Forgejo injoignable |
invitations-unavailable | Invitations indisponibles |
not-configured | Non configuré |
ownership-unverifiable | Propriété invérifiable |
renovate-disabled | Renovate désactivé |
rule-fix-unavailable | Correctif à base de règles : les correctifs à base de règles ne sont pas configurés |
sbom-ingest-unavailable | Ingestion de SBOM indisponible |
seat-change-unavailable | Changement du nombre d’utilisateurs indisponible |
seat-holds-unavailable | Réservations d’utilisateurs indisponibles |
secrets-unavailable | Secrets indisponibles |
siem-unavailable | SIEM indisponible |
token-exchange-disabled | Échange de jetons désactivé |
Refus des correctifs de sécurité et des correctifs IA
Depuis le 2026-10-14, POST /orgs/{org}/dependency-updates/security-fixes/requests renvoie ces refus sous la forme security-fix-<reason>, et POST /orgs/{org}/code-security/sast/findings/{id}/ai-fix sous la forme ai-fix-<reason> ; chaque page ci-dessous couvre les deux orthographes. Les chemins obsolètes continuent de renvoyer autofix-<reason> jusqu’au 2027-10-15. Renvoyés par POST /orgs/{org}/code-security/deps/findings/{id}/autofix, POST /orgs/{org}/code-security/deps/repos/{repo}/autofix, POST /orgs/{org}/code-security/images/findings/{id}/autofix et POST /orgs/{org}/code-security/sast/findings/{id}/autofix lorsqu’aucune pull request n’est demandée. Voir Correctifs de sécurité.
Refus de bascule du volet de sécurité
Renvoyés par PUT /orgs/{org}/dependency-updates/security-fixes/lane lorsque le volet Correctifs de sécurité ne peut pas prendre le relais de Renovate hébergé. Voir Prendre le relais de Renovate.
| Type d’erreur | Statut |
|---|---|
security-lane-lane-off | 409 |
security-lane-unsupported-ecosystems | 409 |