Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

API Swagger for External Client

Exaconnect is a webservice that allows third party consumer to automate order placement into Exaprint's fulfiller network. It is a SOAP
webservice available on a production and a staging environment.

Prerequisites

As a reminder, the links by environment are as follow :

Production : https://connect.exaprint.fr/?wsdl

Staging: https://stg-connect.exaprint.fr/?wsdl

During the integration process, a third party consumer will have to interact with the Exaprint FTP that can be accessed as follow :

Address :

Production : ftp-transfert.exaprint.fr (94.103.137.81)

Staging : stg-ftp-transfert.exaprint.fr (94.103.129.244)

Login: an order id

Password : An FTP password provided by Christophe Ponchon

How to connect

1. First step is to integrate a selection of exaprint product into a database


2. Create a mapping between previously imported exaprint product and the existing product of a shop
3. Create an order service that can :
a. fetch an order that contains an Exaprint product
b. convert an order into the order format expected by Exaconnect
c. call the createOrder method to get an order
d. store the response of the method into a database
e. connect programmatically to exaprint ftp using as login the returned orderId and the specific password transmitted by Exaprint
f. send the file to print
4. Create an event service that can :
a. periodically call orderStatus method to fetch order events
b. store the event into a database

The token obtained by the getToken method must be stored as long as it is valid.

If you exceed the quotas, you will get a -2 error

Methods

Authentication : getToken (authRequest)

Request

Type: Complex

Name: ExaConnect_Message_Authentication

Struct:

username (string)

password (string)

Response

KO

Type: Complex

Name: ExaConnect_Message_Error
Struct:

code (int | null)

0 : Internal error

-1 : Access denied

-2 : Exceeded quotas

label (string | null)

OK

Type: Complex

Name: ExaConnect_Message_Token

Struct:

token (string)

error (ExaConnect_Message_Error | null)

Order creation : createOrder(token, orderRequest)

Request

Type: Complex

Name: ExaConnect_Message_OrderCreationRequest

Struct:

reference (string)

productReference (string)

quantity (int)

openedFormatLength (string | null)

openedFormatWidth (string | null)

closedFormatLength (string | null)

closedFormatWidth (string | null)

isRoundCornerTopLeft (bool | null)

isRoundCornerTopRight (bool | null)

isRoundCornerLowerLeft (bool | null)

isRoundCornerLowerRight (bool | null)

listIdPantones (array | null)

motifNumerique (int | null)

deliveryAdress (ExaConnect_Message_OrderCreation_DeliveryAdress | null)

line1 (string)

line2 (string | null)

line3 (string | null)

zipCode (string)

city (string)

country (string)

digicode (string | null)

comment (string | null)


mobile (string)

mail (string | null)

phone (string | null)

contactName (string | null)

comment (string | null)

isExaprintReference (bool | null)

Important :

the country name must match to the exact same name stored into the Exaprint database.
the set city name + post code must match to the set stored into the Exaprint database for the following countries : “France Métropolitaine”,
“Italie”, “Espagne”, “Royaume Uni”.
Params isRoundCornerTopLeft, isRoundCornerTopRight, isRoundCornerLowerLeft and isRoundCornerLowerRight match to precise
round corners for numeric products (e.g. cards). You can find all the products which allow rounded corners in the Exaprint's extract product
files (column "CoinsRondsNumeriques").
Param listIdPantones is an array of integer which contains ID Pantones applied for selected product. You can find all ID Pantones availables
for each product in the Exaprint's extract product files.
Param motifNumerique is a integer which represents the start and form of numbering (e.g. 001) for selected product. You can find all the
products which allow numbering in the Exaprint's extract product files (column "Numerotation").

Response

Type: Complex

Name: ExaConnect_Message_OrderCreationResult

Struct:

orderId (int)

openedFormatLength (string | null)

openedFormatWidth (string | null)

closedFormatLength (string | null)

closedFormatWidth (string | null)

orderPrices ((ExaConnect_Message_OrderCreation_Prices | null))

productGrossPrice (float | null)

productVATRate (float | null)

totalGrossPrice (float | null)

totalIncludingTaxe (string | null)

fees (ArrayOfExaConnect_Message_OrderCreation_Fee | null)

ExaConnect_Message_OrderCreation_Fee[]

grossPrice (float | null)

vatRate (float | null)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error (invalid token)

-2 : Missing parameters

-3 : Invalid product reference

-4 : Invalid quantity for product

-5 : Bad format for product


-6 : Creation of address failed

-7 : Creation of order failed

-8 : ID Pantone in "listIdPantones" params doesn't exist for product reference

-9 : Round corners option isn't available for product selected

Order creation from a partner order : createOrderFromPartnerOrder(orderRequest)

Request

Type: Complex

Name: ExaConnect_Message_OrderCreationRequest

Struct:

reference (string)

partnerOrder (string)

deliveryAdress (ExaConnect_Message_OrderCreation_DeliveryAdress | null)

line1 (string)

line2 (string | null)

line3 (string | null)

zipCode (string)

city (string)

country (string)

digicode (string | null)

comment (string | null)

mobile (string | null)

mail (string | null)

phone (string)

contactName (string | null)

comment (string | null)

Important, the country name must match to the exact same name stored into the Exaprint database.

Important, the set city name + post code must match to the set stored into the Exaprint database for the following countries : “France
Métropolitaine”, “Italie”, “Espagne”, “Royaume Uni”.

Response

Type: Complex

Name: ExaConnect_Message_OrderCreationFromPartnerOrderResult

Struct:

orderId (int)

orderModels (ExaConnect_Message_OrderCreation_Model[] | null)

id (int | null)

name (string | null)

quantity (int | null)

uploadDirectory (string | null)

orderPrices ((ExaConnect_Message_OrderCreation_Prices | null))

productGrossPrice (float | null)


productVATRate (float | null)

totalGrossPrice (float | null)

totalIncludingTaxe (string | null)

fees (ArrayOfExaConnect_Message_OrderCreation_Fee | null)

ExaConnect_Message_OrderCreation_Fee[]

grossPrice (float | null)

vatRate (float | null)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error (invalid token)

-2 : Missing parameters

-3 : Invalid product reference

-4 : Invalid quantity for product

-5 : Bad format for product

-6 : Creation of address failed

-7 : Creation of order failed

Important : orderModels attribute is an array of object (ExaConnect_Message_OrderCreation_Prices) which contains models of


partner order (if the partner order allow multi models). For each model, the ID, the name of the model, the quantity and the upload
directory name are precised. If the upload directory is precised, you need to upload files relative to order in this directory on FTP, not
at the root of the order directory.

Order cancellation : cancelOrder(token, cancelRequest)

Request

Type: Complex

Name: ExaConnect_Message_CancellationRequest

Struct:

orderId (int)

reason (int)

1 : Erreur fichier

2 : Erreur papier

3 : Erreur quantité

4 : Fichier non conforme PAO

5 : Client annule commande

6 : Commande en doublon

7 : Délai ne convient pas

8 : Problème règlement

9 : Erreur groupage

Response

Type: Complex
Name: ExaConnect_Message_CancellationResult

Struct:

hasBeenCancelled (bool)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error

-2 : Missing parameters

-3 : Invalid order reference

-4 : Cancel order impossible

Order status : orderStatus(token, statusRequest)

Request

Type: Complex

Name: ExaConnect_Message_OrderStatusRequest

Struct:

orders (array<int>)

Response

Type: Complex

Name: ExaConnect_Message_OrderStatusResult

Struct:

statuses (ArrayOfExaConnect_Message_OrderStatus_Status)

code (int | null)

[ 1 ; 40 ] (cf. list of status)

orderId (int | null)

shipments (ArrayOfExaConnect_Message_Tracking_Shipment)

carrierId (string | null)

carrierServiceId (string | null)

trackingId (string | null)

trackingUrl (string | null)

quantity (int | null)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error

-2 : Missing parameters

-3 : Invalid order reference

1 Commande créée
2 En attente du traitement de votre commentaire

3 En attente de votre retour

4 En attente de la validation de votre compte

5 En attente de la réception du règlement

6 En attente de la mise en place du paiement à 30 jours

7 En attente de la régularisation comptable

8 En attente de la réception du paiement

9 En attente de vos fichiers

10 Contrôles en cours

11 Fichiers non conformes - en attente de nouveaux fichiers

12 Commande suspendue temporairement

13 Fichier(s) normalisé(s)

14 BAT en attente de validation

15 En cours de fabrication

16 En cours de finition

17 Commande expédiée

18 En cours de transfert au centre logistique

19 En attente de groupage

20 Commande expédiée

21 Commande livrée

22 Anomalie de fabrication - Réimpression

23 Annulée

24 Réclamation qualité en cours

25 A traiter

26 en cours de traitement

27 en attente

28 En attente de validation d'avoir

29 Demande Traitée : Avoir

30 Demande Traitée : Retirage (avec impératif)

31 Demande Traitée : Retirage

32 Demande Traitée : Remontée Atelier

33 Demande Traitée : Bonus/Malus

34 Demande Traitée : Inversion Colis

35 Demande Traitée : Ramasse qualité

36 Demande Traitée : Demande non recevable

37 Demande Traitée : Remontée Atelier (avec impératif)

38 En cours de groupage
39 En cours de Livraison

41 Fichier(s) transféré(s)

40 Demande traitée

42 Colis prêt(s) pour l'exp.

43 En attente - relancé

44 Traitée - sans suite

45 Docreview en attente de validation

46 Traitée - Renseignement

Get orders : getOrders(token, getOrdersRequest)

Request

Type: Complex

Name: ExaConnect_Message_GetOrderRequest

Struct:

dateFilterMin (null | string)

'20190101' for 1 janv. 2019

dateFilterMax (null | string)

'20200101' for 1 janv. 2020

statusFilter (null | int)

[ 1 ; 40 ] (cf. list of status)

page (null | int)

Important : getOrders send back the first 500 orders decreasing order by id. Use the parameter remainingRecords to know if it remains orders.
Increment the parameter page to get the 500 next orders.

Important : if the customer linked at the user logged (by getToken) has many orders, we suggest to add a date filter (one year per example).

Response

Type: Complex

Name: ExaConnect_Message_GetOrderResult

Struct:

orders (ArrayOfExaprint_Services_Commande_Message_CommandeListe_SimpleView)

id (int)

status (int)

[ 1 ; 40 ] (cf. list of status)

customerReference (string)

page (int)

remainingRecords (bool)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error
-2 : Invalid parameters

Mark files order as uploaded : orderFichierTransfere(token, fileRequest)

Request

Type: Complex

Name: ExaConnect_Message_OrderFileTransfereRequest

Struct:

orders (array<int>)

Response

Type: Complex

Name: ExaConnect_Message_OrderFileTransfereResult

Struct:

codes (array<orderId : int>)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error

-2 : Missing parameters

-3 : Order not found

Get order tracking : getTracking(token, request)

Request

Type: Complex

Name: ExaConnect_Message_TrackingRequest

Struct:

order (int)

Response

Type: Complex

Name: ExaConnect_Message_TrackingResult

Struct:

shipments (ArrayOfExaConnect_Message_Tracking_Shipment)

carrierId (string | null)

carrierServiceId (string | null)

trackingId (string | null)

trackingUrl (string | null)

quantity (int | null)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)


0 : Internal error

-1 : Authentication error

-2 : Missing parameters

-3 : Order not found

Get prices by ID : getPricesById(token, request)

Request

Type: Complex

Name: ExaConnect_Message_GetPricesByIdAndQuantityRequest

Struct:

productId (string)

Example: 132257

Response

Type: Complex

Name: ExaConnect_Message_GetPricesByIdResult

Struct:

ProductPrices (Array Of ExaConnect_Message_Product_PriceByColonne)

item(Array of ExaConnect_Message_Product_Price)

quantite (int)

prixRemise (float) => prix revendeur avec remise Exaclub / remise Catalogue / remise Client

prix (float) => prix revendeur sans remise

prixPublic (float) => prix non revendeur

delai (int)

delaiSupp (int)

delaiType (String) (ex: Standard, Exarush …etc)

productID (String)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error

-2 : Invalid parameters

-3 : Invalid quantity

-4 : Invalid product

Get prices by ID and quantity : getPricesByIdAndQuantity(token, request)

Request

Type: Complex

Name: ExaConnect_Message_GetPricesByIdAndQuantityRequest

Struct:
productId (string)

Example: 132257

quantity (int)

Example: 50

Response

Type: Complex

Name: ExaConnect_Message_GetPricesByIdResult

Struct:

ProductPrices(Array Of ExaConnect_Message_Product_Price)

quantite (int)

prixRemise (float) => prix revendeur avec remise Exaclub / remise Catalogue / remise Client

prix (float) => prix revendeur sans remise

prixPublic (float) => prix non revendeur

delai (int)

delaiSupp (int)

delaiType (String) (ex: Standard, Exarush …etc)

productID (String)

error (ExaConnect_Message_Error | null)

label (string | null)

code (int | null)

0 : Internal error

-1 : Authentication error

-2 : Invalid parameters

-3 : Invalid quantity

-4 : Invalid product

You might also like