Skip to content

Introduction

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.

Testing and Development

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.sk

The 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.

Web application

Orders created during testing can be managed via Poiint Business web application available here:

https://integration.business.poiint.sk

Contacts

Technical support: it@poiint.sk

Glossary

The 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

Carriers in our system are identified by so called public ID. Below is a list of all carriers and their public IDs.

IDCarrier Name
1DPD
2GLS
3SPS
4PACKETA
5TALIANSKA POSTA HD
6IE FEDEX HD CONNECT PLUS
7CHORVATSKA POSTA HD
8TR FEDEX HD ECONOMY
9BG SPEEDY HD
10BG SAMEDAY HD
11IE FEDEX HD PRIORITY
12EE VENIPAK HD
13UA MEEST POSHTA HD
14LV LITHUANIAN POST HD
15EE OMNIVA HD
16HU EXPRESS ONE HD
17EE LITHUANIAN POST HD
18FR COLISPRIVE DIRECT HD
19RO FANCOURIER HD
20IE FASTWAY HD
21PT MRW HD
22ES MRW HD
23US FEDEX HD PRIORITY
24RO SAMEDAY HD
25FI POSTNORD HD
26BG ECONT HD
27SI POST HD
28LV OMNIVA HD
29SE POSTNORD HD
30DK POSTNORD HD
31GB ROYALMAIL48 HD
32GR ACS HD
33HU MADARSKA POSTA HD
34BELGICKA POSTA HD
35LT VENIPAK HD
36GR TAXYDROMIKI HD
37NL DHL HD
38ES CORREOS HD
39LV VENIPAK HD
40TR FEDEX HD PRIORITY
41BE HOLANDSKA POSTA HD
42FI MATKAHUOLTO HD
43GB ROYALMAIL24 HD
44IT BARTOLINI HD
45GR ELTA HD
46IT HRPARCEL HD
47RO CARGUS HD
48SWISS POST HD
49LUXEMBURSKA POSTA HD
50AE ARAMEX HD
51HR OVERSEAS HD
52DE HERMES HD
53GB FEDEX HD PRIORITY
54US FEDEX HD ECONOMY
55NL HOLANDSKA POSTA HD
56LT OMNIVA HD
57LT LITHUANIAN POST HD
58FR COLISSIMO HD
59GR SPEEDEX HD
60RAKUSKA POSTA HD
61SI EXPRESSONE HD

Security

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).

Access Tokens

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.

API keys

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.

FAQ

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.

Validations errors

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 RequirementDescription
NotNullValue must not be null.
NotEmptyValue 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.
UniqueValue must be unique.
ValidCurrencyValue must be valid currency in ISO 4217 format.
RequiredCurrency[currency]Value must be the currency specified by currency parameter.
SupportedEnrichmentEnrichment must be supported.
AvailablePickupDatePickup date must be a valid date for given carrier.
NumberValue must be a number.
ValidCarrierCarrier must be valid for given use-case (order).
Download OpenAPI description
Languages
Servers
Mock server

https://docs.business.poiint.sk/_mock/openapi/

Integration

https://api.integration.business.poiint.sk/

Operations