API – opis danych
Łączenie się z backendem aplikacji
Aby połączyć się z backendem aplikacji, należy wprowadzić token.
URL: https://api.goodloading.com/api/external/calculation
POST
Request
Request Headers
| Nazwa | Wartość | Wymagane | Opis |
|---|---|---|---|
| Authorization | Bearer {access_token} | Tak | Klucz do autoryzacji |
| Content-type | application/json | Tak |
Request Body
| Pole | Typ | Wymagane | Wartość |
|---|---|---|---|
| name | string | Nie | Nazwa projektu |
| note | string | Nie | Opis projektu |
| loads | array of Loads | Tak | Tablica z ładunkami |
| loadingSpaces | array of Loading Spaces | Tak | Tablica z przestrzeniami ładunkowymi |
| options | json | Tak | Opcje algorytmu |
Opcje algorytmu (options)
| Pole | Typ | Wymagane | Wartość |
|---|---|---|---|
| allowOverweight | boolean | Nie | Ustawienie wartości na true spowoduje, że ładunki nie będą ustawiane w przestrzeni ładunkowej jeżeli waga przekroczy dopuszczalną ładowność. Domyślna wartość: false. |
| unit | string | Nie | Jednostki podanych wymiarów. Można wybrać jedną z dwóch wartości: – cm – lb Domyślna wartość: “cm” |
| keepLoadsTogether | boolean | Nie | Ustawienie wartości na true powoduje, że ładunki z danej grupy będą ustawiane razem. Domyślna wartość: false. |
| newAlgorithm | boolean | Nie | Ustawienie wartości na true powoduje, że zostanie użyty nowy algorytm. Domyślna wartość: true. |
| loadingOrder | string | Nie | Wartości: “default” :na podstawie kolejności dodawania obiektów ładunkowych “weight” : na podstawie wagi ładunków “volume”: na podstawie objętości ładunków “priority” :na podstawie priorytetu ładunków „barrier”: na podstawie identyfikatora zamówienia ładunków, oddzielonych barierami |
| multiStops | boolean | Nie | Ustawienie wartości na false powoduje, że multi przestaje być brane pod uwagę. Domyślna wartość: false. |
| arrangeOptimally | boolean | Nie | Włączenie funkcji „układaj optymalnie” spowoduje, że algorytm będzie szukał dla ładunków ułożenia z zachowaniem jak największej wolnej przestrzeni, bez względu na kolejność ich dodania. Domyślna wartość: false. |
Dane dotyczące ładunku (loads)
| Nazwa | Wartość | Wymagane | Opis |
|---|---|---|---|
| id | number | Nie | ID ładunku |
| quantity | integer | Tak | Ilość ładunków. Musi być liczbą całkowitą większą od 0. |
| name | string | Tak | Nazwa ładunku |
| length | number | Tak | Długość jednego ładunku. Musi być większa od 0. Dotyczy wyłącznie sześcianów i rur. |
| width | number | Tak | Szerokość jednego ładunku. Musi być większa od 0. Dotyczy wyłącznie sześcianów |
| height | number | Tak | Wysokość jednego ładunku. Musi być większa od 0. Dotyczy wyłącznie sześcianów i beczek. |
| diameter | number | Tak | Średnica ładunku. Musi być większa od zera. Dotyczy wyłącznie rur i beczek. |
| weight | number | Tak | Waga jednego ładunku. Musi być większa lub równa 0. |
| priority | integer | Nie | Priorytet ładunku. Wartość musi być liczbą całkowitą większą lub równą 0. Wartość domyślna: 0. |
| stacking | boolean / integer | Nie | Piętrowanie ładunku. Wartość false oznacza, że jest nie piętrowalny, wartość true oznacza, że jest piętrowalny. Podanie liczby całkowitej większej od 0 oznacza, że ładunek jest piętrowalny z ograniczoną liczbą pięter. Wartość domyślna: true. |
| allowToRotate | boolean | Nie | Przyjmuje true lub false. Ustawienie wartości na true pozwala przy obliczeniach zamieniać szerokość z długością, czyli obracać ładunek względem podstawy. Dotyczy: sześcianów i rur. Wartość domyślna true. |
| rotateFreely | boolean | Nie | Przyjmuje true lub false. Ustawienie wartości umożliwia obracanie ładunkiem w dowolną stronę. Dotyczy wyłącznie sześcianów. Wartość domyślna false. |
| color | string | Nie | Wczytaj kolor ładunku w formacie kodu szesnastkowego (hex code). |
| origin | {id: number, name: string} |
Nie | Miejsce załadunku ładunku (multi stops) |
| destination | {id: number, name: string} |
Nie | Dotyczy funkcji multistop i oznacza miejsce rozładunku. |
| pctSupport | number | Nie | Procent obsługiwanej powierzchni ładunku. Umożliwia piętrowanie ładunku o większym polu podstawy, na ładunku o mniejszym polu podstawy. |
| alongFloor | boolean | Nie | Ustawienie wartości true powoduje, że ładunki, zanim zostaną spiętrowane, ułożą się wzdłuż podłogi. Przyjmuje prawdę lub fałsz. |
| maxWeightOnTop | number | Nie | Maksymalny ciężar, jaki można umieścić na ładunku. |
| boxesBelowAllowed | array of numbers | Nie | Tablica id pudełek, które można umieścić pod dodawanym ładunkiem. |
| loadType | number | Nie | 0:ładunek sześcienny, 1:beczka, 2:rura Domyślnie “0” |
| order | number | Nie | ID zamówienia ładunku (brany pod uwagę tylko wtedy, gdy options.loadingOrder = „barrier”) |
Dane przestrzeni ładunkowej (loadingSpace)
| Nazwa | Wartość | Wymagane | Opis |
|---|---|---|---|
| quantity | integer | Tak | Liczba przestrzeni ładunkowych. Musi być liczbą całkowitą większą niż 0 |
| name | string | Tak | Nazwa przestrzeni ładunkowej |
| type | string | Nie | Typ przestrzeni ładunkowej. Można ustawić jedną z następujących wartości: – vehicle [domyślnie] – sea – air x – air y – pallet |
| parts | array | Tak | Tablica przestrzeni przestrzeni ładunkowej. Np. zestaw będzie miał dwie części. |
| part.length | number | Tak | Długość części przestrzeni ładunkowej. Musi być większa niż 0. |
| part.width | number | Tak | Szerokość części przestrzeni ładunkowej. Musi być większa niż 0. |
| part.height | number | Tak | Wysokość części przestrzeni ładunkowej. Musi być większa niż 0. |
| part.baseHeight | number | Nie | Wysokość podstawy palety |
| part.limit | number | Tak | Ładowność częściowa przestrzeni ładunkowej. Musi być większa niż 0 |
| part.axis | array | Nie | Tablica z osiami przestrzeni ładunkowej. Jeżeli jest podana musi zawierać dokładnie dwa albo trzy elementy. |
| part.axi.distanceFromSpaceFront | number | Tak | Odległość osi od początku przestrzeni ładunkowej, wartość ujemna, gdy oś znajduje się pod kabiną kierowcy. |
| part.axi.emptySpaceLoad | number | Tak | Obciążenie osi przy pustej przestrzeni ładunkowej. Wartość musi być liczbą większą lub równą 0. |
| part.axi.maxLoad | number | Tak | Najwyższe dopuszczalne obciążenie osi. Wartość musi być liczbą większą lub równą 0. |
| part.loadingSide | string | Nie | Sposób załadunku przestrzeni ładunkowej. Można ustawić jedną z czterech wartości: „back” [domyślne] „top” „left” „right” |
| part.barrier | object | Nie | Bariera w przestrzeni ładunkowej między rzędami ładunków (brana pod uwagę tylko wtedy, gdy options.loadingOrder = „barrier”). |
| part.barrier.thickness | number | Tak | Grubość bariery |
| part.barrier.height | number | Nie | Wysokość bariery |
| stops | array | Nie | Seria przystanków |
| stop.id | number | Tak | ID przystanku |
| stop.name | string | Tak | Nazwa przystanku |
| stop.address | string | Nie | Adres przystanku |
| stop.city | string | Nie | Miasto przystanku |
| stop.country | string | Nie | Kraj przystanku |
| stop.postalCode | string | Nie | Kod pocztowy przystanku |
| stop.coordinates | string | Nie | Współrzędne lokalizacji przystanku |
| stop.coordinates.lat | number | Tak | Szerokość geograficzna przystanku |
| stop.coordinates.lon | number | Tak | Długość geograficzna przystanku |
Minimalne zapytanie (Request)
W minimalnej wersji zapytania do APi, należy zdefiniować:
- wszystkie rodzaje oraz liczby ładunków, które chcemy przewieźć (loads)
- wszystkie przestrzenie ładunkowe, które chcemy załadować.(loadingspaces)
Dla każdego ładunku oraz przestrzeni ładunkowej oddzielnie definiuje się wszystkie obowiązkowe parametry, zgodnie z opisem w punktach
Dokumentacja podaje również wartości domyślne dla parametrów nieobowiązkowych.
Nieobowiązkowo można podać parametry przetwarzania algorytmu, zgodnie z opisem
W min. wersji zapytania wymagane jest podanie wszystkich 3 sekcji/ obiektów
- loads
- loadingSpaces
- options
Przykład zapytania min.
{
"loads": [
{
"quantity": 6,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 1",
"parts": [
{
"length": 1300,
"width": 200,
"height": 200,
"limit": 24000
}
]
}
],
"options": {
}
}
Rezultat
1. Odpowiedź JSON – Response do zapytania min
2. Reprezentacja graficzna dla podanego przykładu
Domyślnie 6 takich samych ładunków zostało załadowanych do domyślnej przestrzeni ładunkowej “vehicle” i umieszczonych tuż przy kabinie kierowcy, począwszy od lewej strony.

Rozbudowane zapytanie o wartości opcjonalne (Request)
Wszystkie dane opcjonalne, domyślnie są ustawiane zgodnie z opisem w:
o ile użytkownik nie poda wprost żądanych wartości.
{
"loads": [
{
"quantity": 6,
"name": "load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"priority": 0,
"stacking": true,
"allowToRotate": true,
"rotateFreely": false,
"alongFlooor": false,
"loadType": 0
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "truck 1",
"type": "vehicle",
"parts": [
{
"length": 1300,
"width": 200,
"height": 200,
"limit": 24000,
"loadingSide": "back"
}
]
}
],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"loadingOrder": "default",
"multiStops": false,
"arrangeOptimally": false
}
}
.
Rezultat
To samo ułożenie co w pkt Minimalne zapytanie (Request)

.
Response
| Status HTTP | Opis |
|---|---|
| 200 | Wynik obliczeń jest zwracany |
| 400 | Błąd walidacji danych wejściowych |
| 401 | Błąd autoryzacji |
| 429 | Przekroczono dopuszczalną liczbę zapytań |
Response Body
| Nazwa | Typ | Wartość |
|---|---|---|
| loadingSpaces | array | Tablica przestrzeni ładunkowych |
| loadingSpace.id | integer | Identyfikator przestrzeni ładunkowej |
| loadingSpace.name | string | Nazwa przestrzeni ładunkowej. |
| loadingSpace.type | string | Typ przestrzeni ładunkowej: “vehicle” “sea” “air x” “air y” “pallet |
| loadingSpace.parts | array | Tablica części przestrzeni ładunkowej. Np. zestaw będzie składał się z dwóch części. |
| loadingSpace.part.length | number | Długość części przestrzeni ładunkowej. |
| loadingSpace.part.width | number | Szerokość części przestrzeni ładunkowej. |
| loadingSpace.part.height | number | Wysokość części przestrzeni ładunkowej. |
| loadingSpace.part.limit | number | Ładowność części przestrzeni ładunkowej. |
| loadinSpace.part.axis | array | Tablica osi dla danej części przestrzeni ładunkowej. |
| loadingSpace.part. axi.distanceFromSpaceFront | number | Odległość osi od początku danej części przestrzeni ładunkowej. |
| loadingSpace.part. axi.emptySpaceLoad |
number | Nacisk na oś przy pustej przestrzeni ładunkowej. |
| loadingSpace.part. axi.maxLoad |
number | Maksymalne dopuszczalne obciążenie osi. |
| loadingSpace.part. axi.addedLoad |
number | Nacisk na oś ułożonych ładunków. |
| loadingSpace.part.loads | array | Tablica ładunków ułożonych w danej części przestrzeni ładunkowej (single stop) |
| loadingSpace.part.stops | array | Tablica przystanków |
| loadinfSpace.part.stop.stopId | number | Identyfikator przystanku |
| loadingSpace.part.stop.name | string | Nazwa przystanku |
| loadingSpace.part.stop.summary | json | Podsumowanie danych dotyczących danego przystanku |
| loadingSpace.part.stop.summary.occupiedLdm | number | Liczba wykorzystanych metrów ładownych |
| loadingSpace.part.stop.summary.freeLdm | number | Liczba wolnych metrów ładownych |
| loadingSpace.part.stop.summary.occupiedSurface | number | Zajęta powierzchnia (w mm kw) |
| loadingSpace.part.stop.summary.freeSurface | number | Wolna powierzchnia (w mm kw) |
| loadingSpace.part.stop.summary.occupiedVolume | number | Zajęta objętość (w mm sześciennych) |
| loadingSpace.part.stop.summary.freeVolume | number | Wolna objętość (w mm sześciennych) |
| loadingSpace.part.stop.summary.percentLdmUsd | number | Zajęte metry ładowne – procentowo |
| loadingSpace.part.stop.summary.percentVolumeUsd | number | Zajęta objętość – procentowo |
| loadingSpace.part.stop.loads | array | Tablica ładunków dla danego przystanku. |
| loadingSpace.part.load.id | number | Identyfikator ładunku |
| loadingSpace.part.load.allowToRotate | boolean | Pozwolenie na obracanie ładunku po jego podstawie |
| loadingSpace.part.load.quantity | integer | Liczba ładunków |
| loadingSpace.part.load.name | string | Nazwa ładunku |
| loadingSpace.part.load.priority | integer | Priorytet ładunku |
| loadingSpace.part.load.weight | number | Waga ładunku. |
| loadingSpace.part.load.length | number | Długość ładunku. |
| loadingSpace.part.load.width | number | Szerokość ładunku. |
| loadingSpace.part.load.height | number | Wysokość ładunku. |
| loadingSpace.part.load.stacking | boolean / integer | Pozwolenie na piętrowanie ładunku/ liczba pięter |
| loadingSpace.part.load.placement | array | Tablica z rozłożeniem ładunków w danej części przestrzeni ładunkowej. |
| loadingSpace.part.load.placement.length | number | Długość ustawionego ładunku. Wartości długości i szerokości mogą być zamienione miejscami w stosunku do pierwotnych wartości,, jeśli opcja „allowToRotate” jest ustawiona na „true”. |
| loadingSpace.part.load.placement.width | number | Szerokość ustawionego ładunku. Wartości długości i szerokości mogą być zamienione miejscami w stosunku do pierwotnych wartości,, jeśli opcja „allowToRotate” jest ustawiona na „true”. |
| loadingSpace.part.load.placement.height | number | Wysokość ustawionego ładunku. |
| loadingSpace.part.load.placement.position | json | Pozycja ładunku w przestrzeni ładunkowej, względem osi x, y, z. Patrząc od początku przestrzeni, pozycje x: 0, y: 0, z: 0 to prawy dolny róg przestrzeni. Przyjęte wskazanie osi: x: wzdłuż szerokości przestrzeni y: wzdłuż wysokości przestrzeni z: wzdłuż długości przestrzeni |
| loadingSpace.part.load.placement.loadsPerAxis | json | Liczba ładunków ułożonych wzdłuż poszczególnych osi |
| loadingSpace.part.load.placement.loadsPerAxis.x | integer | Liczba ładunków wzdłuż osi x. |
| loadingSpace.part.load.placement.loadsPerAxis.y | integer | Liczba ładunków wzdłuż osi Y. |
| loadingSpace.part.load.placement.loadsPerAxis.z | integer | Liczba obciążeń wzdłuż osi Z. |
| loadingSpace.part.load.placement.position.x | numer | Pozycja ładunku na osi X |
| loadingSpace.part.load.placement.position.y | numer | Pozycja ładunku na osi Y |
| loadingSpace.part.load.placement.position.z | numer | Pozycja ładunku na osi Z |
| loadingSpace.part.summary | json | Podsumowanie dla danej części przestrzeni ładunkowej. |
| loadingSpace.part.summary.occupiedLdm | number | Liczba wykorzystanych metrów ładownych |
| loadingSpace.part.summary.freeLdm | number | Liczba wolnych metrów ładownych |
| loadingSpace.part.summary.occupiedSurface | number | Zajęta powierzchnia (w mm kw) |
| loadingSpace.part.summary.freeSurface | number | Wolna powierzchnia (w mm kw) |
| loadingSpace.part.summary.occupiedVolume | number | Zajęta objętość (w mm sześciennych) |
| loadingSpace.part.summary.freeVolume | number | Wolna objętość (w mm sześciennych) |
| notFittedLoads | array | Ładunki, które nie zmieściły się w żadnej przestrzeni ładunkowej |
| notFittedLoad.id | number | Identyfikator ładunku, który się nie zmieścił w przestrzeni ładunkowej |
| notFittedLoad.length | number | Długość ładunku, który się nie zmieścił w przestrzeni ładunkowej |
| notFittedLoad.width | number | Szerokość ładunku |
| notFittedLoad.height | number | Wysokość ładunku |
| notFittedLoad.weight | number | Waga ładunku |
| notFittedLoad.quantity | integer | Liczba ładunków |
| notFittedLoad.priorytet | integer | Priorytet ładunku |
| notFittedLoad.name | string | Nazwa ładunku |
| notFittedLoad.stacking | boolean/ integer | Pozwolenie na piętrowanie ładunku/ liczba pięter |
| notFittedLoad.allowToRotate | boolean | Pozwolenie na obracanie ładunku względem podstawy |
| options | json | Opcje algorytmu |
| options.allowToOverwieght | boolean | Wartość mówiąca, czy można przekroczyć dopuszczalną ładowność |
| options.unit | string | Jednostka podawanych wymiarów |
| options.keepLoadsTogether | boolean | Wartość mówiąca, czy ładunki z danej grupy są ustawiane razem. |
| _links | array | Tablica dalszych możliwych działań |
| link.rel | string | Relacja |
| link.href | string | Link do wizualizacji projektu w aplikacji Goodloading |
Response do zapytania min
Response dla zapytania – Minimalne zapytanie (Request)
Opis parametrów dla Response, zgodnie z Response Body
Ładunki w przestrzeni ładunkowej układane są wzdłuż osi x,y,z – w pojeździe, począwszy od lewej strony kabiny kierowcy

Od powyższej zasady jest tylko 1 wyjątek- układanie z wykorzystaniem barier 8. Bariery
Response
{
"loadingSpaces": [
{
"id": 1,
"name": "truck 1",
"parts": [
{
"height": 200,
"length": 1300,
"width": 200,
"limit": 24000,
"loads": [
{
"id": 1,
"allowToRotate": true,
"stacking": true,
"name": "load 1",
"loadType": 0,
"priority": 0,
"quantity": 6,
"width": 120,
"length": 80,
"height": 100,
"weight": 100,
"diameter": 0,
"origin": null,
"destination": null,
"pctSupport": 100,
"alongFloor": false,
"boxesBelowAllowed": [],
"color": 6989903,
"placement": [
{
"height": 100,
"length": 80,
"width": 120,
"diameter": 0,
"loadsPerAxis": {
"x": 1,
"y": 2,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 0
},
"cubeId": 0
},
{
"height": 100,
"length": 120,
"width": 80,
"diameter": 0,
"loadsPerAxis": {
"x": 1,
"y": 2,
"z": 1
},
"position": {
"x": 120,
"y": 0,
"z": 0
},
"cubeId": 0
},
{
"height": 100,
"length": 80,
"width": 120,
"diameter": 0,
"loadsPerAxis": {
"x": 1,
"y": 2,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 80
},
"cubeId": 0
}
]
}
],
"loadingSide": "back",
"summary": {
"freeLdm": 1140,
"occupiedLdm": 160,
"freeSurface": 23120000,
"occupiedSurface": 2880000,
"freeVolume": 462400000000,
"occupiedVolume": 57600000000,
"percentLdmUsd": 12.307692307692308,
"percentVolumeUsd": 11.076923076923077,
"totalLoadsWeight": 600
},
"axis": []
}
],
"type": "vehicle"
}
],
"notFittedLoads": [],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"arrangeOptimally": false,
"loadingOrder": "default",
"keepGroupsInGivenSpaces": false,
"isMagnetOn": false,
"multiStops": false,
"includeSavedLoadingSpaces": false,
"additionOrder": true,
"userOrder": false,
"volumeOrder": false,
"weightOrder": false
},
"_links": [
{
"rel": "preview", ref":https://app.goodloading.com/session?id=e9197db7-acad-4fc7-b58a-f5b26edfdabc&pref=opt-names-opened"
}
]
}
Wizualizacja
