Documentation API 123imprim
Récupération des informations d'un panier

API RESTful Partenaires

L'objet de cette documentation est de présenter l'API RESTful de 123IMPRIM permettant aux clients partenaires d'accéder aux configurateurs de nos produits ainsi que de récupérer les prix calculés par les configurations choisies.

API RESTful Espace Partenaires Impression 100% française
Statut. Ce document est une version devant être complétée en fonction de l'avancement du projet.

Résumé:

Il est possible de créer directement un panier contenant des lignes afin de pouvoir récupérer ses informations par la suite (le prix par exemple). Cette méthode dévie légèrement de la procédure classique sur deux aspects:

  • La création du panier et des lignes se fait en une seule requête au lieu d'une requête pour le panier + une requête supplémentaire par ligne. Par conséquent la syntaxe n'est pas exactement la même.
  • Un panier créé de cette façon est éphémère, c'est-à-dire que sa durée de vie est liée à celle de la requête : une fois les informations rétournées par le serveur, le panier n'existe plus. Il n'est donc pas possible de rajouter de nouvelles lignes ou de modifier des informations telles que l'adresse de livraison a posteriori.

Création directe d'un panier (Requête HTTP POST):

L'URL de l'endpoint se présente sous ce format: https://api.123imprim.com/0.2/nom_du_site/panier/nom_du_site est remplacé par le site concerné (adhesifs, affiches, baches, panneaux, plv).

Exemple pour Baches:

Voici un exemple de JSON (content-type de la requête: application/json) pouvant être utilisé pour créer un panier avec deux lignes:

{
  "devis": "nom devis",
  "adresse_livraison": {
    "adresse1": "rue victor lagrange",
    "code_postal": "69007",
    "instructions": "com test",
    "nom": "nom",
    "societe": "123imprim",
    "telephone": "0102030405",
    "ville": "Lyon"
  },
  "lignes": [
    {
      "label": "label ligne",
      "base": 200,
      "hauteur": 100,
      "impression": 1,
      "decoupe": 1,
      "support": 8,
      "quantite": 5
    },
    {
      "label": "label ligne 2",
      "base": 300,
      "hauteur": 150,
      "impression": 1,
      "decoupe": 1,
      "support": 8,
      "quantite": 10
    }
  ]
}

On retrouve bien en marron les paramètres propres au panier plus le nouveau paramètre lignes contenant ceux des deux lignes en bleu et violet.

Voici la réponse retournée par le serveur si tout s'est bien passé:

{
    "devis": "nom devis",
    "delai": 7,
    "prix_ht": 29645,
    "frais_port_ht": 2657,
    "remise_grand_compte_ht": 2075,
    "prix_total_ht": 30377,
    "prix_tva": 6075,
    "prix_final_ttc": 36452,
    "emballage_renforce_ht": 150,
    "lignes": [
        {
            "label": "label ligne",
            "prix_ht": 6140,
            "base": 200,
            "hauteur": 100,
            "quantite": 5,
            "support": 8,
            "impression": 1,
            "decoupe": 1,
            "oeillet": null,
            "saisie_oeillet": null,
            "ourlet": null,
            "fourreau": null,
            "saisie_fourreau": "",
            "fixation": null,
            "saisie_fixation": null,
            "verification": false
        },
        {
            "label": "label ligne 2",
            "prix_ht": 23505,
            "base": 300,
            "hauteur": 150,
            "quantite": 10,
            "support": 8,
            "impression": 1,
            "decoupe": 1,
            "oeillet": null,
            "saisie_oeillet": null,
            "ourlet": null,
            "fourreau": null,
            "saisie_fourreau": "",
            "fixation": null,
            "saisie_fixation": null,
            "verification": false
        }
    ],
    "adresse_livraison": {
        "nom": "nom",
        "prenom": "",
        "societe": "123imprim",
        "adresse1": "rue victor lagrange",
        "adresse2": "",
        "code_postal": "69007",
        "ville": "Lyon",
        "pays": "France",
        "email": "",
        "telephone": "0102030405",
        "instructions": "com test"
    }
}

Cas particulier pour les affiches:

Les affiches étant séparées en 2 catégories (sur mesure et urbaines) avec des paramètres distincts, lignes est par conséquent remplacé par deux paramètres:

  • lignes_sur_mesure
  • lignes_urbaines

Exemple:

{
  "devis": "nom devis",
  "adresse_livraison": {
    "nom": "nom",
    "prenom": "prenom",
    "societe": "123imprim",
    "adresse1": "rue victor lagrange",
    "adresse2": "adresse 2",
    "code_postal": "69007",
    "ville": "Lyon",
    "pays": "France",
    "email": "test@test.com",
    "telephone": "0102030405",
    "instructions": "com test"
  },
  "lignes_sur_mesure": [
    {
      "label": "label ligne sur mesure",
      "base": 200,
      "hauteur": 100,
      "impression": 8,
      "decoupe": 1,
      "support": 40,
      "finition": 4,
      "quantite": 5
    }
  ]>,
  "lignes_urbaines": [
    {
      "label": "label ligne urbaine",
      "format": 1,
      "support": 13,
      "quantite": 10
    }
 ]
}

Création directe d'une commande (Requête HTTP POST):

Afin de créer une commande, il faut effectuer une requête simimaire à celle du panier.

Pour cela il faut modifier l'adresse de l'endpoint pour y rajouter validate/ à la fin; pour baches nous obtenons donc https://api.123imprim.com/0.2/panneaux/panier/validate/

Voici une liste non exautive des différences :

  • Le champ prenom_livraison est obligatoire pour créer une commande
  • Le numéro de téléphone telephone_livraison doit être un numéro valide (soit 10 chiffres commençant par 0 (zéro), soit un "+" suivi du code pays et le numéro
S'il n'y a pas d'erreur, le serveur retournera les données de la commande nouvellement créée:

{
    "id": 88410,
    "status": "Pas de statut",
    "number": "PAN88410",
    "reference_client": "test test 8",
    "adresse_livraison": {
        "nom": "nom",
        "prenom": "prenom",
        "societe": "123imprim",
        "adresse1": "rue victor lagrange",
        "adresse2": "",
        "code_postal": "69007",
        "ville": "LYON 07",
        "pays": "France",
        "email": "",
        "telephone": "0102030405",
        "instructions": "com test"
    },
    "prix_fact_ht": 2224,
    "frais_port_ht": 2790,
    "remise_grand_compte_ht": 22,
    "prix_fact_total_ht": 5792,
    "prix_fact_total_tva": 1158.0,
    "prix_fact_total_ttc": 6950,
    "prix_emballage_renforce_ht": 800,
    "lignes": [
        {
            "id": 368347,
            "label": "",
            "base": 100,
            "hauteur": 100,
            "quantite": 1,
            "support": 24,
            "impression": 8,
            "decoupe": 1,
            "oeillet": null,
            "saisie_oeillet": null,
            "finition": null,
            "soutien_couleur": null,
            "perforation": null,
            "suspension": null,
            "fixation": null,
            "saisie_fixation": null,
            "verification": false
        }
    ]
}