Ana içeriğe atla
Siparişi Güncelle uç noktası, AgencyHandy’deki mevcut bir siparişi (projeyi) harici bir sistem veya otomasyon komut dosyasından değiştirmenizi sağlar — adını, durumunu, bütçesini, zaman çizelgesini, atanan yöneticileri ve daha fazlasını güncelleyebilirsiniz. Uç nokta ayrıca dosya eklerini de destekler; eklenen dosyalar siparişin sistem klasörüne eklenir.
Bu uç noktayı kullanmadan önce API anahtarınızı ve Şirket Kimliğinizi edinmek için Başlarken rehberini tamamlayın.
Bu uç nokta yalnızca x-api-key başlığı yerine Authorization: Bearer <token> (giriş yapmış bir üyenin erişim token’ı) kullanır. Çağrı yapanın hedef şirketin onaylı bir üyesi olarak kimliği doğrulanmış olduğundan emin olun. Yetkisiz çağrı yapanlar 403 PermissionError alır.

Ön koşullar

  • ✅ Onaylı bir çalışma alanı üyesi için geçerli Bearer token
  • GET {{URL}}/accounts/companies ile alınan Şirket Kimliği
  • ✅ Güncellemek istediğiniz siparişin Sipariş Kimliği (Proje Kimliği, pid)

Uç nokta

PUT {{URL}}/orders?pid=<ORDER_ID>
Content-Type: multipart/form-data — dosya eklenmese bile sunucunun çok parçalı ayrıştırıcısını karşılamak için bunu kullanın.

Başlıklar

BaşlıkZorunluAçıklama
AuthorizationEvetBearer <ACCESS_TOKEN> — giriş yapmış üyenin erişim token’ı.
companyidEvetSiparişin ait olduğu şirketin Mongo ObjectId’si.
clientidİsteğe bağlıGerçek zamanlı istemci soket kimliği. Sağlandığında bildirimler bunu içerir.

Sorgu parametreleri

pid
string
gerekli
Güncellenecek Sipariş / Proje Kimliği. Bunu sorgu dizesi parametresi olarak iletin.

İstek gövdesi alanları

name
string
Sipariş başlığını günceller. En az 2 karakter olmalıdır.
status
string
Sipariş için yeni durum. Şunlardan biri olmalıdır: Pending, Ongoing, Review, Completed, Cancelled.İzin verilen geçişler:
  • Review yalnızca Ongoing veya başka bir Review durumunun ardından gelebilir. Pending durumundan doğrudan Review durumuna geçiş yapmak 400 ValidationError döndürür.
  • Completed veya Cancelled durumundaki siparişler güncellenemez.
  • Müşteriler, Pending aşamasını geçmiş bir siparişi iptal edemez.
budget
number
Toplam bütçe rakamı. ≥ 0 olmalıdır. currency de sağlanmadığı sürece siparişin mevcut para birimini kullanır.
currency
string
Bütçe için para birimi kodu. Örnekler: USD, CAD, EUR.
quantity
number
Paket için satın alınan birim sayısı. ≥ 1 olmalıdır.
deadline
string
Siparişin son tarihi için ISO 8601 tarih dizesi. Örnek: "2025-12-31T00:00:00.000Z".
kickoffDate
string
Projenin başlangıç tarihi için ISO 8601 tarih dizesi.
notes
string
Ekibinize görünen dahili notlar.
brief
string
Müşteri brifing’i veya proje özeti.
assignedProjectManagers
array
Bu siparişe atanacak proje yöneticisi üye kimliklerinin tam listesi. Yeni kimlikler ekibe eklenir; kaldırılan kimlikler silinir. Her kimlik, aynı şirket içinde projectManager rolüne sahip bir üyeye ait olmalıdır.
markTasksAsDone
boolean
status Completed veya Cancelled olduğunda zorunludur. true olduğunda, durum değişikliğinin ardından siparişteki tüm görevler tamamlandı olarak işaretlenir. false olduğunda görevler mevcut durumlarında kalır.
rejectRequestedTasks
boolean
Yalnızca status Completed veya Cancelled olduğunda kullanılabilir. true olduğunda, durum güncellemesinin ardından bekleyen tüm müşteri talep edilen görevler reddedilir.
repeatCount
number
Yalnızca tekrarlama sıklığı değiştirilirken abonelik siparişleri için zorunludur. repeatDuration ile birlikte kullanın.
repeatDuration
string
Abonelik siparişleri için repeatCount ile birlikte zorunludur. Şunlardan biri: day, week, month, year.
billingCycleCount
number
Tekrarlayan faturalama döngüsü sayısı için isteğe bağlı sınır. Varsayılan olarak 0 (sınır yok) kullanılır.
billingCycleEvent
string
Her faturalama döngüsünün nasıl işleneceği. Şunlardan biri: createOrderWithTask, noChange.
files
file
Sıfır veya daha fazla dosya eki. Dosyalar siparişin sistem klasörüne eklenir; mevcut dosyaların üzerine hiçbir zaman yazılmaz. multipart/form-data kodlamasını kullanın ve her dosyayı files alanı altında ekleyin.

Örnek istek

curl --request PUT "https://api.agencyhandy.com/orders?pid=ORDER_ID_HERE" \
  --header "Authorization: Bearer <ACCESS_TOKEN>" \
  --header "companyid: <COMPANY_ID>" \
  --form "name=Website Redesign" \
  --form "status=Review" \
  --form "budget=12000" \
  --form "currency=USD" \
  --form "quantity=1" \
  --form "assignedProjectManagers[]=PROJECT_MANAGER_ID" \
  --form "notes=Scope finalized with client." \
  --form "brief=Launch-ready design refresh."
Eşdeğer JSON içeriği (dosya gönderirken çok parçalı form girişlerine dönüştürün):
{
  "name": "Website Redesign",
  "status": "Review",
  "budget": 12000,
  "currency": "USD",
  "quantity": 1,
  "assignedProjectManagers": ["{{PROJECT_MANAGER_ID}}"],
  "repeatCount": 3,
  "repeatDuration": "month",
  "billingCycleEvent": "createOrderWithTask",
  "notes": "Scope finalized with client.",
  "brief": "Launch-ready design refresh."
}

Yanıtlar

HTTP DurumuAçıklama
200 OKGüncelleme başarılı.
400 ValidationErrorGeçersiz sipariş kimliği, engellenmiş durum geçişi veya hatalı biçimlendirilmiş içerik. Yanıt, ilgili olduğunda fieldName içerir.
403 PermissionErrorÇağrı yapan onaylı bir üye değil, şirket rolü eksik, çalışma alanı aboneliği süresi dolmuş veya bir müşteri yasak iptal işlemi denedi.
500 Internal Server Errorİşlenmeyen istisna — sunucu günlüklerini kontrol edin.

Başarı yanıtı

{
  "message": "Project has been updated"
}

İş kuralları ve yan etkiler

  • Durum geçişleri kısıtlıdır. Review yalnızca Ongoing veya başka bir Review durumunun ardından gelebilir. Pending → Review geçişi denenirse 400 ValidationError döndürür.
  • Durumu Pending’den Ongoing, Review veya Completed’a taşımak, yüklenen dosyaların proje ekibine erişilebilir hale gelmesi için siparişin dosya klasörünü etkinleştirir.
  • status değerini Completed veya Cancelled olarak ayarlamak, markTasksAsDone değerinin açıkça true veya false olarak ayarlanmasını gerektirir.
  • Review, Completed veya Cancelled durumuna geçişler otomatik olarak müşteri bildirimlerini tetikler:
    • Review — müşteriye inceleme gerektiği bildirilir.
    • Completed — müşteriye orderCompletion bildirimi gönderilir.
    • Cancelled — müşteriye orderCancellation bildirimi gönderilir.
  • Her başarılı güncelleme, bu olaya abone aktif bir webhook’unuz varsa güncellenmiş sipariş belgesi ve ek meta verileriyle birlikte ORDER.UPDATED webhook olayını tetikler.