Skip to content
ABUNA
DocumentationProduits

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

  • idstring

    Identifiant unique du produit.
  • app_idstring

    L'application à laquelle appartient le produit.
  • namestring

    Le nom du produit.
  • slugstring

    Un 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_attimestamp

    Quand le produit a été créé, en secondes Unix.
L'objet product
{
  "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

  • namestringobligatoire

    Le nom du produit.
  • slugstring

    Le slug à utiliser : lettres minuscules et chiffres, avec des tirets simples entre eux, jusqu'à 100 caractères. Sans slug, Abuna le construit à partir de name. 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.

POST /v1/apps/{appID}/products
curl https://api.abuna.app/v1/apps/8ddhXCDW/products \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "Pro plan"}'
Réponse
{
  "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

  • limitinteger

    Combien de produits renvoyer, de 1 à 100. Par défaut : 50.
  • cursorstring

    La valeur next_cursor de 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.

GET /v1/apps/{appID}/products
curl https://api.abuna.app/v1/apps/8ddhXCDW/products \
  -H "Authorization: Bearer sk_test_..."
Réponse
{
  "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

  • namestring

    Le nouveau nom.
  • slugstring

    Le 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.

PATCH /v1/apps/{appID}/products/{id}
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"}'
Réponse
{
  "id": "pR4dWx9K",
  "app_id": "8ddhXCDW",
  "name": "Team plan",
  "slug": "pro-plan",
  "created_at": 1727600000
}

Étapes suivantes