API : produits
Récupérez vos produits, obtenez des statistiques ou suivez votre inventaire. Ce point de terminaison vous permet également de mettre à jour l'inventaire si nécessaire.
Veuillez noter que vous ne pouvez pas créer de produits avec l'API. Les produits sont créés ou mis à jour dès qu'une commande est terminée ou qu'une URL est récupérée depuis le tableau de bord ou l'API. Vous devrez définir les produits sur votre site en utilisant nos attributs HTML ou avec notre API JavaScript.
GET /products
Cette méthode retourne une liste de produits.
URL de la ressource
GET https://app.snipcart.com/api/products
En-têtes
Nom | Valeur | Obligatoire? | Description |
---|---|---|---|
Accept | application/json |
Oui | Notre API n'accepte que le type de contenu application/json, vous devez donc toujours spécifier l'en-tête Accept: application/json dans chaque requête que vous effectuez. |
Paramètres
Nom | Obligatoire? | Type | Description |
---|---|---|---|
limit |
Non | int |
Le nombre maximum d'éléments retournés par la requête. La valeur par défaut est 20. |
offset |
Non | int |
Le nombre d'éléments qui seront ignorés. La valeur par défaut est 0. |
userDefinedId |
Non | string |
L'identifiant du produit défini par l'utilisateur. |
from |
Non | datetime |
Filtre les produits pour retourner ceux qui ont été achetés à partir de la date spécifiée. |
to |
Non | datetime |
Filtre les produits pour retourner ceux qui ont été achetés jusqu'à la date spécifiée. |
orderBy |
Non | string |
Trie les produits pour les retourner dans l'ordre demandé. Valeurs possibles : nbrSales (retourne les produits triés par le nombre de fois où ils ont été vendus), salesValue (retourne les produits triés par le total des ventes générées par ces produits) et creationDate (retourne les produits triés par date de création, les produits les plus récents en premier). |
Exemple de requête
curl -H "Accept: application/json" \
https://app.snipcart.com/api/products?limit=50&offset=0 |
-u {API_KEY}:
Exemple de réponse
{
"totalItems": 29,
"offset": 0,
"limit": 50,
"items": [
{
"mode": "Test",
"userDefinedId": "HGW",
"url": "/snipcart-jekyll-integration",
"price": 20.99,
"name": "How Google Works",
"description": "",
"image": "http://d.gr-assets.com/books/1422538855l/23158207.jpg",
"archived": false,
"statistics": {
"numberOfSales": 29,
"totalSales": 608.71
},
"customFields": [],
"metadata": {
"votes": 95,
"score": 336
},
"id": "325bfaef-d665-4c9a-a965-f5bd6ab46934",
"creationDate": "2016-05-25T21:21:27.213Z",
"modificationDate": "2016-11-01T16:20:44.377Z"
},
{
"mode": "Test",
"userDefinedId": "AP1",
"url": "/product-examples.html",
"price": 299.99,
"name": "Android Phone",
"description": "",
"image": "",
"archived": false,
"inventoryManagementMethod": "Variant",
"stock": 1,
"totalStock": 11,
"allowOutOfStockPurchases": false,
"statistics": {
"numberOfSales": 0,
"totalSales": 0
},
"customFields": [
{
"name": "Size",
"operation": "+200.00",
"type": "dropdown",
"options": "16GB|32GB[+50.00]|128GB[+200.00]",
"required": false,
"value": "128GB",
"optionsArray": [
"16GB",
"32GB",
"128GB"
]
},
{
"name": "Color",
"operation": "",
"type": "dropdown",
"options": "Black|Blue|Red|White",
"required": false,
"value": "Blue",
"optionsArray": [
"Black",
"Blue",
"Red",
"White"
]
}
],
"variants": [
{
"stock": 10,
"variation": [
{
"name": "Size",
"option": "16GB"
},
{
"name": "Color",
"option": "Black"
}
],
"allowOutOfStockPurchases": true
},
{
"stock": 1,
"variation": [
{
"name": "Size",
"option": "32GB"
},
{
"name": "Color",
"option": "Red"
}
],
"allowOutOfStockPurchases": false
}
],
"metadata": {
"meta": true
},
"id": "3932ecd1-6508-4209-a7c6-8da4cc75590d",
"creationDate": "2016-11-03T12:51:04.297Z",
"modificationDate": "2016-11-03T12:51:28.873Z"
}
]
}
GET /products/{id}
Cette méthode retourne un produit par son identifiant. L'identifiant peut être l'identifiant unique généré par Snipcart ou l'identifiant spécifié par l'utilisateur.
URL de la ressource
GET https://app.snipcart.com/api/products/3932ecd1-6508-4209-a7c6-8da4cc75590d
En-têtes
Nom | Valeur | Obligatoire? | Description |
---|---|---|---|
Accept | application/json |
Oui | Notre API n'accepte que le type de contenu application/json, vous devez donc toujours spécifier l'en-tête Accept: application/json dans chaque requête que vous effectuez. |
Paramètres
Nom | Obligatoire? | Type | Description |
---|---|---|---|
id |
Non | string |
L'identifiant unique du produit généré par Snipcart. Peut également être l'identifiant défini par l'utilisateur. |
Exemple de requête
curl -H "Accept: application/json" \
https://app.snipcart.com/api/products/AP1 |
-u {API_KEY}:
Exemple de réponse
{
"mode": "Test",
"userDefinedId": "AP1",
"url": "/product-examples.html",
"price": 299.99,
"name": "Android Phone",
"description": "",
"image": "",
"archived": false,
"inventoryManagementMethod": "Variant",
"stock": 1,
"totalStock": 11,
"allowOutOfStockPurchases": false,
"statistics": {
"numberOfSales": 0,
"totalSales": 0
},
"customFields": [
{
"name": "Size",
"operation": "+200.00",
"type": "dropdown",
"options": "16GB|32GB[+50.00]|128GB[+200.00]",
"required": false,
"value": "128GB",
"optionsArray": [
"16GB",
"32GB",
"128GB"
]
},
{
"name": "Color",
"operation": "",
"type": "dropdown",
"options": "Black|Blue|Red|White",
"required": false,
"value": "Blue",
"optionsArray": [
"Black",
"Blue",
"Red",
"White"
]
}
],
"variants": [
{
"stock": 10,
"variation": [
{
"name": "Size",
"option": "16GB"
},
{
"name": "Color",
"option": "Black"
}
],
"allowOutOfStockPurchases": true
},
{
"stock": 1,
"variation": [
{
"name": "Size",
"option": "32GB"
},
{
"name": "Color",
"option": "Red"
}
],
"allowOutOfStockPurchases": false
}
],
"metadata": null,
"id": "3932ecd1-6508-4209-a7c6-8da4cc75590d",
"creationDate": "2016-11-03T12:51:04.297Z",
"modificationDate": "2016-11-03T12:51:28.873Z"
}
POST /products
Cette méthode récupère l'URL passée en paramètre et génère les produits trouvés sur la page. Lorsque la valeur de fetchUrl
est une page HTML standard, nous trouverons tous les boutons de la page ayant la classe css snipcart-add-item
. Ces produits seront ensuite importés dans Snipcart.
Vous pouvez également définir vos produits avec un objet JSON. Vous pouvez jeter un coup d'œil à notre entrée Indexeur JSON pour comprendre comment définir les produits.
Dans la réponse, vous pouvez vous attendre à recevoir les produits nouvellement importés, sous forme d'un tableau JSON.
URL de la ressource
POST https://app.snipcart.com/api/products
En-têtes
Nom | Valeur | Obligatoire? | Description |
---|---|---|---|
Accept | application/json |
Oui | Notre API n'accepte que le type de contenu application/json, vous devez donc toujours spécifier l'en-tête Accept: application/json dans chaque requête que vous effectuez. |
Content-Type | application/json |
Oui | Le corps de la requête doit être JSON, nous spécifions donc le type de contenu. |
Paramètres
Nom | Obligatoire? | Type | Description |
---|---|---|---|
fetchUrl |
Oui | string |
L'URL où nous trouverons les détails du produit. |
Exemple de requête
curl https://app.snipcart.com/api/products
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u {API_KEY}: \
-d "{fetchUrl: 'https://yoursite.com/products.json'}"
Exemple de réponse
[
{
"mode": "Test",
"userDefinedId": "123",
"url": "/products.json",
"price": 10.00,
"name": "Product 123",
"description": null,
"image": null,
"archived": false,
"statistics": {
"numberOfSales": 0,
"totalSales": 0
},
"customFields": [],
"metadata": null,
"id": "3e330cf2-6962-4875-8c9d-73f337b6de3e",
"creationDate": "2016-12-13T15:54:24.5595583Z",
"modificationDate": "2016-12-13T15:54:24.5595583Z"
},
{
"mode": "Test",
"userDefinedId": "456",
"url": "/products.json",
"price": 40.00,
"name": "Product 456",
"description": null,
"image": null,
"archived": false,
"statistics": {
"numberOfSales": 0,
"totalSales": 0
},
"customFields": [],
"metadata": null,
"id": "c148bdb5-92ea-4c50-a7ec-46763dd1217a",
"creationDate": "2016-12-13T15:54:24.5908458Z",
"modificationDate": "2016-12-13T15:54:24.5908458Z"
}
]
PUT /products/{id}
Cette méthode permet de mettre à jour un produit spécifique. L'identifiant peut être l'identifiant unique généré par Snipcart ou l'identifiant spécifié par l'utilisateur.
Comme les produits ne sont pas définis de notre côté, vous ne pouvez modifier que certains attributs tels que les valeurs d'inventaire.
URL de la ressource
GET https://app.snipcart.com/api/products/3932ecd1-6508-4209-a7c6-8da4cc75590d
En-têtes
Nom | Valeur | Obligatoire? | Description |
---|---|---|---|
Accept | application/json |
Oui | Notre API n'accepte que le type de contenu application/json, vous devez donc toujours spécifier l'en-tête Accept: application/json dans chaque requête que vous effectuez. |
Paramètres
Nom | Obligatoire? | Type | Description |
---|---|---|---|
id |
Non | string |
L'identifiant unique du produit généré par Snipcart. Peut également être l'identifiant défini par l'utilisateur. Ce paramètre est transmis par l'URL et non par le corps de la requête. |
inventoryManagementMethod |
Non | enum |
Spécifie comment l'inventaire doit être suivi pour ce produit. Peut être Single ou Variant . Variant peut être utilisé lorsqu'un produit comporte des champs personnalisés déroulants. |
variants |
Non | object |
Permet de définir le stock par variante de produit. Voir la description des variantes ci-dessous. |
stock |
Non | int |
Le nombre d'articles en stock. Sera utilisé lorsque inventoryManagementMethod est Single . |
allowOutOfStockPurchases |
Non | bool |
Si true , le client pourra acheter le produit même s'il est en rupture de stock. Le niveau du stock pourrait être négatif. Si false , il sera impossible d'acheter le produit. |
Paramètres des variantes
Lorsque inventoryManagementMethod
est Variant
, vous devez définir une liste de variantes avec leur niveau de stock pour le produit.
Nom | Obligatoire? | Type | Description |
---|---|---|---|
variation |
Oui | array |
Les spécifications de la variation. Doivent être les valeurs possibles des champs personnalisés. Par exemple [{ "name": "Size", "option": "32GB" }, { "name": "Color", "option": "Black " }] |
stock |
Non | int |
Le nombre d'articles de cette variation en stock. |
allowOutOfStockPurchases |
Non | bool |
Si true , le client pourra acheter la variation du produit même s'il est en rupture de stock. Le niveau du stock pourrait être négatif. Si false , il sera impossible d'acheter la variation du produit. |
Exemple de requête
curl https://app.snipcart.com/api/products/AP1
-X PUT \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-u {API_KEY} \
-d "{ 'inventoryManagementMethod': 'Single', 'stock': 20 }"
Exemple de réponse
{
"mode": "Test",
"userDefinedId": "AP1",
"url": "/product-examples.html",
"price": 299.99,
"name": "Android Phone",
"description": "",
"image": "",
"archived": false,
"inventoryManagementMethod": "Single",
"stock": 20,
"totalStock": 20,
"allowOutOfStockPurchases": false,
"statistics": {
"numberOfSales": 0,
"totalSales": 0
},
"customFields": [
{
"name": "Size",
"operation": "+200.00",
"type": "dropdown",
"options": "16GB|32GB[+50.00]|128GB[+200.00]",
"required": false,
"value": "128GB",
"optionsArray": [
"16GB",
"32GB",
"128GB"
]
},
{
"name": "Color",
"operation": "",
"type": "dropdown",
"options": "Black|Blue|Red|White",
"required": false,
"value": "Blue",
"optionsArray": [
"Black",
"Blue",
"Red",
"White"
]
}
],
"metadata": null,
"id": "3932ecd1-6508-4209-a7c6-8da4cc75590d",
"creationDate": "2016-11-03T12:51:04.297Z",
"modificationDate": "2016-11-03T12:51:28.873Z"
}
DELETE /products/{id}
Cette méthode archive le produit. Un produit archivé ne sera plus visible dans la liste des produits. Cependant, il sera automatiquement restauré s'il est de nouveau ajouté à un panier ou récupéré manuellement.
URL de la ressource
DELETE https://app.snipcart.com/api/products/{id}
En-têtes
Nom | Valeur | Obligatoire? | Description |
---|---|---|---|
Accept | application/json |
Oui | Notre API n'accepte que le type de contenu application/json, vous devez donc toujours spécifier l'en-tête Accept: application/json dans chaque requête que vous effectuez. |
Content-Type | application/json |
Oui | Le corps de la requête doit être JSON, nous spécifions donc le type de contenu. |
Paramètres
Nom | Obligatoire? | Type | Description |
---|---|---|---|
id |
Non | string |
L'identifiant unique du produit généré par Snipcart. Peut également être l'identifiant défini par l'utilisateur. Ce paramètre est transmis par l'URL et non par le corps de la requête. |
Exemple de requête
curl https://app.snipcart.com/api/products/{id}
-X "DELETE" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u {API_KEY}: