Wszelkie zgłoszenia dotyczące funkcjonowania API Panelu Administracyjnego IdoSell, w szczególności zgłoszenia dotyczące błędów zwracanych przez bramki, należy zgłaszać za pomocą komunikatów w BOK.
Analizując tego typu zgłoszenia, jako absolutne minimum potrzebujemy następujących informacji:
Jest to podstawowy kontekst, którego potrzebujemy aby odpowiedzieć na jakiekolwiek pytanie dotyczące funkcjonowania bramki API, lub generowanego błędu.
W sieci dostępnych jest wiele narzędzi (również darmowych) pozwalających na wykonanie nasłuchu zapytań do API, m. in.:
Niezależnie od wybranej aplikacji, należy się jedynie upewnić że dostępne są wymagane informacje. Przykład danych o zapytaniu i odpowiedzi uzyskanych za pomocą Wireshark:
Tak, lub podobnie sformatowane pliki najlepiej przesłać jako załączniki do komunikatu zgłoszeniowego.
Brak udostępnienia tych niezbędnych informacji podczas przesyłania zgłoszenia może znacznie przedłużyć, lub wręcz uniemożliwić nam jego analizę!
Maksymalny rozmiar żądania do API nie może przekroczyć 10 MB.
Składowe parametru system_key:
sha1(date('Ymd') . sha1('hasło użytkownika panelu'))
date('Ymd') jest datą wygenerowaną według następującego formatu: RRRRMMDD
Przykład użycia w języku C#:
using System; using System.Collections.Generic; using System.Text; namespace WebApiTest { class Session { ////// Generates SHA1 session key string /// /// SHA1 hashed password ///SHA1 hash string public static string GenerateKey(string hashedPassword) { System.Security.Cryptography.HashAlgorithm hash = System.Security.Cryptography.SHA1.Create(); string date = System.String.Format("{0:yyyyMMdd}", System.DateTime.Now); string strToHash = date + hashedPassword; byte[] keyBytes, hashBytes; keyBytes = System.Text.Encoding.UTF8.GetBytes(strToHash); hashBytes = hash.ComputeHash(keyBytes); string hashedString = string.Empty; foreach (byte b in hashBytes) { hashedString += String.Format("{0:x2}", b); } return hashedString; } ////// Hashes specified password with SHA1 algorithm /// /// User password ///SHA1 hash string public static string HashPassword(string password) { System.Security.Cryptography.HashAlgorithm hash = System.Security.Cryptography.SHA1.Create(); byte[] keyBytes, hashBytes; keyBytes = System.Text.Encoding.UTF8.GetBytes(password); hashBytes = hash.ComputeHash(keyBytes); string hashedString = string.Empty; foreach (byte b in hashBytes) { hashedString += String.Format("{0:x2}", b); } return hashedString; } } class Test { public static ApiGetCategories.responseType GetCategories(string url, string login, string pass) { var authenticate = new WebApiTest.ApiGetCategories.authenticateType(); var request = new WebApiTest.ApiGetCategories.requestType(); var service = new WebApiTest.ApiGetCategories.getCategoriesService(); service.Url = url; authenticate.system_login = login; authenticate.system_key = WebApiTest.Session.GenerateKey(Session.HashPassword(pass)); request.authenticate = authenticate; return service.getCategories(request); } } }
Zapytania do API tworzone przez użytkownika trafiają w AWStats na listę botów i tam można je odczytać.