Kimlik doğrulama
Her istekte satıcının API anahtarı X-API-Key başlığında gönderilir.
X-API-Key: hwm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Anahtar bir satıcıya aittir; tüm istekler otomatik olarak o mağazanın verisiyle sınırlıdır. Anahtar satıcı panelinden veya Hawe-mi süperadmin panelinden iptal edilebilir.
Yanıt formatı
{
"success": true,
"message": "Ürünler getirildi.",
"data": { }
}
| HTTP | Anlam |
|---|---|
| 200 / 201 | Başarılı |
| 401 | API anahtarı yok, geçersiz veya iptal edilmiş |
| 403 | Satıcı hesabı onaylı değil |
| 404 | Kayıt bulunamadı |
| 422 | Doğrulama hatası |
| 429 | İstek limiti aşıldı (retry_after) |
Önemli notlar
- Ürünler stok kodu (
sku) ile eşlenir. SKU satıcı bazında tekildir ve ürün oluşturulduktan sonra değişmez. - Varyant desteği yoktur. Renk/beden/gramaj gibi her varyant ayrı ürün olarak gönderilmelidir.
- Yeni ürünler admin onayı bekler. Oluşturulan ürün
approved: falseile kaydedilir. - Kargo Hawe-mi tarafından oluşturulur. Entegratör takip numarasını okur, göndermez.
- Kategori sabit listedendir. Önce
/categoriesucundan alınmalıdır. - Mevcut ürünler: Panelden daha önce eklenmiş ürünlerin SKU'su boş olabilir; entegrasyona dahil edilmesi için panelden SKU atanmalıdır. Listelemek için
GET /products?sku_missing=1. - Silinen ürün + aynı SKU:
DELETEsoft delete yapar. Aynı SKU ile tekrarPOST /productsgelirse ürün geri yüklenir (restored: true, yeniden admin onayı bekler).
Mağaza
GET/me
Bağlantı testi ve mağaza durumu.
{
"success": true,
"data": {
"store": {
"id": "9ed0880e-...",
"store_name": "Örnek Mağaza",
"status": "approved",
"vacation_mode": false,
"open_for_sale": true,
"return_address_defined": true,
"cargo_provider": "YURTICI_STANDART"
}
}
}
return_address_defined: false ise satıcı iade adresi tanımlamadan ürün ekleyemez.GET/categories
{
"success": true,
"data": {
"animal_categories": ["Kedi","Köpek","Kanatlılar","Su Hayvanları","Sürüngen","Böcek","Çiftlik Hayvanları","Diğer"],
"product_categories": ["Mama","Oyuncak","Kap","Temizlik","Sağlık"]
}
}
Ürün
GET/products
Sayfalı ürün listesi. per_page en fazla 100 (varsayılan 50). SKU'suz ürünler: ?sku_missing=1.
{
"success": true,
"data": {
"products": [{
"sku": "KM-1000",
"barcode": "8690000000001",
"id": "a2600e3d-...",
"name": "Kedi Maması 1kg",
"description": "...",
"price": 149.9,
"tax_rate": 20,
"stock_quantity": 25,
"desi": 2,
"weight": 1000,
"animal_category": "Kedi",
"product_category": "Mama",
"approved": true,
"listed": true,
"on_sale": true,
"images": ["https://admin.hawe-mi.com/storage/products/..."],
"created_at": "2026-07-29T14:13:14+00:00",
"updated_at": "2026-07-29T14:13:14+00:00"
}],
"current_page": 1,
"last_page": 4,
"per_page": 50,
"total": 180
}
}
| Alan | Anlam |
|---|---|
approved | Admin onayı verildi mi |
listed | Satıcı vitrinde göstermeyi seçti mi |
on_sale | Şu anda gerçekten satışta mı |
GET/products/{sku}
Tek ürün getirir. Yanıt formatı liste kalemi ile aynıdır (data.product).
POST/products
| Alan | Zorunlu | Açıklama |
|---|---|---|
sku | Evet | Stok kodu, max 64 karakter, satıcıda tekil |
name | Evet | Ürün adı |
price | Evet | KDV dahil satış fiyatı (TL) |
stock_quantity | Evet | Stok adedi |
desi | Evet | Kargo desi |
weight | Evet | Gram |
animal_category | Evet | /categories listesinden |
product_category | Evet | /categories listesinden |
barcode | Hayır | Satıcıda tekil |
description | Hayır | Açıklama |
tax_rate | Hayır | Varsayılan 20 |
images | Hayır | En fazla 5 görsel URL'si |
curl -X POST https://admin.hawe-mi.com/api/v1/integration/products \
-H "X-API-Key: hwm_..." \
-H "Content-Type: application/json" \
-d '{
"sku":"KM-1000",
"name":"Kedi Maması 1kg",
"price":149.90,
"stock_quantity":25,
"desi":2,
"weight":1000,
"animal_category":"Kedi",
"product_category":"Mama",
"images":["https://cdn.ornek.com/1.jpg"]
}'
PUT/products/{sku}
Sadece gönderilen alanlar güncellenir. sku değiştirilemez.
DELETE/products/{sku}
Ürünü yayından kaldırır (soft delete). Aynı SKU ile yeniden POST /products gönderilirse ürün geri yüklenir.
Stok ve fiyat (toplu)
Tek istekte en fazla 500 kalem. Bulunamayan SKU'lar failed listesinde döner, diğerleri güncellenir.
POST/stock
{
"items": [
{ "sku": "KM-1000", "quantity": 12 },
{ "sku": "KM-2000", "quantity": 0 }
]
}
POST/price
{
"items": [
{ "sku": "KM-1000", "price": 159.90, "tax_rate": 20 }
]
}
Sipariş
GET/orders
| Parametre | Açıklama |
|---|---|
status | Durum koduna göre filtre |
updated_after | Bu tarihten sonra güncellenenler (ISO 8601) |
per_page | Sayfa boyutu, en fazla 100 |
updated_after ile sorgulayın.| Durum kodu | Anlam |
|---|---|
created | Sipariş alındı |
ready_to_ship | Kargo etiketi oluştu |
shipped | Kargoya verildi |
out_for_delivery | Dağıtımda |
delivered | Teslim edildi |
cancelled | İptal edildi |
returned | İade / para iadesi |
GET/orders/{id}
id yerine sipariş numarası da kullanılabilir. Alıcı, adres, kalemler, tutarlar, kargo ve iade bilgisi döner.
{
"success": true,
"data": {
"order": {
"id": "a25d8c89-...",
"order_number": "2242493476",
"status": "created",
"status_text": "Sipariş Alındı",
"payment_status": "success",
"delivery_type": "standard",
"total": 496,
"buyer": { "name": "Ad Soyad", "phone": "5xxxxxxxxx", "email": "...", "is_guest": false },
"shipping_address": {
"contact_name": "...", "phone": "...", "full_address": "...",
"city": "Bursa", "district": "Nilüfer", "neighborhood": "...", "postal_code": null
},
"items": [{
"sku": "KM-1000", "barcode": "869...", "product_id": "...",
"name": "Kedi Maması 1kg", "quantity": 3,
"unit_price": 248, "total_price": 744, "tax_rate": 20
}],
"amounts": {
"promotion_discount": 248, "coupon_discount": 0,
"shipping_fee": 0, "shipping_paid_by": "seller", "total": 496
},
"cargo": {
"tracking_number": "...", "provider_code": "YURTICI",
"tracking_url": "https://...", "label_url": "https://...", "status_code": "delivered"
},
"refund": null,
"can_be_cancelled": true
}
}
}
amounts.total müşterinin ödediği net tutardır (indirimler düşülmüş).
POST/orders/{id}/cancel
{ "reason": "Ürün stokta kalmadı" }
reason zorunludur. Sadece kargo yola çıkmadan önce iptal edilebilir.
POST/orders/{id}/cargo
Etiket oluşmamışsa yeniden denemek için. Normal akışta gerekmez. id yerine sipariş numarası da kabul edilir.
İade
GET/refunds
GET/refunds/{id}
POST/refunds/{id}/approve
POST/refunds/{id}/reject
{ "seller_reason": "Ürün kullanılmış olarak geldi" }
| Durum | Anlam |
|---|---|
waiting_return | İade kargosu yolda |
pending_seller_decision | Satıcı kararı bekleniyor |
approved | Onaylandı, para iade edildi |
rejected | Reddedildi |
auto_refunded | Süre doldu, otomatik iade |
expired | Süre doldu |