Poiint Business API (0.0.1)
This is the official documentation for Poiint Business API. It contains all the information required for integration of Poiint Business services into your system. In case of any questions, do not hesitate to contact our tech support.
Integration with our systems can be tested against a dedicated testing environment. Access must be requested via email. You should never run your tests against Poiint Business Production API. Test API url:
https://api.integration.business.poiint.skThe submission and label printing are the only operations that involve communication with the system of external carrier. The thing is, that our testing environment cannot communicate with the production environment of the external carrier (because client would be charged for those orders). However, since not all carriers offer a dedicated testing environment that we can integrate with our systems, we are forced to limit testing to the GLS carrier only. This means, that you should test order submission and label printing only with GLS carrier. Submission of order (or getting labels for order) that is handled by someone else than GLS will cause HTTP 500 error response. This limitation does not apply to the production environment.
Orders created during testing can be managed via Poiint Business web application available here:
https://integration.business.poiint.skThe following list was created to clarify terminology that may appear in the documentation:
- Enrichment - Represents an additional service that can be used when creating an order. These services may be charged, and their use is optional.
- Cod - Abbreviation for Cash On Delivery service.
- Ins - Abbreviation for Insurance service.
- Icc - Abbreviation for ID Card Check service.
- Pickup type:
- Regular - The courier visits the selected address at regular intervals without the need for an explicit request of the pickup.
- Irregular - The courier comes for parcels only when explicitly requested.
- Delivery type:
- Home - Delivery to "hands" (on specified address).
- Parcel Shop - Delivery to pickup point (e.g. Packeta Z-Box, Z-Point).
- Consignee - Recipient of the parcel.
- Create order - Save order in our system.
- Submit order - Send order to the carrier specified during order creation.
Carriers in our system are identified by so called public ID. Below is a list of all carriers and their public IDs.
| ID | Carrier Name |
|---|---|
| 1 | DPD |
| 2 | GLS |
| 3 | SPS |
| 4 | PACKETA |
| 5 | TALIANSKA POSTA HD |
| 6 | IE FEDEX HD CONNECT PLUS |
| 7 | CHORVATSKA POSTA HD |
| 8 | TR FEDEX HD ECONOMY |
| 9 | BG SPEEDY HD |
| 10 | BG SAMEDAY HD |
| 11 | IE FEDEX HD PRIORITY |
| 12 | EE VENIPAK HD |
| 13 | UA MEEST POSHTA HD |
| 14 | LV LITHUANIAN POST HD |
| 15 | EE OMNIVA HD |
| 16 | HU EXPRESS ONE HD |
| 17 | EE LITHUANIAN POST HD |
| 18 | FR COLISPRIVE DIRECT HD |
| 19 | RO FANCOURIER HD |
| 20 | IE FASTWAY HD |
| 21 | PT MRW HD |
| 22 | ES MRW HD |
| 23 | US FEDEX HD PRIORITY |
| 24 | RO SAMEDAY HD |
| 25 | FI POSTNORD HD |
| 26 | BG ECONT HD |
| 27 | SI POST HD |
| 28 | LV OMNIVA HD |
| 29 | SE POSTNORD HD |
| 30 | DK POSTNORD HD |
| 31 | GB ROYALMAIL48 HD |
| 32 | GR ACS HD |
| 33 | HU MADARSKA POSTA HD |
| 34 | BELGICKA POSTA HD |
| 35 | LT VENIPAK HD |
| 36 | GR TAXYDROMIKI HD |
| 37 | NL DHL HD |
| 38 | ES CORREOS HD |
| 39 | LV VENIPAK HD |
| 40 | TR FEDEX HD PRIORITY |
| 41 | BE HOLANDSKA POSTA HD |
| 42 | FI MATKAHUOLTO HD |
| 43 | GB ROYALMAIL24 HD |
| 44 | IT BARTOLINI HD |
| 45 | GR ELTA HD |
| 46 | IT HRPARCEL HD |
| 47 | RO CARGUS HD |
| 48 | SWISS POST HD |
| 49 | LUXEMBURSKA POSTA HD |
| 50 | AE ARAMEX HD |
| 51 | HR OVERSEAS HD |
| 52 | DE HERMES HD |
| 53 | GB FEDEX HD PRIORITY |
| 54 | US FEDEX HD ECONOMY |
| 55 | NL HOLANDSKA POSTA HD |
| 56 | LT OMNIVA HD |
| 57 | LT LITHUANIAN POST HD |
| 58 | FR COLISSIMO HD |
| 59 | GR SPEEDEX HD |
| 60 | RAKUSKA POSTA HD |
| 61 | SI EXPRESSONE HD |
The system is secured using API keys and JSON Web Tokens (JWT). Detailed specification of the security mechanism for each endpoint is provided in endpoint description. To be able to use most of the endpoints, you need a valid access token (JWT). The basic principle involves obtaining an access token using an API key and the Refresh operation. The obtained access token must be set in the HTTP header as Authorization: Bearer <token>. Lifespan of an access token is 4 hours. For proper functioning, it is necessary to regularly request a new token (we recommend doing so 30 minutes before the token expires).
What is it for?
- Authorization in following operations:
- CreateOrder
- SubmitOrder
- GetUnavailablePickupDates
- PrintLabels
What is the lifespan?
- 4 hours.
Where can I get it?
- Response from Refresh operation.
What is it for?
- Authorization in following operations:
- Refresh
What is the lifespan?
- 6 months.
Where can I get it?
- By contacting a technical support.
Is it possible to create multiple orders with a single request?
- No, you need to call CreateOrder operation multiple times.
Is it possible to submit multiple orders with a single request?
- No, you need to call SubmitOrder operation multiple times.
How should the customer of the e-shop choose a carrier?
- The customer selects from carriers obtained via the Refresh operation. Only carriers that meet the order's requirements for delivery country, enrichments etc. should be offered to the customer.
Is there any address validation?
- Yes, in addition to basic validation, we also check whether the zipcode actually matches the city.
Response body in case of a validation error have a structure of ProblemDetails object. Below is an example from CreateOrder operation.
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"Body.Consignee.Name": [
"NotEmpty"
],
"Body.Consignee.Email": [
"ValidFormat"
],
"Body.DeliveryAddress.Country": [
"NotEmpty",
"ValidFormat"
]
},
"traceId": "00-74fd6d6a0aa9734689bc534921ff5f92-0916537dea6b633a-00"
}As you can see, server does not return detailed messages. Instead, it returns validation requirements that caused the failure. In the example above, attribute Consignee.Name cannot be empty, Consignee.Email must be a valid email format etc. List of all validation requirements can be found below. Showing user-friendly error messages is responsibility of API consumer.
| Validation Requirement | Description |
|---|---|
NotNull | Value must not be null. |
NotEmpty | Value must not be empty. |
Bigger[x] | Value must be bigger than x. |
BiggerOrEq[x] | Value must be bigger or equal to x. |
LessOrEq[x] | Value must be less or equal to x. |
MaxLength[maxLength] | String length must be less or equal to maxLength. |
ValidFormat[pattern] | Value must match the pattern. |
Unique | Value must be unique. |
ValidCurrency | Value must be valid currency in ISO 4217 format. |
RequiredCurrency[currency] | Value must be the currency specified by currency parameter. |
SupportedEnrichment | Enrichment must be supported. |
AvailablePickupDate | Pickup date must be a valid date for given carrier. |
Number | Value must be a number. |
ValidCarrier | Carrier must be valid for given use-case (order). |
https://docs.business.poiint.sk/_mock/openapi/
https://api.integration.business.poiint.sk/