İçeriğe atla
Geliştirici dokümanlarıAPI referansıProjeler

Proje oluştur

Uygulamada açılan bir proje oluşturur: bir ad ve isteğe bağlı olarak araçlar (vehicle_id ile kayıtlı araçlar), /v1/pack biçimindeki öğeler ve gruplar ile kaydedilen seçenekler.

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

Hesaplamak için: POST /v1/projects/{id}/pack. Ücretsiz: kredi harcanmaz.

Kimlik doğrulama

Bearer API anahtarı, gereken yetki:resources:writeDaha fazla bilgi

Gövde parametreleri

application/json
AdTürZorunluAçıklama
namestringzorunlu
string
Evet
≤ 255 chars
vehiclesProjectVehicle[]
ProjectVehicle[]
Hayır

Araç slotları.

itemsItem[]
Item[]
Hayır

Yük öğeleri (en fazla 500 tanım).

groupsGroup[]
Group[]
Hayır

Yükleme sıralarıyla birlikte gruplar.

optionsProjectOptions
ProjectOptions
Hayır

Bir projenin sakladığı yükleme seçenekleri.

Örnek istek

curl -X POST "https://runner.cargoduo.com/v1/projects" \
  -H "Authorization: Bearer $CARGODUO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Order 1042",
    "vehicles": [
      {
        "vehicle_id": "standard-trailer-13-6m"
      }
    ],
    "items": [
      {
        "template_id": "tpl_42",
        "quantity": 18
      },
      {
        "template_id": "tpl_43",
        "quantity": 40
      }
    ]
  }'

Örnek yanıt

201 · Project
{
  "id": "prj_3051",
  "object": "project",
  "name": "Order 1042",
  "status": "draft",
  "item_count": 58,
  "vehicle_count": 1,
  "app_url": "https://app.cargoduo.com/projects/3051",
  "created_by": {
    "id": "usr_7",
    "name": "Elif Kaya"
  },
  "updated_by": {
    "id": "usr_7",
    "name": "Elif Kaya"
  },
  "created_at": "2026-10-19T09:10:03Z",
  "updated_at": "2026-10-19T09:10:03Z",
  "options": {
    "packing_mode": "auto",
    "group_routing": "none",
    "allow_overweight": false
  },
  "vehicles": [
    {
      "id": "pv_5120",
      "vehicle_id": "standard-trailer-13-6m",
      "name": "Standard Trailer (13.6m)",
      "type": "trailer",
      "quantity": 1,
      "length": 1362,
      "width": 248,
      "height": 270,
      "max_weight": 24000
    }
  ],
  "items": [
    {
      "id": "item_88410",
      "label": "Euro pallet",
      "shape": "box",
      "length": 120,
      "width": 80,
      "height": 140,
      "weight": 450,
      "quantity": 18,
      "stackable": false,
      "rotation": "all",
      "color": "#3b82f6"
    },
    {
      "id": "item_88411",
      "label": "Carton A",
      "shape": "box",
      "length": 60,
      "width": 40,
      "height": 40,
      "weight": 12,
      "quantity": 40,
      "stackable": true,
      "rotation": "upright",
      "color": "#f59e0b"
    }
  ],
  "groups": [],
  "plan": null
}

Yanıtlar

  • 201Yeni proje.
    AdTürZorunluAçıklama
    idstring
    string
    Hayır

    Proje ID'si (prj_…).

    objectstring
    string
    Hayır
    project
    namestring
    string
    Hayır
    statusstring
    string
    Hayır

    draft = hiç hesaplanmamış ya da girdileri değiştirilmiş; calculated = güncel bir planı var; stale = plan oluşturulduktan sonra bir ayar değişmiş.

    draftcalculatedstaleerror
    item_countinteger
    integer
    Hayır

    Öğe adedi (quantity değerlerinin toplamı).

    vehicle_countinteger
    integer
    Hayır

    Araç sayısı (quantity değerlerinin toplamı).

    app_urlstring
    string
    Hayır

    Projeyi uygulamanın 3B düzenleyicisinde açar.

    created_byUserRef | null
    UserRef | null
    Hayır

    Projeyi oluşturan üye (API çağrılarında: anahtarı oluşturan üye). Bilinmiyorsa null.

    updated_byUserRef | null
    UserRef | null
    Hayır

    Projeyi en son değiştiren üye.

    created_atstring
    string
    Hayır

    RFC 3339.

    updated_atstring
    string
    Hayır

    RFC 3339.

    optionsProjectOptions
    ProjectOptions
    Hayır

    Bir projenin sakladığı yükleme seçenekleri.

    vehiclesProjectVehicle[]
    ProjectVehicle[]
    Hayır
    itemsItem[]
    Item[]
    Hayır

    /v1/pack Item biçiminde yük; ID'ler item_… şeklindedir.

    groupsGroup[]
    Group[]
    Hayır
    planProjectPlan | null
    ProjectPlan | null
    Hayır

    Güncel plan; projenin planı yoksa null.

  • 400Bad requestinvalid_json
    • invalid_jsonGövde geçerli bir JSON değil ya da bir alanın türü yanlış.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedAPI anahtarı eksik, hatalı biçimde ya da tanınmıyor.
    • key_revokedAnahtar iptal edildi.
    • key_expiredAnahtarın geçerlilik süresi doldu.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 403Forbiddenplan_limit_reachedip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • plan_limit_reachedOrganizasyonun paketi daha fazla proje ya da yük öğesine izin vermiyor.
    • ip_not_allowedİsteği gönderen IP, anahtarın izin listesinde değil.
    • subscription_inactiveOrganizasyonun API'yi içeren etkin bir aboneliği yok.
    • account_inactiveOrganizasyon askıya alınmış ya da hesabı etkin olan bir organizasyon sahibi yok.
    • scope_missingAnahtarda bu endpoint'in gerektirdiği bir yetki eksik.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 413Payload too largepayload_too_large
    • payload_too_largeİstek gövdesi 10 MB sınırını aşıyor.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 422Unprocessable entityvalidation_failed
    • validation_failedİstek geçerli bir JSON ama geçersiz bir iş tanımlıyor. Tüm sorunlar details[] içinde listelenir.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 429Too many requestsrate_limited
    • rate_limitedGeçerli dakika, saat ya da gün içinde çok fazla istek gönderildi (anahtar ya da organizasyon başına) veya IP adresinizden gelen başarısız kimlik doğrulama denemeleri dakikada 60 sınırını aştı.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 500Internal server errorinternal_error
    • internal_errorBizim tarafımızda bir hata oluştu.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 503Service unavailableapi_disabled
    • api_disabledAPI geçici olarak devre dışı (bakım) ya da organizasyon için kapatılmış.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları