Packing API
Tuma mzigo, upate mpangilio wa kupakia uliopangwa vizuri na uliohalal kiufizikia — nafasi za kupakia, mita ya kupakia, futi za mstari na nafasi za pallet zinazotumika kwa malipo. Injini sawa inayotumika kwenye programu, iliyothibitishwa mara kwa mara kwa miundo ya wasambazaji halisi. Upatikanaji wa sandbox kwenye kila mpango; upatikanaji wa uzalishaji kwenye Enterprise.
Mwanzo wa haraka
- Ingia → bonyeza jina lako → API → unda ufunguo.
- Tuma kazi ya kupakia (hii inatekelezwa kwenye sandbox — bure kwenye kila mpango):
curl -X POST https://hansatic.com/api/v1/pack \
-H "Authorization: Bearer hk_live_..." \
-H "Content-Type: application/json" \
-d '{
"vehicle": "CURTAINSIDER_136",
"objective": "ldm",
"sandbox": true,
"items": [{
"name": "Machine crate",
"length": 2300, "width": 750, "height": 1400,
"weight": 300, "quantity": 7,
"stackable": false, "tiltable": false
}]
}'{
"job_id": "5e3617d1-abe4-4549-b7e6-d18c6baf814f",
"status": "queued",
"sandbox": true,
"status_url": "https://hansatic.com/api/v1/jobs/5e3617d1-..."
}Chunguza status_url (na kibali cha uthibitisho sawa) hadi status iwe "done":
{
"job_id": "5e3617d1-...",
"status": "done",
"result": {
"placed_count": 7,
"unplaced_count": 0,
"units": "metric",
"metrics": {
"ldm_m": 5.25,
"span_mm": 5250,
"linear_ft": 17.2,
"pallet_positions_eur": 14,
"total_weight_kg": 2100,
"overlaps": 0
},
"items": [
{ "id": "...", "name": "Machine crate", "placed": true,
"x": 8370, "y": 0, "z": 0,
"rotation_deg": 90, "tilt_deg": 0, "...": "..." }
],
"plan_url": "https://hansatic.com/en/app/plans/..."
}
}Njia za API
POST /api/v1/pack
Inathibitisha na kuweka kazi ya kupakia kwenye foleni. Inarudisha 202 pamoja na job_id. Inasaidia kichwa cha Idempotency-Key — majaribio ya kurudia na ufunguo sawa hurudisha kazi ya awali badala ya kupakia mara mbili.
GET /api/v1/jobs/{id}
Hali ya kazi na, wakati wa kumalizika, matokeo kamili. Matokeo yanatunzwa kwa siku 30; mipango ya uzalishaji inaishi kwenye eneo lako la kazi kwa muda usio na mwisho.
GET /api/v1/openapi.json
Mkataba wa OpenAPI 3.1 unaosomwa na mashine — uweze kuuhamisha kwenye Postman, zana za kuzalisha msimbo, au uelekeze zana yako ya AI ya uandishi wa msimbo. Nambari za gari zinachanganywa kutoka kwa injini hai, hivyo daima ni ya sasa. Fungua taarifa ↗
Sehemu za majibu
Kipengele cha result kwenye kazi iliyomalizika:
| Sehemu | Aina | Maelezo |
|---|---|---|
| placed_count / unplaced_count | integer | Idadi ya vitu vilivyofaa / visivyofaa. |
| units | "metric" | "imperial" | Vipimo vinavyotumika kwa kila nambari hapa chini (inarejesha ombi). |
| metrics.ldm_m | number | Mita za kupakia — urefu wa mzigo (mwisho wa juu − mwanzo wa chini). |
| metrics.linear_ft | number | Urefu huo huo kwa futi za mstari (US LTL). |
| metrics.span_mm | integer | Urefu kwa mm, daima kipimo cha kimataifa. |
| metrics.pallet_positions_eur | integer | null | Nafasi za pallet za EUR zinazotumika kwa malipo. null wakati mpangilio ni mkubwa mno kwa kupimwa. |
| metrics.total_weight_kg | number | Uzito wa vitu vilivyowekwa, daima kwa kg. |
| metrics.overlaps | integer | Jozi zinazopenetana — daima 0 kwa mpangilio halali. |
| items[].placed | boolean | Kama kitu kimewekwa kwenye mpangilio. |
| items[].x / y / z | number | null | Nafasi kwa vipimo vya ombi: x kutoka upande wa mlango, y kutoka ukuta wa kushoto, z juu ya sakafu. Zote tatu ni null wakati placed ni false. |
| items[].rotation_deg / tilt_deg | 0 | 90 | Mwelekeo: mzunguko kwenye mhimili wa wima; tilt = kulala pembeni. |
| items[].length / width / height / weight | number | Kitu kama kilivyotumwa, kirejesha kwa vipimo vya ombi. |
| plan_url | string | null | Mpango ulioundwa kwenye programu. null kwa kazi za sandbox. |
Toleo na utulivu
Mkataba unaotolewa kwa njia ya /api/v1/. Ndani ya v1, mabadiliko ni ya kuongeza tu — sehemu mpya za ombi za hiari, sehemu mpya za majibu, nambari mpya za gari na nambari za makosa zinaweza kuonekana, na wateja wanapaswa kuzitilia mbali sehemu ambazo hawajui. Sehemu zilizopo kamwe hazibadilishi maana au aina, wala hakuna chochote kinachofutwa. Mabadiliko makubwa yanamaanisha njia mpya ya toleo, na v1 itatunzwa sambamba kwa angalau miezi 12 na taarifa ya kuondoa kwa barua pepe kwa kila eneo la kazi lenye ufunguo wa kazi.
Sehemu za ombi
| Sehemu | Aina | Maelezo |
|---|---|---|
| vehicle | string | Nambari ya gari kutoka kwa jedwali hapa chini. Au tuma {customVehicleId} (gari kutoka kwa usafiri wako wa eneo la kazi). |
| objective | "ldm" | "pallets" | Punguza mita za kupakia, au punguza nafasi za pallet zinazotumika kwa malipo. Chaguo-msingi ni "ldm". |
| units | "metric" | "imperial" | Jinsi vipimo na uzito vya vitu vinavyosomwa NA kurudishwa: mm/kg (chaguo-msingi) au in/lb. Nafasi kwenye jibu zinafuata vipimo hivyo hivyo. |
| items | array, required | Orodha ya mizigo (sehemu zifuatazo). |
| sandbox | boolean | Hali ya jaribio: matokeo kamili, hakuna kitu kinachohifadhiwa. Inapatikana kwenye kila mpango. |
| name | string | Jina la mpango (hali ya uzalishaji). |
| ldm_limit_m | number | Punguza mzigo hadi mita N za kwanza za kupakia (malori). |
| budget_ms | number | Wakati wa uboreshaji (uzalishaji; chaguo-msingi 30000, kiwango cha juu 300000). |
| callback_url | https URL | Inatumwa POST matokeo wakati kazi inapomalizika, imesainiwa (angalia Webhooks). |
Sehemu za kitu
| Sehemu | Aina | Maelezo |
|---|---|---|
| length / width / height | number, required | Vipimo vya kitu, vinavyosomwa kwa vipimo vya ombi (mm kwa chaguo-msingi, inchi kwa "units": "imperial"). |
| weight | number, required | Uzito wa kitu (kg kwa chaguo-msingi, lb kwa "units": "imperial"). |
| quantity | integer, default 1 | Inapanua kuwa vitengo binafsi. |
| name | string, optional | Inaonekana kwenye mpango na jibu. |
| stackable | boolean, default true | Mizigo mingine inaweza kusimama juu ya kitu hiki. |
| max_stack | number, optional | Uzito wa juu unaoweza kusimama juu ya kitu hiki (vipimo sawa na uzito). |
| fragile | boolean, default false | Vitu vya kuvunjika huwekwa kwenye safu za juu tu. |
| tiltable | boolean, default true | Je, kitu kinaweza kulala pembeni. |
| destination_stop | integer, default 1 | Kituo cha kufikisha kwa upakiaji wa LIFO wa vituo vingi. |
Nambari za gari
Zimetengenezwa kutoka kwa taarifa za injini hai. Gari maalum kutoka kwa usafiri wako wa eneo la kazi hufanya kazi kupitia custom_vehicle_id.
Malori & viburudisho
| Nambari | Gari | Ndani (U×P×K) | Mzigo |
|---|---|---|---|
| CURTAINSIDER_136 | 13.6m Curtainsider | 13.62 × 2.48 × 2.70 m | 24 t |
| BOX_136 | 13.6m Box Trailer | 13.62 × 2.46 × 2.68 m | 24 t |
| MEGA_136 | 13.6m Mega Trailer | 13.62 × 2.48 × 3.00 m | 22.5 t |
| MEGA_CURTAIN_136 | 13.6m Mega Curtainsider | 13.62 × 2.48 × 3.00 m | 22 t |
| FLATBED_136 | 13.6m Flatbed | 13.62 × 2.48 × 3.00 m | 25 t |
| REEFER_136 | 13.6m Reefer | 13.32 × 2.44 × 2.54 m | 22 t |
| CURTAINSIDER_75 | 7.5m City Curtainsider | 7.50 × 2.48 × 2.70 m | 12 t |
| SWAPBODY_715 | 7.15m Swap Body | 7.15 × 2.48 × 2.70 m | 12 t |
| SWAPBODY_745 | 7.45m Swap Body | 7.45 × 2.48 × 2.70 m | 12 t |
| DRY_VAN_53 | 53ft Dry Van | 16.15 × 2.59 × 2.74 m | 20 t |
| FLATBED_53 | 53ft Flatbed | 16.15 × 2.59 × 3.66 m | 22 t |
| REEFER_53 | 53ft Reefer | 15.85 × 2.46 × 2.59 m | 18.5 t |
| CURTAINSIDER_125_CN | 12.5m Curtainsider (CN) | 12.50 × 2.50 × 2.80 m | 27 t |
| FLATBED_40_IN | 40ft Flatbed (IN) | 12.19 × 2.50 × 3.50 m | 26 t |
| BOX_138_BR | 13.8m Box Van (BR) | 13.80 × 2.50 × 2.90 m | 28 t |
| CURTAINSIDER_12_ZA | 12m Curtainsider (ZA) | 12.00 × 2.48 × 2.70 m | 28 t |
Kontena
| Nambari | Kontena | Ndani (U×P×K) | Mzigo |
|---|---|---|---|
| 20DC | 20' Dry Container | 5.89 × 2.35 × 2.39 m | 21.727 t |
| 20HC | 20' High Cube | 5.89 × 2.35 × 2.70 m | 21.58 t |
| 40DC | 40' Dry Container | 12.03 × 2.35 × 2.39 m | 26.63 t |
| 40HC | 40' High Cube | 12.03 × 2.35 × 2.70 m | 26.58 t |
| 45HC | 45' High Cube | 13.56 × 2.35 × 2.70 m | 25.68 t |
| 20OT | 20' Open Top | 5.89 × 2.35 × 2.39 m | 21.64 t |
| 40OT | 40' Open Top | 12.03 × 2.35 × 2.39 m | 26.58 t |
| 20RF | 20' Reefer | 5.44 × 2.29 × 2.27 m | 21 t |
| 40RF | 40' Reefer | 11.58 × 2.29 × 2.21 m | 25.6 t |
| 40RFHC | 40' Reefer High Cube | 11.58 × 2.29 × 2.54 m | 25.88 t |
| 53DC | 53' Domestic | 16.15 × 2.59 × 2.90 m | 26 t |
Viwango vya upatikanaji & vikomo
| Sandbox (kila mpango) | Uzalishaji (Enterprise) | |
|---|---|---|
| Maombi | 25 yenye mafanikio / mwezi | 5,000 inayofanikiwa / mwezi |
| Vitu kwa orodha | 20 | 5,000 |
| Kazi zinazotekelezwa wakati mmoja | 1 | 10 |
| Wakati wa uboreshaji | 10 s | 30 s kwa chaguo-msingi, hadi 300 s |
| Uhifadhi | Hakuna chochote kinachohifadhiwa | Kila kupakia huunda mpango halisi kwenye eneo lako la kazi |
Hesabu inahusu tu pakiti zilizofanikiwa — zile zisizokidhi vigezo na kazi zilizoshindwa hazihusiki na kipimo. Vijenzi vyote hupangwa upya tarehe 1 (UTC). Matokeo ya sandbox ni kamili na yasiyopunguzwa — vikwazo ndivyo kizingiti, si matokeo. Unahitaji zaidi ya pakiti 5,000 kwa mwezi? Wasiliana nasi kuhusu bei ya wingi na OEM.
Webhooks
Tuma callback_url ili upokee matokeo kupitia POST wakati kazi inapomalizika. Kila callback inabeba X-Hansatic-Signature: HMAC-SHA256 ya mwili wa maandishi kwa siri yako ya webhook ya ufunguo (inayoonekana mara moja wakati wa kuunda ufunguo). Thibitisha:
const crypto = require('crypto');
function verify(rawBody, signatureHeader, webhookSecret) {
const expected = crypto.createHmac('sha256', webhookSecret)
.update(rawBody).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected), Buffer.from(signatureHeader));
}Uwasilishaji ni jaribio moja na muda wa muda wa 5s — status_url daima inabaki chanzo cha ukweli.
Makosa
Makosa yote ni { "error": { "code", "message", ... } } — nambari ya makosa inayosomwa na mashine, ujumbe unaosomwa na binadamu, na field wakati sehemu maalum ya ombi ni sababu.
| Nambari | HTTP | Maana |
|---|---|---|
| invalid_key | 401 | Ufunguo wa API unaokosekana, uliopangwa vibaya, au umefutwa. |
| invalid_json | 400 | Mwili si JSON halali. |
| invalid_vehicle | 400 | Nambari ya gari / {customVehicleId} haijulikani. |
| invalid_items | 400 | Sehemu ya kitu inakosekana, si nambari, au nje ya kiwango. |
| suspicious_dimensions | 400 | Vipimo vyote chini ya 100mm — labda inchi zimetumwa kama mm. Tuma "units": "imperial". |
| invalid_units | 400 | units lazima ziwe "metric" au "imperial". |
| invalid_objective | 400 | objective lazima iwe "ldm" au "pallets". |
| invalid_callback | 400 | callback_url lazima iwe https. |
| too_many_items | 400 | Orodha ya mizigo inazidi kikomo cha vitu kwa kiwango chako cha upatikanaji. |
| upgrade_required | 402 | Hali ya uzalishaji inahitaji mpango wa Enterprise. Tumia sandbox, au uboreshe. |
| sandbox_limit_reached | 402 | Kikomo cha sandbox cha mwezi kimefikiwa — kinarejesha tarehe 1. |
| quota_exceeded | 402 | Kipimo cha uzalishaji wa mwezi wa pakiti 5,000 kimekwisha — hupangwa upya tarehe 1. Kwa wingi zaidi: wasiliana nasi. |
| too_many_jobs | 429 | Kikomo cha kazi zinazotekelezwa wakati mmoja kimefikiwa. Chunguza kazi zinazotekelezwa na ujaribu tena. |
| not_found | 404 | Hakuna kazi kama hiyo kwa eneo hili la kazi. |
Maswali, vikomo vikubwa zaidi, au kiungo unachohitaji (Zapier, Excel, MCP)? hello@hansatic.com