Skip to content

Versions sémantiques

L'endpoint /semver analyse, incrémente et compare des versions sémantiques selon la spécification semver.org.

Comment ça marche ?

Une version doit respecter la grammaire officielle MAJOR.MINOR.PATCH, suivie éventuellement de -prerelease et +build. Les zéros initiaux sont refusés, donc 01.2.3 est invalide.

La comparaison suit la précédence semver : les parties numériques d'abord, puis la prerelease. Une version portant une prerelease est classée sous la même version sans prerelease, les identifiants numériques de prerelease sont comparés comme des nombres (alpha.2 est inférieur à alpha.10), et les métadonnées de build sont entièrement ignorées.

Une incrémentation remet les parties inférieures à zéro et supprime la prerelease ainsi que les métadonnées de build : 1.0.0-alpha+build.1 incrémenté sur patch donne 1.0.1.

Le signe + est décodé comme une espace dans une chaîne de requête, l'API le restaure donc avant l'analyse — les métadonnées de build peuvent être envoyées telles quelles ou encodées en pourcentage.

Paramètres

ParamètreRequisDescription
versionOuiVersion à traiter (ex. 1.2.3-beta.1+build.42)
actionNonAction à effectuer : parse, bump ou compare. Par défaut : parse
partNonbump uniquement : partie à incrémenter, major, minor ou patch. Par défaut : patch
otherCond.Seconde version à comparer (requis pour compare)

Actions disponibles

ActionDescription
parseDécompose la version en ses composants
bumpIncrémente part et remet les parties inférieures à zéro
compareCompare version à other selon la précédence semver

Champs de réponse

Action parse :

ChampTypeDescription
versionstringLa version d'entrée originale
majornumberNuméro majeur
minornumberNuméro mineur
patchnumberNuméro de correctif
prereleasestring|nullIdentifiants de prerelease sans le - initial, null si absents
buildstring|nullMétadonnées de build sans le + initial, null si absentes

Action bump :

ChampTypeDescription
versionstringLa version d'entrée originale
actionstringbump
partstringPartie qui a été incrémentée
resultstringLa version incrémentée

Action compare :

ChampTypeDescription
versionstringLa version d'entrée originale
actionstringcompare
otherstringLa version à laquelle la comparaison est faite
resultnumber-1 si version est inférieure, 0 si égale, 1 si supérieure
descriptionstringComparaison lisible (ex. 1.2.3 < 1.3.0)

Exemples de code

curl -X GET \
  "https://api.sylvain.sh/v5/semver?version=1.2.3-beta.1&action=parse"

Essayer

Gestion des erreurs

Si les paramètres sont manquants ou invalides, l'API retournera une erreur :

Message d'erreurDescription
Please provide a version (?version={version})Le paramètre version est manquant
Action must be one of: parse, bump, compareLa valeur de action n'est pas valide
Version must be 256 characters or fewerLa valeur version ou other dépasse la longueur maximale
Invalid semver versionLa valeur version ou other ne respecte pas la grammaire semver
Part must be one of: major, minor, patchLa valeur de part n'est pas valide pour bump
Please provide a second version (&other={version})Le paramètre other est manquant pour compare