Mettre à jour ou modifier une tarification par volume avec les API
Mettez à jour une règle de tarification par volume existante via l'API publique, avec la référence complète du corps de la requête.
Ce document explique comment mettre à jour une règle de tarification par volume existante avec l’API publique.
1. Point de terminaison
Section intitulée « 1. Point de terminaison »Pour mettre à jour un enregistrement de tarification par volume existant, utilisez le point de terminaison suivant :
PUT https://wholesale.samita.io/api/v1/volume-pricings/{id}{id}correspond à l’ID de l’enregistrement de tarification par volume- L’ID est disponible dans l’interface de l’application (sans le symbole « # »)
- Exemple :

Exemple :
Section intitulée « Exemple : »PUT https://wholesale.samita.io/api/v1/volume-pricings/12. En-têtes de la requête
Section intitulée « 2. En-têtes de la requête »Toutes les requêtes API doivent inclure les en-têtes obligatoires suivants :
| En-tête | Description | Obligatoire |
|---|---|---|
X-SAMITA-API-KEY |
Clé API fournie dans l’application Wholesale | Oui |
X-SAMITA-SHOP-URL |
Domaine de la boutique Shopify au format xxx.myshopify.com | Oui |
CONTENT-TYPE |
Doit être application/json |
Oui |
Si un en-tête obligatoire est manquant, la requête est rejetée.
3. Corps de la requête
Section intitulée « 3. Corps de la requête »_ Les données utilisées pour mettre à jour une tarification par volume doivent être envoyées au format JSON. Un exemple de structure JSON figure à la fin de ce document.
_ Seuls les champs à mettre à jour sont requis dans la requête. Il n’est pas obligatoire d’envoyer tous les champs, contrairement à la méthode de création.
_ Les champs non indiqués restent inchangés
Exemple de JSON de requête :
{ "title": "New Volume Pricing", "status": true, "type": "quantity", "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_method": "variant", "discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ], "active_date": { "types": ["start date", "end date"], "start_at": "2026-01-15T10:00:00", "end_at": "2026-01-15T10:00:00" }}b. title
Section intitulée « b. title »- Le nom qui identifie l’enregistrement de tarification par volume
- Doit être une chaîne de caractères
- Longueur maximale : 255 caractères
c. status
Section intitulée « c. status »- Indique si l’enregistrement est actif ou non
- Accepte uniquement les valeurs suivantes :
| Valeur | Description |
|---|---|
true |
La règle de tarification est active |
false |
La règle de tarification est inactive |
Indique si la tarification par volume est calculée selon la quantité ou le montant.
Valeurs acceptées :
quantityamount
e. apply_customer
Section intitulée « e. apply_customer »Définit les clients concernés par cette règle de tarification.
Structure :
"apply_customer": { "type": "all", "tags": []}type
Valeurs acceptées (une seule parmi les suivantes) :
all– S’applique à tous les clientslogged– S’applique uniquement aux clients connectésnon-logged– S’applique uniquement aux clients non connectéscustomer-tags– S’applique uniquement aux clients ayant des tags spécifiques
tags
- Obligatoire uniquement lorsque
type == customer-tags - Doit être un tableau dont les éléments sont séparés par des virgules
- Exemple :
["wholesale","b2b"]
Si type n’est pas customer-tags, ce champ peut être ignoré.
f. exclude_customer
Section intitulée « f. exclude_customer »Permet d’exclure certains clients de la règle de tarification.
Structure :
"exclude_customer": { "type": "none", "tags": []}type
- Valeur par défaut :
none - Valeurs acceptées :
| Valeur | Description |
|---|---|
none |
N’exclut aucun client |
customer-tags |
Exclut les clients par tags |
tags
- Obligatoire uniquement lorsque
type == customer-tags - Tableau dont les éléments sont séparés par des virgules
- Exemple :
["vip","internal"]
g. apply_product
Section intitulée « g. apply_product »Définit les produits auxquels la règle de tarification s’applique.
Structure :
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false },type
Valeurs acceptées :
allproductscollectionsproduct-tags
product_ids
- Obligatoire uniquement lorsque
type == products - Liste d’ID de produits séparés par des virgules
- Exemple :
[1,2,3]
product_tags
- Obligatoire uniquement lorsque
type == product-tags - Exemple :
["tag1","tag2"]
collection_ids
- Obligatoire uniquement lorsque
type == collections - Exemple :
[1,2,3]
apply_for_variants
- Détermine si les réductions peuvent être configurées par variante
- Valeurs acceptées :
trueoufalse - Valeur par défaut :
false
h. exclude_product
Section intitulée « h. exclude_product »Définit les produits exclus de la règle.
Structure :
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] },type
- Par défaut :
none - Valeurs acceptées :
| Valeur | Description |
|---|---|
none |
N’exclut aucun produit |
products |
Exclut des produits spécifiques |
collections |
Exclut des collections spécifiques |
Les autres champs ne sont obligatoires que selon le type sélectionné.
i. discount_for_variants
Section intitulée « i. discount_for_variants »Définit la configuration des réductions au niveau du produit et/ou de la variante.
- Laissez ce champ vide si
apply_product.apply_for_variants == false. - Si
apply_product.apply_for_variants == true, ce champ est obligatoire. - La structure doit être un tableau de configurations de produits.
Structure :
"discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ],i.1. id (obligatoire)
- ID du produit.
- Doit correspondre à un produit existant.
i.2. duplicated
Indique si le produit comporte plusieurs tranches de quantité ou de montant.
Valeurs acceptées :
truefalse
Règles :
- Si
true: le produit comporte plusieurs tranches de quantité ou de montant. - Si
false: le produit ne comporte qu’une seule tranche de quantité ou de montant.
i.3. from_qty / from_amount
Quantité ou montant de début de la tranche.
Règles :
- Le premier élément peut être vide (1 par défaut).
- Tous les éléments suivants sont obligatoires.
i.4. to_qty / to_amount
Quantité ou montant de fin de la tranche.
Règles :
- Peut être vide (calculé automatiquement comme la valeur
fromde l’élément suivant moins 1). - S’il est indiqué, il doit être inférieur à la valeur
fromde l’élément suivant.
Exemples :
- Élément 1 : 0–10 → Élément 2 : 11–20
- Élément 1 : 0–vide → Élément 2 : 10–vide
- Élément 1 : vide–10 → Élément 2 : 11–vide
i.5. discount_groups (niveau produit)
Définit la configuration des réductions pour chaque tranche de quantité ou de montant au niveau du produit.
- Obligatoire si
variant_pricing == false. - Laissez vide si
variant_pricing == true. - Doit être un tableau d’objets de réduction correspondant à la valeur configurée de
apply_customer.type.
Structure :
{ "name": "all", "type": "percent", "value": "10"}+ name
Valeurs acceptées :
all(siapply_customer.type == all)logged(siapply_customer.type == logged)non-logged(siapply_customer.type == non-logged)
Toute autre valeur est traitée comme un tag client et doit correspondre à l’un des tags définis dans apply_customer.tags.
+ type
Définit le type de réduction.
Valeurs acceptées :
percent– Réduction en pourcentageamount– Montant fixe déduit du prixfixed-amount– Prix fixe final
+ value
- Doit être un nombre
- Doit être supérieur à 0
- Si
type == percent, la valeur doit être inférieure à 100
i.6. variant_pricing
Indique si la réduction s’applique au niveau de la variante.
Valeurs acceptées :
truefalse
i.7. variants
Définit la configuration des réductions au niveau de la variante.
- Obligatoire si
variant_pricing == true - Laissez vide si
variant_pricing == false - Doit être un tableau de configurations de variantes
Structure :
{ "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ]}+ id (obligatoire)
- ID de la variante.
+ duplicate
Indique si la variante comporte plusieurs tranches de quantité ou de montant.
Valeurs acceptées :
truefalse
Règles :
- Si
true: la variante comporte plusieurs tranches. - Si
false: la variante ne comporte qu’une seule tranche.
+ from_qty / from_amount
Quantité ou montant de début.
Règles :
- Le premier élément peut être vide (1 par défaut).
- Tous les éléments suivants sont obligatoires.
+ to_qty / to_amount
Quantité ou montant de fin.
Règles :
- Peut être vide (calculé automatiquement comme la valeur
fromde l’élément suivant moins 1). - S’il est indiqué, il doit être inférieur à la valeur
fromde l’élément suivant.
Exemples :
- Élément 1 : 0–10 → Élément 2 : 11–20
- Élément 1 : 0–vide → Élément 2 : 10–vide
- Élément 1 : vide–10 → Élément 2 : 11–vide
+ discount_groups (niveau variante)
Définit la configuration des réductions pour chaque tranche de quantité ou de montant au niveau de la variante.
Règles :
- Si
apply_customer.typevaut :allloggednon-logged
→ Le tableau doit contenir un seul élément.
- Si
apply_customer.type == customer-tags
→ Le tableau doit contenir plusieurs éléments (un par tag client).
name
Valeurs acceptées :
allloggednon-logged
Toute autre valeur est traitée comme un tag client et doit correspondre à un tag défini dans apply_customer.tags.
type
Valeurs acceptées :
percentamountfixed-amount
value
- Doit être un nombre
- Doit être supérieur à 0
- Si
type == percent, la valeur doit être inférieure à 100
j. apply_market
Section intitulée « j. apply_market »Définit les marchés Shopify auxquels la règle s’applique.
Structure :
"apply_market": { "type": "all", "handle": []}type
Valeurs acceptées :
allspecific-market
handle
- Obligatoire uniquement lorsque
type == specific-market - Liste de identifiants de marché séparés par des virgules
- Exemple :
["japan","us"]
k. discount_methods
Section intitulée « k. discount_methods »Valeurs acceptées :
variant→ Même varianteacross_group→ Mélange de varianteswithin_each_group→ Mélange de produits
Ces valeurs correspondent aux options disponibles dans l’application.
Exemple :
"discount_method": "variant",l. discount_group
Section intitulée « l. discount_group »Définit les tranches de quantité ou de montant et les valeurs de réduction.
from_qty / from_amount
to_qty / to_amount
Mêmes règles de validation que celles décrites plus haut.
Valeurs « type » acceptées :
percentamountfixed-amount
value :
- Doit être > 0
- Si percent → doit être < 100
Structure :
"discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ],Les règles sont les mêmes que celles décrites plus haut pour les types et les valeurs de réduction.
m. active_date
Section intitulée « m. active_date »Permet de configurer la date et l’heure de début et de fin de la règle de tarification.
Structure :
"active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00"}types
- Facultatif
- Valeurs acceptées :
start_date,end_date - Peut contenir l’une des deux valeurs ou les deux, séparées par une virgule
- Exemple :
["start_date","end_date"]
start_at
- Obligatoire si
typesinclutstart_date - Format :
YYYY-MM-DD HH:MM:SS
end_at
- Obligatoire si
typesinclutend_date - Format :
YYYY-MM-DD HH:MM:SS
4. Réponse de l’API
Section intitulée « 4. Réponse de l’API »a. Réponses d’erreur
Section intitulée « a. Réponses d’erreur »401 – Non autorisé
Causes possibles :
- URL de la boutique manquante
- Clé API manquante
- URL de la boutique non valide
- Clé API non valide
- La clé API ne correspond pas à la boutique
403 – Cette action n’est pas autorisée
- La clé API n’a pas l’autorisation Update
- Chaque clé API peut avoir les autorisations View, Create, Update et Delete
- Cette API nécessite l’autorisation Update
- Également renvoyée lorsque l’ID indiqué n’existe pas
429 – Trop de requêtes
Limite de débit dépassée :
- Maximum 1 requête toutes les 5 minutes
- Maximum 50 requêtes par jour
b. Réponse de succès
Section intitulée « b. Réponse de succès »200 – Succès de l’API
- L’enregistrement de tarification par volume a bien été mis à jour
- La réponse est renvoyée au format JSON
Exemple de JSON de réponse :
{ "id": 1, "title": "New Volume Pricing", "status": true, "type": "quantity", "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_method": "variant", "discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ], "active_date": { "types": [], "start_at": "", "end_at": "" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}