# Titipin BaBe SHU Export Contract
## Sprint 5.3 — Integration Reference

### Overview
FDE akan pull data dari Titipin BaBe via RestApiConnector.
Titipin BaBe (Laravel 12) harus menyediakan 2 endpoint berikut.

### Authentication
```
X-SHU-API-Key: {api_key}
```

---

### Endpoint 1 — Activities Export
```
GET /shu-export/activities
    ?period_start=2026-01-01
    &period_end=2026-12-31
    &sync_type=preview|final
```

Response format (JSON) — sama dengan kontrak BMT, unit_code="TITIPIN":
```json
{
  "meta": {
    "unit_code": "TITIPIN",
    "schema_version": "1.0",
    "connector_version": "1.0",
    "period_start": "2026-01-01",
    "period_end": "2026-12-31",
    "exported_at": "2026-12-31T23:59:00+07:00",
    "record_count": 89
  },
  "activities": [
    {
      "external_member_id": "BMT-2021-001",
      "total_transaction_value": 8500000,
      "total_profit_generated": 0,
      "transaction_count": 12
    }
  ]
}
```

Field mapping dari database Titipin BaBe:
- external_member_id → users.bmt_member_id (kolom linking ke BMT)
- total_transaction_value → SUM(orders.total_amount) WHERE user=X AND status=completed
- total_profit_generated → 0 (Titipin berbasis omzet, bukan profit)
- transaction_count → COUNT(orders) WHERE user=X AND status=completed

---

### Endpoint 2 — Health Check
```
GET /shu-export/ping
```

Response:
```json
{"status": "ok", "unit_code": "TITIPIN"}
```

---

### Catatan Implementasi (Laravel 12)
Tambahkan route di Titipin BaBe:

```php
// routes/api.php
Route::middleware('shu.api.key')->prefix('shu-export')->group(function () {
    Route::get('activities', [ShuExportController::class, 'activities']);
    Route::get('ping',       [ShuExportController::class, 'ping']);
});
```

Middleware ShuApiKey memvalidasi header X-SHU-API-Key dengan nilai
yang dikonfigurasi di Titipin settings/env.
