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

Projeyi güncelle

Projeyi yeniden adlandırır, seçeneklerini değiştirir ya da araçlarını veya öğelerini (gruplarıyla birlikte) baştan değiştirir.

PATCHhttps://runner.cargoduo.com/v1/projects/{id}

Araçları ya da öğeleri değiştirmek kayıtlı planı siler; uygulamada açık oturumlar yeniden yüklenir. Ücretsiz: kredi harcanmaz.

Kimlik doğrulama

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

Yol parametreleri

AdTürZorunluAçıklama
idstringzorunlu
string
Evet

Proje ID'si (prj_…).

Gövde parametreleri

application/json
AdTürZorunluAçıklama
namestring
string
Hayır
≤ 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 PATCH "https://runner.cargoduo.com/v1/projects/prj_3051" \
  -H "Authorization: Bearer $CARGODUO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "vehicles": [
      {
        "vehicle_id": "veh_118",
        "quantity": 2
      }
    ]
  }'

Örnek yanıt

200 OK · Project
{
  "id": "prj_3051",
  "object": "project",
  "name": "Order 1042",
  "status": "draft",
  "item_count": 58,
  "vehicle_count": 2,
  "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:22:03Z",
  "options": {
    "packing_mode": "auto",
    "group_routing": "none",
    "allow_overweight": false
  },
  "vehicles": [
    {
      "id": "pv_5121",
      "vehicle_id": "veh_118",
      "name": "Mega trailer 13.6 m",
      "type": "trailer",
      "quantity": 2,
      "length": 1360,
      "width": 248,
      "height": 300,
      "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

  • 200OKDeğişiklikten sonraki 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ı
  • 404Not foundproject_not_found
    • project_not_foundOrganizasyonunuzda bu ID'ye sahip bir proje yok.
    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ı