Kimlik Doğrulama
Tüm API istekleri HTTP Basic Auth ile imzalanır.
Başlık Biçimi
Authorization: Basic BASE64(apiKey:apiSecret)
Çoğu HTTP istemcisinde -u veya auth parametresini kullanırsanız base64 dönüşümü kendiliğinden yapılır.
Anahtarı Nasıl Alırsınız
API anahtarlarını kendiniz oluşturamazsınız. Anahtarı Milagron ekibi üretir ve sizinle paylaşır.
- Milagron ekibine API erişim talebinizi iletirsiniz.
- Talep onaylandıktan sonra API Key ve API Secret değerleriniz paylaşılır.
- Secret değeri yalnızca bir kez paylaşılır. Güvenli bir yerde saklayın.
Kullanım Örnekleri
Aşağıda farklı dillerde kimlik doğrulamalı bir API çağrısı örneği var. API_KEY ve API_SECRET yerine kendi değerlerinizi yazın.
curl -u "API_KEY:API_SECRET" \
-X POST https://api.milagron.com/integration/inventory/sellers/123/products/stock \
-H "Content-Type: application/json" \
-d '{"barcode":"ABC123"}'<?php
$ch = curl_init('https://api.milagron.com/integration/inventory/sellers/123/products/stock');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => 'API_KEY:API_SECRET',
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(['barcode' => 'ABC123']),
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);const auth = Buffer.from('API_KEY:API_SECRET').toString('base64');
const res = await fetch('https://api.milagron.com/integration/inventory/sellers/123/products/stock', {
method: 'POST',
headers: {
'Authorization': `Basic ${auth}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ barcode: 'ABC123' })
});
const data = await res.json();import requests
response = requests.post(
'https://api.milagron.com/integration/inventory/sellers/123/products/stock',
auth=('API_KEY', 'API_SECRET'),
json={'barcode': 'ABC123'}
)
response.raise_for_status()
data = response.json()package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
payload, _ := json.Marshal(map[string]string{"barcode": "ABC123"})
req, _ := http.NewRequest("POST",
"https://api.milagron.com/integration/inventory/sellers/123/products/stock",
bytes.NewBuffer(payload))
req.SetBasicAuth("API_KEY", "API_SECRET")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
}import java.net.URI;
import java.net.http.*;
import java.util.Base64;
HttpClient client = HttpClient.newHttpClient();
String auth = Base64.getEncoder()
.encodeToString("API_KEY:API_SECRET".getBytes());
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.milagron.com/integration/inventory/sellers/123/products/stock"))
.header("Authorization", "Basic " + auth)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"barcode\":\"ABC123\"}"))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());require 'net/http'
require 'uri'
require 'json'
uri = URI('https://api.milagron.com/integration/inventory/sellers/123/products/stock')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request.basic_auth('API_KEY', 'API_SECRET')
request['Content-Type'] = 'application/json'
request.body = { barcode: 'ABC123' }.to_json
response = http.request(request)
data = JSON.parse(response.body)using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var client = new HttpClient();
var auth = Convert.ToBase64String(
Encoding.UTF8.GetBytes("API_KEY:API_SECRET"));
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", auth);
var content = new StringContent(
"{\"barcode\":\"ABC123\"}",
Encoding.UTF8,
"application/json");
var response = await client.PostAsync(
"https://api.milagron.com/integration/inventory/sellers/123/products/stock",
content);
var data = await response.Content.ReadAsStringAsync();Yetkiler (Scope'lar)
Her API anahtarı, yalnızca tanımlanmış yetkiler dahilinde işlem yapabilir. Gerekli yetki tanımlanmadan çağrılan uçlar 403 Forbidden hatası ile yanıt verir.
| Scope | Erişim |
|---|---|
stock:read | Stok bilgilerinin sorgulanması |
stock:write | Stok ve fiyat güncellemesi |
product:read | Ürün listesi ve katalog bilgilerinin (kategori, özellik, marka) görüntülenmesi |
product:write | Ürün oluşturma ve ürün bilgilerinin güncellenmesi |
order:read | Sipariş listesinin görüntülenmesi |
order:write | Sipariş güncelleme işlemleri (kargoya teslim vb.) |
price:read | Fiyat bilgilerinin görüntülenmesi |
price:write | Fiyat bilgilerinin güncellenmesi |
shipment:read | Kargo bilgilerinin görüntülenmesi |
shipment:write | Kargo bilgilerinin güncellenmesi |
Güvenlik Önerileri
- Secret değeri istemci tarafında (frontend, mobil uygulama) yer almamalıdır.
- Sürüm kontrol sistemlerine (Git vb.) commit edilmemelidir.
- Log kayıtlarında görünmediği düzenli olarak doğrulanmalıdır.
- Sunucu tarafında, environment variable veya yapılandırma yönetim sistemleri içerisinde saklanmalıdır.
IP Whitelist
Her API anahtarı için isteğe bağlı olarak IP whitelist tanımlanabilir. Tanımlı olduğu durumlarda, yalnızca belirtilen IP adreslerinden gelen istekler kabul edilir. Listenin boş bırakılması, tüm IP adreslerinden erişime izin verildiği anlamına gelir.