Référence de l'API
Produits
Créez, listez et renommez ce que vous vendez.
Un produit est ce que vous vendez. Vous le facturez via un ou plusieurs tarifs.
L'objet product
Attributs
idstringIdentifiant unique du produit.app_idstringL'application à laquelle appartient le produit.namestringLe nom du produit.slugstringUn nom utilisable dans une URL, unique au sein de l'application. Il reste le même quand le produit est renommé, vous pouvez donc compter sur lui dans votre propre code. Il ne change que lorsque vous en définissez un nouveau.created_attimestampQuand le produit a été créé, en secondes Unix.
{
"id": "pR4dWx9K",
"app_id": "8ddhXCDW",
"name": "Pro plan",
"slug": "pro-plan",
"created_at": 1727600000
}Créer un produit
POST/v1/apps/{appID}/products
Accepte un en-tête Idempotency-Key.
Crée un produit.
Paramètres
namestringobligatoireLe nom du produit.slugstringLe slug à utiliser : lettres minuscules et chiffres, avec des tirets simples entre eux, jusqu'à 100 caractères. Sans slug, Abuna le construit à partir dename. Si ce slug est pris, il ajoute-2,-3, et ainsi de suite, donc un produit créé sans slug n'entre jamais en conflit.
Renvoie le produit avec le statut 201. Un slug de forme incorrecte renvoie 422 avec le code invalid et un élément errors pour slug. Si un autre produit de l'application a le slug que vous avez envoyé, renvoie 409 avec le code slug_taken et un élément errors pour slug.
curl https://api.abuna.app/v1/apps/8ddhXCDW/products \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{"name": "Pro plan"}'{
"id": "pR4dWx9K",
"app_id": "8ddhXCDW",
"name": "Pro plan",
"slug": "pro-plan",
"created_at": 1727600000
}Lister les produits
GET/v1/apps/{appID}/products
Liste les produits de l'application, du plus récent au plus ancien, une page à la fois.
Paramètres de requête
limitintegerCombien de produits renvoyer, de 1 à 100. Par défaut : 50.cursorstringLa valeurnext_cursorde la page précédente. Envoyez les mêmes filtres avec.
Renvoie items et next_cursor, comme décrit dans Listes et filtres. Une valeur non autorisée, comme un limit supérieur à 100, renvoie 422 avec le code invalid et le nom du paramètre dans errors.
curl https://api.abuna.app/v1/apps/8ddhXCDW/products \
-H "Authorization: Bearer sk_test_..."{
"items": [
{
"id": "pR4dWx9K",
"app_id": "8ddhXCDW",
"name": "Pro plan",
"slug": "pro-plan",
"created_at": 1727600000
}
],
"next_cursor": null
}Mettre à jour un produit
PATCH/v1/apps/{appID}/products/{id}
Change le nom du produit, son slug, ou les deux. Envoyez-en au moins un. Un nouveau nom conserve le slug actuel.
Paramètres
namestringLe nouveau nom.slugstringLe nouveau slug, dans la même forme qu'à la création.
Renvoie le produit. Un corps sans aucun des deux champs, ou un name vide, renvoie 422 avec le code invalid et un élément errors pour name. Un slug de forme incorrecte renvoie 422 avec un élément errors pour slug. Si un autre produit de l'application a le nouveau slug, renvoie 409 avec le code slug_taken et un élément errors pour slug. Si l'application n'a aucun produit avec cet ID, renvoie 404 avec le code not_found.
curl https://api.abuna.app/v1/apps/8ddhXCDW/products/pR4dWx9K \
-X PATCH \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{"name": "Team plan"}'{
"id": "pR4dWx9K",
"app_id": "8ddhXCDW",
"name": "Team plan",
"slug": "pro-plan",
"created_at": 1727600000
}