Logo Objects in REST servisi, standart REST servislerdeki gibi 4 http işlemi destekliyor.
GET (verileri okumak için)
POST (veri göndermek, set etmek için)
DELETE (veri silmek için )
ve
PUT
PATCH (veri güncellemek için)
PUT işlemini gerçekleştirmek için URL aşağıdaki şekilde düzenlenmelidir;
PUT http://{serviste tanımladığınız IP}:{tanımladığınız port}/api/v1/{data nesnesi}/{referans}
PUT işlemi ile satırların güncellenmesi, istenilen bir satırın silinmesi mümkündür. PATCH ile ise sadece ekleme, var olan veriyi değiştirme işlemi yapabilmekteyiz. Göndereceğiniz JSON içerisinde de set edilmesini istediğiniz tüm alanlar olmalı. Set etmediklerinizi boş set etmek istediğinizi düşünecektir. Bu yüzden önce okumanızı (GET) sonrasında ise gelen JSON üzerinde değişiklik yapıp akabinde PUT yapmanızı öneririm. Bu yöntemle, örneğin bir fatura içeriğini güncellemek isterseniz aşağıdaki kodu inceleyebilirsiniz.
private void GETandPUT()
{
string accessToken = txtAccessToken.Text;
// Aşağıdaki örnek 97562 referanslı "Satış Faturası" için hazırlanmıştır.
// GET ve PUT için kullanılan metodların içeriklerine aşağıdaki linkten ulaşabilirsiniz.
// https://docs.logo.com.tr/pages/viewpage.action?pageId=4915206
string getUrl = "http://172.16.57.114:32001/api/v1/salesInvoices/97562?expandLevel=full";
string putUrl = "http://172.16.57.114:32001/api/v1/salesInvoices/97562";
// Fatura GET ediliyor (okunuyor)
string result = Global.HttpGet(getUrl, accessToken);
JObject resJSON = (JObject)JsonConvert.DeserializeObject(result.ToString());
if (resJSON != null)
{
// Faturanın "Özel kodu" değiştiriliyor
resJSON["AUXIL_CODE"] = "TEST2";
// Problem yaratan bazı JSON tagleri siliniyor
resJSON.Property("GENIUSFLDSLIST").Remove();
resJSON.Property("DEFNFLDSLIST").Remove();
// Değiştirilen fatura PUT ediliyor (değiştiriliyor)
result = Global.HttpPut(putUrl, resJSON.ToString(), accessToken);
try
{
// Değiştirilen faturanın son JSON bilgisi okunuyor
resJSON = (JObject)JsonConvert.DeserializeObject(result.ToString());
if (resJSON != null)
{
// Sonuç text bir alana yazdırılıyor
txtJSON.Text = resJSON.ToString();
}
}
catch (Exception)
{
txtJSON.Text = result.ToString();
}
}
}
PATCH ile ise sadece set etmek istediğiniz alanları, örneğin sadece internal_reference ve özel kod alanını gönderip, sadece özel kod alanının set edilmesi sağlanabiliyor. Yukarıdaki örnekteki PUT işlemi aşağıdaki JSON ile PATCH de edilebilirdi
Ancak PATCH işlemi ne yazık ki sadece header için çalışır, transactions gibi alt satırlarda çalışmaz.
{
"INTERNAL_REFERENCE": 97562,
"AUXIL_CODE": "TEST"
}
private void PATCHSample()
{
string accessToken = txtAccessToken.Text;
string patchUrl = "http://172.16.57.114:32001/api/v1/salesInvoices/97562";
string JSText = "{\"INTERNAL_REFERENCE\": 97562, \"AUXIL_CODE\": \"TEST\" }";
string result = Global.HttpPatch(patchUrl, JSText, accessToken);
try
{
dynamic resJSON = JsonConvert.DeserializeObject(result.ToString());
if (resJSON != null)
{
txtJSON.Text = resJSON.ToString();
}
}
catch (Exception)
{
txtJSON.Text = result.ToString();
}
}