Przejdź do treści
Dokumentacja dla deweloperówDokumentacja APIZaładunek

Wyceń zadanie załadunku

Przeprowadza tę samą walidację co POST /v1/pack i zwraca przedział cenowy, bez tworzenia zadania i rezerwowania kredytów.

POSThttps://runner.cargoduo.com/v1/estimate

Bezpłatne. Na nieprawidłowe zapytanie odpowiada kodem 200 z valid: false i wszystkimi problemami w errors[].

Uwierzytelnianie

Klucz API (Bearer) z zakresempack:writeWięcej informacji

Parametry treści

application/json
NazwaTypWymaganyOpis
referencestring
string
Nie

Twój własny numer referencyjny (numer zamówienia, ID przesyłki…). Zwracany w zadaniu.

≤ 128 chars
vehiclesVehicle[]wymagane
Vehicle[]
Tak

Definicje pojazdów. Każda może mieć quantity > 1. Co najmniej jedna.

itemsItem[]wymagane
Item[]
Tak

Definicje pozycji. Każda może mieć quantity > 1. Co najmniej jedna.

groupsGroup[]
Group[]
Nie

Opcjonalne grupy (klienci, punkty dostawy, zamówienia). Wymagane dla każdej grupy wskazanej przez pozycję, gdy options.group_routing jest inne niż "none"; w przeciwnym razie grupy są tworzone z nazw grup pozycji w kolejności wystąpienia.

optionsOptions
Options
Nie

Opcje załadunku. Wszystkie pola są opcjonalne.

Przykładowe zapytanie

curl -X POST "https://runner.cargoduo.com/v1/estimate" \
  -H "Authorization: Bearer $CARGODUO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reference": "order-1042",
    "vehicles": [
      {
        "id": "trailer",
        "type": "trailer",
        "name": "13.6 m trailer",
        "length": 1360,
        "width": 245,
        "height": 270,
        "max_weight": 24000
      }
    ],
    "items": [
      {
        "id": "pallet-eu",
        "label": "Euro pallet",
        "length": 120,
        "width": 80,
        "height": 140,
        "weight": 450,
        "quantity": 18,
        "stackable": false
      },
      {
        "id": "carton-a",
        "label": "Carton A",
        "length": 60,
        "width": 40,
        "height": 40,
        "weight": 12,
        "quantity": 40,
        "rotation": "upright"
      }
    ],
    "options": {
      "packing_mode": "auto"
    }
  }'

Przykładowa odpowiedź

200 OK · Estimate
{
  "valid": true,
  "errors": [],
  "warnings": [],
  "items": 58,
  "max_vehicles": 3,
  "estimated_cost": {
    "min_credits": 0.26,
    "max_credits": 1.11
  },
  "estimated_seconds": 90,
  "balance": {
    "available_credits": 147.75
  }
}

Odpowiedzi

  • 200OKWynik walidacji i przedział cenowy.
    NazwaTypWymaganyOpis
    validboolean
    boolean
    Nie

    Zapytanie zostałoby przyjęte przez POST /v1/pack.

    errorsErrorDetail[]
    ErrorDetail[]
    Nie

    Błędy walidacji (puste, gdy zapytanie jest prawidłowe).

    warningsWarning[]
    Warning[]
    Nie

    Uwagi, które nie blokują zadania.

    itemsinteger
    integer
    Nie

    Łączna liczba sztuk.

    max_vehiclesinteger
    integer
    Nie

    Maksymalna liczba pojazdów, które zadanie może załadować.

    estimated_costCostRange
    CostRange
    Nie

    Przedział cenowy w kredytach.

    estimated_secondsnumber · s
    number · s
    Nie

    Budżet obliczeniowy, jaki dostałoby zadanie (górna granica; większość zadań kończy się wcześniej).

    balanceEstimateBalance
    EstimateBalance
    Nie

    Twoje dostępne kredyty.

  • 400Bad requestinvalid_json
    • invalid_jsonTreść nie jest prawidłowym JSON-em lub pole ma niewłaściwy typ.
    NazwaTypWymaganyOpis
    errorErrorBodywymagane
    ErrorBody
    Tak
    Wszystkie kody błędów
  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedBrak klucza API, nieprawidłowy format klucza lub nieznany klucz.
    • key_revokedKlucz został unieważniony.
    • key_expiredKlucz utracił ważność.
    NazwaTypWymaganyOpis
    errorErrorBodywymagane
    ErrorBody
    Tak
    Wszystkie kody błędów
  • 403Forbiddenip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • ip_not_allowedAdresu IP, z którego przyszło wywołanie, nie ma na liście dozwolonych adresów klucza.
    • subscription_inactiveOrganizacja nie ma aktywnej subskrypcji obejmującej API.
    • account_inactiveOrganizacja jest zawieszona albo nie ma właściciela z aktywnym kontem.
    • scope_missingKlucz nie ma zakresu wymaganego przez ten endpoint.
    NazwaTypWymaganyOpis
    errorErrorBodywymagane
    ErrorBody
    Tak
    Wszystkie kody błędów
  • 413Payload too largepayload_too_large
    • payload_too_largeTreść zapytania przekracza 10 MB.
    NazwaTypWymaganyOpis
    errorErrorBodywymagane
    ErrorBody
    Tak
    Wszystkie kody błędów
  • 429Too many requestsrate_limited
    • rate_limitedZa dużo zapytań w bieżącej minucie, godzinie lub dobie (na klucz lub na organizację) albo przekroczony limit nieudanych uwierzytelnień z Twojego adresu IP (60 na minutę).
    NazwaTypWymaganyOpis
    errorErrorBodywymagane
    ErrorBody
    Tak
    Wszystkie kody błędów
  • 500Internal server errorinternal_error
    • internal_errorWystąpił błąd po naszej stronie.
    NazwaTypWymaganyOpis
    errorErrorBodywymagane
    ErrorBody
    Tak
    Wszystkie kody błędów
  • 503Service unavailableapi_disabled
    • api_disabledAPI jest tymczasowo wyłączone (prace konserwacyjne) lub wyłączone dla organizacji.
    NazwaTypWymaganyOpis
    errorErrorBodywymagane
    ErrorBody
    Tak
    Wszystkie kody błędów