Portalecza Entegrasyon API

API Adresi https://www.portalecza.com/api

1. Giriş İsteği ve Token Alma

Önce login endpointinden access token alınır, ardından isteklerde Bearer token kullanılır.

POST /auth/login

Örnek request body:

{
  "email": "[email protected]",
  "password": "sifre"
}

Örnek Giriş Yanıtı (200)

{
  "accessToken": {
    "token": "eyJ...example...",
    "expirationDate": "2025-12-30T08:01:55.306882+03:00"
  },
  "requiredAuthenticatorType": null
}

Giriş Sonrası İsteklerde Header Kullanımı

Authorization: Bearer <accessToken>

2. Ürünler

Ürün listeleme için aktif istek:

GET /integration/products/getAll

Yanıt Şeması

Alan Tip Açıklama
Id number Id
Sku string Stok kodu
Name string Ürün adı
Barcode string Barkod
PriceNet decimal KDV hariç fiyat
PriceGross decimal KDV dahil fiyat
Vat decimal KDV
Stock number Stok
Expiration datetime/null Miad tarihi

3. Fatura XML Listesi

Müşteriye ait faturaları XML olarak almak için aşağıdaki endpoint kullanılır. API profilinde fatura XML yetkisinin ve kullanılacak XML formatının tanımlanmış olması gerekir.

GET /integration/invoices/getList

Başlangıç Tarihi ile İstek

GET /integration/invoices/getList?startDate=2026-07-01
Parametre Zorunlu Format Açıklama
startDate Hayır yyyy-MM-dd Başlangıç tarihi, belirtilen gün dahildir.
endDate Hayır yyyy-MM-dd Bitiş tarihi; gönderilmezse sistem bugünü kullanır.
  • Tarih gönderilmezse son 15 günlük dönem seçilir.

Hata Yanıtları

Postman koleksiyonundaki örneklere göre temel ayrım:

  • 400 Validation: İstek formatı veya alan doğrulaması hatalıdır (ModelState / custom validation).
  • 400 Business: İstek formatı doğru olsa da iş kuralı ihlali vardır.
  • 401: Kimlik doğrulama başarısızdır (token yok, geçersiz veya süresi dolmuş).
  • 403: Kimlik doğrulama başarılıdır ama bu kaynağa erişim yetkisi yoktur.
  • 500: Sunucuda beklenmeyen hata oluşmuştur.

Not: 401 ve 403 örneklerinde HTTP status code 401 döner, response body içindeki status alanı farklıdır.

400 Validation (örnek)

{
  "type": "https://example.com/probs/validation",
  "title": "Validation error(s)",
  "status": 400,
  "detail": "One or more validation errors occurred.",
  "Errors": [
    {
      "Property": "Email",
      "Errors": [
        "'Email'  geçerli bir e-posta adresi değil."
      ]
    }
  ]
}

400 Business (örnek)

{
  "type": "https://example.com/probs/business",
  "title": "Rule violation",
  "status": 400,
  "detail": "Kullanıcı e-postası zaten mevcut."
}

401 (örnek)

{
  "type": "https://example.com/probs/authorization",
  "title": "Authorization error",
  "status": 401,
  "detail": "You are not authorized."
}

403 (örnek)

{
  "type": "https://example.com/probs/authentication",
  "title": "Authentication error",
  "status": 403,
  "detail": "You are not authenticated."
}

500 (örnek)

{
  "type": "https://example.com/probs/internal",
  "title": "Internal server error",
  "status": 500,
  "detail": "Internal server error"
}