category image

Paazl voor ontwikkelaars

Push API

Push API-referentie

Dit artikel bevat de REST-specificaties van de Push API van Paazl.


De Paazl Push API stuurt proactief updates over de leveringsstatus naar je webshopserver telkens wanneer er een wijziging is in de status van een zending.


Zie Een Push API-server genereren voor een uitleg over hoe je een server-template genereert die je kunt gebruiken om een eindpunt te maken voor het ontvangen van status-updates.


Eindpunt


Dit is de URL van het REST-eindpunt dat je hebt aangemaakt om de status-updates te ontvangen. Het geeft het schema, de host, het basispad en het pad aan, bijvoorbeeld:


https://api.mywebshop.com/paazl/push

Je geeft de URL op in je Paazl web-app-account.


Opmerking


Zorg er voordat je je eindpunt bij Paazl registreert voor dat het POST-berichten kan ontvangen.


In het geval van een Java-implementatie met een POM-bestand, voeg je de volgende dependency toe om je eindpunt in staat te stellen XML-objecten te ontvangen:


<dependency>
   <groupId>com.fasterxml.jackson.dataformat</groupId>
   <artifactId>jackson-dataformat-xml</artifactId>
   <version>2.8.9</version> <!--of later-->
</dependency>

Authenticatie & autorisatie


De Push API biedt twee methoden voor clientauthenticatie: één op basis van een beveiligingstoken (meer specifiek een bearer-token) en één op basis van een clientcertificaat. Beide zijn optioneel en je kunt ze gecombineerd gebruiken. Beveiligingstokens zijn eenvoudiger te implementeren dan clientcertificaten, wat voor beginnende ontwikkelaars een uitdaging kan zijn.


Zodra je een authenticatiemethode aan de zijde van Paazl hebt geïmplementeerd, moet je deze ook aan de zijde van de webshop implementeren.


Beveiligingstoken


De eenvoudigst te implementeren authenticatiemethode is het beveiligingstoken. Wanneer dit actief is, stuurt Paazl bij elke pushmelding een header genaamd Authorization mee, zodat de webshopserver kan bevestigen dat het bericht afkomstig is van onze API.


De waarde van de header Authorization heeft de indeling Bearer cf50ed66-154e-4f5c-8818-e7a770d644b8, waarbij de hash de hash is die je genereert op de Push API-configuratiepagina.


Clientcertificaat


Je kunt ook een clientcertificaat gebruiken om een authenticatiemethode te implementeren. Paazl ondersteunt alleen PKCS12-certificaten. Gebruik een tool zoals OpenSSL om clientcertificaten te genereren. Zodra je een .p12-bestand hebt gegenereerd, upload je dit via de Push API-configuratiepagina.


Opmerking


Kies geen wachtwoord bij het genereren van een clientcertificaat voor de Push API van Paazl.


Whitelisting


Whitelisting is een aanvullende beveiligingsmaatregel die ervoor zorgt dat alleen API-calls vanaf een specifieke URL worden herkend. We raden je aan de Push API van Paazl op de whitelist te zetten. Gebruik hiervoor de volgende IP-adressen.


  • Staging (acceptatietest): 34.90.21.169/staging.paazl.com
  • Productieomgeving: 34.91.233.81/ship.paazl.com

Serverantwoorden


Opmerking


Je moet een HTTP 200-statuscode retourneren als een Push-verzoek succesvol is. Als jouw server iets anders retourneert dan een HTTP 200-statuscode, gaat het systeem ervan uit dat het betreffende Push-verzoek is mislukt. Het stuurt je dan een foutmelding en de retry-policy treedt in werking.


Een veelgemaakte fout is het helemaal niet versturen van een antwoord, of — bijvoorbeeld wanneer het aanmaken van een bestelling in je webshop mislukt — het terugsturen van een interne webshopfout naar de Push API van Paazl. Zorg er alsjeblieft voor dat je een HTTP 200-statuscode retourneert zodra Paazl je succesvol een update heeft gestuurd, ongeacht wat jouw webshop vervolgens met die update doet.


HTTP-methode


De Push API van Paazl verstopt verzoeken met behulp van de POST-methode.


Berichtindeling


De Push API kan berichten versturen in XML- of JSON-indeling. XML is de standaardinstelling. Stel de berichtindeling in in je Paazl web-app-account.


Opmerking


Als je de berichtindeling wijzigt, wordt de wijziging direct doorgevoerd in de database. Omdat de configuratie-instellingen echter worden gecached, duurt het 5 minuten voordat de wijziging daadwerkelijk van kracht wordt.


Schema


<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.paazl.com/schemas/push"
           xmlns:push="http://www.paazl.com/schemas/push"
           elementFormDefault="qualified">

    <xs:element name="labelStatusNotification" type="push:labelStatusNotification" />

    <xs:complexType name="labelStatusNotification">
        <xs:all>
            <xs:element name="orderReference" type="xs:string"/>
            <xs:element name="webshop" type="xs:long"/>
            <xs:element name="barcode" type="xs:string"/>
            <xs:element name="status" type="push:paazlStatusType" />
            <xs:element name="carrierStatus" type="push:carrierStatus"/>
            <xs:element name="deliveryDate" type="xs:dateTime"/>
            <xs:element name="trackTraceURL" type="xs:string"/>
            <xs:element name="deliveryWindowStart" type="xs:time" />
            <xs:element name="deliveryWindowEnd" type="xs:time"/>
            <xs:element name="deliveryInformation" type="xs:string"/>
        </xs:all>
    </xs:complexType>

    <xs:simpleType name="paazlStatusType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="CREATED"/>
            <xs:enumeration value="DELETED"/>
            <xs:enumeration value="READY_TO_POST"/>
            <xs:enumeration value="SCANNED"/>
            <xs:enumeration value="AVAILABLE_AT_PICKUP_POINT"/>
            <xs:enumeration value="DELIVERED"/>
            <xs:enumeration value="DELIVEREDBB"/>
            <xs:enumeration value="RETOUR"/>
            <xs:enumeration value="PICKEDUP"/>
            <xs:enumeration value="UITLEVERING"/>
            <xs:enumeration value="UNKNOWN"/>
            <xs:enumeration value="MANCO"/>
            <xs:enumeration value="NOT_AT_HOME"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="carrierStatus">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="description" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>

Uitleg van parameters


Header


ParameterVerplicht / OptioneelUitleg
contentTypeVerplicht

Deze parameter kan één van twee waarden hebben, afhankelijk van de indeling die je instelt in je Paazl web-app-account:

  • "application/json"
  • "application/xml"
authorizationOptioneel

Dit is de waarde van het beveiligingstoken dat je genereert in je Paazl web-app-account.


Als je een beveiligingstoken gebruikt, weet je zeker dat de status-updates die je ontvangt door Paazl zijn verzonden.


Opmerking: Het beveiligingstoken is een bearer-sleutel.


Body


ParameterVerplicht / OptioneelTypeUitleg
orderReferenceVerplichtString

Voorbeeld: "myOrder00123"

webshopVerplichtInteger

De interne Paazl-code voor jouw webshop. Je vindt deze in je Paazl web-app-account onder Instellingen > Account > Mijn account > Inloggegevens > Webshop ID.


Voorbeeld: 697

barcodeVerplichtString

De streepjescode van een verzendlabel, geleverd door een vervoerder of door Paazl binnen een reeks die door de betreffende vervoerder is opgegeven.


Voorbeeld: "3STESP0125770"

statusVerplichtString

De Paazl-leveringsstatus van een zending. Over Paazl leveringsstatuscodes legt uit wat de verschillende codes betekenen.


Mogelijke waarden: "CREATED", "DELETED", "READY_TO_POST", "SCANNED", "AVAILABLE_AT_PICKUP_POINT", "DELIVERED", "DELIVEREDBB", "RETOUR", "PICKEDUP", "UITLEVERING", "UNKNOWN", "MANCO", "NOT_AT_HOME"


Opmerking


In principe verstuurt Paazl een specifieke status slechts één keer voor een zending. Als een zending echter wordt geretourneerd, kan Paazl sommige statussen twee keer versturen.


Als de status van een zending verandert terwijl de Push API is uitgeschakeld, worden die statussen niet alsnog verzonden wanneer de API opnieuw wordt ingeschakeld.


De Push API houdt geen statushistorie bij. Het verstuurt alleen realtime statussen.

carrierStatusOptioneelObject

Bevat details over de leveringsstatus van een zending zoals opgegeven door een vervoerder.


Opmerking: Dit attribuut is momenteel nog niet in gebruik.

 nameOptioneelString

De statuscode. Opmerking: Dit attribuut is momenteel nog niet in gebruik.


Voorbeeld: "Scanned"

 descriptionOptioneelString

Een beschrijving van de statuscode. Opmerking: Dit attribuut is momenteel nog niet in gebruik.


Voorbeeld: "Shipment awaiting pickup in warehouse"

deliveryDate
(in ontwikkeling)
OptioneelString

De datum waarop een zending wordt bezorgd op een huisadres of een afhaallocatie.


Indeling: "JJJJ-MM-DD"


Voorbeeld: "2019-04-02"

trackTraceUrlOptioneelString

Een URL van een webpagina met track & trace-informatie die wordt verstrekt door een vervoerder.


Voorbeeld: "https://www.carrier.nl/track-trace?gclid=CPfEzday"

deliveryWindowStart
(in ontwikkeling)
OptioneelString

De globale start van een leveringstijdvak zoals geconfigureerd door Paazl Customer Support. Dit dient als terugvaloptie als de start van het tijdvak niet is ingesteld op het niveau van de verzendoptie.


Opmerking: De tijdzone wordt meestal weggelaten. Indien aanwezig is de standaardwaarde "CET".

deliveryWindowEnd
(in ontwikkeling)
OptioneelString

Het globale einde van een leveringstijdvak zoals geconfigureerd door Paazl Customer Support. Dit dient als terugvaloptie als het einde van het tijdvak niet is ingesteld op het niveau van de verzendoptie.


Opmerking: De tijdzone wordt meestal weggelaten. Indien aanwezig is de standaardwaarde "CET".

deliveryInformation
(in ontwikkeling)
OptioneelString

Aanvullende informatie over de bezorging van een zending. Opmerking: Dit attribuut is momenteel niet in gebruik.


Voorbeeld: "If not at home, deliver at neighbor"


Voorbeelden van updateberichten


JSON


{
   "orderReference": "ref123",
   "webshop": 8,
   "barcode": "AABBCCEEFFG",
   "status": "CREATED",
   "deliveryDate": "2017-07-17T16:00",
   "trackTraceURL": "https://www.dhlexpress.nl/nl/track-trace?gclid=CPfEzdayhtUCFekp0wode38N7w",
   "deliveryWindowStart": "08:00",
   "deliveryWindowEnd": "13:00"
}

XML


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <ns2:labelStatusNotification xmlns:ns2="http://www.paazl.com/schemas/push">
   <ns2:orderReference>ref123</ns2:orderReference>
   <ns2:webshop>8</ns2:webshop>
   <ns2:barcode>ABCC</ns2:barcode>
   <ns2:status>CREATED</ns2:status>
   <ns2:deliveryDate>2017-07-17T04:00:00</ns2:deliveryDate>
   <ns2:trackTraceURL>
    https://www.dhlexpress.nl/nl/track-trace?gclid=CPfEzdayhtUCFekp0wode38N7
   </ns2:trackTraceURL>
   <ns2:deliveryWindowStart>08:00:00</ns2:deliveryWindowStart>
   <ns2:deliveryWindowEnd>12:00:00</ns2:deliveryWindowEnd>
   </ns2:labelStatusNotification>

Was dit artikel nuttig?

Dat is fantastisch!

Hartelijk dank voor uw beoordeling

Sorry dat we u niet konden helpen

Hartelijk dank voor uw beoordeling

Laat ons weten hoe we dit artikel kunnen verbeteren!

Selecteer tenminste een van de redenen
CAPTCHA-verificatie is vereist.

Feedback verzonden

We stellen uw moeite op prijs en zullen proberen het artikel te verbeteren