# Şablonlar ve mesaj geçmişi

## Şablon listesi

`GET https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/list`. Şablonlar aşağıdaki uçlarla ya da kurulum ekranından oluşturulur; şablonun kategorisi ücreti belirler ([Ücretlendirme](https://api-docs.netgsm.com.tr/guides/whatsapp/whatsapp-api-ucretlendirme.md)).

```json
{
  "method": "GET",
  "url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/list",
  "auth": "Basic  kullanıcı:şifre"
}
```

Yanıt `200`:

```json
{
  "status": true,
  "data": [
    {
      "id": "5acba8a3-fed6-4873-a387-8dbf88851dae",
      "name": "netgsm_verify_code",
      "language": "tr",
      "category": "AUTHENTICATION",
      "status": "APPROVED",
      "components": [
        { "type": "BODY", "text": "{{1}} doğrulama kodunuzdur. Güvenliğiniz için bu kodu kimseyle paylaşmayın." },
        { "type": "BUTTONS", "buttons": [{ "type": "OTP", "text": "Kodu kopyala" }] }
      ]
    },
    {
      "id": "637821d1-a972-4a36-8f86-fdd87beeba29",
      "name": "siparis_hazir",
      "language": "tr",
      "category": "UTILITY",
      "status": "APPROVED",
      "components": [
        { "type": "BODY", "text": "Merhaba {{1}}, siparişiniz hazır.", "example": { "body_text": [["Mehmet"]] } }
      ]
    }
  ]
}
```

## Şablon oluştur

`POST https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/create`. Gövde `template` altında WhatsApp şablon biçimindedir: `name` (küçük harf, rakam, alt çizgi), `category` (`MARKETING`, `UTILITY`, `AUTHENTICATION`), `language`, `components`. Şablon `PENDING` açılır, WhatsApp onaylayınca `APPROVED` olur; durum şablon listesinden izlenir.

```json
{
  "method": "POST",
  "url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/create",
  "auth": "Basic  kullanıcı:şifre",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "template": {
      "name": "siparis_hazir",
      "category": "UTILITY",
      "language": "tr",
      "components": [
        {
          "type": "BODY",
          "text": "Merhaba {{1}}, siparişiniz hazır.",
          "example": { "body_text": [["Mehmet"]] }
        }
      ]
    }
  }
}
```

Yanıt `200` (`id`, şablon listesindeki `id`'dir):

```json
{ "status": true, "data": { "id": "880685433640462", "status": "PENDING", "category": "UTILITY" } }
```

## Şablon düzenle

`POST https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/update`. `id` şablon listesinden; `components` şablonun yeni içeriğidir (tamamı gönderilir). Onay bekleyen şablon düzenlenemez.

```json
{
  "method": "POST",
  "url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/update",
  "auth": "Basic  kullanıcı:şifre",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "id": "880685433640462",
    "components": [
      {
        "type": "BODY",
        "text": "Merhaba {{1}}, siparişiniz yola çıktı.",
        "example": { "body_text": [["Mehmet"]] }
      }
    ]
  }
}
```

Yanıt `200`:

```json
{ "status": true, "data": { "success": true } }
```

## Şablon sil

`POST https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/remove`. Şablonun bütün dilleri silinir. OTP şablonu `netgsm_verify_code` silinirse doğrulama kodu gönderilemez; kurulum ekranındaki "Oluştur" ile yeniden açılır.

```json
{
  "method": "POST",
  "url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/template/remove",
  "auth": "Basic  kullanıcı:şifre",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "name": "siparis_hazir"
  }
}
```

Yanıt `200`:

```json
{ "status": true, "data": { "success": true } }
```

## Mesaj geçmişi ve gelen mesajlar

`POST https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/list`. Bir kişiyle olan gönderilen ve gelen bütün mesajlar, durumlarıyla birlikte döner. Gelen mesajlar ve teslim / okundu bilgisi buradan okunur. `filters.number` zorunludur; tarih verilmezse son 30 gün.

```json
{
  "method": "POST",
  "url": "https://whatsappapi.netgsm.com.tr/v1/netgsm/whatsapp/messages/list",
  "auth": "Basic  kullanıcı:şifre",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "filters": {
      "number": "905321112233",
      "page": 1,
      "limit": 2,
      "start_date": "2026-11-01 00:00:00",
      "end_date": "2026-11-03 23:59:59"
    }
  }
}
```

Yanıt `200`:

```json
{
  "status": true,
  "data": {
    "current_page": 1,
    "total_records": "6",
    "total_pages": 3,
    "rows": [
      {
        "id": "d9481186-ee5a-45a3-8859-f1a16c060e45",
        "to": "905321112233",
        "from": "908501110077",
        "to_user_id": "TR.1000000000000001",
        "status": "read",
        "component": "text",
        "text": { "message": "Merhaba, siparişiniz hazır. " }
      },
      {
        "id": "wamid.HBgMOTA1MzIxMTEyMjMzFQIAEhggREU5M0Y2N0FFNzMyODVCNjI1QUNBQzY3RjA3OEY4QjM=",
        "to": "908501110077",
        "from": "905321112233",
        "from_user_id": "TR.1000000000000001",
        "profile_name": "Ayşe Yılmaz",
        "username": "ayseyilmaz",
        "status": "received",
        "reactions": [{ "from": "908501110077", "emoji": "👍" }],
        "component": "text",
        "text": { "message": "Siparişim ne zaman gelir? " }
      }
    ]
  }
}
```

| Alan | Anlamı |
| --- | --- |
| `status` | Gönderilen: `sending` → `sent` → `delivered` → `read`, ya da `failed`. Gelen: `received` |
| `from` / `to` | Telefon numarası; numarasını gizlemiş kişide boş |
| `from_user_id` / `to_user_id` | Kişinin WhatsApp kimliği (`TR.…`). Kişiyi bununla eşleştirin, numarayı anahtar olarak kullanmayın |
| `profile_name`, `username` | Kişinin WhatsApp adı ve kullanıcı adı |

Satırlar metin gönderme yanıtındaki alanların tamamını taşır; burada kısaltıldı.
