Table des matières

Version REST

La version REST fournit les mêmes services que la version SOAP. Tous les services de l'API REST sont accessibles via des requêtes HTTP GET et POST. Le serveur PNB envoie la réponse sous forme de simples objets JSON.

Pour connaître la dernière version en cours et l'adresse des services cliquer ici

Authentification des services WEB

L'API PNB REST utilise l'authentification HTTP Basic. Le login et le mot de passe ne sont pas passés en paramètres dans la requête. Cf les paramètres d'authentification pour chaque service.

Les statuts HTTP des réponses PNB

Code Statut Description
200OK Le serveur a accepté de traiter la requête. Le statut de traitement de la requête est défini dans le champ returnStatus
400Bad Request Le serveur PNB ne peut pas traiter la requête puisque la requête ne respecte pas le WSDL
401Unauthorized Appel d'un service sans authentification HTTP Basic
403ForbiddenLes paramètres d'authentification sont erronés
500Internal Server Error Erreur technique du serveur PNB

Service passer une commande : sendOrder

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/sendOrder?

Format de la requête sendOrder

glnColl=?&
glnContractor=?&
glnDelivery=?&
orderId=?&
orderIdColl=?&
resellerCountry=?&
collCountry=?&
orderRequestLine[0].quantity=?&
orderRequestLine[0].glnDistributor=?&
orderRequestLine[0].ean13=?&
orderRequestLine[0].unitPrice=?&
orderRequestLine[0].unitPriceExcludingTax=?&
orderRequestLine[0].taxRate=?&//optionnel
orderRequestLine[0].currency=?&
orderRequestLine[0].dmdDate=?&
orderRequestLine[0].lineReference=?& //optionnel
orderRequestLine[0].lineReferenceColl=?&//optionnel
...
orderRequestLine[n].quantity=?&
orderRequestLine[n].glnDistributor=?&
orderRequestLine[n].ean13=?&
orderRequestLine[n].unitPrice=?&
orderRequestLine[n].unitPriceExcludingTax=?&
orderRequestLine[n].taxRate=?&//optionnel
orderRequestLine[n].currency=?&
orderRequestLine[n].dmdDate=?&
orderRequestLine[n].lineReference=?& //optionnel
orderRequestLine[n].lineReferenceColl=?//optionnel

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/sendOrder?
glnColl=XXXXXXXXXXXXX&
glnContractor=XXXXXXXXXXXXX&
glnDelivery=XXXXXXXXXXXXX&
orderId=XXXX&
orderIdColl=XXXX&
resellerCountry=FR&
collCountry=FR&
orderRequestLine[0].quantity=1&
orderRequestLine[0].glnDistributor=3012410002007&
orderRequestLine[0].ean13=9788888888880&
orderRequestLine[0].unitPrice=599&
orderRequestLine[0].unitPriceExcludingTax=499&
orderRequestLine[0].taxRate=2000&
orderRequestLine[0].currency=EUR&
orderRequestLine[0].dmdDate=2015-07-01T17%3A11%3A02.974%2B02%3A00

Format de la réponse sendOrder

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [? ],
  "orderResponseLine" : 
  [ 
  {
    "currency" : "?",
    "returnStatus" : "?",
    "returnMessage" :"?" //optionnel
    "glnDistributor" : "?",
    "ean13" : "?",
    "lineReference" : "?",//optionnel
    "unitPrice" : ?,
    "quantity" : ?,
    "orderLineId" : "?"
  },
  ... 
  ],
  "orderId" : "?"
}

Exemple:

{
 "requestId":"aw02v2_000000005_201502251525",
  "returnStatus" : "OK",
  "returnMessage" : [],
  "orderResponseLine" : [ 
  {
    "currency" : "EUR",
    "returnStatus" : "OK",
    "glnDistributor" : "3012410002007",
    "ean13" : "9782021153057",
    "unitPrice" : 599,
    "quantity" : 1,
    "orderLineId" : "53e89434874d8c7252fbe108"
  } ],
  "orderId" : "XXXX008a"
}

Service annuler une commande : cancelOrder

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/cancelOrder?

Format de la requête cancelOrder

glnContractor=?&
orderId=?&
orderLineId[0]=?&//orderLineId[] est Optionnel 
...
orderLineId[n]=?

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/cancelOrder?
glnContractor=XXXXXXXXXXXXX&
orderId=WIKITEST0011a

Format de la réponse cancelOrder

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [?],
  "cancelResponseLine" : 
  [ 
  {
    "returnStatus" : "?",
    "returnMessage" : "?",//Optionnel
    "orderLineId" : "?"
  }, 
  ...
 ]
}

Exemple:

{
  "requestId":"aw02v2_000000007_201502260949",
  "returnStatus" : "OK",
  "returnMessage" : [],
  "cancelResponseLine" : [
 {
    "returnStatus" : "CANCELLED",
    "orderLineId" : "53e898e1874d8c7252fbe12f"
  }, 
  {
    "returnStatus" : "NOT_IMPLEMENTED",
    "returnMessage" : "Service CancelOrder not yet implemented for distributor : EDEN",
    "orderLineId" : "53e898e1874d8c7252fbe12e"
  } ]
}

Service vérifier la disponibilité d’un livre : checkAvailability

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/checkAvailability?

Format de la requête checkAvailability

glnColl=?&
glnContractor=?&
resellerCountry=?&
collCountry=?&
checkAvailabilityLine[0].glnDistributor=?&
checkAvailabilityLine[0].ean13=?&
checkAvailabilityLine[0].unitPrice=?
checkAvailabilityLine[0].unitPriceExcludingTax=?&
checkAvailabilityLine[0].taxRate=?&
checkAvailabilityLine[0].currency=?&
...
checkAvailabilityLine[n].glnDistributor=?&
checkAvailabilityLine[n].ean13=?&
checkAvailabilityLine[n].unitPrice=?&
checkAvailabilityLine[n].unitPriceExcludingTax=?&
checkAvailabilityLine[n].taxRate=?&
checkAvailabilityLine[n].currency=?

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/checkAvailability?
glnColl=XXXXXXXXXXXXX&
glnContractor=XXXXXXXXXXXXX&
resellerCountry=FR&
collCountry=FR&
checkAvailabilityLine[0].glnDistributor=3012410002007&
checkAvailabilityLine[0].ean13=9791077777025&
checkAvailabilityLine[0].unitPrice=599&
checkAvailabilityLine[0].unitPriceExcludingTax=499&
checkAvailabilityLine[0].taxRate=2000&
checkAvailabilityLine[0].currency=EUR

Format de la réponse checkAvailability

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [?],
  "checkAvailabilityResponseLine" : 
  [
   {
    "date" : "?",
    "returnStatus" : "?",
    "returnMessage" : [?], //Optionnel
    "glnDistributor" : "?",
    "ean13" : "?",
    "unitPrice" : ?,
    "checkAvailabilityReturnValue" : "?"
  },
  ...
 ]
}

Exemple:

{
  "requestId":"aw02v2_000000011_201502261011",
  "returnStatus" : "OK",
  "returnMessage" : [],
  "checkAvailabilityResponseLine" : [ 
  {
    "date" : "2015-02-26T10:11:00.502+01:00",
    "returnStatus" : "OK",
    "returnMessage" : [],
    "glnDistributor" : "3012410002007",
    "ean13" : "9782021153057",
    "unitPrice" : 599,
    "checkAvailabilityReturnValue" : "AVAILABLE"
  } ]
}

Service récupérer les offres : getOffers

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/getOffers?

Format de la requête getOffers

glnContractor=?&
sinceDate=?

ou

glnContractor=?&
lastConnection=?

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getOffers?glnContractor=XXXXXXXXXXXXX&sinceDate=2015-02-24T00:37:25.908Z
https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getOffers?glnContractor=XXXXXXXXXXXXX&lastConnection=

Format de la réponse getOffers

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [ ?], //Optionnel
  "onixFileUrl" : [ //Optionnel
  {
    "httpLink" : "?" //Optionnel
  } 
  ],
   "noNotice" : "" //Optionnel
}

Exemple:

{
  "requestId":"aw01v2_000000011_201502261027",
  "returnStatus" : "OK",
  "returnMessage" : [ ],
  "onixFileUrl" : [ 
  {
    "httpLink" : "https://pnb-dilicom.centprod.com/notices_onix/diffusion_pnb_3025594195700_201502261027_539849823871865823760483681054306708638.xml"
  } ]
}

Service récupérer les offres d’un distributeur : getOffersForDistributor

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/getOffersForDistributor ?

Format de la requête getOffersForDistributor

glnContractor=?&
glnDistributor=?&
sinceDate=?

ou

glnContractor=?&
glnDistributor=?&
lastConnection=?

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getOffersForDistributor?glnContractor=XXXXXXXXXXXXX&glnDistributor=3012410002007&sinceDate=2015-02-24T00:37:25.908Z
https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getOffersForDistributor?glnContractor=XXXXXXXXXXXXX&glnDistributor=3012410002007&lastConnection=

Format de la réponse getOffersForDistributor

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [ ?], //Optionnel
  "onixFileUrl" : [ //Optionnel
  {
    "httpLink" : "?" //Optionnel
  } 
  ],
   "noNotice" : "" //Optionnel
}

Exemple:

{
  "requestId":"aw01v2_000000017_201502261042",
  "returnStatus" : "OK",
  "returnMessage" : [ ],
  "onixFileUrl" : [ 
  {
    "httpLink" : "http://pnb-dev.dilicom.net/notices_onix/diffusion_pnb_3025594195700_201408121104_1153210725010295004293805331708177882815.xml"
  } ]
}

Service obtenir les détails des commandes passées par les revendeurs : getOrders

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/getOrders?

Format de la requête getOrders

glnContractor=?&
sinceDate=?&
returnLinesWithError=? //Optionnel

ou

glnContractor=?&
orderIdColl=?&
returnLinesWithError=? //Optionnel

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getOrders?glnContractor=XXXXXXXXXXXXX&sinceDate=2014-08-01T16:37:25.908Z&returnLinesWithError=false
https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getOrders?glnContractor=XXXXXXXXXXXXX&orderIdColl=TESTBIBVB100&returnLinesWithError=false

Format de la réponse getOrders

{
  "requestId":"?",
  "date" : "?",
  "returnStatus" : "?",
  "returnMessage" : [?],
  "getOrderResponseLine" : 
  [ 
  {
    "returnStatus" : "?",
    "orderIdColl" : "?",
    "orderLine" : 
    [ 
    {
      "returnStatus" : "?",
      "returnMessage":"?", //Optionnel
      "ean13" : "?",
      "lineReferenceColl" : "?", //Optionnel
      "quantity" : 1,
      "orderLineId" : "?",
      "nta" : ?, //Optionnel
      "nus1" : ?, //Optionnel
      "nus2" : ?, //Optionnel
      "beginDate" : "?", //Optionnel
      "endDate" : "?" //Optionnel
    },
    ... 
    ]
  },
  ...
 ],
  "noOrder" : "" //Optionnel
}

Exemple:

{
  "requestId":"aw02v2_000000017_201502261052",
  "date" : "2014-08-13T11:04:34.005+02:00",
  "returnStatus" : "OK",
  "returnMessage" : [ ],
  "getOrderResponseLine" : [ 
  {
    "returnStatus" : "OK",
    "orderIdColl" : "TESTBIBVB100",
    "orderLine" : [ 
    {
      "returnStatus" : "OK",
      "ean13" : "9791023501667",
      "lineReferenceColl" : "BIBVBL100",
      "quantity" : 1,
      "orderLineId" : "53e47b627b69cea823bf677b",
      "nta" : 40,
      "nus1" : 15,
      "nus2" : 9999,
      "beginDate" : "2014-08-08T09:25:23+02:00",
      "endDate" : "2019-08-07T09:25:23+02:00"
    } ]
  },
  {
    "returnStatus" : "OK",
    "orderIdColl" : "TESTBIBVB101",
    "orderLine" : [ ]
  }, 
  {
    "returnStatus" : "OK",
    "orderIdColl" : "TESTBIBVB102",
    "orderLine" : [ 
    {
      "returnStatus" : "OK",
      "ean13" : "9791023501667",
      "lineReferenceColl" : "BIBVBL102",
      "quantity" : 1,
      "orderLineId" : "53e48a0f7b69a1ad38468c4a",
      "nta" : 39,
      "nus1" : 14,
      "nus2" : 9999,
      "beginDate" : "2014-08-08T10:28:02+02:00",
      "endDate" : "2019-08-07T10:28:02+02:00"
    } ]
  } ]
}

Service déclarer une adresse IP : declareIp

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/declareIp?

Format de la requête declareIp

glnContractor=?&
ips[0]=?&
ips[1]=?&
...
ips[n]=?

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/declareIp?
glnContractor=XXXXXXXXXXXXX&
ips[0]=16.100.100.100,16.100.100.200&
ips[1]=25.25.0.3

Format de la réponse declareIp

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [?]
}

Exemple:

{
  "requestId":"aw01v2_000000019_201502261103",
  "returnStatus" : "OK",
  "returnMessage" : [ "Warn : 16.100.100.100,16.100.100.200 already declared" ]
}

Service emprunter un livre : loanBook

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/loanBook?

Format de la requête loanBook

glnContractor=?&
loanerColl=?&
orderLineId=?&
loanId=?&
ean13=?&
accessMedium=?&
localization=?&
loanEndDate=?&
ipAddress=?& //Optionnel
callbackUrl=? //Optionnel

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/loanBook?
glnContractor=XXXXXXXXXXXXX&
loanerColl=XXXXXXXXXXXXX&
orderLineId=53f1b4817b698cfb72afd7e1&
loanId=WIKI001&
ean13=9782021153057&
accessMedium=STREAMING&
localization=EX_SITU&
loanEndDate=2014-09-22T00:37:25Z

Format de la réponse loanBook

{
  "link" : //Optionnel
  {
    "format" : "?", //Optionnel
    "url" : "?",
    "ean13" : "?",
    "formatDescription" : "?", 
    "mimetype" : "?" //Optionnel
  },
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [?],
  "orderLineId" : "?",
  "loanId" : "?",
  "loanEndDate" : "?" //Optionnel
}

Exemple:

{
  "link" : {
    "format" : "E101",
    "url" : "https://pnb-dilicom.centprod.com/v2//link/3025594195810/LOAN/WIKI001/9782021153057-NUMOIY0785CYO0IGCV83DE9DOAOC1Y1O.do",
    "ean13" : "9782021153057",
    "formatDescription" : "EPUB",
    "mimetype" : "application/epub+zip"
  },
  "requestId":"aw01v2_000000035_201502261456",
  "returnStatus" : "OK",
  "returnMessage" : [],
  "orderLineId" : "53f1b4817b698cfb72afd7e1",
  "loanId" : "WIKI001",
  "loanEndDate" : "2014-09-22T02:37:25.000+02:00"
}

Service consulter un livre : consultBook

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/consultBook?

Format de la requête consultBook

glnContractor=?&
loanerColl=?&
orderLineId=?&
loanId=?&
ean13=?&
accessMedium=?&
localization=?&
consultEndDate=?&
ipAddress=?&
callbackUrl=? //Optionnel

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/consultBook?
glnContractor=XXXXXXXXXXXXX&
loanerColl=XXXXXXXXXXXXX&
orderLineId=53f1b4817b698cfb72afd7e1&
loanId=WIKI029&
ean13=9782021153057&
accessMedium=STREAMING&
localization=IN_SITU&
consultEndDate=2015-03-22T00:37:25Z&
ipAddress=11.12.13.16

Format de la réponse consultBook

{
  "link" : //Optionnel
  {
    "format" : "?", //Optionnel
    "url" : "?",
    "ean13" : "?",
    "formatDescription" : "?", 
    "mimetype" : "?" //Optionnel
  },
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [?],
  "orderLineId" : "?",
  "loanId" : "?",
  "consultEndDate" : "?" //Optionnel
}

Exemple:

{
  "link" : {
    "format" : "E101",
    "url" : "https://pnb-dilicom.centprod.com/v2//link/3025594195810/CONSULT/WIKI029/9782021153057-BOM4XSGVIZV69LY8NYLEMRGUSKQYNMQ8.do",
    "ean13" : "9782021153057",
    "formatDescription" : "EPUB",
    "mimetype" : "application/epub+zip"
  },
  "requestId":"aw01v2_000000039_201502261508",
  "returnStatus" : "OK",
  "returnMessage" : [ ],
  "orderLineId" : "53f1b4817b698cfb72afd7e1",
  "loanId" : "WIKI029",
  "consultEndDate" : "2014-09-22T02:37:25.000+02:00"
}

Service obtenir l’état d’un prêt : getLoanStatus

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/getLoanStatus?

Format de la requête getLoanStatus

glnContractor=?&
orderLineId[0]=?&
...
orderLineId[n]=?

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getLoanStatus?glnContractor=XXXXXXXXXXXXX&orderLineId[0]=537119f5975a1d3260801864

Format de la réponse getLoanStatus

{
  "date" : "?",
  "returnStatus" : "?",
  "returnMessage" : [?],
  "loanResponseLine" : 
  [ 
  {
    "returnStatus" : "?",
    "returnMessage" : "?", //Optionnel 
    "orderLineId" : "?",
    "nta" : ?,
    "nus1" : ?,
    "nus2" : ?,
    "beginDate" : "?",
    "endDate" : "?",
    "endOfferDate" : ?//Optionnel 
  },
  ... 
  ]
}

Exemple:

{
  "date" : "2014-08-14T11:32:12.786+02:00",
  "returnStatus" : "OK",
  "returnMessage" : [ ],
  "loanResponseLine" : [ {
    "returnStatus" : "OK",
    "orderLineId" : "537119f5975a1d3260801864",
    "nta" : 30,
    "nus1" : 30,
    "nus2" : 30,
    "beginDate" : "2014-05-12T20:59:03+02:00",
    "endDate" : "2015-05-12T20:59:03+02:00"
  } ]
}

Service obtenir la liste de retour des prêts : getEndedLoans

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/getEndedLoans?

Format de la requête getEndedLoans

glnContractor=?&
date=?

ou

glnContractor=?&
loanId[0]=?&
...
loanId[n]=? //la valeur de n doit être inférieur ou égale 19.

Exemple:

https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getEndedLoans?glnContractor=XXXXXXXXXXXXX&date=2014-07-01T00:37:25.908Z
https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/getEndedLoans?glnContractor=XXXXXXXXXXXXX&loanId[0]=LOAN3912535&loanId[1]=fedcbL20140721315&loanId[2]=fffffedcbL20140721315

Format de la réponse getEndedLoans

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [?],
  "loanEndedResponseLine" : 
  [ 
  {
    "ean13" : "?",
    "orderLineId" : "?",
    "loanId" : "?",
    "returnDate" : "?"
  }, 
  ...
 ]
}

Exemple:

{
  "requestId":"aw01v2_000000041_201502261519",
  "returnStatus" : "OK",
  "returnMessage" : [ ],
  "loanEndedResponseLine" : [ {
    "ean13" : "9791023501858",
    "orderLineId" : "5396f785f244d3c627404254",
    "loanId" : "LOAN3912535",
    "returnDate" : "2014-07-09T11:57:50.000+02:00"
  }, {
    "ean13" : "9791023501780",
    "orderLineId" : "53cd39fd7b69131edfcf70b7",
    "loanId" : "fedcbL20140721315",
    "returnDate" : "2014-07-22T12:54:50.000+02:00"
  }, {
    "ean13" : "9791023501780",
    "orderLineId" : "53cd39fd7b69131edfcf70b7",
    "loanId" : "fffffedcbL20140721315",
    "returnDate" : "2014-07-21T18:23:13.000+02:00"
  } ]
}

Service terminer un prêt : endLoan

URL

[ Nom de la plateforme PNB ]/v[ numéro de version ]/pnb-numerique/json/endLoan?

Format de la requête endLoan

orderLineId=?&
loanId=?&
date=? //Optionnel

Exemple:


https://pnb-dilicom.centprod.com/v2/pnb-numerique/json/endLoan?
orderLineId=524ade40bbd31c6240a30dff&
loanId=loanId

Format de la réponse endLoan

{
  "requestId":"?",
  "returnStatus" : "?",
  "returnMessage" : [?]
}

Exemple:

{
  "requestId":"aw01v2_000000041_201502261510",
  "returnStatus" : "ACCES_DENIED",
  "returnMessage" : [ "The loan with orderlineId '524ade40bbd31c6240a30dff' and loanId 'loanId' is already ended" ]
}