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}: