Poniższa dokumentacja zawiera instrukcje dotyczące łączenia 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 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 obliczeń |
| options.allowOverweight | boolean | Nie | Ustawienie wartości na true spowoduje, że ładunki będą ustawiane na przestrzeni ładunkowej jeżeli waga przekroczy dopuszczalną ładowność. Domyślna wartość: false. |
| options.unit | string | Nie | Jednostki podanych wymiarów. Można wybrać jedną z dwóch wartości: – cm – lb Domyślna wartość: “cm” |
| options.keepLoadsTogether | boolean | Nie | Ustawienie wartości na true powoduje, że ładunki z danej grupy będą ustawiane razem. Domyślna wartość: false. |
| options.newAlgorithm | boolean | Nie | Ustawienie wartości na true powoduje, że zostanie użyty nowy algorytm. Domyślna wartość: true. |
| options.loadingOrder | string | Nie | Wartości: “default” :na podstawie kolejności 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 |
| options.multiStops | boolean | Nie | Ustawienie wartości na false powoduje, że multi przestaje być brane pod uwagę. Domyślna wartość: false. |
| options.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. |
Załadunek
| 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. |
| width | number | Tak | Szerokość jednego ładunku. Musi być większa od 0. |
| height | number | Tak | Wysokość jednego ładunku. Musi być większa od 0. |
| 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. Wartość domyślna true. |
| rotateFreely | boolean | Nie | Przyjmuje true lub false. Ustawienie wartości true pozwala na zastąpienie wymiarów innymi podczas obliczania, tj. umożliwia obracanie obciążenia w dowolną stronę. Wartość domyślna false. |
| color | string | Nie | Wczytaj kolor w formacie kodu szesnastkowego (hex code). |
| origin | {id: number, name: string} |
Nie | Miejsce załadunku ładunku (multi stops) |
| destination | {id: number, name: string} |
Nie | Miejsce rozładunku ładunku (multi stops) |
| pctSupport | number | Nie | Procent obsługiwanej powierzchni ładunku |
| alongFloor | boolean | Nie | Przyjmuje prawdę lub fałsz. Ustawienie wartości true powoduje, że obciążenia będą ładowane wzdłuż podłogi. |
| maxWeightOnTop | number | Nie | Maksymalny ciężar, jaki można umieścić nad ładunkiem. |
| boxesBelowAllowed | array of numbers | Nie | Tablica id pudełek, które można umieścić pod ł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”) |
Przestrzeń ładunkowa
| Nazwa | Wartość | Wymagane | Opis |
|---|---|---|---|
| quantity | integer | Tak | Ilość 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.limit | number | Tak | Ładowność częściowa przestrzeni ładunkowej. Musi być większa lub równa 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. |
| 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 |
Przykład zapytania
{
"loads": [
{
"id": 12,
"quantity": 2,
"name": "test load 1",
"length": 120,
"width": 80,
"height": 100,
"weight": 100,
"priority": 0,
"stacking": true,
"allowToRotate": true,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 3,
"name": "stop 3"
},
"pctSupport": 90,
"alongFlooor": true,
"maxWeightOnTop": 100,
"boxesBelowAllowed": [2]
},
{
"id": 2,
"quantity": 3,
"name": "test load 2",
"length": 100,
"width": 60,
"height": 20,
"weight": 100,
"priority": 0,
"stacking": 2,
"allowToRotate": true,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 2,
"name": "stop 2"
}
}
],
"loadingSpaces": [
{
"quantity": 1,
"name": "test truck 2",
"stops": [
{
"id": 1,
"name": "stop 1"
},
{
"id": 2,
"name": "stop 2"
},
{
"id": 3,
"name": "stop 3"
}
],
"parts": [
{
"length": 1300,
"width": 200,
"height": 200,
"limit": 24000,
"axis": [
{
"distanceFromSpaceFront": -200,
"emptySpaceLoad": 800,
"maxLoad": 10000
},
{
"distanceFromSpaceFront": 1000,
"emptySpaceLoad": 800,
"maxLoad": 10000
}
]
}
],
"type": "vehicle"
}
],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"multiStops": true
}
}
Response
| Http status | Opis |
|---|---|
| 200 | Zwraca wynik obliczeń |
| 400 | Błąd w walidacji danych wejściowych |
| 401 | Błąd autoryzacji |
| 429 | Przekroczono dozwoloną liczbę zapytań |
Response Body
| Nazwa | Typ | Wartość |
|---|---|---|
| loadingSpaces | array | Tablica z przestrzeniami ładunkowymi |
| 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 z częściami przestrzeni ładunkowej. Np zestaw będzie miał dwie 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 z osiami przestrzeni ładunkowej. |
| loadingSpace.part. axi.distanceFromSpaceFront |
number | Odległość osi od początku przestrzeni ładunkowej. |
| loadingSpace.part. axi.emptySpaceLoad |
number | Nacisk na oś przy pustej przestrzeni ładunkowej. |
| loadingSpace.part. axi.maxLoad |
number | Największy dopuszczalny nacisk na oś. |
| loadingSpace.part. axi.addedLoad |
number | Nacisk na oś ustawionych ładunków. |
| loadingSpace.part.loads | array | Ładunki ustawione w danej części przestrzeni ładunkowej (single stop) |
| loadingSpace.part.stops | array | Przystanki informują o danej części przestrzeni ładunkowej (multi stop) |
| loadinfSpace.part.stop.stopId | number | Identyfikator przystanku |
| loadingSpace.part.stop.name | string | Nazwa przystanku |
| loadingSpace.part.stop.summary | json | Podsumowanie dla danej części przestrzeni ładunkowej |
| loadingSpace.part.stop.summary.occupiedLdm | number | Zajęte LDMy |
| loadingSpace.part.stop.summary.freeLdm | number | Wolne LDM |
| loadingSpace.part.stop.summary.occupiedSurface | number | Zajęta przestrzeń |
| loadingSpace.part.stop.summary.freeSurface | number | Wolna przestrzeń |
| loadingSpace.part.stop.summary.occupiedVolume | number | Zajęta objętość |
| loadingSpace.part.stop.summary.freeVolume | number | Wolna objętość |
| loadingSpace.part.stop.summary.percentLdmUsd | number | Wykorzystane metry ładunkowe (procent) |
| loadingSpace.part.stop.summary.percentVolumeUsd | number | Wykorzystana objętość (w procentach) |
| loadingSpace.part.stop.loads | json | Ładunki określone w danej części przestrzeni ładunkowej na danym przystanku. |
| loadingSpace.part.load.id | number | Identyfikator ładunku |
| loadingSpace.part.load.allowToRotate | boolean | Wartość, która została podana dla opcji swobodnego obracania |
| loadingSpace.part.load.quantity | integer | Ilość ładunków z danej grupy, która została ustawiona w danej części przestrzeni |
| loadingSpace.part.load.name | string | Nazwa ładunku |
| loadingSpace.part.load.priority | integer | Priorytet ładunku |
| loadingSpace.part.load.weight | number | Waga jednego ładunku. |
| loadingSpace.part.load.length | number | Podstawowa długość ładunku. |
| loadingSpace.part.load.width | number | Podstawowa szerokość ładunku. |
| loadingSpace.part.load.height | number | Podstawowa wysokość ładunku. |
| loadingSpace.part.load.stacking | boolean / integer | Wartość, która została wybrana dla piętrowania ładunku |
| 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ą zostać zamienione w stosunku do podstawowych wartości, jeżeli opcja allowToRotate jest ustawiona na true. |
| loadingSpace.part.load.placement.width | number | Szerokość ustawionego ładunku. |
| loadingSpace.part.load.placement.height | number | Wysokość ustawionego ładunku. |
| loadingSpace.part.load.placement.position | json | Pozycja ładunku w części przestrzeni ładunkowej. Patrząc od początku przestrzeni pozycja x: 0, y: 0, z: 0 to prawy dolny róg przestrzeni.
Przyjęte oznaczenia osi:
|
| loadingSpace.part.load.placement.position.x | number | Pozycja na osi x |
| loadingSpace.part.load.placement.position.y | number | Pozycja na osi y |
| loadingSpace.part.load.placement.position.z | number | Pozycja na osi z |
| loadingSpace.part.load.placement.loadsPerAxis | json | Ilość ładunków ustawionych wzdłuż danej osi |
| loadingSpace.part.load.placement.loadsPerAxis.x | integer | Ilość ładunków wzdłuż osi x. |
| loadingSpace.part.load.placement.loadsPerAxis.y | integer | Ilość ładunków wzdłuż osi y. |
| loadingSpace.part.load.placement.loadsPerAxis.z | integer | Ilość ładunków wzdłuż osi z. |
| loadingSpace.part.summary | json | Podsumowanie dla danej części przestrzeni ładunkowej. |
| loadingSpace.part.summary.occupiedLdm | number | Zajęte ldm |
| loadingSpace.part.summary.freeLdm | number | Wolne ldm |
| loadingSpace.part.summary.occupiedSurface | Zajęta powierzchnia | |
| loadingSpace.part.summary.freeSurface | number | Wolna powierzchnia |
| loadingSpace.part.summary.occupiedVolume | number | Zajęta objętość |
| loadingSpace.part.summary.freeVolume | number | Wolna objętość |
| notFittedLoads | array | Ładunki, które nie zmieściły się na żadną przestrzeń ładunkową |
| notFittedLoad.id | number | Identyfikator ładunków |
| notFittedLoad.length | number | Długość ładunków |
| notFittedLoad.width | number | Szerokość ładunków |
| notFittedLoad.height | number | Wysokość ładunków |
| notFittedLoad.weight | number | Waga jednego ładunku |
| notFittedLoad.quantity | integer | Ilość ładunków |
| notFittedLoad.priority | integer | Priorytet |
| notFittedLoad.name | string | Nazwa ładunków |
| notFittedLoad.stacking | boolean / integer | Wartość, która została wybrana dla piętrowania ładunku |
| notFittedLoad.allowToRotate | boolean | Wartość, która została podana dla opcji swobodnego obracania |
| options | json | Opcje obliczeń |
| options.allowToOverweight | boolean | Wybrana wartość dla opcji pozwalającej ładować ponad maksymalną ładowność. |
| options.unit | string | Wybrana jednostka |
| options.keepLoadsTogether | boolean | Wybrana wartość dla opcji utrzymującej ładunki z danej grupy przy sobie. |
| _links | array | Tablica z dalszymi możliwymi akcjami |
| link.rel | string | relacja |
| link.href | string | adres |
Przykład odpowiedzi
{
"loadingSpaces": [
{
"id": 1,
"name": "test truck 2",
"parts": [
{
"height": 200,
"length": 1300,
"width": 200,
"limit": 24000,
"loads": [],
"stops": [
{
"name": "stop 1",
"id": 1,
"loads": [
{
"id": 10012,
"allowToRotate": true,
"stacking": null,
"name": "test load 1",
"loadType": 0,
"priority": 0,
"quantity": 2,
"width": 100,
"length": 80,
"height": 120,
"weight": 100,
"diameter": 0,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 3,
"name": "stop 3"
},
"placement": [
{
"height": 120,
"length": 80,
"width": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 0
}
},
{
"height": 120,
"length": 80,
"width": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 100,
"y": 0,
"z": 0
}
}
]
},
{
"id": 10002,
"allowToRotate": true,
"stacking": 2,
"name": "test load 2",
"loadType": 0,
"priority": 0,
"quantity": 3,
"width": 100,
"length": 20,
"height": 60,
"weight": 100,
"diameter": 0,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 2,
"name": "stop 2"
},
"placement": [
{
"height": 60,
"length": 20,
"width": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 80
}
},
{
"height": 60,
"length": 20,
"width": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 100,
"y": 0,
"z": 80
}
},
{
"height": 60,
"length": 20,
"width": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 100
}
}
]
}
]
},
{
"name": "stop 2",
"id": 2,
"loads": [
{
"id": 10012,
"allowToRotate": true,
"stacking": null,
"name": "test load 1",
"loadType": 0,
"priority": 0,
"quantity": 2,
"width": 100,
"length": 80,
"height": 120,
"weight": 100,
"diameter": 0,
"origin": {
"id": 1,
"name": "stop 1"
},
"destination": {
"id": 3,
"name": "stop 3"
},
"placement": [
{
"height": 120,
"length": 80,
"width": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 0,
"y": 0,
"z": 0
}
},
{
"height": 120,
"length": 80,
"width": 100,
"loadsPerAxis": {
"x": 1,
"y": 1,
"z": 1
},
"position": {
"x": 100,
"y": 0,
"z": 0
}
}
]
}
]
},
{
"name": "stop 3",
"id": 3,
"loads": []
}
],
"summary": {
"freeLdm": 1300,
"occupiedLdm": 0,
"freeSurface": 26000000,
"occupiedSurface": 0,
"freeVolume": 520000000000,
"occupiedVolume": 0
},
"axis": [
{
"distanceFromSpaceFront": -200,
"emptySpaceLoad": 800,
"maxLoad": 10000,
"addedLoad": 545.83
},
{
"distanceFromSpaceFront": 1000,
"emptySpaceLoad": 800,
"maxLoad": 10000,
"addedLoad": 154.17
}
]
}
],
"type": "vehicle"
}
],
"notFittedLoads": [],
"options": {
"allowOverweight": false,
"unit": "cm",
"keepLoadsTogether": false,
"newAlgorithm": true,
"multiStops": true,
"arrangeOptimally": false,
"userOrder": false,
"additionOrder": false,
"volumeOrder": false,
"weightOrder": false,
"keepGroupsInGivenSpaces": false,
"isMagnetOn": false
},
"_links": [
{
"rel": "preview",
"href": "http://localhost:4200/session?id=07d695ae-4ce2-47fb-98da-295c1ad87d6a"
}
]
}
Rekomendacje API
Algorytm zwraca informacje jaki pojazd lub kontener należy użyć dla planowanego załadunku. Jeśli użytkownik wskaże „includeSavedLoadingSpaces”: true, algorytm będzie pobierał dane o bazie przestrzeni ładunkowych z konta admina. Jeśli user wskaże własne wymiary przestrzeni oraz ustawi opcję „includeSavedLoadingSpaces”: false, algorytm obliczy ile wskazanych przez użytkownika przestrzeni potrzebnych jest dla danego zestawu ładunków.
URL: https://api.goodloading.com/api/external/calculation/recommendation
POST
Request Headers
| Nazwa | Wartość | Wymagane | Opis |
|---|---|---|---|
| Authorization | Bearer <token> | Tak | Klucz do autoryzacji |
Request Body
| Nazwa | Wartość | Wymagane | Opis |
|---|---|---|---|
| name | string | Nie | Nazwa projektu |
| note | string | Nie | Opis projektu |
| loads | array of Loads | Tak | Tablica z ładunkami |
| loadingSpaces | array of Loading Spaces | Nie | Tablica z przestrzeniami ładunkowymi |
| options | json | Tak | Opcje kalkulacji |
| options.allowOverweight | boolean | Nie | Ustawienie wartości na true spowoduje, że ładunki będą ustawiane na przestrzeni ładunkowej jeżeli waga przekroczy dopuszczalną ładowność. Domyślna wartość: false. |
| options.unit | string | Nie | Jednostki wskazanych wymiarów. Można ustawić jedną z dwóch wartości: – „cm” [Domyślne] – „lb” |
| options.newAlgorithm | boolean | Nie | Ustawienie wartości true powoduje użycie nowego algorytmu. Wartość domyślna: true. |
| options.loadingOrder | string | Nie | Wartości “default” : na podstawie kolejności ładunków “weight” : na podstawie wagi ładunków “volume” : na podstawie objętości ładunków “priority” : na podstawie priorytetyzacji ładunków |
| options.includeSavedLoadingSpaces | boolean | Nie | Dołącz zapisane przestrzenie ładowania na koncie administratora, aby polecić. Wartość domyślna: false. |