---
title: Ürünler
description: Ürünleri ve varyantlarını listeleyin, oluşturun, güncelleyin ve silin.
full: true
---

## Product nesnesi [#Product]

**`Product`** (v1 · v2)

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `attributes` | `[ProductAttributeValue!]` | Ürün özelliklerinin listesi. |
| `baseUnit` | `ProductBaseUnitModel` | Ürünün temel birimi. |
| `brand` | `SimpleProductBrand` | Ürünün markası. |
| `categories` | `[SimpleCategory!]` | Ürünün kategori listesi. |
| `createdAt` | `Timestamp` | Kaydın oluşturulma zamanı (milisaniye cinsinden Unix zaman damgası). |
| `deleted` | `Boolean!` | Kaydın silinmiş olup olmadığı. |
| `description` | `String` | Ürünün açıklaması. |
| `dynamicPriceListIds` | `[String!]` |  |
| `googleTaxonomyId` | `String` |  |
| `id` | `String!` | Kaydın ID değeri. |
| `maxQuantityPerCart` | `Float` | Ürünün sepet başına maksimum satın alınabilir adedi. |
| `metaData` (yalnızca v2) | `SimpleProductMetadata` | Ürünün HTML metadata tanımlayıcısı. |
| `metaData` (yalnızca v1) | `HTMLMetaData` | Ürünün HTML metadata tanımlayıcısı. |
| `name` | `String!` | Ürünün benzersiz tanımlayıcısı. |
| `productOptionSetId` | `String` | Ürünün seçenek seti ID'si. |
| `productVolumeDiscountId` | `String` | Ürünün kademeli indirim ID'si. |
| `salesChannels` | `[ProductSalesChannel!]` | Ürünün gizli satış kanallarının listesi. |
| `shortDescription` | `String` | Ürünün kısa açıklaması. |
| `tags` | `[SimpleProductTag!]` | Ürün etiketlerinin listesi. |
| `totalStock` | `Float` |  |
| `translations` | `[ProductTranslation!]` | Ürünün çevirileri. |
| `type` | `ProductTypeEnum!` | Ürünün tipi. Değerler: `BUNDLE`, `DIGITAL`, `MEMBERSHIP`, `PHYSICAL`, `SUBSCRIPTION`. |
| `updatedAt` | `Timestamp` | Kaydın son güncellenme zamanı (milisaniye cinsinden Unix zaman damgası). |
| `variants` (yalnızca v2) | `[SimpleProductVariant!]!` | Ürün varyantlarının listesi. |
| `variants` (yalnızca v1) | `[Variant!]!` | Ürün varyantlarının listesi. |
| `vendor` (yalnızca v2) | `SimpleProductVendor` | Ürünün markası. |
| `weight` | `Float` | Ürünün ağırlığı. |
| `brandId` (yalnızca v1) | `String` | Ürünün marka ID'si. |
| `categoryIds` (yalnızca v1) | `[String!]` | Ürünün kategori ID'lerinin listesi. |
| `groupVariantsByVariantTypeId` (yalnızca v1) | `String` | Varyantları belirli bir varyant tipine göre gruplamak için kullanılan varyant tipi ID'si. |
| `hiddenSalesChannelIds` (yalnızca v1) | `[String!]` | Ürünün gizli olduğu satış kanalı ID'lerinin listesi. |
| `productVariantTypes` (yalnızca v1) | `[ProductVariantType!]` | Ürünün varyant tipleri. |
| `releaseDate` (yalnızca v1) | `Timestamp` | Ürünleri belirli bir tarihe göre sıralamak için kullanılan yayın tarihi alanı |
| `salesChannelIds` (yalnızca v1) | `[String!]` | Ürünün satış kanalı ID'lerinin listesi. |
| `subscriptionPlanId` (yalnızca v1) | `String` | Ürünün abonelik planı ID'si |
| `tagIds` (yalnızca v1) | `[String!]` | Ürün etiketi ID'lerinin listesi. |
| `vendorId` (yalnızca v1) | `String` | Ürünün tedarikçi ID'si. |

Örnek (temsili):

```json
{
  "attributes": [
    {
      "imageIds": [
        "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
      ],
      "productAttributeId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "productAttributeOptionId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "value": "string"
    }
  ],
  "baseUnit": {
    "baseAmount": 129.9,
    "type": "CENTILITER",
    "unitId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
  },
  "brand": {
    "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
    "name": "Örnek"
  },
  "categories": [
    {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek"
    }
  ],
  "createdAt": 1735725600000,
  "deleted": false,
  "description": "Örnek açıklama",
  "dynamicPriceListIds": [
    "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
  ],
  "googleTaxonomyId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
  "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
  "maxQuantityPerCart": 1,
  "metaData": {
    "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
    "slug": "ornek-urun"
  },
  "name": "Örnek",
  "productOptionSetId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
  "productVolumeDiscountId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
  "salesChannels": [
    {
      "firsatListingStatus": "APPROVED",
      "firsatProductId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "maxQuantityPerCart": 1,
      "minQuantityPerCart": 1,
      "productVolumeDiscountId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "quantitySettings": [
        1
      ],
      "rejectionReason": "string",
      "status": "HIDDEN",
      "statusUpdatedAt": 1735725600000
    }
  ],
  "shortDescription": "Örnek açıklama",
  "tags": [
    {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek"
    }
  ],
  "totalStock": 129.9,
  "translations": [
    {
      "description": "Örnek açıklama",
      "locale": "tr",
      "name": "Örnek"
    }
  ],
  "type": "BUNDLE",
  "updatedAt": 1735725600000,
  "variants": [
    {
      "attributes": null,
      "barcodeList": [
        "string"
      ],
      "bundleSettings": null,
      "createdAt": 1735725600000,
      "deleted": false,
      "hsCode": "string",
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "images": null,
      "isActive": true,
      "prices": null,
      "sellIfOutOfStock": true,
      "sku": "SKU-0001",
      "stocks": null,
      "unit": null,
      "updatedAt": 1735725600000,
      "variantValues": null,
      "weight": 1
    }
  ],
  "vendor": {
    "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
    "name": "Örnek"
  },
  "weight": 1
}
```

## Ürünleri listele [#listProduct]

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

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `attributeId` | `ProductAttributeFilterInput` |  |
| `barcodeList` | `StringFilterInput` | Ürünün barkod listesi. |
| `brandId` | `StringFilterInput` |  |
| `bundleProductsProductId` | `StringFilterInput` |  |
| `categoryIds` | `CategoryFilterInput` |  |
| `id` | `StringFilterInput` | Kaydın ID değeri. |
| `pagination` | `PaginationInput` | Yanıt olarak dönen verilerde sayfalama özelliğiyle verileri filtreleyip istediğiniz bölümü görüntüleyebilirsiniz. |
| `salesChannelIds` | `SalesChannelFilterInput` |  |
| `search` | `String` | Serbest metin araması. |
| `sku` | `StringFilterInput` | Ürünün SKU'su. |
| `sort` | `String` | Sıralama alanı. Azalan sıralama için başına `-` ekleyin, örneğin `-createdAt`. |
| `stockLocationId` (yalnızca v2) | `StringFilterInput` |  |
| `tagIds` | `StringFilterInput` |  |
| `totalStock` (yalnızca v2) | `NumberFilterInput` |  |
| `variantTypeId` | `StringFilterInput` |  |
| `vendorId` | `StringFilterInput` |  |
| `includeDeleted` (yalnızca v1) | `Boolean` | `true` gönderilirse silinmiş kayıtlar da listelenir. |
| `name` (yalnızca v1) | `StringFilterInput` |  |
| `variantStockLocationId` (yalnızca v1) | `StringFilterInput` |  |

Dönen değer: `ProductPaginationResponse!`

Örnek istek - Ürün Listeleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Sistemdeki tüm ürünleri bu query sayesinde çekebilirsiniz.

[https://api.myikas.com/api/v2/admin/graphql](https://api.myikas.com/api/v2/admin/graphql) adresinden verebileceğiniz filtreleri görebilirsiniz.

```graphql
query ListProduct($pagination: PaginationInput) {
  listProduct(pagination: $pagination) {
    count
    hasNext
    limit
    page
    data {
      createdAt
      deleted
      description
      dynamicPriceListIds
      id
      name
      type
      updatedAt
    }
  }
}
```

```json
{
  "pagination": {
    "limit": 20,
    "page": 1
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "listProduct": {
      "count": 1,
      "hasNext": true,
      "limit": 50,
      "page": 1,
      "data": [
        {
          "createdAt": 1735725600000,
          "deleted": false,
          "description": "Örnek açıklama",
          "dynamicPriceListIds": [
            "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21"
          ],
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "name": "Örnek",
          "type": "BUNDLE",
          "updatedAt": 1735725600000
        }
      ]
    }
  }
}
```

Örnek istek - Ürünleri listeleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

```graphql
{
  listProduct {
    data {
      id
      name
      createdAt
    }
  }
}
```

Örnek yanıt:

```json
{
  "data": {
    "listProduct": {
      "data": [
        {
          "id": "8cf68e80-82ac-437f-9dd5-dc88cfef8293",
          "name": "Product name",
          "createdAt": 1634019877744
        }
      ]
    }
  }
}
```

## Ürünlerde ara [#searchProducts]

**`searchProducts`** (query, v1)

Ürünlerde metin, barkod, SKU veya ürün ID listesiyle arama yapmak için bu query'yi kullanın.

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

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `input` (zorunlu) | `SearchInput!` | Ürün araması için input verisi |

Dönen değer: `ProductSearchResponse!`

Örnek istek - SKU listesiyle ürün arama (`POST https://api.myikas.com/api/v1/admin/graphql`):

ERP veya pazaryeri entegrasyonunda, elinizdeki SKU'ların ikas'taki ürün ve varyant ID'lerini, fiyatlarını ve stoklarını tek sorguda bulmak için kullanılır.

```graphql
query SearchProducts($input: SearchInput!) {
  searchProducts(input: $input) {
    count
    totalCount
    page
    limit
    data {
      id
      name
      variants {
        id
        sku
        isActive
        prices {
          sellPrice
          discountPrice
          currency
        }
        stocks {
          stockLocationId
          stockCount
        }
      }
    }
  }
}
```

```json
{
  "input": {
    "skuList": [
      "KT-TSH-OVR-S",
      "KT-TSH-OVR-M",
      "KT-GML-KTN-STD"
    ],
    "pagination": {
      "page": 1,
      "limit": 50
    }
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "searchProducts": {
      "count": 1,
      "totalCount": 129.9,
      "page": 1,
      "limit": 1,
      "data": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "name": "Örnek",
          "variants": [
            {
              "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
              "sku": "SKU-0001",
              "isActive": true,
              "prices": [
                {
                  "sellPrice": 129.9,
                  "discountPrice": 129.9,
                  "currency": "TRY"
                }
              ],
              "stocks": [
                {
                  "stockLocationId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
                  "stockCount": 1
                }
              ]
            }
          ]
        }
      ]
    }
  }
}
```

## Ürün oluştur [#createProduct]

**`createProduct`** (mutation, v2)

Product oluşturan mutation.

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

Parametreler:

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

Dönen değer: `Product!`

Örnek istek - Basit ürün oluşturma (`POST https://api.myikas.com/api/v2/admin/graphql`):

Tek varyantlı bir ürünü fiyatı, görseli, markası ve kategorisiyle oluşturur. Marka ve kategori adla gönderilir; mağazada yoksa otomatik olarak oluşturulur. Her ürün en az bir varyant içermelidir.

```graphql
mutation CreateProduct($input: CreateProductInput!) {
  createProduct(input: $input) {
    id
    name
    type
    brand {
      id
      name
    }
    categories {
      id
      name
    }
    variants {
      id
      sku
      isActive
      prices {
        sellPrice
        discountPrice
      }
    }
    createdAt
  }
}
```

```json
{
  "input": {
    "name": "Pamuklu Basic Tişört",
    "type": "PHYSICAL",
    "description": "<p>%100 pamuklu, bisiklet yaka basic tişört.</p>",
    "brand": {
      "name": "Kuzey Tekstil"
    },
    "categories": [
      {
        "name": "Tişört",
        "path": [
          "Kadın"
        ]
      }
    ],
    "metaData": {
      "slug": "pamuklu-basic-tisort"
    },
    "variants": [
      {
        "sku": "KT-TSH-BSC-STD",
        "barcodeList": [
          "8690000000042"
        ],
        "isActive": true,
        "prices": [
          {
            "sellPrice": 349.9,
            "buyPrice": 140
          }
        ],
        "images": [
          {
            "imageUrl": "https://ornek-magaza.com/gorseller/pamuklu-basic-tisort.jpg",
            "isMain": true,
            "order": 1
          }
        ]
      }
    ]
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "createProduct": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek",
      "type": "BUNDLE",
      "brand": {
        "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
        "name": "Örnek"
      },
      "categories": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "name": "Örnek"
        }
      ],
      "variants": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "sku": "SKU-0001",
          "isActive": true,
          "prices": [
            {
              "sellPrice": 129.9,
              "discountPrice": 129.9
            }
          ]
        }
      ],
      "createdAt": 1735725600000
    }
  }
}
```

Örnek istek - Varyantlı ürün oluşturma (`POST https://api.myikas.com/api/v2/admin/graphql`):

```graphql
mutation CreateProduct($input: CreateProductInput!) {
  createProduct(input: $input) {
    id
    name
    type
    variants {
      id
      sku
      variantValues {
        variantTypeName
        variantValueName
      }
      prices {
        sellPrice
      }
    }
    createdAt
  }
}
```

```json
{
  "input": {
    "name": "Pamuklu Oversize Tişört",
    "type": "PHYSICAL",
    "brand": {
      "name": "Kuzey Tekstil"
    },
    "variants": [
      {
        "sku": "KT-TSH-OVR-S",
        "isActive": true,
        "prices": [
          {
            "sellPrice": 549.9
          }
        ],
        "variantValues": [
          {
            "variantTypeName": "Beden",
            "variantValueName": "S"
          }
        ]
      },
      {
        "sku": "KT-TSH-OVR-M",
        "isActive": true,
        "prices": [
          {
            "sellPrice": 549.9
          }
        ],
        "variantValues": [
          {
            "variantTypeName": "Beden",
            "variantValueName": "M"
          }
        ]
      }
    ]
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "createProduct": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek",
      "type": "BUNDLE",
      "variants": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "sku": "SKU-0001",
          "variantValues": [
            {
              "variantTypeName": "Örnek",
              "variantValueName": "Örnek"
            }
          ],
          "prices": [
            {
              "sellPrice": 129.9
            }
          ]
        }
      ],
      "createdAt": 1735725600000
    }
  }
}
```

## Ürünü güncelle [#updateProduct]

**`updateProduct`** (mutation, v2)

Product güncelleyen mutation.

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

Parametreler:

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

Dönen değer: `Product!`

Örnek istek - Ürün bilgilerini güncelleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Ürünün yalnızca gönderilen alanlarını günceller; gönderilmeyen alanlar mevcut değerlerini korur. Varyant alanlarını güncellemek için `variants` içinde varyantın `id` değeri de gönderilmelidir.

```graphql
mutation UpdateProduct($input: UpdateProductInput!) {
  updateProduct(input: $input) {
    id
    name
    description
    updatedAt
  }
}
```

```json
{
  "input": {
    "id": "bdc9c8ca-c2dd-494a-a092-2c68bcef4463",
    "name": "Pamuklu Oversize Tişört - Yeni Sezon",
    "description": "<p>%100 organik pamuktan üretilen, düşük omuzlu oversize tişört.</p><ul><li>Makinede 30 derecede yıkanabilir.</li></ul>"
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "updateProduct": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek",
      "description": "Örnek açıklama",
      "updatedAt": 1735725600000
    }
  }
}
```

## Ürün kaydet [#saveProduct]

**`saveProduct`** (mutation, v1)

Sağlanan input değerleriyle ürün oluşturmak veya güncellemek için bu mutation'ı kullanın.

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

Parametreler:

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

Dönen değer: `Product!`

Örnek istek - Ürün kaydetme (`POST https://api.myikas.com/api/v1/admin/graphql`):

v1 endpoint'inde tek varyantlı bir ürünü marka ve kategori ID'leriyle oluşturur. `id` gönderildiğinde aynı mutation mevcut ürünü günceller; yeni entegrasyonlarda v2 `createProduct` ve `updateProduct` tercih edilmelidir.

```graphql
mutation SaveProduct($input: ProductInput!) {
  saveProduct(input: $input) {
    id
    name
    type
    brand {
      id
      name
    }
    categories {
      id
      name
    }
    variants {
      id
      sku
      isActive
      prices {
        sellPrice
        discountPrice
      }
    }
    createdAt
  }
}
```

```json
{
  "input": {
    "name": "Keten Gömlek",
    "type": "PHYSICAL",
    "description": "<p>Nefes alan keten kumaştan, düz kesim kısa kollu gömlek.</p>",
    "brandId": "fd4a80a0-326a-4575-b78a-fc9b93013a00",
    "categoryIds": [
      "bc86a889-3f05-4ec3-8bef-efc10766df3d"
    ],
    "variants": [
      {
        "sku": "KT-GML-KTN-STD",
        "barcodeList": [
          "8690000000035"
        ],
        "isActive": true,
        "prices": [
          {
            "sellPrice": 899.9,
            "buyPrice": 360
          }
        ]
      }
    ]
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "saveProduct": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek",
      "type": "BUNDLE",
      "brand": {
        "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
        "name": "Örnek"
      },
      "categories": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "name": "Örnek"
        }
      ],
      "variants": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "sku": "SKU-0001",
          "isActive": true,
          "prices": [
            {
              "sellPrice": 129.9,
              "discountPrice": 129.9
            }
          ]
        }
      ],
      "createdAt": 1735725600000
    }
  }
}
```

## Ürünleri toplu güncelle [#bulkUpdateProducts]

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

Birden fazla ürünü tek istekte oluşturmak veya güncellemek için bu mutation'ı kullanın. İşlem arka planda yürür; dönen değer içe aktarma işinin ID'sidir ve durumu [`getImportJobData`](/docs/admin-api/imports#getImportJobData) ile sorgulanır.

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `input` (zorunlu) | `[BulkUpdateProductsInput!]!` | Ürünleri toplu güncellemek için input. |

Dönen değer: `String!`

Örnek istek - Ürünleri toplu güncelleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

ERP veya PIM sisteminden gelen ürün kartlarını tek istekte ikas'a aktarmak için kullanılır. İşlem arka planda bir içe aktarma işi olarak çalışır ve yanıt olarak bu işin ID'si döner.

```graphql
mutation BulkUpdateProducts($input: [BulkUpdateProductsInput!]!) {
  bulkUpdateProducts(input: $input)
}
```

```json
{
  "input": [
    {
      "id": "bdc9c8ca-c2dd-494a-a092-2c68bcef4463",
      "name": "Pamuklu Oversize Tişört",
      "type": "PHYSICAL",
      "deleted": false,
      "description": "<p>%100 pamuklu, rahat kesim oversize tişört.</p>",
      "brand": {
        "name": "Kuzey Tekstil"
      },
      "categories": [
        {
          "name": [
            "Kadın",
            "Tişört"
          ]
        }
      ],
      "tags": [
        {
          "name": "Yeni Sezon"
        }
      ],
      "productVariantTypes": [
        {
          "order": 0,
          "variantTypeName": "Beden",
          "variantValues": [
            {
              "name": "S"
            },
            {
              "name": "M"
            }
          ]
        }
      ],
      "variants": [
        {
          "id": "7ef2034a-5000-4e05-994a-a22d8c6520dc",
          "sku": "KT-TSH-OVR-S",
          "barcodeList": [
            "8690000000011"
          ],
          "isActive": true,
          "deleted": false,
          "prices": [
            {
              "sellPrice": 549.9,
              "discountPrice": 449.9,
              "buyPrice": 210
            }
          ],
          "stocks": [
            {
              "stockLocationId": "a19251e4-4edd-4005-9e93-15b4de91dcfb",
              "stockCount": 42
            }
          ],
          "variantValues": [
            {
              "variantTypeName": "Beden",
              "variantValueName": "S"
            }
          ]
        },
        {
          "id": "25a3a3d8-6d53-4284-9c1a-87860fce34e6",
          "sku": "KT-TSH-OVR-M",
          "barcodeList": [
            "8690000000028"
          ],
          "isActive": true,
          "deleted": false,
          "prices": [
            {
              "sellPrice": 549.9,
              "discountPrice": 449.9,
              "buyPrice": 210
            }
          ],
          "stocks": [
            {
              "stockLocationId": "a19251e4-4edd-4005-9e93-15b4de91dcfb",
              "stockCount": 35
            }
          ],
          "variantValues": [
            {
              "variantTypeName": "Beden",
              "variantValueName": "M"
            }
          ]
        }
      ]
    }
  ]
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "bulkUpdateProducts": "string"
  }
}
```

## Ürünleri sil [#deleteProductList]

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

Product 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 - Ürünleri silme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Satıştan tamamen kaldırılan ürünleri ID listesiyle tek seferde silmek için kullanılır.

```graphql
mutation DeleteProductList($idList: [String!]!) {
  deleteProductList(idList: $idList)
}
```

```json
{
  "idList": [
    "2d1e4631-be21-4f75-af18-bd69e866ac81",
    "983ce5cb-3f36-4783-9721-b9040facd2de"
  ]
}
```

Örnek yanıt (temsili):

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

## Ürüne varyant ekle [#addVariantToProduct]

**`addVariantToProduct`** (mutation, v2)

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

Parametreler:

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

Dönen değer: `Product!`

Örnek istek - Ürüne yeni varyant ekleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Mevcut bir ürüne yeni bir beden seçeneğini fiyatı ve barkoduyla birlikte eklemek için kullanılır.

```graphql
mutation AddVariantToProduct($input: AddVariantToProductInput!) {
  addVariantToProduct(input: $input) {
    id
    name
    variants {
      id
      sku
      isActive
      variantValues {
        variantTypeName
        variantValueName
      }
      prices {
        sellPrice
      }
    }
    updatedAt
  }
}
```

```json
{
  "input": {
    "productId": "bdc9c8ca-c2dd-494a-a092-2c68bcef4463",
    "variant": {
      "sku": "KT-TSH-OVR-XL",
      "barcodeList": [
        "8690000000059"
      ],
      "isActive": true,
      "prices": [
        {
          "sellPrice": 549.9,
          "buyPrice": 210
        }
      ],
      "variantValues": [
        {
          "variantTypeName": "Beden",
          "variantValueName": "XL"
        }
      ]
    }
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "addVariantToProduct": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek",
      "variants": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "sku": "SKU-0001",
          "isActive": true,
          "variantValues": [
            {
              "variantTypeName": "Örnek",
              "variantValueName": "Örnek"
            }
          ],
          "prices": [
            {
              "sellPrice": 129.9
            }
          ]
        }
      ],
      "updatedAt": 1735725600000
    }
  }
}
```

## Üründen varyant kaldır [#removeVariantFromProduct]

**`removeVariantFromProduct`** (mutation, v2)

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

Parametreler:

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

Dönen değer: `Boolean!`

Örnek istek - Üründen varyant kaldırma (`POST https://api.myikas.com/api/v2/admin/graphql`):

Üretimi biten bir bedeni veya rengi ürünün diğer varyantlarına dokunmadan kaldırmak için kullanılır.

```graphql
mutation RemoveVariantFromProduct($input: RemoveVariantFromProductInput!) {
  removeVariantFromProduct(input: $input)
}
```

```json
{
  "input": {
    "productId": "bdc9c8ca-c2dd-494a-a092-2c68bcef4463",
    "variantId": "2f93de0b-7b5d-481f-bdad-8b985e48e66a"
  }
}
```

Örnek yanıt (temsili):

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

## Ürünün satış kanalı durumunu güncelle [#updateProductSalesChannelStatus]

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

Ürünlerin satış kanallarındaki durumunu güncellemek için bu mutation'ı kullanın. v2'de her ürün için `VISIBLE`, `PASSIVE` veya `HIDDEN` durumu gönderilir; v1'de `active` ile aktif/pasif seçilir.

Parametreler:

| Alan | Tip | Açıklama |
| --- | --- | --- |
| `input` (zorunlu, yalnızca v2) | `UpdateSalesChannelStatusInput!` | Ürünün satış kanalı listesini güncellemek için input. |
| `input` (zorunlu, yalnızca v1) | `[UpdateProductSalesChannelStatusInput!]!` | Ürünün satış kanalı listesini güncellemek için input. |
| `salesChannelId` (yalnızca v1) | `String` | Güncellenecek satış kanalının ID'si. |

Dönen değer: `UpdateProductSalesChannelStatusResponse!` (v1: `Boolean!`)

Örnek istek - Ürün satış kanalını güncelleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

```graphql
mutation UpdateProductSalesChannelStatus($input: UpdateSalesChannelStatusInput!) {
  updateProductSalesChannelStatus(input: $input) {
    errors {
      errorCode
      inputArrayIndex
      inputData {
        productId
        status
      }
    }
  }
}
```

```json
{
  "input": {
    "salesChannelId": "2f58fbd3-f122-4b59-b287-f95789c4c68a",
    "data": [
      {
        "productId": "bdc9c8ca-c2dd-494a-a092-2c68bcef4463",
        "status": "VISIBLE"
      },
      {
        "productId": "d76ed9ad-10db-442b-8684-ce2925b6138d",
        "status": "HIDDEN"
      }
    ]
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "updateProductSalesChannelStatus": {
      "errors": [
        {
          "errorCode": "string",
          "inputArrayIndex": 1,
          "inputData": {
            "productId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
            "status": "HIDDEN"
          }
        }
      ]
    }
  }
}
```

## Ürün ve varyant özelliklerini güncelle [#updateProductAndVariantAttributes]

**`updateProductAndVariantAttributes`** (mutation, v2)

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

Parametreler:

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

Dönen değer: `Product!`

Örnek istek - Ürün ve varyant özelliklerini güncelleme (`POST https://api.myikas.com/api/v2/admin/graphql`):

Ürünün genel özelliklerini (kumaş, kalıp) ve varyanta özel özellikleri (beden ölçüleri) tek istekte güncellemek için kullanılır. Özellik ID'leri ürün özellikleri sayfasındaki sorgularla alınır.

```graphql
mutation UpdateProductAndVariantAttributes($input: UpdateProductAndVariantAttributesInput!) {
  updateProductAndVariantAttributes(input: $input) {
    id
    name
    attributes {
      productAttributeId
      productAttributeOptionId
      value
    }
    variants {
      id
      sku
      attributes {
        productAttributeId
        value
      }
    }
  }
}
```

```json
{
  "input": {
    "productId": "bdc9c8ca-c2dd-494a-a092-2c68bcef4463",
    "productAttributes": [
      {
        "productAttributeId": "52b651c6-35cb-4589-820d-6fad4f31ff54",
        "value": "%100 pamuk"
      },
      {
        "productAttributeId": "a64eccb6-727e-45ca-ac62-5cf92ea7b88d",
        "productAttributeOptionIds": [
          "19f448a2-fac7-4e23-975a-51d47e93a985"
        ]
      }
    ],
    "variantAttributes": [
      {
        "variantId": "7ef2034a-5000-4e05-994a-a22d8c6520dc",
        "attributes": [
          {
            "productAttributeId": "864127c8-b54b-452f-b18c-f1c5dc7fca4d",
            "value": "Göğüs 104 cm, boy 70 cm"
          }
        ]
      },
      {
        "variantId": "25a3a3d8-6d53-4284-9c1a-87860fce34e6",
        "attributes": [
          {
            "productAttributeId": "864127c8-b54b-452f-b18c-f1c5dc7fca4d",
            "value": "Göğüs 110 cm, boy 72 cm"
          }
        ]
      }
    ]
  }
}
```

Örnek yanıt (temsili):

```json
{
  "data": {
    "updateProductAndVariantAttributes": {
      "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
      "name": "Örnek",
      "attributes": [
        {
          "productAttributeId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "productAttributeOptionId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "value": "string"
        }
      ],
      "variants": [
        {
          "id": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
          "sku": "SKU-0001",
          "attributes": [
            {
              "productAttributeId": "0f9d2c3e-6b1a-4c7e-9a52-3d8e1f4b7c21",
              "value": "string"
            }
          ]
        }
      ]
    }
  }
}
```
