# Product

This article provides comprehensive information and documentation on a set of API methods specifically designed to handle products. By leveraging these methods, users can retrieve, create, update, and search products, allowing for seamless integration and management of product data within the system.

The article includes detailed explanations, parameter descriptions, and usage examples for each API method, empowering developers to effectively utilize the capabilities provided by the product API.

## <mark style="color:red;">Get Products</mark>

Retrieves products from the system. For filtering the results, check the “Product Search” section.

| **Parameter** | **Data Type** | **In** | **Description**                                                                              |
| ------------- | ------------- | ------ | -------------------------------------------------------------------------------------------- |
| api\_token    | string        | header | [The API key of the customer’s account](https://apidocs.akinon.com/omnitron/getting-started) |
| limit         | integer       | query  | Amount of items per page that will be returned                                               |
| page          | string        | query  | Page number to return                                                                        |

{% hint style="warning" %}
If **limit** and **page** parameters are not sent, response returns 10 products by default.
{% endhint %}

#### <mark style="color:red;">**Request GET**</mark>

Retrieves all of the products in the system.

‘content\_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api\_token with login.

‘Accept-language’ header determines translatable fields responses.

**Path:** `products/`

```json

import requests

url = "https://{customer_api_url}/api/i1/products/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
    'content-type': 'application/json',
    'Authorization': 'Token {}'.format(api_token),
    'Accept-language':'en-us'
}

params = {
    'limit': '2',
    'page': '1'
}

response = requests.get(url, headers=headers , params=params)
print(response.text)

```

#### **Response**

Response contains all product data. Resource properties are in Python format.

| **Property**           | **Data Type** | **Description**                                                                                                                                        |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| name                   | string        | Product name                                                                                                                                           |
| base\_code             | dict          | Product base code                                                                                                                                      |
| sku                    | string        | Stock keeping unit                                                                                                                                     |
| product\_type          | enum          | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active             | boolean       | Defines if the product is active or passive                                                                                                            |
| attribute\_set         | id            | ID of the related attribute set                                                                                                                        |
| attributes             | dict          | Attribute list                                                                                                                                         |
| custom\_attribute\_set | integer       | Additional attribute set ID                                                                                                                            |
| attributes\_kwargs     | dict          | Details of the attributes attached to the product                                                                                                      |
| key                    | dict          | Attribute name attached to the product                                                                                                                 |
| value                  | string        | Attribute value attached to the product                                                                                                                |
| data\_type             | string        | Attribute data type attached to the product                                                                                                            |
| label                  | string        | Attribute label attached to the product                                                                                                                |
| extra\_attributes      | dict          | Additional attributes                                                                                                                                  |

“count” shows how many products exist in the system.

“next” shows the next cursor url to retrieve the desired products.

“previous” shows the previous cursor url to retrieve the desired products.

“results” shows every product detail.

```python

{
  "count": 298501,
  "next": "https://{customer_api_url}/api/i1/products/?limit=2&page=2",
  "previous": null,
  "results": [
    {
      "id": 3,
      "name": "Guitar",
      "base_code": "1020583",
      "sku": "1020583031",
      "product_type": "0",
      "is_active": true,
      "custom_attribute_set": 480,
      "attribute_set": 151,
      "attributes": {},
      "attributes_kwargs": {},
      "extra_attributes": {},
    },
    {
      "id": 43,
      "name": "Orchid Flower",
      "base_code": "1184770",
      "sku": "1184770001",
      "product_type": "0",
      "is_active": true,
      "custom_attribute_set": null,
      "attribute_set": 7,
      "attributes": {
        "varyant_size": "36",
        "airway_volume": "1"
      },
      "attributes_kwargs": {
        "varyant_size": {
          "value": "36",
          "data_type": "dropdown",
          "label": "36"
        }
      },
      "extra_attributes": {},
    }
  ]
}

```

## <mark style="color:red;">Get Product Detail</mark>

To be able to retrieve the product details, a user needs to know the SKU of the product.

| **Parameter** | **Data Type** | **In** | **Description**                                                                              |
| ------------- | ------------- | ------ | -------------------------------------------------------------------------------------------- |
| api\_token    | string        | header | [The API key of the customer’s account](https://apidocs.akinon.com/omnitron/getting-started) |
| {"sku"}       | integer       | query  | Product SKU                                                                                  |

#### <mark style="color:red;">**Request GET**</mark>

Retrieves an instance detail of the product.

‘content\_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api\_token with login.

Path:`products/{sku}`

```python

import requests

url = "https://{customer_api_url}/api/i1/products/{sku}"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
    'content-type': 'application/json',
    'Authorization': 'Token {}'.format(api_token)
}

response = requests.get(url, headers=headers)
print(response.text)

```

#### **Response**

Response contains all product details data.

The explanation of the fields in the response body is provided in the table below.

Resource properties are in Python format.

| **Property**           | **Data Type** | **Description**                                                                                                                                        |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| name                   | string        | Product name                                                                                                                                           |
| base\_code             | dict          | Product base code                                                                                                                                      |
| sku                    | string        | Stock keeping unit                                                                                                                                     |
| product\_type          | enum          | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active             | boolean       | Defines if the product is active or passive                                                                                                            |
| attribute\_set         | id            | ID of the related attribute set                                                                                                                        |
| attributes             | dict          | Attribute list                                                                                                                                         |
| custom\_attribute\_set | integer       | Additional attribute set ID                                                                                                                            |
| attributes\_kwargs     | dict          | Details of the attributes attached to the product                                                                                                      |

```json

{
  "id": 49,
  "name": "Orchid Flower 80 x 35 CM",
  "base_code": "1185158",
  "sku": "1185158001",
  "product_type": "0",
  "is_active": true,
  "custom_attribute_set": null,
  "attribute_set": 7,
  "attributes": {
    "erp_ProductDetailName": "Flower",
    "integration_OriginalColor": "Colorless",
    "integration_ProductionPlace": "China",
    "erp_Size": "000",
    "integration_Lenght": "35.0",
    "integration_Description": "<p> </p><p>Width: 35</p><p>Size: 80</p><p>Hight: 0</p><p>Origin: China</p>",
    "color": "colorless",
    "erp_PrimaryColor": "X",
    "integration_SizeHeight": "0.0",
    "size_height": "0.0",
    "erp_SizeWidth": "35.0",
    "erp_SizeHeight": "80.0",
    "erp_Season": "Continuous",
    "integration_Gender": "General",
    "erp_ProductClassName": "PLANT GROUP",
    "erp_Msb": "False",
    "erp_ProductGroupName": "CONCEPT",
    "integration_ModelNo": "None",
    "integration_MainProductType": "0",
    "variant_color": "colorless",
    "erp_ProductionPlace": "China",
    "erp_Description": "<p> </p><p>Width: 35</p><p>Size: 80</p><p>Hight: 0</p><p>Origin: China</p>",
    "size_weight": "0.0",
    "integration_Outlet": "False",
    "erp_ProductSubGroupName": "DECORATIVE",
    "airway_volume": "1",
    "integration_Year": "2017",
    "integration_SizeWeight": "0.0",
    "integration_Size": "000",
    "erp_MainProductType": "0",
    "adjust-attempt": "cms/2020/06/29/2086b0fe-1d47-4647-98f6-dcf886c93efc.jpg",
    "integration_TechnicalDetail": "None",
    "integration_Season": "Continuous",
    "size": "Standart",
    "erp_SizeHeight": "0.0",
    "erp_VariantNo": "1185158-000",
    "erp_SizeWeight": "0.0",
    "size_width": "35.0",
    "integration_ProductSubGroupName": "Flower Group",
    "integration_PrimaryColor": "X",
    "erp_Outlet": "False",
    "integration_ProductDetailName": "POTTED FLOWERS",
    "integration_Msb": "False",
    "integration_ProductSubGroupName": "DECORATIVE",
    "erp_PrimaryColor": "Colorless",
    "integration_SizeHeight": "80.0",
    "size_height": "80.0",
    "erp_ProductSubGroupName": "Flower Group",
    "gender": "General",
    "erp_Gender": "General",
    "integration_Product": "PLANT GROUP",
    "integration_VariantNo": "1185158-000",
    "integration_ProductGroupName": "CONCEPT",
    "erp_Year": "2017"
  },
  "attributes_kwargs": {
    "erp_ProductDetailName": {
      "value": "POTTED FLOWERS",
      "data_type": "dropdown",
      "label": "POTTED FLOWERS"
    },
    "adjust-attempt": {
      "url": "https://akinon.akinoncdn.com/cms/2020/06/29/2086b0fe-1d47-4647-98f6-dcf886c93efc.jpg",
      "value": "cms/2020/06/29/2086b0fe-1d47-4647-98f6-dcf886c93efc.jpg",
      "data_type": "image"
    },
    "erp_Msb": {
      "value": "False",
      "data_type": "dropdown",
      "label": "False"
    },
    "erp_PrimaryColor": {
      "value": "X",
      "data_type": "dropdown",
      "label": "X"
    },
    "erp_Size": {
      "value": "000",
      "data_type": "dropdown",
      "label": "000"
    },
    "erp_MainProductType": {
      "value": "0",
      "data_type": "dropdown",
      "label": "0"
    },
    "color": {
      "value": "COLORLESS",
      "data_type": "dropdown",
      "label": "COLORLESS"
    },
    "variant_color": {
      "value": "COLORLESS",
      "data_type": "dropdown",
      "label": "COLORLESS"
    },
    "size": {
      "value": "Standard",
      "data_type": "dropdown",
      "label": "Standart"
    },
    "erp_ProductionPlace": {
      "value": "CHINA",
      "data_type": "dropdown",
      "label": "CHINA"
    },
    "erp_Outlet": {
      "value": "False",
      "data_type": "dropdown",
      "label": "False"
    },
    "gender": {
      "value": "General",
      "data_type": "dropdown",
      "label": "General"
    },
    "erp_ProductSubClassName": {
      "value": "FLOWER GROUP",
      "data_type": "dropdown",
      "label": "FLOWER GROUP"
    },
    "erp_Gender": {
      "value": "General",
      "data_type": "dropdown",
      "label": "General"
    },
    "erp_ProductClassName": {
      "value": "FLOWER GROUP",
      "data_type": "dropdown",
      "label": "FLOWER GROUP"
    },
    "erp_PrimaryColor": {
      "value": "COLORLESS",
      "data_type": "dropdown",
      "label": "COLORLESS"
    },
    "erp_ProductGroupName": {
      "value": "CONCEPT",
      "data_type": "dropdown",
      "label": "CONCEPT"
    },
    "erp_ProductSubGroupName": {
      "value": "DECORATIVE",
      "data_type": "dropdown",
      "label": "DECORATIVE"
    }
  },
  "extra_attributes": {}
}

```

## <mark style="color:red;">Search Product</mark>

GET request is used to search the products based on the provided parameters. If you don't add parameters for the filter, all products in the system will be returned. The filtering options are listed in the table below.

| **Parameter** | **Data Type** | **In** | **Description**                                                                                                                                        |
| ------------- | ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| api\_token    | string        | header | [The API key of the customer’s account](https://apidocs.akinon.com/omnitron/getting-started)                                                           |
| limit         | integer       | data   | Amount of line items per page that will be returned                                                                                                    |
| page          | integer       | data   | Page number to return                                                                                                                                  |
| name          | string        | data   | Product name                                                                                                                                           |
| product\_type | integer       | data   | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active    | boolean       | body   | True or False                                                                                                                                          |
| sku           | string        | data   | Stock keeping unit                                                                                                                                     |

#### <mark style="color:red;">**Request GET**</mark>

This sample request is for filtering products based on their SKU and name.

‘content\_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api\_token with login.

‘Accept-language’ header determines translatable fields responses.

**Path:** `products/`

```python
import requests

url = "https://{customer_api_url}/api/i1/products/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
    'content-type': 'application/json',
    'Authorization': 'Token {}'.format(api_token),
    'Accept-language':'en-us'
}

params = {
    #'sku':'1020170001'
    'name': 'Sofa'
}

response = requests.get(url, headers=headers , params=params)
print(response.text)
```

#### **Response**

Response contains all product data with search parameters. Response status is expected to be HTTP-200 Successful.

The table below shows the response properties in Python format. Every field has been explained in the description section of the table.

| **Property**           | **Data Type** | **Description**                                                                                                                                        |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| name                   | string        | Product name                                                                                                                                           |
| base\_code             | dict          | Product base code                                                                                                                                      |
| sku                    | string        | Stock keeping unit                                                                                                                                     |
| product\_type          | enum          | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active             | boolean       | Defines if the product is active or passive                                                                                                            |
| attribute\_set         | id            | ID of the related attribute set                                                                                                                        |
| attributes             | dict          | Attribute list                                                                                                                                         |
| custom\_attribute\_set | integer       | Additional attribute set ID                                                                                                                            |
| attributes\_kwargs     | dict          | Details of the attributes attached to the product                                                                                                      |
| key                    | dict          | Attribute name attached to the product                                                                                                                 |
| value                  | string        | Attribute value attached to the product                                                                                                                |
| data\_type             | string        | Attribute data type attached to the product                                                                                                            |
| label                  | string        | Attribute label attached to the product                                                                                                                |
| extra\_attributes      | dict          | Additional attributes                                                                                                                                  |

“count” shows how many products exist in the system.

“next” shows the next cursor url to retrieve the desired products.

“previous” shows the previous cursor url to retrieve the desired products.

“results” shows product’s every detail.

```json

{
  "count": 2,
  "next": "{customer_api_url}/api/i1/products/?name=Sofa&page=2",
  "previous": null,
  "results": [
    {
      "id": 14249,
      "name": "Example SOFA - 121x106 cm",
      "base_code": "1020170",
      "sku": "1020170001",
      "product_type": "0",
      "is_active": true,
      "custom_attribute_set": null,
      "attribute_set": 8,
      "attributes": {
        "erp_DetailName": "SOFA",
        "erp_TechnichDetail": "%100 Ferforje",
        "integration_Origin": "China",
        "erp_Size": "000",
        "integration_Width": "121.0",
        "color": "Colorless",
        "integration_Heighth": "106.0",
        "size_height": "106.0",
        "size_width": "121.0",
        "erp_depth": "48.0",
        "integration_gender": "General",
        "erp_ModelNo": "157A027005",
        "erp_groupname": "CONCEPT",
        "integration_ModelNo": "157A027005",
        "erp_Year": "2007"
      },
      "attributes_kwargs": {
        "erp_MainColor": {
          "value": "X",
          "data_type": "dropdown",
          "label": "X"
        },
        "erp_Size": {
          "value": "000",
          "data_type": "dropdown",
          "label": "000"
        },
        "color": {
          "value": "COLORLESS",
          "data_type": "dropdown",
          "label": "COLORLESS"
        },
        "size": {
          "value": "Standart",
          "data_type": "dropdown",
          "label": "Standart"
        },
        "erp_Origin": {
          "value": "China",
          "data_type": "dropdown",
          "label": "China"
        },
        "gender": {
          "value": "General",
          "data_type": "dropdown",
          "label": "General"
        },
        "erp_groupname": {
          "value": "CONCEPT",
          "data_type": "dropdown",
          "label": "CONCEPT"
        }
      },
      "extra_attributes": {}
    },
    {
      "id": 15081,
      "name": "LOREM SOFA NATUREL 260X126X80CM",
      "base_code": "1021564",
      "sku": "1021564001",
      "product_type": "0",
      "is_active": false,
      "custom_attribute_set": null,
      "attribute_set": 8,
      "attributes": {
        "erp_DetailName": "SOFA",
        "integration_Origin": "VİETNAM",
        "erp_Size": "000",
        "integration_Width": "0.0",
        "color": "Colorless",
        "integration_Heighth": "0.0",
        "size_height": "0.0",
        "size_width": "0.0",
        "size_depth": "0.0",
        "integration_gender": "Genel",
        "erp_ModelNo": "029A028010",
        "erp_MalGrupAdi": "CONCEPT",
        "integration_ModelNo": "029A028010",
        "gender": "General",
        "erp_Cinsiyet": "General",
        "erp_groupname": "CONCEPT",
        "erp_Year": "2008"
      },
      "attributes_kwargs": {
        "erp_Size": {
          "value": "000",
          "data_type": "dropdown",
          "label": "000"
        },
        "color": {
          "value": "COLORLESS",
          "data_type": "dropdown",
          "label": "COLORLESS"
        },
        "size": {
          "value": "Standart",
          "data_type": "dropdown",
          "label": "Standart"
        },
        "erp_Origin": {
          "value": "China",
          "data_type": "dropdown",
          "label": "China"
        },
        "gender": {
          "value": "General",
          "data_type": "dropdown",
          "label": "General"
        },
        "erp_groupname": {
          "value": "CONCEPT",
          "data_type": "dropdown",
          "label": "CONCEPT"
        }
      },
      "extra_attributes": {}
    }
  ]
}

```

## <mark style="color:red;">Create Product</mark>

This service has upsert logic. If a given ‘product\_sku’ exists in the system, the product will be updated with the given parameters. If there is no matching `product_sku`, a new product will be created.

<figure><img src="https://694447771-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVufPVrRNtGmK1TUsnRU3%2Fuploads%2Fn2rkX0qCcbNzB3x8u69S%2Fimage.png?alt=media&#x26;token=2311165e-a94c-48b2-b0e7-fc5a1674e138" alt="" width="303"><figcaption><p>Fig 1: Create Product Decision Flowchart</p></figcaption></figure>

**Note:** Before a product is created, the required attribute values for color and size must be created.

| **Parameter**          | **Data Type** | **In**  | **Required** | **Description**                                                                                                                                                   |
| ---------------------- | ------------- | ------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| api\_token             | string        | header  | YES          | [The API key of the customer’s account](https://apidocs.akinon.com/omnitron/getting-started)                                                                      |
| django\_language       | string        | cookies |              | Language [code](http://www.lingoes.net/en/translator/langcode.htm) for translation                                                                                |
| name                   | string        | body    | YES          | Product name                                                                                                                                                      |
| base\_code             | dict          | body    | YES          | Product base code                                                                                                                                                 |
| sku                    | string        | body    | YES          | Stock keeping unit                                                                                                                                                |
| product\_type          | enum          | body    | YES          | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4)            |
| is\_active             | boolean       | body    |              | Defines if the product is active or passive. If the parameter is False, the product is removed from all sales channels.                                           |
| attribute\_set         | id            | body    | YES          | ID of the related attribute set                                                                                                                                   |
| attributes             | dict          | body    |              | Attribute list                                                                                                                                                    |
| custom\_attribute\_set | integer       | body    |              | Additional attribute set ID                                                                                                                                       |
| attributes\_kwargs     | dict          | body    |              | Details of the attributes attached to the product                                                                                                                 |
| extra\_attributes      | dict          | body    | YES          | This parameter is used neither in the backend (Omnitron) nor on the website. It can be used as an additional attribute note such as attribute ID in the ERP side. |

If Attribute type is ‘text’ or ‘text\_area’ and the attribute will be used in a different language, ‘is\_localizable’ parameter should be *True*. In order to send language translation for an attribute, the `Accept-Language` parameter needs to be added to the header. `Accept-Language` parameter is an optional parameter. If it is not sent, Omnitron's default language will be defined.

**Note:** Before sending language translation for a product, the product must be first created in Omnitron's default language.

#### <mark style="color:red;">**Request POST**</mark>

POST request is used to create a new product.

‘content\_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api\_token with login.

In this example, the product will be created in Turkish ("tr-tr"), which is Omnitron's default language.

**Path:** `products/`

```python

import requests
import json

url = "https://{customer_api_url}/api/i1/products/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
    'content-type': 'application/json',
    'Authorization': 'Token {}'.format(api_token),
}

data = {
    'base_code': '1020583001',
    'sku': '102058302219001',
    'product_type': '0',
    'name': 'Sofa Adi',
    'is_active': True,
    'attribute_set': 644,
    'attributes': {
        'akinon_filterable_size':'L',
        'brand':'Adidas',
        },
    'extra_attributes': {}
}

response = requests.post(url, headers=headers,data=json.dumps(data))
print(response.text)

```

#### **Response**

Returns the created product data. Response status is expected to be HTTP-201 Created.

Resource properties are in Python format.

| **Property**           | **Data Type** | **Description**                                                                                                                                        |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| id                     | int           | Product ID                                                                                                                                             |
| name                   | string        | Product name                                                                                                                                           |
| base\_code             | dict          | Product base code                                                                                                                                      |
| sku                    | string        | Stock keeping unit                                                                                                                                     |
| product\_type          | enum          | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active             | boolean       | Defines whether the product is active or passive                                                                                                       |
| attribute\_set         | id            | ID of the related attribute set                                                                                                                        |
| attributes             | dict          | Attribute list                                                                                                                                         |
| custom\_attribute\_set | integer       | Additional attribute set ID                                                                                                                            |
| attributes\_kwargs     | dict          | Details of the attributes attached to the product                                                                                                      |
| extra\_attributes      | dict          | Additional attributes                                                                                                                                  |

```json

{
  "id": 357467,
  "name": "Sofa Adi",
  "base_code": "1020583001",
  "sku": "102058302219001",
  "product_type": "0",
  "is_active": true,
  "custom_attribute_set": null,
  "attribute_set": 644,
  "attributes": {
    "brand": "Adidas",
    "akinon_filterable_size": "L"
  },
  "attributes_kwargs": {
    "akinon_filterable_size": {
      "value": "L",
      "data_type": "dropdown",
      "label": "L"
    }
  },
  "extra_attributes": {}
}

```

#### <mark style="color:red;">**Request POST**</mark>

POST request is used to create a new product.

‘content\_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api\_token with login.

In this example, the product will be updated with the second language - English ("en-us"), therefore we need to use the `django_language` field or the `Accept-Language` header.

Path: `products/`

```python

import requests
import json

url = "https://{customer_api_url}/api/i1/products/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
    'content-type': 'application/json',
    'Authorization': 'Token {}'.format(api_token),
}

cookies = {
    'django_language':'en-us'
}

data = {
    'base_code': '1020583',
    'sku': '102058302219',
    'product_type': '0',
    'name': 'Sofa EN',
    'is_active': True,
    'attribute_set': 151,
    'language':'en-us',
    'attributes': {
        'color': '0001',
        'description':'cotton sofa',
        'attribute_set': "151",
        'erp_color': "22",
        'erp_define': "single sofa",
        'erp_pattern': "009",
        'erp_brand': "096",
        },
    
    'extra_attributes': {}
}

response = requests.post(url, headers=headers, cookies=cookies , data=json.dumps(data))
print(response.text)

```

#### **Response**

Returns the created product data. Response status is expected to be HTTP-201 Created. Resource properties are in Python format.

| **Property**           | **Data Type** | **Description**                                                                                                                                        |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| id                     | int           | Product ID                                                                                                                                             |
| name                   | string        | Product name                                                                                                                                           |
| base\_code             | dict          | Product base code                                                                                                                                      |
| sku                    | string        | Stock keeping unit                                                                                                                                     |
| product\_type          | enum          | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active             | boolean       | Defines if the product is active or passive                                                                                                            |
| attribute\_set         | id            | ID of the related attribute set                                                                                                                        |
| attributes             | dict          | Attribute list                                                                                                                                         |
| custom\_attribute\_set | integer       | Additional attribute set ID                                                                                                                            |
| attributes\_kwargs     | dict          | Details of the attributes attached to the product                                                                                                      |
| extra\_attributes      | dict          | Additional attributes                                                                                                                                  |

```json

{
  "id": 357170,
  "name": "Sofa EN",
  "base_code": "1020583",
  "sku": "102058302219",
  "product_type": "0",
  "is_active": true,
  "custom_attribute_set": null,
  "attribute_set": 151,
  "attributes": {
    "l_name": "Sofa EN"
  },
  "attributes_kwargs": {},
  "extra_attributes": {}
}

```

### <mark style="color:red;">Language Support</mark>

To create products with translations, you need to add an `Accept-Language` header. The given language in the header determines the translatable fields behavior. ‘Name’ and ‘attributes’ that have `is_localizable` parameter *True* (Check the Attributes section for more info) are translatable. Users can add other language behavior by updating products with a desirable language.

#### <mark style="color:red;">**Request POST**</mark>

Below request creates a product and their translatable fields in the English language.

‘content\_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api\_token with login.

‘Accept-language’ header determines translatable fields responses.

Path:`products/`

```python

import requests
import json

url = "https://{customer_api_url}/api/i1/products/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
    'content-type': 'application/json',
    'Authorization': 'Token {}'.format(api_token)
    'Accept-Language': 'en-us'

}

data = {
    'base_code': '1020583',
    'sku': '1020583099',
    'product_type': '0',
    'name': 'Test Rock Guitar',
    'is_active': True,
    'attribute_set': 151,
    'attributes': {
        'color': 'blue',
    },
    'extra_attributes': {}
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.text)

```

#### **Response**

Response contains all product data. Response status is expected to be HTTP-201 Created.

```json
{
  "id": 357103,
  "name": "Test Rock Guitar",
  "base_code": "1020583",
  "sku": "1020583099",
  "product_type": "0",
  "is_active": true,
  "custom_attribute_set": null,
  "attribute_set": 151,
  "attributes": {},
  "attributes_kwargs": {},
  "extra_attributes": {}
}

```

## <mark style="color:red;">Update Product</mark>

Updates the existing product based on its SKU by setting updated values of the parameters. How to get an SKU and other details are explained under [Search Product](https://apidocs.akinon.com/omnitron/integration/product/broken-reference) section.

| **Property**           | **Data Type** | **In** | **Description**                                                                                                                                        |
| ---------------------- | ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| api\_token             | string        | header | [The API key of the customer’s account](https://apidocs.akinon.com/omnitron/getting-started)                                                           |
| name                   | string        | body   | Product name                                                                                                                                           |
| base\_code             | dict          | body   | Product base code                                                                                                                                      |
| sku                    | string        | body   | Stock keeping unit                                                                                                                                     |
| product\_type          | enum          | body   | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active             | boolean       | body   | Defines if the product is active or passive. If it is passive, the product is removed from all sales channels.                                         |
| attribute\_set         | id            | body   | ID of the related attribute set                                                                                                                        |
| attributes             | dict          | body   | Attribute list                                                                                                                                         |
| custom\_attribute\_set | integer       | body   | Additional attribute set ID                                                                                                                            |
| attributes\_kwargs     | dict          | body   | Details of the attributes attached to the product                                                                                                      |
| extra\_attributes      | dict          | body   | Additional attributes                                                                                                                                  |

#### <mark style="color:red;">**Request POST**</mark>

Sample POST request for updating a product is shown below. It is an update request since the given SKU already exists in the system.

‘content\_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api\_token with login.

Path:`products/`

```python

import requests
import json

url = "https://{customer_api_url}/api/i1/products/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
    'content-type': 'application/json',
    'Authorization': 'Token {}'.format(api_token)
}

data = {
    'base_code': '1020583',
    'sku': '1020583099',
    'product_type': '0',
    'name': 'Test Rock Guitar',
    'is_active': True,
    'attribute_set': 151,
    'attributes': {
        'color': 'blue',
    },
    'extra_attributes': {}
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.text)

```

#### **Response**

Returns the updated product fields. The table below shows the response properties in Python format. Every field has been explained in the description section of the table.

| **Property**           | **Data Type** | **Description**                                                                                                                                        |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| id                     | int           | Product ID                                                                                                                                             |
| name                   | string        | Product name                                                                                                                                           |
| base\_code             | dict          | Product base code                                                                                                                                      |
| sku                    | string        | Stock keeping unit                                                                                                                                     |
| product\_type          | enum          | [Product type](https://docs.akinon.com/technical-guides/omnitron/product-types) (simple: 0, product\_meta: 1, bundle: 2, grouped: 3, miscellaneous: 4) |
| is\_active             | boolean       | Defines if the product is active or passive                                                                                                            |
| attribute\_set         | id            | ID of the related attribute set                                                                                                                        |
| attributes             | dict          | Attribute list                                                                                                                                         |
| custom\_attribute\_set | integer       | Additional attribute set ID                                                                                                                            |
| attributes\_kwargs     | dict          | Details of the attributes attached to the product                                                                                                      |
| extra\_attributes      | dict          | Additional attributes                                                                                                                                  |

```json

{
  "id": 357103,
  "name": "Test Rock Guitar",
  "base_code": "1020583",
  "sku": "1020583099",
  "product_type": "0",
  "is_active": true,
  "custom_attribute_set": null,
  "attribute_set": 151,
  "attributes": {},
  "attributes_kwargs": {},
  "extra_attributes": {}
}

```
