> For the complete documentation index, see [llms.txt](https://developer.paywall.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.paywall.one/cuzdan-servisleri/7.-kampanya/1.-olustur.md).

# 1. Oluştur

## Kayıt Oluşturma İşlemi

<mark style="color:yellow;">`POST`</mark>`{{WalletUrl}}/api/v1/campaign`

{% hint style="info" %}
Not: Bu servisin kullanılabilmesi için **apikeypublic** ve **apiclientpublic** parametrelerinin Header alanına eklenmiş olması zorunludur.

\
[<mark style="color:green;">**WalletAPI Adresi**</mark>](/ortam.md)
{% endhint %}

**Gerekli header ve istek parametreleri:**

<details>

<summary><strong>Zorunlu header parametreleri</strong></summary>

<table><thead><tr><th width="162">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Servise erişim için kullanılan genel anahtar bilgisidir.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Uygulamanın kimliğini temsil eden genel erişim anahtarıdır.</td></tr></tbody></table>

</details>

<details>

<summary><strong>İstek gövdesi parametreleri</strong></summary>

<table><thead><tr><th width="162">Parametre</th><th width="105">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>Name</td><td>string</td><td>Evet</td><td>Kampanyanın adı</td></tr><tr><td>Description</td><td>string</td><td>Evet</td><td>Kampanyanın açıklaması</td></tr><tr><td>MinimumDepositAmount</td><td>decimal</td><td>Evet</td><td>Kampanyanın geçerli olacağı minimum para yatırma tutarı</td></tr><tr><td>MaximumDepositAmount</td><td>decimal</td><td>Hayır</td><td>Kampanyanın geçerli olacağı maksimum para yatırma tutarı. <code>null</code> ise üst limit yoktur</td></tr><tr><td>BonusType</td><td>integer</td><td>Evet</td><td>Bonus tipi. <code>1</code> = <code>Fixed</code> (Sabit tutar), <code>2</code> = <code>Percentage</code> (Yüzde)</td></tr><tr><td>BonusValue</td><td>decimal</td><td>Evet</td><td>Bonus değeri. <code>BonusType</code> = <code>Fixed</code> ise sabit tutar, <code>Percentage</code> ise yüzde değeri</td></tr><tr><td>CampaignType</td><td>integer</td><td>Evet</td><td>Kampanya tipi. <code>1</code> = <code>CashBack</code>, <code>2</code> = <code>GiftBalance</code></td></tr><tr><td>RegionId</td><td>integer</td><td>Evet</td><td>Kampanyanın geçerli olduğu bölgenin tanımlayıcısı</td></tr><tr><td>CurrencyCode</td><td>string</td><td>Evet</td><td>Kampanyanın geçerli olduğu para birimi kodu</td></tr><tr><td>StartDate</td><td>dateOnly</td><td>Evet</td><td>Kampanyanın başlangıç tarihi. Format: <code>YYYY-MM-DD</code></td></tr><tr><td>EndDate</td><td>dateOnly</td><td>Hayır</td><td>Kampanyanın bitiş tarihi. Format: <code>YYYY-MM-DD</code>. <code>null</code> ise kampanyanın bitiş tarihi yoktur</td></tr></tbody></table>

</details>

<details>

<summary><i class="fa-memo-circle-info">:memo-circle-info:</i>   <mark style="color:blue;"><strong><code>İş Kuralları</code></strong></mark></summary>

{% hint style="info" %}

* `CurrencyCode` sistemde tanımlı ve geçerli bir para birimine karşılık gelmelidir.
* Aynı Merchant, Region ve Currency kombinasyonu için aynı kampanya tipinde yalnızca bir aktif kampanya bulunabilir. `CashBack` ve `Bonus` tipleri birbirinden bağımsız değerlendirilir.
* `BonusType.Fixed` ise `BonusValue` sabit ödül tutarını, `BonusType.Percentage` ise yüzdesel oranı ifade eder.
* Kampanya başlangıç ve bitiş tarihleri geçmiş bir tarihe ait olamaz. Başlangıç tarihi mevcut gün olabilir.
* Kampanya adı ve tarih alanları sistem doğrulama kurallarına uygun olmalıdır. Geçersiz değerler durumunda işlem reddedilir.
  {% endhint %}

</details>

**Servise gönderilecek örnek bir JSON dosyası şu şekildedir :**

{% tabs %}
{% tab title="JSON" %}

```json
{
    "Name": "External Campaign",
    "Description": "External campaign description",
    "MinimumDepositAmount": 1.00,
    "MaximumDepositAmount": 1000.00,
    "BonusType": 1,
    "BonusValue": 1.00,
    "CampaignType": 1,
    "RegionId": 1,
    "CurrencyCode": "TRY",
    "StartDate": "2025-09-01",
    "EndDate": "2025-12-31"
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen parametreler şu şekildedir:**

<details>

<summary><strong>Parametreler ve açıklamaları</strong></summary>

<table><thead><tr><th width="234.05859375">Parametre</th><th width="162.38671875">Tip</th><th width="348.94140625">Açıklama</th></tr></thead><tbody><tr><td>IsFailure</td><td>bool</td><td>İşlemin başarısız olup olmadığını belirtir. true ise hata olmuştur.</td></tr><tr><td>IsSuccess</td><td>bool</td><td>İşlemin başarılı olup olmadığını belirtir. true ise başarıyla tamamlanmıştır.</td></tr><tr><td>Errors</td><td>Array</td><td>Oluşan hata/hatalar varsa detaylarını içeren dizi.</td></tr><tr><td>Value</td><td>Array</td><td>Başarılı yanıt durumunda dönen asıl veri içeriğini barındırır.</td></tr><tr><td>Id</td><td>Guid</td><td>Kampanyaya ait benzersiz kimlik numarası.</td></tr><tr><td>Name</td><td>string</td><td>Kampanyanın adı.</td></tr><tr><td>Description</td><td>string</td><td>Kampanya hakkında açıklayıcı bilgi.</td></tr><tr><td>MinimumDepositAmount</td><td>decimal</td><td>Kampanyanın geçerli olması için gereken minimum yatırma tutarı.</td></tr><tr><td>MaximumDepositAmount</td><td>decimal</td><td>Kampanyanın geçerli olacağı maksimum yatırma tutarı.</td></tr><tr><td>BonusType</td><td>string</td><td>Kampanyada tanımlı olan bonus tipi (ör. oran, sabit tutar).</td></tr><tr><td>BonusValue</td><td>decimal</td><td>Verilecek bonusun değeri.</td></tr><tr><td>CampaignType</td><td>string</td><td>Kampanya türü (ör. yeni kullanıcı, genel).</td></tr><tr><td>StartDate</td><td>DateTime</td><td>Kampanyanın başlangıç tarihi.</td></tr><tr><td>EndDate</td><td>DateTime</td><td>Kampanyanın bitiş tarihi.</td></tr></tbody></table>

</details>

{% tabs %}
{% tab title="JSON" %}

```json
{
    "IsSuccess": true,
    "IsFailure": false,
    "Value": {
        "Id": "86f842d6-4846-4e75-bab2-34e3beed6f5b",
        "Name": "External Campaign",
        "Description": "External campaign description",
        "MinimumDepositAmount": 1.00,
        "MaximumDepositAmount": 1000.00,
        "BonusType": "Fixed",
        "BonusValue": 1,
        "CampaignType": "Bonus",
        "StartDate": "2025-09-01",
        "EndDate": "2025-12-31"
    }
}
```

{% endtab %}
{% endtabs %}
