---
title: Kampanyalar
description: İndirim kampanyalarını ve kampanya tekliflerini yönetin.
full: true
---

## Campaign nesnesi [#Campaign]

**`Campaign`** (v1 · v2)

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `applicableCustomerGroupIds` | `[String!]` |  |
| `applicableCustomerIds` | `[String!]` |  |
| `applicableCustomerSegmentIds` | `[String!]` |  |
| `applicablePrice` | `CampaignApplicablePriceEnum!` | Değerler: `DISCOUNT_PRICE`, `SELL_PRICE`. |
| `applyCampaignToProductPrice` | `Boolean` |  |
| `buyXThenGetY` | `BuyXThenGetY` |  |
| `canCombineWithOtherCampaigns` | `Boolean!` |  |
| `couponAutoAddProduct` | `CouponAutoAddProduct` |  |
| `couponPrefix` | `String` |  |
| `couponValidityPeriod` | `Float` |  |
| `createdAt` | `Timestamp` | Kaydın oluşturulma zamanı (milisaniye cinsinden Unix zaman damgası). |
| `createdFor` | `CampaignCreatedForEnum` | Değerler: `ABANDONED_CHECKOUT`, `CART`, `CUSTOMER_REVIEW`, `LOYALTY_SPEND`, `MARKETING_CAMPAIGN`. |
| `currencyCodes` | `[String!]` |  |
| `dateRange` | `CampaignDateRangeField` |  |
| `deleted` | `Boolean!` | Kaydın silinmiş olup olmadığı. |
| `fixedDiscount` | `FixedDiscount` |  |
| `hasCoupon` | `Boolean!` |  |
| `id` | `String!` | Kaydın ID değeri. |
| `includeDiscountedProducts` | `Boolean` |  |
| `isFreeShipping` | `Boolean` |  |
| `onlyUseCustomer` | `Boolean` |  |
| `periodUsageLimits` | `[CampaignPeriodUsageLimit!]` | Giriş yapmış bir müşterinin bu kampanyayı her periyotta kaç kez kullanabileceğini sınırlayan opsiyonel kurallar. Kayan (rolling) kurallar son N UTC gündeki siparişleri, takvim kuralları ise mevcut ISO haftasındaki veya UTC takvim ayındaki siparişleri sayar. Tüm kuralların sağlanması gerekir. Yalnızca bir müşteri ID'si mevcut olduğunda değerlendirilir. |
| `salesChannelIds` | `[String!]` |  |
| `tieredDiscount` | `CampaignTieredDiscount` |  |
| `title` | `String!` |  |
| `translations` | `[CampaignTranslation!]` |  |
| `type` | `CampaignTypeEnum!` | Değerler: `BUY_X_THEN_GET_Y`, `FIXED_AMOUNT`, `FREE_SHIPPING`, `RATIO`. |
| `updatedAt` | `Timestamp` | Kaydın son güncellenme zamanı (milisaniye cinsinden Unix zaman damgası). |
| `usageCount` | `Int!` |  |
| `usageLimit` | `Int` |  |
| `usageLimitPerCustomer` | `Int` |  |
| `version` | `Float` |  |

Örnek (temsili):

```json
{
  "applicableCustomerGroupIds": [
    "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
  ],
  "applicableCustomerIds": [
    "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
  ],
  "applicableCustomerSegmentIds": [
    "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
  ],
  "applicablePrice": "DISCOUNT_PRICE",
  "applyCampaignToProductPrice": true,
  "buyXThenGetY": {
    "buyX": null,
    "getY": null,
    "maxUsagePerOrder": 1
  },
  "canCombineWithOtherCampaigns": true,
  "couponAutoAddProduct": {
    "discountRatio": 1,
    "filter": null,
    "quantity": 1
  },
  "couponPrefix": "string",
  "couponValidityPeriod": 1,
  "createdAt": 1735725600000,
  "createdFor": "ABANDONED_CHECKOUT",
  "currencyCodes": [
    "string"
  ],
  "dateRange": {
    "end": 1735725600000,
    "start": 1735725600000
  },
  "deleted": false,
  "fixedDiscount": {
    "amount": 129.9,
    "filters": null,
    "isApplyByCartAmount": true,
    "lineItemQuantityRange": null,
    "priceRange": null,
    "shouldMatchAllConditions": true
  },
  "hasCoupon": true,
  "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
  "includeDiscountedProducts": true,
  "isFreeShipping": true,
  "onlyUseCustomer": true,
  "periodUsageLimits": [
    {
      "maxUsage": 1,
      "rollingDays": 1,
      "scope": "CALENDAR_MONTH"
    }
  ],
  "salesChannelIds": [
    "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
  ],
  "tieredDiscount": {
    "filters": null,
    "isApplyByCartAmount": true,
    "rules": null,
    "shouldMatchAllConditions": true
  },
  "title": "Örnek",
  "translations": [
    {
      "locale": "tr",
      "title": "Örnek"
    }
  ],
  "type": "BUY_X_THEN_GET_Y",
  "updatedAt": 1735725600000,
  "usageCount": 1,
  "usageLimit": 1,
  "usageLimitPerCustomer": 1,
  "version": 1
}
```

## Kampanyaları listele [#listCampaign]

**`listCampaign`** (query, v1 · v2)

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `canCombineWithOtherCampaigns` | `BooleanFilterInput` |  |
| `dateRangeIsActive` | `CampaignDateRangeIsActiveFilterInput` |  |
| `hasCoupon` | `BooleanFilterInput` |  |
| `id` | `StringFilterInput` | Kaydın ID değeri. |
| `includeDeleted` | `Boolean` | `true` gönderilirse silinmiş kayıtlar da listelenir. |
| `pagination` | `PaginationInput` | Sayfalama ayarları (`page`, `limit`). Bkz. [Sayfalama](/docs/admin-api/pagination-and-filtering). |
| `search` | `String` | Serbest metin araması. |
| `sort` | `String` | Sıralama alanı. Azalan sıralama için başına `-` ekleyin, örneğin `-createdAt`. |
| `type` | `CampaignTypeEnumFilterInput` |  |
| `updatedAt` | `DateFilterInput` | Kaydın son güncellenme zamanı (milisaniye cinsinden Unix zaman damgası). |

Dönen değer: `CampaignPaginationResponse!`

Örnek istek - Kampanyaları listeleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Şu anda tarih aralığı aktif olan yüzde ve tutar indirimli kampanyaları sayfa sayfa çeker. Pazarlama veya raporlama uygulamalarında aktif kampanyaları göstermek için kullanılır.

```graphql
query ListCampaign($dateRangeIsActive: CampaignDateRangeIsActiveFilterInput, $type: CampaignTypeEnumFilterInput, $pagination: PaginationInput) {
  listCampaign(
    dateRangeIsActive: $dateRangeIsActive
    type: $type
    pagination: $pagination
  ) {
    count
    hasNext
    page
    limit
    data {
      id
      title
      type
      hasCoupon
      usageCount
      usageLimit
      fixedDiscount {
        amount
      }
      dateRange {
        start
        end
      }
      updatedAt
    }
  }
}
```

```json
{
  "dateRangeIsActive": {
    "eq": true
  },
  "type": {
    "in": [
      "RATIO",
      "FIXED_AMOUNT"
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 50
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "listCampaign": {
      "count": 1,
      "hasNext": true,
      "page": 1,
      "limit": 50,
      "data": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "title": "Örnek",
          "type": "BUY_X_THEN_GET_Y",
          "hasCoupon": true,
          "usageCount": 1,
          "usageLimit": 1,
          "fixedDiscount": {
            "amount": 129.9
          },
          "dateRange": {
            "start": 1735725600000,
            "end": 1735725600000
          },
          "updatedAt": 1735725600000
        }
      ]
    }
  }
}
```

## Kampanya oluştur [#createCampaign]

**`createCampaign`** (mutation, v2)

Campaign oluşturan mutation.

Yalnızca v2 endpoint'inde: `https://api.myikas.com/api/v2/admin/graphql`

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `input` (zorunlu) | `CreateCampaignInput!` | İşlemin girdi nesnesi. |

Dönen değer: `Campaign!`

Örnek istek - Sepette yüzde indirim kampanyası oluşturma (`POST https://api.myikas.com/api/v2/admin/graphql`):

Belirli bir kategorideki ürünlere sepette %20 indirim uygulayan, tarih aralığı ve İngilizce başlık çevirisi tanımlı bir kampanya oluşturur. `RATIO` tipinde `fixedDiscount.amount` yüzde değeridir (0-100).

```graphql
mutation CreateCampaign($input: CreateCampaignInput!) {
  createCampaign(input: $input) {
    id
    title
    type
    applicablePrice
    hasCoupon
    canCombineWithOtherCampaigns
    fixedDiscount {
      amount
      filters {
        type
        idList
      }
    }
    dateRange {
      start
      end
    }
    createdAt
  }
}
```

```json
{
  "input": {
    "title": "Yaz Koleksiyonunda Sepette %20 İndirim",
    "type": "RATIO",
    "applicablePrice": "DISCOUNT_PRICE",
    "includeDiscountedProducts": true,
    "hasCoupon": false,
    "canCombineWithOtherCampaigns": false,
    "currencyCodes": [
      "TRY"
    ],
    "fixedDiscount": {
      "amount": 20,
      "filters": [
        {
          "type": "CATEGORY",
          "idList": [
            "d42c2c41-6247-4de0-be40-4cdfdf45b19c"
          ]
        }
      ]
    },
    "dateRange": {
      "start": 1795122000000,
      "end": 1796072399000
    },
    "translations": [
      {
        "locale": "en",
        "title": "20% Off Summer Collection in Cart"
      }
    ]
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "createCampaign": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "title": "Örnek",
      "type": "BUY_X_THEN_GET_Y",
      "applicablePrice": "DISCOUNT_PRICE",
      "hasCoupon": true,
      "canCombineWithOtherCampaigns": true,
      "fixedDiscount": {
        "amount": 129.9,
        "filters": [
          {
            "type": "CATEGORY",
            "idList": [
              "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
            ]
          }
        ]
      },
      "dateRange": {
        "start": 1735725600000,
        "end": 1735725600000
      },
      "createdAt": 1735725600000
    }
  }
}
```

Örnek istek - 2 al 1 öde kampanyası oluşturma (`POST https://api.myikas.com/api/v2/admin/graphql`):

`BUY_X_THEN_GET_Y` tipinde, çorap kategorisinden 1 ürün alana aynı kategoriden ikinci ürünü ücretsiz veren bir kampanya oluşturur. `getY.discountRatio: 100` ikinci ürünün tamamen indirimli olduğunu belirtir.

```graphql
mutation CreateCampaign($input: CreateCampaignInput!) {
  createCampaign(input: $input) {
    id
    title
    type
    applicablePrice
    hasCoupon
    canCombineWithOtherCampaigns
    buyXThenGetY {
      maxUsagePerOrder
      buyX {
        amount
        applyByQuantity
      }
      getY {
        amount
        discountRatio
        discountType
      }
    }
  }
}
```

```json
{
  "input": {
    "title": "Çoraplarda 2 Al 1 Öde",
    "type": "BUY_X_THEN_GET_Y",
    "applicablePrice": "SELL_PRICE",
    "hasCoupon": false,
    "canCombineWithOtherCampaigns": false,
    "buyXThenGetY": {
      "maxUsagePerOrder": 3,
      "buyX": {
        "amount": 1,
        "applyByQuantity": true,
        "filter": {
          "type": "CATEGORY",
          "idList": [
            "6f0be89d-e792-4e6d-b58e-67bd41e90a69"
          ]
        }
      },
      "getY": {
        "amount": 1,
        "discountType": "RATIO",
        "discountRatio": 100,
        "filter": {
          "type": "CATEGORY",
          "idList": [
            "6f0be89d-e792-4e6d-b58e-67bd41e90a69"
          ]
        }
      }
    }
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "createCampaign": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "title": "Örnek",
      "type": "BUY_X_THEN_GET_Y",
      "applicablePrice": "DISCOUNT_PRICE",
      "hasCoupon": true,
      "canCombineWithOtherCampaigns": true,
      "buyXThenGetY": {
        "maxUsagePerOrder": 1,
        "buyX": {
          "amount": 129.9,
          "applyByQuantity": true
        },
        "getY": {
          "amount": 129.9,
          "discountRatio": 1,
          "discountType": "AMOUNT"
        }
      }
    }
  }
}
```

Örnek istek - Kuponlu kampanya oluşturma (`POST https://api.myikas.com/api/v2/admin/graphql`):

1.000 TL ve üzeri sepetlerde 150 TL indirim sağlayan, yalnızca kupon koduyla kullanılabilen bir kampanya oluşturur. Kupon kodları daha sonra `addCouponsToCampaign` ile bu kampanyaya eklenir.

```graphql
mutation CreateCampaign($input: CreateCampaignInput!) {
  createCampaign(input: $input) {
    id
    title
    type
    applicablePrice
    hasCoupon
    canCombineWithOtherCampaigns
    usageLimitPerCustomer
    fixedDiscount {
      amount
      isApplyByCartAmount
      priceRange {
        min
      }
    }
  }
}
```

```json
{
  "input": {
    "title": "1.000 TL Üzeri Alışverişe 150 TL Kupon",
    "type": "FIXED_AMOUNT",
    "applicablePrice": "DISCOUNT_PRICE",
    "hasCoupon": true,
    "canCombineWithOtherCampaigns": false,
    "usageLimitPerCustomer": 1,
    "currencyCodes": [
      "TRY"
    ],
    "fixedDiscount": {
      "amount": 150,
      "isApplyByCartAmount": true,
      "priceRange": {
        "min": 1000
      }
    }
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "createCampaign": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "title": "Örnek",
      "type": "BUY_X_THEN_GET_Y",
      "applicablePrice": "DISCOUNT_PRICE",
      "hasCoupon": true,
      "canCombineWithOtherCampaigns": true,
      "usageLimitPerCustomer": 1,
      "fixedDiscount": {
        "amount": 129.9,
        "isApplyByCartAmount": true,
        "priceRange": {
          "min": 1
        }
      }
    }
  }
}
```

## Kampanyayı güncelle [#updateCampaign]

**`updateCampaign`** (mutation, v2)

Campaign güncelleyen mutation.

Yalnızca v2 endpoint'inde: `https://api.myikas.com/api/v2/admin/graphql`

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `input` (zorunlu) | `UpdateCampaignInput!` | İşlemin girdi nesnesi. |

Dönen değer: `Campaign!`

Örnek istek - Kampanya tarihini uzatma (`POST https://api.myikas.com/api/v2/admin/graphql`):

Devam eden bir kampanyanın bitiş tarihini uzatır ve toplam kullanım sınırı ekler. `applicablePrice` ve `canCombineWithOtherCampaigns` güncellemede de zorunludur; değiştirmeyecekseniz mevcut değerleri gönderin.

```graphql
mutation UpdateCampaign($input: UpdateCampaignInput!) {
  updateCampaign(input: $input) {
    id
    title
    usageLimit
    dateRange {
      start
      end
    }
    updatedAt
  }
}
```

```json
{
  "input": {
    "id": "4979b9c9-3357-4326-8ff8-d29ea162d5b4",
    "applicablePrice": "DISCOUNT_PRICE",
    "canCombineWithOtherCampaigns": false,
    "usageLimit": 5000,
    "dateRange": {
      "start": 1795122000000,
      "end": 1796677199000
    }
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "updateCampaign": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "title": "Örnek",
      "usageLimit": 1,
      "dateRange": {
        "start": 1735725600000,
        "end": 1735725600000
      },
      "updatedAt": 1735725600000
    }
  }
}
```

## Kampanya kaydet [#saveCampaign]

**`saveCampaign`** (mutation, v1)

Campaign kaydeden mutation.

Yalnızca v1 endpoint'inde: `https://api.myikas.com/api/v1/admin/graphql`. v2 karşılığı: `createCampaign`, `updateCampaign`.

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `input` (zorunlu) | `CampaignInput!` | İşlemin girdi nesnesi. |

Dönen değer: `Campaign!`

Örnek istek - Müşteri grubuna özel kampanya kaydetme (`POST https://api.myikas.com/api/v1/admin/graphql`):

Yalnızca belirli bir müşteri grubundaki (ör. VIP müşteriler) müşterilerin sepetinde %10 indirim uygulayan bir kampanya kaydeder. `id` gönderilmezse yeni kampanya oluşturulur, gönderilirse mevcut kampanya güncellenir.

```graphql
mutation SaveCampaign($input: CampaignInput!) {
  saveCampaign(input: $input) {
    id
    title
    type
    applicablePrice
    hasCoupon
    canCombineWithOtherCampaigns
    applicableCustomerGroupIds
    fixedDiscount {
      amount
    }
  }
}
```

```json
{
  "input": {
    "title": "VIP Müşterilere Sepette %10 İndirim",
    "type": "RATIO",
    "applicablePrice": "DISCOUNT_PRICE",
    "hasCoupon": false,
    "canCombineWithOtherCampaigns": true,
    "applicableCustomerGroupIds": [
      "1cd8f3e3-5a58-442f-9be4-43caf7051642"
    ],
    "fixedDiscount": {
      "amount": 10
    }
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "saveCampaign": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "title": "Örnek",
      "type": "BUY_X_THEN_GET_Y",
      "applicablePrice": "DISCOUNT_PRICE",
      "hasCoupon": true,
      "canCombineWithOtherCampaigns": true,
      "applicableCustomerGroupIds": [
        "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
      ],
      "fixedDiscount": {
        "amount": 129.9
      }
    }
  }
}
```

## Kampanyaları sil [#deleteCampaignList]

**`deleteCampaignList`** (mutation, v1 · v2)

Campaign silen mutation.

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `idList` (zorunlu) | `[String!]!` | İşlem yapılacak kayıtların ID listesi. |

Dönen değer: `Boolean!`

Örnek istek - Kampanyaları silme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Süresi dolmuş veya artık kullanılmayan kampanyaları ID listesiyle toplu olarak siler.

```graphql
mutation DeleteCampaignList($idList: [String!]!) {
  deleteCampaignList(idList: $idList)
}
```

```json
{
  "idList": [
    "9ffeaf59-a318-4fa4-8318-0ed423836974",
    "ac485512-66d8-461c-b9fa-95cc0309ffc6"
  ]
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "deleteCampaignList": true
  }
}
```

## Kampanya tekliflerini listele [#listCampaignOffer]

**`listCampaignOffer`** (query, v1 · v2)

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `id` | `StringFilterInput` | Kaydın ID değeri. |
| `pagination` | `PaginationInput` | Sayfalama ayarları (`page`, `limit`). Bkz. [Sayfalama](/docs/admin-api/pagination-and-filtering). |
| `search` | `String` | Serbest metin araması. |
| `sort` | `String` | Sıralama alanı. Azalan sıralama için başına `-` ekleyin, örneğin `-createdAt`. |
| `updatedAt` | `DateFilterInput` | Kaydın son güncellenme zamanı (milisaniye cinsinden Unix zaman damgası). |

Dönen değer: `CampaignOfferPaginationResponse!`

Örnek istek - Kampanya tekliflerini listeleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Ürün, ödeme veya ödeme sonrası sayfalarında gösterilen çapraz satış (`CROSS_SELL`) ve üst satış (`UPSELL`) tekliflerini, belirli bir tarihten sonra güncellenenlerle sınırlayarak çeker. Bu operasyon salt okunurdur.

```graphql
query ListCampaignOffer($updatedAt: DateFilterInput, $pagination: PaginationInput) {
  listCampaignOffer(updatedAt: $updatedAt, pagination: $pagination) {
    count
    hasNext
    page
    limit
    data {
      id
      name
      type
      targetPageTypes
      followUpActionType
      startDate
      endDate
      offers {
        productId
        title
        discountType
        discountAmount
        countdownMinutes
      }
      updatedAt
    }
  }
}
```

```json
{
  "updatedAt": {
    "gt": 1790802000000
  },
  "pagination": {
    "page": 1,
    "limit": 50
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "listCampaignOffer": {
      "count": 1,
      "hasNext": true,
      "page": 1,
      "limit": 50,
      "data": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "name": "Örnek",
          "type": "CROSS_SELL",
          "targetPageTypes": [
            "CHECKOUT"
          ],
          "followUpActionType": "DO_NOTHING",
          "startDate": 1735725600000,
          "endDate": 1735725600000,
          "offers": [
            {
              "productId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
              "title": "Örnek",
              "discountType": "AMOUNT",
              "discountAmount": 129.9,
              "countdownMinutes": 1
            }
          ],
          "updatedAt": 1735725600000
        }
      ]
    }
  }
}
```
