{
	"info": {
		"_postman_id": "33891d29-82f9-4aae-8fc4-672ecda5d8ce",
		"name": "WP Business API",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
		"_exporter_id": "28142415",
		"description": "# WhatsApp Business API (toplusms.app)\n\ntoplusms.app WhatsApp Business API uç noktaları.\n\n## Kimlik Doğrulama\nTüm istekler `X-Api-Key` header'ı ile yetkilendirilir. İstek göndermeden önce `<API-KEY>` değerini kendi anahtarınla değiştir.\n\n## Base URL\n`https://api.toplusms.app/api/v1/wabusiness`\n\n## ⚠️ `business_device_id` alanına dikkat\nBu alanın anlamı uç noktaya göre **değişir**:\n\n| Uç nokta türü | `business_device_id` değeri |\n|---|---|\n| Oturum mesajları (`message/send`) | int cihaz ID'si (alternatif olarak `phone_number_id` string) |\n| Şablon / kampanya uç noktaları | Meta'nın `phone_number_id` değeri (string) |\n\n## `message_type` değerleri\n| Değer | Tür |\n|:---:|---|\n| 1 | Metin (Text) |\n| 2 | Görsel (image) |\n| 4 | Belge (document) |\n| 7 | Video |\n\n## Oturum vs. Şablon\n- **Oturum mesajı** → müşteri son **24 saat** içinde sana yazdıysa gönderilebilir.\n- **Şablon** → 24 saat penceresi gerektirmez; ilk temas / kampanya için kullanılır (Meta onaylı olmalı)."
	},
	"item": [
		{
			"name": "message/send",
			"description": "# Metin Mesajı Gönder\n\nAktif bir oturuma (24 saat penceresi) düz **metin** mesajı gönderir.\n\n## Gövde alanları\n| Alan | Tür | Zorunlu | Açıklama |\n|---|---|:---:|---|\n| `business_device_id` | int | ✔* | Cihaz ID'si. |\n| `phone_number_id` | string | ✔* | Alternatif olarak bu kullanılabilir. |\n| `to` | string | ✔ | Alıcı numarası, ülke koduyla (ör. `905XXXXXXXXX`). |\n| `message_type` | int | ✔ | `1` = Metin. |\n| `payload.text_message.message` | string | ✔ | Gönderilecek mesaj metni. |\n\n\\* `business_device_id` **veya** `phone_number_id` zorunlu. İkisi birden gelirse `business_device_id` esas alınır.\n\n## Not\nOturum mesajları yalnızca müşteri son **24 saat** içinde sana yazdıysa iletilir. Bu pencere dışında **şablon** (`template/send`) kullanman gerekir.",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "X-Api-Key",
						"value": "<API-KEY>",
						"type": "text",
						"description": "API anahtarı (zorunlu)."
					},
					{
						"key": "Content-Type",
						"value": "application/json",
						"type": "text"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"business_device_id\": 123,\n    \"to\": \"905XXXXXXXXX\",\n    \"message_type\": 1,\n    \"payload\": {\n        \"text_message\": {\n            \"message\": \"Merhaba!\"\n        }\n    }\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "https://api.toplusms.app/api/v1/wabusiness/message/send",
					"protocol": "https",
					"host": [
						"api",
						"toplusms",
						"app"
					],
					"path": [
						"api",
						"v1",
						"wabusiness",
						"message",
						"send"
					]
				}
			},
			"response": []
		},
		{
			"name": "message/send-media",
			"description": "# Medya Mesajı Gönder (multipart)\n\nOturuma **görsel / video / belge** gönderir. İstek `multipart/form-data` olarak gönderilir.\n\n## Form alanları\n**`params`** (text) → aşağıdaki JSON'ı **string** olarak içerir:\n\n| Alan | Tür | Açıklama |\n|---|---|---|\n| `business_device_id` / `phone_number_id` | int / string | Zorunlu (biri). |\n| `to` | string | Alıcı numarası. |\n| `message_type` | int | `2`=görsel, `4`=belge, `7`=video. |\n| `payload` | object | Genelde boş `{}`; medya URL'si backend tarafından eklenir. |\n\n**`image` / `video` / `document`** (file) → `message_type` değerine karşılık gelen **yalnızca bir** dosya alanı doldurulur.\n\n## ⚠️ Önemli\nSeçtiğin `message_type` ile doldurduğun dosya alanı **eşleşmeli** (ör. `message_type=2` → `image`).",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "X-Api-Key",
						"value": "<API-KEY>",
						"type": "text",
						"description": "API anahtarı (zorunlu)."
					}
				],
				"body": {
					"mode": "formdata",
					"formdata": [
						{
							"key": "params",
							"value": "{\n    \"business_device_id\": 123,\n    \"to\": \"905XXXXXXXXX\",\n    \"message_type\": 2,\n    \"payload\": {}\n}",
							"type": "text",
							"description": "JSON string. `message_type`: 2=görsel, 4=belge, 7=video. `payload` boş bırakılır; medya URL'si backend tarafından eklenir."
						},
						{
							"key": "image",
							"value": "",
							"type": "file",
							"description": "message_type=2 (görsel) için dosya."
						},
						{
							"key": "video",
							"value": "",
							"type": "file",
							"description": "message_type=7 (video) için dosya."
						},
						{
							"key": "document",
							"value": "",
							"type": "file",
							"description": "message_type=4 (belge) için dosya."
						}
					]
				},
				"url": {
					"raw": "https://api.toplusms.app/api/v1/wabusiness/message/send",
					"protocol": "https",
					"host": [
						"api",
						"toplusms",
						"app"
					],
					"path": [
						"api",
						"v1",
						"wabusiness",
						"message",
						"send"
					]
				}
			},
			"response": []
		},
		{
			"name": "template/send",
			"description": "# Şablon Kampanyası Gönder\n\nOnaylı bir WhatsApp **şablonunu** bir veya birden çok alıcıya gönderir. 24 saat oturum penceresi **gerektirmez**.\n\n## Gövde alanları\n| Alan | Tür | Açıklama |\n|---|---|---|\n| `template_id` | string | Gönderilecek onaylı şablonun ID'si. |\n| `recipients[].to` | string | Alıcı numarası. |\n| `recipients[].params.body` | array | Şablon değişkenleri: `{\"key\": \"1\", \"value\": \"...\"}`. Değişken yoksa `params: {}` bırak. |\n| `campaign_name` | string | Raporlarda görünecek kampanya adı. |\n| `business_device_id` | string | Meta `phone_number_id` değeri. |\n| `image_url` / `video_url` / `document_url` | string | Şablon başlığı medya içeriyorsa doldur; yoksa boş bırak. |\n\n## Hız kontrolü (birini kullan)\n- `requests_per_minute` → dakika başına istek sayısı, **veya**\n- `complete_in_seconds` → tüm gönderimin tamamlanacağı toplam süre.\n\n> Kullanmadığın alanı `0` bırakabilirsin (örnekte `complete_in_seconds: 0`).",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "X-Api-Key",
						"value": "<API-KEY>",
						"type": "text",
						"description": "API anahtarı (zorunlu)."
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"template_id\": \"2xxxxxxxxxx\",\n    \"recipients\": [{\n        \"to\": \"905XXXXXXXXX\",\n        \"params\": {\n            \"body\": [{\"key\": \"1\", \"value\": \"Vatansoft\"}]\n        }\n    }],\n    \"campaign_name\": \"Test\",\n    \"business_device_id\": \"123456789012345\",\n    \"requests_per_minute\": 60,\n    \"complete_in_seconds\": 0,\n    \"image_url\": \"\",\n    \"video_url\": \"\",\n    \"document_url\": \"\"\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "https://api.toplusms.app/api/v1/wabusiness/template/send",
					"protocol": "https",
					"host": [
						"api",
						"toplusms",
						"app"
					],
					"path": [
						"api",
						"v1",
						"wabusiness",
						"template",
						"send"
					]
				}
			},
			"response": []
		},
		{
			"name": "campaigns",
			"description": "# Kampanyaları Listele\n\nHesaba ait şablon kampanyalarını listeler.\n\nDönen listedeki `campaign_id` değerini, **campaigns/reports** uç noktasında rapor almak için kullanabilirsin.",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "X-Api-Key",
						"value": "<API-KEY>",
						"type": "text",
						"description": "API anahtarı (zorunlu)."
					}
				],
				"url": {
					"raw": "https://api.toplusms.app/api/v1/wabusiness/campaigns",
					"protocol": "https",
					"host": [
						"api",
						"toplusms",
						"app"
					],
					"path": [
						"api",
						"v1",
						"wabusiness",
						"campaigns"
					]
				}
			},
			"response": []
		},
		{
			"name": "campaigns/reports",
			"description": "# Kampanya Raporu\n\nBelirli bir kampanyanın **gönderim / teslim** raporunu döner.\n\n## Yol parametresi\n| Parametre | Açıklama |\n|---|---|\n| `:campaign_id` | Rapor istenen kampanyanın ID'si (ör. `1000`). `campaigns` uç noktasından alınır. |",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "X-Api-Key",
						"value": "<API-KEY>",
						"type": "text",
						"description": "API anahtarı (zorunlu)."
					}
				],
				"url": {
					"raw": "https://api.toplusms.app/api/v1/wabusiness/campaigns/:campaign_id/reports",
					"protocol": "https",
					"host": [
						"api",
						"toplusms",
						"app"
					],
					"path": [
						"api",
						"v1",
						"wabusiness",
						"campaigns",
						":campaign_id",
						"reports"
					],
					"variable": [
						{
							"key": "campaign_id",
							"value": "1000",
							"description": "Rapor istenen kampanyanın ID'si. `campaigns` uç noktasından alınır."
						}
					]
				}
			},
			"response": []
		},
		{
			"name": "template",
			"description": "# Şablon Oluştur\n\nMeta onayına gönderilmek üzere **yeni bir WhatsApp şablonu** oluşturur.\n\n## Gövde alanları\n| Alan | Açıklama |\n|---|---|\n| `business_device_id` | Meta `phone_number_id` (string). |\n| `template.name` | Şablon adı (küçük harf + alt çizgi, ör. `kampanya_ismi`). |\n| `template.category` | `MARKETING`, `UTILITY` veya `AUTHENTICATION`. |\n| `template.language` | Dil kodu (ör. `tr`). |\n| `template.parameter_format` | `NAMED` veya `POSITIONAL`. |\n| `template.components` | Şablon bileşenleri (aşağıda). |\n\n## `components` bileşenleri\n| Tür | İçerik |\n|---|---|\n| `HEADER` | `format: TEXT` + `text` (başlık). |\n| `BODY` | `text` (mesaj gövdesi). |\n| `BUTTONS` | Buton listesi: `QUICK_REPLY`, `CANCEL_BUTTON` vb. |\n\n## Not\nOluşturulan şablon, Meta tarafından **onaylanana kadar** gönderim için kullanılamaz.",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "X-Api-Key",
						"value": "<API-KEY>",
						"type": "text",
						"description": "API anahtarı (zorunlu)."
					},
					{
						"key": "Content-Type",
						"value": "application/json",
						"type": "text"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"business_device_id\": \"817271283718237812\",\n    \"template\": {\n        \"name\": \"kampanya_ismi\",\n        \"category\": \"MARKETING\",\n        \"language\": \"tr\",\n        \"parameter_format\": \"NAMED\",\n        \"components\": [\n            {\n                \"type\": \"HEADER\",\n                \"format\": \"TEXT\",\n                \"text\": \"Burası başlıktır\"\n            },\n            {\n                \"type\": \"BODY\",\n                \"text\": \"Mesaj almak istediğiniz için teşekkürler!\"\n            },\n            {\n                \"type\": \"BUTTONS\",\n                \"buttons\": [\n                    {\n                        \"type\": \"CANCEL_BUTTON\",\n                        \"text\": \"Mesaj almak istemiyorum\"\n                    },\n                    {\n                        \"type\": \"QUICK_REPLY\",\n                        \"text\": \"Teşekkürler!\"\n                    }\n                ]\n            }\n        ]\n    }\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "https://api.toplusms.app/api/v1/wabusiness/template",
					"protocol": "https",
					"host": [
						"api",
						"toplusms",
						"app"
					],
					"path": [
						"api",
						"v1",
						"wabusiness",
						"template"
					]
				}
			},
			"response": []
		},
		{
			"name": "form-data-image",
			"description": "# Medyalı Şablon Gönder (multipart)\n\nBaşlığında **medya** bulunan bir şablonu gönderir. `multipart/form-data` kullanır. (Uç nokta `template/send` ile aynıdır; fark, medyanın dosya olarak eklenmesidir.)\n\n## Form alanları\n**`params`** (text) → JSON string:\n\n| Alan | Açıklama |\n|---|---|\n| `template_id` | Gönderilecek şablon ID'si. |\n| `recipients[].to` | Alıcı numarası. |\n| `recipients[].params` | Şablon değişkenleri; yoksa `{}`. |\n| `campaign_name` | Kampanya adı. |\n| `business_device_id` | Meta `phone_number_id`. |\n| `requests_per_minute` | Dakika başına istek (hız). |\n\n**`image` / `video` / `document`** (file) → **Opsiyonel.** Doldurulmazsa şablonun **varsayılan medyası** kullanılır.",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "X-Api-Key",
						"value": "<API KEY>",
						"description": "API anahtarı (zorunlu)."
					}
				],
				"body": {
					"mode": "formdata",
					"formdata": [
						{
							"key": "params",
							"value": "{\n    \"template_id\": \"1xxxxxxxx3\",\n    \"recipients\": [\n        {\n            \"to\": \"905991234567\",\n            \"params\": {}\n        }\n    ],\n    \"campaign_name\": \"Test Kampanya\",\n    \"business_device_id\": \"123456789012345\",\n    \"requests_per_minute\": 60\n}",
							"type": "text",
							"description": "JSON string. `business_device_id` = Meta `phone_number_id`. Şablonda değişken yoksa `recipients[].params: {}` bırak."
						},
						{
							"key": "image",
							"value": "",
							"type": "file",
							"description": "Opsiyonel görsel. Doldurulmazsa şablonun varsayılan medyası kullanılır."
						},
						{
							"key": "video",
							"value": "",
							"type": "file",
							"description": "Opsiyonel video."
						},
						{
							"key": "document",
							"value": "",
							"type": "file",
							"description": "Opsiyonel belge."
						}
					]
				},
				"url": {
					"raw": "https://api.toplusms.app/api/v1/wabusiness/template/send",
					"protocol": "https",
					"host": [
						"api",
						"toplusms",
						"app"
					],
					"path": [
						"api",
						"v1",
						"wabusiness",
						"template",
						"send"
					]
				}
			},
			"response": []
		}
	]
}
