Event'ler

Kanonik event formatı

Her event idempotent bir (sourceId, externalId) anahtar çiftiyle DB'ye yazılır, outbox üzerinden yayınlanır. Amount alanları her zaman minor unit (kuruş).

Konvansiyonlar

Her event için geçerli ortak kurallar

  • Amount alanları her zaman minor unit (kuruş / cent). 149.00 TL = 14900.
  • occurredAt her zaman ISO 8601 UTC (2026-05-14T11:42:08Z). Yerel saat dilimi göndermeyin.
  • externalId sourceId scope'unda tekildir. Aynı externalId ikinci kez gönderilirse 200 (replay) döner — downstream hareket tekrarlanmaz.
  • tenantId request body'de göndermeyin — X-Integration-Key'den otomatik resolve edilir.
partner.sale.recorded

Satış kaydedildi

Bir POS / e-ticaret / aidat satışı kapandığında. Downstream invoice + stock movement + cari hareketi üretir.

Interface
interface PartnerSaleRecordedPayload {
  tenantId: string;
  externalId: string;
  lines: {
    productId: string;
    quantity: number;
    unitAmountMinor: number;
  }[];
  currency: string;            // ISO 4217 — "TRY", "USD", "EUR"
  occurredAt: string;          // ISO 8601 UTC
  customerId?: string;         // Resolved biHesap customer id
  customerExternalId?: string; // Original partner identifier
  metadata?: Record<string, unknown>;
}
Örnek payload
{
  "tenantId": "tnt_01J9XZ…",
  "externalId": "POS-2026-05-14-00042",
  "lines": [
    { "productId": "prd_01J9X…", "quantity": 2, "unitAmountMinor": 14900 },
    { "productId": "prd_01J9Y…", "quantity": 1, "unitAmountMinor": 4900 }
  ],
  "currency": "TRY",
  "occurredAt": "2026-05-14T11:42:08Z",
  "customerExternalId": "ACME-1029"
}
partner.payment.recorded

Ödeme kaydedildi

Bir tahsilat (INBOUND) veya gider ödemesi (OUTBOUND). Downstream kasa/banka hareketi + cari ödeme/borç ilişkilendirme üretir.

Interface
interface PartnerPaymentRecordedPayload {
  tenantId: string;
  externalId: string;
  accountId: string;          // biHesap kasa/banka id
  amountMinor: number;
  currency: string;
  occurredAt: string;
  direction: 'INBOUND' | 'OUTBOUND';
  customerId?: string;        // direction === 'INBOUND' ise
  supplierId?: string;        // direction === 'OUTBOUND' ise
  counterpartyExternalId?: string;
  metadata?: Record<string, unknown>;
}
Örnek payload
{
  "tenantId": "tnt_01J9XZ…",
  "externalId": "PAY-2026-05-14-00077",
  "accountId": "acc_01J9X…",
  "amountMinor": 254800,
  "currency": "TRY",
  "occurredAt": "2026-05-14T12:01:00Z",
  "direction": "INBOUND",
  "counterpartyExternalId": "ACME-1029"
}
partner.purchase.recorded

Alış kaydedildi

Bir tedarikçi alış faturası. lines stok girişi + maliyetlendirmeyi tetikler. supplierExternalId zorunlu değil ama önerilir.

Interface
interface PartnerPurchaseRecordedPayload {
  tenantId: string;
  externalId: string;
  supplierId?: string;
  supplierExternalId?: string;
  lines: {
    productId: string;
    quantity: number;
    unitAmountMinor: number;
  }[];
  currency: string;
  occurredAt: string;
  metadata?: Record<string, unknown>;
}
Örnek payload
{
  "tenantId": "tnt_01J9XZ…",
  "externalId": "PO-2026-05-14-00011",
  "supplierExternalId": "SUPP-AKDENIZ",
  "lines": [
    { "productId": "prd_01J9X…", "quantity": 50, "unitAmountMinor": 8500 }
  ],
  "currency": "TRY",
  "occurredAt": "2026-05-14T09:00:00Z"
}
partner.expense.recorded

Gider kaydedildi

Kira, fatura, yakıt gibi çoklu-satır gider. Ürün kataloğu bağı yok; description + amountMinor + kategori serbest metin.

Interface
interface PartnerExpenseRecordedPayload {
  tenantId: string;
  externalId: string;
  lines: {
    description: string;
    amountMinor: number;
    category?: string;        // "utilities", "rent", "fuel"…
  }[];
  currency: string;
  occurredAt: string;
  supplierId?: string;
  supplierExternalId?: string;
  accountId?: string;         // Ödendiği kasa/banka
  accountExternalId?: string;
  metadata?: Record<string, unknown>;
}
Örnek payload
{
  "tenantId": "tnt_01J9XZ…",
  "externalId": "EXP-2026-05-13-UTIL",
  "lines": [
    { "description": "Elektrik", "amountMinor": 142500, "category": "utilities" },
    { "description": "Su",       "amountMinor": 34200,  "category": "utilities" }
  ],
  "currency": "TRY",
  "occurredAt": "2026-05-13T00:00:00Z",
  "supplierExternalId": "SUPP-BEDAS"
}