Skip to content
Julien Boulnois edited this page Sep 23, 2015 · 22 revisions

Service Web PNB

Introduction

Des services spécifiques ont été conçus pour les commandes aux collectivités. Ces derniers reprennent en grande partie la forme des services pour le grand public.

Requête et réponse

Les requêtes se font via une commande HTTP GET ou POST. La réponse est retournée via un flux XML.

Différence entre ID immatériel et ID revendeur

L'ID immatériel est l'ID fournit par immatériel.fr pour une entité donnée. L'ID revendeur quant à elle est l'ID définie par le revendeur dans sa propre base.

Processus

Le processus de commande se compose en trois étapes :

  • création de l'ID client
  • création de la commande
  • récupération des URL d'accès

Codes d'erreur communs

  • InvalidKey : la clé d'API est invalide
  • UnknownReseller : le revendeur spécifié est inconnu
  • Forbidden : l'accès à cette requête est interdite
  • InternalError : une erreur indéterminée est survenue
  • DataMissing : des arguments obligatoires n'ont pas été renseignés

Récupération des métadonnées

Trouver un ou plusieurs titres (Vocabulaire XML :

immatériel.fr)

[https://ws.immateriel.fr/fr/web_service/book_query_onix_3_pnb](https://ws .immateriel.fr/fr/web_service/book_query_onix_3_pnb)

Arguments

Commun
  • api_key : Clé d'identification
  • reseller_id : ID revendeur immatériel.fr ou reseller_dilicom_gencod : ID revendeur dilicom
Argument de recherche
  • isbn : ISBN de l'ouvrage
  • publisher_id : ID immatériel.fr de l'éditeur ou publisher_dilicom_gencod : ID dilicom de l'éditeur
  • since : titres ajoutés/modifiés depuis cette date format AAAA-MM-JJ
  • q : champ de recherche libre "Indisponible"

Si aucun argument de recherche n'est spécifié, tous les titres disponibles à la vente pour le revendeur sont retournés

Codes d'erreur

Codes communs uniquement

Processus de commande

Créer une nouvelle commande

[https://ws.immateriel.fr/fr/web_service/push_order_pnb](https://ws.immateriel.fr/ fr/web_service/push_order_pnb)

Contrairement au services à destination du grand public, il n'y a pas de service de création de client final.

Si vous agissez au nom de plusieurs libraires, il est nécessaire de commencer par s'assurer que le libraire responsable de la commande existe dans notre base. Pour cela, rendez-vous à la section [concernant les agrégateurs de libra iries](http://nu.immateriel.fr/documentation/index.php/Service_Web_revendeur#A jouter_un_revendeur_.28acc.C3.A8s_limit.C3.A9_distributeurs.29).

Arguments

Obligatoire
  • api_key : Clé d'identification
  • reseller_id : ID revendeur immatériel.fr ou reseller_dilicom_gencod : ID revendeur dilicom
  • order_uid : ID commande revendeur
  • customer_country : Pays du client collectivité
  • order_lines : table de hachage des lignes de commandes ayant pour chaque produit :
    • order_line_uid : ID ligne de commande revendeur
    • price : prix en centimes
    • currency (facultatif, EUR par défaut) : devise
    • qty : quantité commandée

order_lines doit être sous la forme &order_lines[ISBN1][price]=PRIX1&order_lines[ISBN1][qty]=QUANTITE1&order_lines[ISBN2][price]=PRIX2&order_lines[ISBN2][qty]=QUANTITE2 Le prix doit être renseigné en centimes (4,99 euros doit être indiqué 499). Pour nos partenaires hors UE, il est également possible d'indiquer la devise via order_lines[ISBN1][currency]=CAD

Renseigner une liste de titres pour une même commande permet d'économiser sur les E/S réseaux et ainsi d'accélérer le passage de commande lorsque plusieurs titres sont commandés.

Réponse

<response>
  <result type="OrderCreated" download_key="CLETELECHARGEMENT" tax="xxx" amount="yyy" id="ID_immateriel" order_uid="UID_revendeur">OK</result>
</response>
  • id : ID de la commande dans la base immatériel.fr
  • order_uid : ID de la commande dans la base du revendeur
  • download_key : clé de téléchargement pour la commande
  • amount : montant total de la commande
  • tax : montant total des taxes

Codes d'erreur

  • ExistingOrder : la commande existe déjà dans la base
  • SellForbidden : vous n'êtes pas autorisé à commander un ou plusieurs des titres demandés
  • UnknownCustomer : le client n'existe pas dans la base : commencez par le créer via la commande push_customer

Déclencher un prêt

[https://ws.immateriel.fr/fr/web_service/push_load_pnb](https://ws.immat eriel.fr/fr/web_service/push_load_pnb)

Arguments

Obligatoire
  • api_key : Clé d'identification
  • reseller_id : ID revendeur immatériel.fr ou reseller_dilicom_gencod : ID revendeur dilicom
  • order_line_uid : ID ligne commande revendeur
  • loan_uid : ID collectivité du prêt
  • medium : download ou streaming

Réponse

<response>
 <result type="DownloadList" order_uid="UID">
  <product isbn="ISBN">
   <link url="[http://ws.immateriel.fr/fr/web_service/download?resource_id=ID&download_key=DLKEY](http://ws.immateriel.fr/fr/web_service/download?resource_id=ID&download_key=DLKEY)" 
        name="Epub" format_key="epub" mimetype="application/epub"/>
  </product>
 </result>
</response>
  • url : lien vers la ressource
  • name : nom de la ressource
  • mimetype : type MIME de la ressource
  • format_key : clé du format de la ressource

Codes d'erreur

  • UnknownOrderLine : la ligne de commande n'existe pas dans la base
  • LoanAlreadyExists : une demande de prêt similaire a déjà été faite

Récupérer les détails de lignes de commandes

[https://ws.immateriel.fr/fr/web_service/get_order_pnb](https://ws.immat eriel.fr/fr/web_service/get_order_pnb)

Arguments

Obligatoire
  • api_key : Clé d'identification
  • reseller_id : ID revendeur immatériel.fr ou reseller_dilicom_gencod : ID revendeur dilicom
  • order_line_uids : liste des lignes de commandes sous la forme &order_line_uids[]=ligne1&order_line_uids[]=ligne2&order_line_uids[]=ligne3

Réponse

TODO

Codes d'erreur

  • UnknownOrderLine : une des lignes de commande n'existe pas dans la base

Ajouter un revendeur (accès limité aggregateurs)

[https://ws.immateriel.fr/fr/web_service/push_reseller](https://ws.immateriel. fr/fr/web_service/push_reseller)

Même service que pour le grand public.

Clone this wiki locally