Gönderi oluşturma ve teklifleri alma #
Tek bir çağrıyla hem sistemde gönderi oluşturacak hem de o gönderiye teklifleri alabilirsiniz. Bunun için /shipments endpoint’ine POST isteği göndermelisiniz.
İstek #
curl --request POST \
--url https://api.geliver.io/api/v1/shipments \
--header 'Authorization: Bearer {{bearerToken}}' \
--header 'Content-Type: application/json' \
--data '{
"test": true,
"senderAddressID": "b6029b1b-cc61-4263-95c3-2bd17614c9d6",
"returnAddressID": "b6029b1b-cc61-4263-95c3-2bd17614c9d6",
"length": "10",
"height": "10",
"width": "10",
"distanceUnit": "cm",
"weight": "1",
"massUnit": "kg",
"items":[{"title":"test product", "quantity":1}],
"recipientAddress":{
"name": "Test Company Name",
"email": "Test Email",
"phone": "+905051234567",
"address1": "Celal Bayar Üniversitesi Teknokenti Daire 102",
"countryCode": "TR",
"cityCode": "45",
"districtName": "Yunusemre",
},
"productPaymentOnDelivery":false,
"order": {
"sourceCode": "API",
"sourceIdentifier": "https://magazaadresiniz.com",
"orderNumber": "ABC12333322",
"totalAmount": 150,
"totalAmountCurrency": "TL"
}
}'
Parametreler | Tip | Zorunluluk | Açıklama |
---|---|---|---|
test | boolean | Opsiyonel | Geliştirme sırasında test gönderisi oluştururken true değerini verirseniz ücretsiz olan test tekliflerini getirir. Test edebilmeniz için bu test gönderilerinde gönderi bilgilerini her çektiğinizde (app’ten veya api’den) gönderi dağıtım durumu alıcıya ulaşana kadar her seferde güncellenir. Canlıya çıktığınızda false’a çekmeyi unutmayın. |
senderAddressID | String (UUID) | Zorunlu | Gönderici adres ID’si. Arayüzdeki adresler bölümünden veya /addresses endpointinden adreslerinizi düzenleyebilirsiniz. |
returnAddressID | String (UUID) | Opsiyonel | Gönderici adres ID’si. Arayüzdeki adresler bölümünden veya /addresses endpointinden adreslerinizi düzenleyebilirsiniz. Boş ise senderAddressID kullanılır. |
parcelTemplateID | String (UUID) | Opsiyonel | Kargo boyutları için hazır şablon kullanabilirsiniz. Bu alanı kullanırsanız aşağıdaki length, height, width, distanceUnit boyutları ignore edilir. Weight ve massUnit yine geçerli olur. |
length | String | Zorunlu | Kargo gönderisi uzunluğu. Varsayılan olarak cm cinsinden. Uzunluk ölçüsünü distanceUnit alanıyla değiştirebilirsiniz. Detaylar için lütfen API Referans Dökümanını inceleyin |
height | String | Zorunlu | Kargo gönderisi yüksekliği. Varsayılan olarak cm cinsinden. Uzunluk ölçüsünü distanceUnit alanıyla değiştirebilirsiniz. Detaylar için lütfen API Referans Dökümanını inceleyin |
width | String | Zorunlu | Kargo gönderisi genişliği. Varsayılan olarak cm cinsinden. Uzunluk ölçüsünü distanceUnit alanıyla değiştirebilirsiniz. Detaylar için lütfen API Referans Dökümanını inceleyin |
distanceUnit | String (cm) | Opsiyonel | Kargo gönderisi uzunluk cinsi. Varsayılan olarak “cm” değerindedir. Detaylar için lütfen API Referans Dökümanını inceleyin |
weight | String | Zorunlu | Kargo gönderisi ağırlığı. Varsayılan olarak kg cinsinden. Uzunluk ölçüsünü massUnit alanıyla değiştirebilirsiniz. Detaylar için lütfen API referans dökümanını inceleyin |
massUnit | String (kg) | Opsiyonel | Kargo gönderisi ağırlık cinsi. Varsayılan olarak “kg” değerindedir. Detaylar için lütfen API Referans Dökümanını inceleyin |
items | Array (Item) | Opsiyonel | Ürün listesi. Detaylar için lütfen API Referans Dökümanını inceleyin |
recipientAddress.countryCode | String | Zorunlu | Ülke kodu ISO2 formatındadır. /countries endpointinden tüm ülkelerin kodlarını inceleyebilirsiniz. Detaylar için lütfen API Referans Dökümanını inceleyin |
recipientAddress.cityName | String | Opsiyonel | Şehir adı. Şehir kodu kullanılmadıysa zorunlu. |
recipientAddress.cityCode | String | Opsiyonel | Şehir kodu, Türkiye için plaka numarasıdır (Tek hanelilerde başında 0 olmalı). Şehir adı kullanılmadıysa zorunlu. Tüm listeyi /cities?countryCode=TR isteğiyle alabilirsiniz. Detaylar için lütfen API Referans Dökümanını inceleyin. |
recipientAddress.districtName | String | Opsiyonel | İlçe adı. Eğer districtID kullanılmadıysa zorunlu. Örn: Esenyurt |
recipientAddress.districtID | String | Opsiyonel | Geliver sisteminde tanımlanmış olan ilçe ID değeridir. İlçe adı kullanılmadıysa zorunlu. Örneğin İstanbul için /districts?countryCode=TR&cityCode=34 ile ilçeleri çekebilirsiniz. Detaylar için lütfen API Referans Dökümanını inceleyin. |
recipientAddress.streetName | String | Opsiyonel | Cadde adı |
shipment.productPaymentOnDelivery | boolean | Opsiyonel | Kapıda ödemeli kargo tekliflerini alabilmeyi sağlar. Kapıda ödemeli kargo teklifleri almak istemiyorsanız bu fieldı false bırakabilir veya isteğinizden kaldırabilirsiniz. |
shipment.order | Object | Opsiyonel | Aşağıdaki açıklamayı okuyun. |
shipment.metadata | Object | Opsiyonel | Aşağıdaki açıklamayı okuyun. |
Order #
Order alanı ve alt alanları opsiyoneldir. Shipment alanı altında (shipment.order) bulunur.
Alan adı | Açıklama |
---|---|
sourceCode | API üzerinden yapılan istekler için sabit “API” olarak gönderilir. |
sourceIdentifier | Gönderinin hangi web site veya uygulama tarafından oluşturulduğunu belirten alandır. Bu alanı daha sonra takip bilgisini alırken gönderi kaynağını eşlemek için kullanabilirsiniz. |
orderNumber | Takip bilgisi alınırken gönderinin oluşturulduğu kaynaktaki ilgili kayıt (sipariş) ile eşlemek için kullanılan string alandır. |
totalAmount | Gönderideki ürünün toplam fiyatını ifade eden integer alandır. Kapıda ödemede alıcıdan alınacak tutar buradan belirtilir. Kapıda ödemeli gönderiler dışında opsiyoneldir. |
totalAmountCurrency | Gönderideki ürünün fiyatının para birimini ifade eden string alandır. Kapıda ödemeli gönderiler dışında opsiyoneldir. |
{
"order": {
"sourceCode": "API",
"sourceIdentifier": "https://magazaadresiniz.com",
"orderNumber": "ABC12333322"
}
}
Metadata #
Gönderi için ekstra ayarlar yapabilirsiniz. Metadatadaki alanlar opsiyoneldir.
Alan adı | Açıklama |
---|---|
providerCustomerCodes | Alıcı eğer kargo firması veritabanında ekliyse onun kodlarını buradan verebilirsiniz. Adreslerin metadatasında da bir kereliğine ayarlayıp kullanmanızı tavsiye ederiz. Sadece kendi anlaşmalarınız için kullanılır. |
reference1 | Barkod üzerinde çıkmasını istediğiniz sipariş kodu. Sadece kendi anlaşmalarınız için kullanılır. |
{
"metadata": {
"providerCustomerCodes":{
"YURTICI": "Y12313435309",
"SURAT": "S4910103"
},
"reference1":"SIPARIS_KODU",
}
}
Cevap #
Gönderi oluşturma isteğine cevap aşağıdaki gibidir. Cevaptaki offers alanından teklifleri alabilirsiniz.
{
"result": true,
"additionalMessage": "Success",
"data": {
"test": true,
"id": "c0bf54bb-7592-4dee-9600-ad8054257b02",
"createdAt": "2022-06-24T12:20:34.359396+03:00",
"updatedAt": "2022-06-24T12:20:34.359396+03:00",
"amount": "0",
"currency": "TL",
"amountLocal": "0",
"currencyLocal": "TL",
"amountVat": "0",
"amountLocalVat": "0",
"amountTax": "0",
"amountLocalTax": "0",
"totalAmount": "0",
"totalAmountLocal": "0",
"length": 10,
"width": 10,
"height": 10,
"desi": 1,
"distanceUnit": "cm",
"weight": 1,
"massUnit": "kg",
"useWeightOfItems": false,
"useDimensionsOfItems": false,
"trackingStatus": null,
"labelFileType": "",
"hidePackageContentOnTag": false,
"shipmentDate": null,
"invoiceGenerated": false,
"orderID": "0dee7f6b-945b-4867-a2b8-1e3f642b45f4",
"order": {
"id": "0dee7f6b-945b-4867-a2b8-1e3f642b45f4",
"createdAt": "2022-06-24T12:20:34.354659+03:00",
"updatedAt": "2022-06-24T12:20:34.354659+03:00",
"itemIDs": null,
"buyerShippingCost": "15",
"buyerShippingCostCurrency": "TL",
"buyerShipmentMethod": "",
"totalAmount": "100.5",
"totalTax": "0",
"sourceCode": "GLV",
"orderNumber": "",
"notes": "",
"organizationID": null
},
"senderAddressID": "5d3ce1a0-0a30-4f79-b414-ebbadf1c4e73",
"senderAddress": null,
"recipientAddressID": "c1171eab-bc4e-4f3e-917e-cb7c36c6157d",
"recipientAddress": {
"id": "c1171eab-bc4e-4f3e-917e-cb7c36c6157d",
"createdAt": "2022-06-24T12:20:34.352477+03:00",
"updatedAt": "2022-06-24T12:20:34.352477+03:00",
"shortName": "",
"name": "Test Company",
"email": "Test Email JSON",
"phone": "Test Phone Json",
"address1": "Address Test Json 1",
"address2": "Address Test Json 1-2",
"cityCode": "45",
"city": null,
"state": "",
"zip": "",
"districtName": "Yunusemre",
"district": null,
"streetID": null,
"streetName": "4793",
"countryCode": "TR",
"source": null,
"isDefaultSenderAddress": false,
"isDefaultReturnAddress": false,
"isActive": true
},
"returnAddressID": "5d3ce1a0-0a30-4f79-b414-ebbadf1c4e73",
"createReturnLabel": false,
"statusCode": "GOT_OFFERS",
"offers": {
"createdAt": "2022-06-24T12:20:34.366922+03:00",
"updatedAt": "2022-06-24T12:20:34.366922+03:00",
"cheapest": {
"id": "afa76ed6-5808-4b5e-b7ea-da20d40bb796",
"createdAt": "2022-06-24T12:20:34.374952+03:00",
"updatedAt": "2022-06-24T12:20:34.374952+03:00",
"amount": "0",
"currency": "TL",
"amountLocal": "0",
"currencyLocal": "TL",
"amountVat": "0",
"amountLocalVat": "0",
"amountTax": "0",
"amountLocalTax": "0",
"totalAmount": "0",
"totalAmountLocal": "0",
"providerCode": "GELIVER",
"providerServiceCode": "GELIVER_STANDART",
"averageEstimatedTime": 140219000000000,
"averageEstimatedTimeHumanReadible": "02 gün 14 saat",
"durationTerms": "",
"rating": 0,
"isAccepted": false,
"isGlobal": true,
"isC2C": true
},
"fastest": {
"id": "afa76ed6-5808-4b5e-b7ea-da20d40bb796",
"createdAt": "2022-06-24T12:20:34.374952+03:00",
"updatedAt": "2022-06-24T12:20:34.374952+03:00",
"amount": "0",
"currency": "TL",
"amountLocal": "0",
"currencyLocal": "TL",
"amountVat": "0",
"amountLocalVat": "0",
"amountTax": "0",
"amountLocalTax": "0",
"totalAmount": "0",
"totalAmountLocal": "0",
"providerCode": "GELIVER",
"providerServiceCode": "GELIVER_STANDART",
"averageEstimatedTime": 140219000000000,
"averageEstimatedTimeHumanReadible": "02 gün 14 saat",
"durationTerms": "",
"rating": 0,
"isAccepted": false,
"isGlobal": true,
"isC2C": true
},
"list": [
{
"id": "afa76ed6-5808-4b5e-b7ea-da20d40bb796",
"createdAt": "2022-06-24T12:20:34.374952+03:00",
"updatedAt": "2022-06-24T12:20:34.374952+03:00",
"amount": "0",
"currency": "TL",
"amountLocal": "0",
"currencyLocal": "TL",
"amountVat": "0",
"amountLocalVat": "0",
"amountTax": "0",
"amountLocalTax": "0",
"totalAmount": "0",
"totalAmountLocal": "0",
"providerCode": "GELIVER",
"providerServiceCode": "GELIVER_STANDART",
"averageEstimatedTime": 140219000000000,
"averageEstimatedTimeHumanReadible": "02 gün 14 saat",
"durationTerms": "",
"rating": 0,
"isAccepted": false,
"isGlobal": true,
"isC2C": true
}
],
"percentageCompleted": 100,
"totalOffersRequested": 5,
"totalOffersCompleted": 5,
"allowOfferFallback": false
},
"acceptedOffer": null,
"enableAutomation": false,
"items": [
{
"id": "670b44e2-3826-4068-943a-f3e88930ef3f",
"createdAt": "2022-06-24T12:20:34.355929+03:00",
"updatedAt": "2022-06-24T12:20:34.355929+03:00",
"title": "Test product",
"variantTitle": "",
"quantity": 1,
"unitWeight": 0,
"totalPrice": "0",
"totalPriceLocal": "0",
"massUnit": "",
"unitPrice": "0",
"currency": null,
"unitPriceLocal": "0",
"currencyLocal": "",
"countryOfOrigin": "",
"maxShipTime": null,
"maxDeliveryTime": null,
"sku": ""
}
],
"organizationShipmentID": 44,
"providerBranchName": null,
"providerInvoiceNo": null,
"providerReceiptNo": null,
"providerSerialNo": null
}
}
Parametreler | Açıklama |
---|---|
result | İsteğin başarılı olup olmadığını belirtir. true ise başarılıdır. |
data | Oluşturulan gönderinin kaydı. |
code | Eğer istek başarısız ise burada hata kodu bulunur |
message | Eğer istek başarısız ise burada hata mesajı bulunur |
additionalMessage | Sadece test ortamı için geçerli olan detaylı hata mesajı |
data.id | Yeni oluşturulan gönderinin id’si. |
data.statusCode | Gönderi durumu. Bu aşamada “GOT_OFFERS” yani teklifler alındı olacak. Sonraki aşama olan Ödeme yapma aşamasında bu değişecektir. |
data.offers | Gönderiye yapılan teklifler. Anlık olarak oluşturulmaktadır. Tamamlanan teklif yüzdesini percentageCompleted alanından takip edebilirsiniz. |
data.offers.percentageCompleted | Tekliflerin tamamlanan yüzdesi. 100 ise tüm teklifler alınmıştır. Eğer 100 değilse /shipments/{id} ile tekrar çağrı yapabilirsiniz. Detaylar için lütfen API Referans Dökümanını inceleyin. |
data.offers.totalOffersCompleted | Alınan toplam teklif sayısı. |
data.offers.list | Alınan tüm teklifleri bu alanda fiyatlarıyla görebilirsiniz. |
data.offers.list.id | Tekliflerin her birinin id’sidir. İstediğiniz ödemeyi kabul etmek için ödeme adımında id alanına ihtiyacınız olacak. |
data.offers.list.amount | Tekliflerin her birinin fiyatı. |
data.offers.list.amountTax | Tekliflerin her birinin sadece vergilerinin ücretleri toplamı. |
data.offers.list.amountVat | Tekliflerin her birinin sadece KDV’sinin ücreti. |
data.offers.list.amount | Tekliflerin her birinin vergiler hariç ücreti. |
data.offers.list.totalAmount | Tekliflerin her birinin vergiler dahil toplam ücreti |
data.offers.list.currency | Tekliflerin her birinin para birimi kısaltması. |
data.offers.cheapest | Alınan en ucuz teklif. Bu teklifi kabul etmek için, teklifin id alanına ihtiyacınız olacak. Amount ve currency bilgisi tüm tekliflerdeki gibi bulunmakta. |
data.offers.fastest | Alınan en hızlı teslimat yapabilecek teklif. Bu teklifi kabul etmek için, teklifin id alanına ihtiyacınız olacak. Amount ve currency bilgisi tüm tekliflerdeki gibi bulunmakta |
Hata kodları | Açıklama |
---|---|
E1054 | Gönderi parse edilemedi. İsteğin yanlış olduğunu belirtir. |
E1055 | Bu işlemi yapmaya yetkiniz yok. |
E1053 | Organizasyon bulunamadı |
E1068 | Gönderici adresi (senderAddressID) bulunamadı. Lütfen addresses endpointi ile adresin varolduğunu kontrol edin |
E1056 | Alıcı adresi oluşturulamadı |
E1057 | Sipariş oluşturulamadı |
E1058 | Gönderi kaydedilemedi |
E1129 | Alıcı adresi boş |
E1130 | Alıcı şehri boş |
E1131 | Alıcı ülkesi boş |
E1132 | Alıcı ilçesi boş |
E1133 | Alıcı ismi boş |
E1134 | Alıcı telefon numarası boş |
E1136 | Alıcı e-posta adresi boş |