İki Aşamalı Erişim
allesgo.com API servislerine erişmek iki aşamalı doğrulamayla gerçekleştirilir
- Access Token üretmek
- Access Token'ı isteğe dahil etmek
1. Access Token Üretmek
API servislerine atılacak her bir istekle birlikte, tek seferlik üretilen, 6 saat için geçerli olacak ve kullanılan IP adresine özel bir Access Token Query Strings
alanına dahil edilmelidir
Bu Access Token'ı elde etmek için iki şeye ihtiyacınız olacak; allesgo.com tarafından size özel, tek seferlik üretilen client_key ve client_secret ikilisi. Bu sayfanın sonundaki API Referansı bölümünde örneğini görebilirsiniz. Bu ikiliyi kullanarak 6 saat geçerli olacak bir Access Token elde edeceksiniz.
Bu servisten elde ettiğiniz Access Tokenı isteklerinize dahil ederek güvenli bir şekilde allesgo.com'daki servislere erişebilirsiniz.
2. Access Token'ı İsteğe Dahil Etmek
Eğer farklı IP adreslerinden allesgo.com API servislerine istek atacaksanız; bir önceki adımda elde etmiş olduğunuz Access Token'ı 6 saat için saklamalısınız. Farklı lokasyonlardan eş zamanlı erişim sağlarken her bir IP adresi için ayrı ayrı Access Token’ler üretmeniz gerekir.
Örnek olarak allesgo.com üzerindeki İl ve İlçe bilgilerini elde etmek istiyorsanız. Aşağıda belirtildiği gibi elde ettiğiniz Access Token'ı Query String
olarak dahil etmeniz gerekir.
curl -X GET \ 'https://api.allesgo.com/v1.0/city?access_token={ACCESS_TOKEN}' \ -H 'Accept: application/json' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Host: api.allesgo.com' \ -H 'cache-control: no-cache'
allesgo.com API servislerine bir saat içinde atabileceğiniz istek sayısında kısıtlama bulunduğunu unutmamalısınız. Dolayısıyla yapılan her istekten önce yeni bir Access Token üretmek yerine, ürettiğiniz Access Token'ı 6 saat boyunca saklamanızı öneriyoruz.
Güvenlik ve İzinler
Allesgo API izinleri, genel servisler ve mağaza servisleri olmak üzere iki türden oluşmaktadır.
Genel servislere örnek olarak: allesgo.com'da bulunan mağazadan bağımsız olarak ürün arama, kategori listesi veya il ve ilçeler listesi verilebilir. Bu izinler size allesgo.com tarafından verilir.
Mağazaya özel servislerin izin yönetimi ise mağazalar tarafından yapılır. Mağaza allesgo.com'a giriş yaptıktan sonra mağaza yönetim sayfası (Konsol) üzerinden sizi bulur ve uygulamanıza istediği izinleri tanımlar.
Bu aşamadan sonra mağaza ID'sini kullanarak API servislerine istek attığınız zaman mağaza sahibinin verdiği izinler dahilinde mağazaya ait tüm verilere erişebilirsiniz.
Aşağıdaki örnekte ID'si belirtilmiş olan mağazaya son 3 günde ulaşmış ve henüz onaylanmamış siparişlerin listesini görebilirsiniz. Mağaza ID'sini URL Parametresi
olarak gönderdiğimizi unutmamanız önemlidir.
curl -X GET \ 'https://api.allesgo.com/v1.0/category/order/store/{STORE_ID}?days={DAYS}&status=0&access_token={ACCESS_TOKEN}' \ -H 'Accept: application/json' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Host: api.allesgo.com' \ -H 'cache-control: no-cache'
API Referansı
Bu aşamadan sonra mağaza ID'sini kullanarak API servislerine istek attığınız zaman mağaza sahibinin verdiği izinler dahilinde mağazaya ait tüm verilere erişebilirsiniz.
Örnekler
Curl ile istek atmak için bu örnek kullanılabilir.
curl -X POST \ https://api.allesgo.com/app/auth/access \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Content-Type: application/json' \ -H 'Host: api.allesgo.com' \ -H 'cache-control: no-cache' \ -d '{ "client_key": "{CLIENT_KEY}", "client_secret": "{CLIENT_SECRET}" }'
PHP ile istek atmak için bu örnek kullanılabilir. Örnekte Curl kullanılmaktadır.
<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.allesgo.com/app/auth/access", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => array( "client_key" => "{CLIENT_KEY}", "client_secret" => "{CLIENT_SECRET}" ), CURLOPT_HTTPHEADER => array( "Accept: */*", "Cache-Control: no-cache", "Connection: keep-alive", "Content-Type: application/json", "Host: api.allesgo.com", "cache-control: no-cache", ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }
Python ile istek atmak için bu örnek kullanılabilir. Bu örnekte Python'un requests kütüphanesi kullanılır ama http.client gibi kütüphane kullanılabilir
import requests url = "https://api.allesgo.com/app/auth/access" payload = { 'client_key': '{{CLIENT_KEY}}', 'client_secret': '{{CLIENT_SECRET}}' } headers = { 'Accept': "application/json", 'Cache-Control': "no-cache", 'Host': "api.allesgo.com", 'Connection': "keep-alive", 'cache-control': "no-cache" } response = requests.request("POST", url, data=payload, headers=headers) print(response.text)
Node.js ile istek atmak için bu örnek kullanılabilir. Örnekte request kullanılmaktadır.
var request = require('request'); var options = { method: 'POST', url: 'https://api.allesgo.com/app/auth/access', headers: { 'cache-control': 'no-cache', Connection: 'keep-alive', Host: 'api.allesgo.com', 'Cache-Control': 'no-cache', Accept: '*/*', 'Content-Type': 'application/json', }, body: { client_key: '{CLIENT_KEY}', client_secret: '{CLIENT_SECRET}', }, json: true, }; request(options, (error, response, body) => { if (error) throw new Error(error); console.log(body); });
Javascipt ile istek atmak için bu örnek kullanılabilir. Örnekte xhr kullanılmakdır. Not: Bilgi amaçlıdır. Javascipt ile yazılan bu kod'ta Kullanıcı access token'a erişebildiğinden, kullanmanızı önermiyoruz.
var data = JSON.stringify({ client_key: '{CLIENT_KEY}', client_secret: '{CLIENT_SECRET}', }); var xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener('readystatechange', function () { if (this.readyState === 4) { console.log(this.responseText); } }); xhr.open('POST', 'https://api.allesgo.com/app/auth/access'); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.setRequestHeader('Accept', '*/*'); xhr.setRequestHeader('Cache-Control', 'no-cache'); xhr.setRequestHeader('Host', 'api.allesgo.com'); xhr.setRequestHeader('Connection', 'keep-alive'); xhr.setRequestHeader('cache-control', 'no-cache'); xhr.send(data);
C Sharp ile istek atmak için bu örnek kullanılabilir. Bu örnekte RestSharp kullanılmaktadır.
var client = new RestClient("https://api.allesgo.com/app/auth/access"); var request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("Connection", "keep-alive"); request.AddHeader("Host", "api.allesgo.com"); request.AddHeader("Cache-Control", "no-cache"); request.AddHeader("Accept", "*/*"); request.AddHeader("Content-Type", "application/json"); var body = new { client_key = "{CLIENT_KEY}", client_secret = "{CLIENT_SECRET}", }; request.AddJsonBody(body); IRestResponse response = client.Execute(request);
Java ile istek atmak için bu örnek kullanılabilir. Örnekte Ok Http kullanılmaktadır.
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"client_key\": \"{CLIENT_KEY}\",\"client_secret\": \"{CLIENT_SECRET}\"}"); Request request = new Request.Builder() .url("https://api.allesgo.com/app/auth/access") .post(body) .addHeader("Content-Type", "application/json") .addHeader("Accept", "*/*") .addHeader("Cache-Control", "no-cache") .addHeader("Host", "api.allesgo.com") .addHeader("Connection", "keep-alive") .addHeader("cache-control", "no-cache") .build(); Response response = client.newCall(request).execute();
API Referansı
POST Request Payload
Parametre | Türkçe | Tür | Zorunlu | Geçerli Değerler | Varsayılan | Açıklama |
---|---|---|---|---|---|---|
client_key | Müşteri Anahtarı | String | true | Müşteri Anahtarı | ||
client_secret | Müşteri Şifresi | String | true | Müşteri Şifresi |
Sunucudan dönecek cevabın örneği.
{
"data": {
"status": "String",
"access_token": "String",
"expires_at": "Date",
"message": "String",
"message_tr": "String"
}
}