Skip to main content

Price List

This article provides comprehensive information and documentation on a set of API methods specifically designed to handle price lists. By leveraging these methods, users can retrieve, search, and create price lists, allowing for seamless integration and management of price list 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 price list API.

Get Price List

PriceList is used to connect ProductPrice objects with catalog. Therefore, a catalog can have prices for its catalog items with this relation. PriceList and Catalog objects have OneToMany relationship. This means a PriceList can have relation with more than one catalog, while one catalog can only have one PriceList relation. However, with a new implementation for some clients, a PriceList can connect to the extra_price_lists field on a catalog object. Therefore, a catalog may also have more than one PriceList. This feature is for clients that want to have multiple price options for their different retail stores.

ParameterData TypeInDescription
api_tokenstringheaderThe API key of the customer account
namestringqueryPrice list name
limitintegerqueryAmount of line items per page that will be returned
pagestringqueryPage number to return

Note: If limit and page parameters are not sent, response returns 10 product prices by default.

Request GET

GET request is used for reading current price lists from Omnitron (both i1 and v1 can be used). This request is expected to return all price lists data according to page and limit parameters.

‘content_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api_token with login.

Path: price_list/


import requests

url = "https://{customer_api_url}/api/v1/price_list/"
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 price list data with given parameters (if exist) and with pagination. Response status is expected to be HTTP-200 Successful. Only ‘v1’ contains ‘created_date’ and ‘modified_date’ fields.

Resource properties are in Python format.

PropertyData TypeDescription
namestringList name
codestringThe list ID in ERP
is_auto_syncbooleanSpecifies whether the list will have synchronization with ERP. If the parameter is True, the list will be automatically updated by ERP.
currencystring enumCurrency of the price list
modified_datedatetimeLast modified date of the price list
created_datedatetimeShows the date when the price list was created

“count” shows how many price lists exist in the system.

“next” shows the next cursor url to retrieve the desired price list.

“previous” shows the previous page url to retrieve the desired price list.

“results” shows every price list property with detailed field descriptions for the current page.


{
"count": 3,
"next": "https://{customer_api_url}/api/v1/price_list/?page=2",
"previous": null,
"results": [
{
"pk": 1,
"name": "Demo Price List",
"code": null,
"is_auto_sync": false,
"currency": "try",
"modified_date": "2022-03-02T09:20:07.171465Z",
"created_date": "2022-03-02T09:20:07.171453Z"
},
{
"pk": 2,
"name": "Sync Price List",
"code": "112",
"is_auto_sync": true,
"currency": "try",
"modified_date": "2022-03-02T09:20:07.171465Z",
"created_date": "2022-03-02T09:20:07.171453Z"
},
{
"pk": 3,
"name": "Shop Price List",
"code": null,
"is_auto_sync": false,
"currency": "try",
"modified_date": "2022-03-02T09:20:07.171465Z",
"created_date": "2022-03-02T09:20:07.171453Z"
}
]
}

Search Price List

GET requests can be filtered with parameters. price_list endpoint gives the opportunity to make their GET request filtered according to PriceList fields.

ParameterData TypeInDescription
api_tokenstringheaderThe API key of the customer account
namestringqueryPrice list's name
limitintegerqueryAmount of items per page that will be returned
pagestringqueryPage number to return

Note: If limit and page parameters are not sent, response returns 10 product prices by default.

Request GET

Standard GET request with parameters (both i1 and v1 can be used). Parameters are used to get PriceLists with conditions.

Example: params = {'name': 'price'} is expected to return price lists with names containing ‘price’.

‘code’, ‘is_auto_sync’ and ‘created_date’ parameters can also be added.

Example:

{
`name’: ‘price’,
‘is_auto_sync’: True,
‘code’: ‘default’,
‘created_date__date__gte’:2022-01-01
}

Note:

['gt', 'gte', 'lt', 'lte', 'dategt', 'dategte', 'datelt', 'datelte'] lookup keys can be used for created_date field. code__exact parameter can be used to get an exact match for the code field.

‘content_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api_token with login.

Path: price_list/


import requests

url = "https://{customer_api_url}/api/v1/price_list/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

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

params = {
'name': 'price'
}

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

Response

Response contains all price list data with search parameters and with pagination. Response status is expected to be HTTP-200 Successful.

Only ‘v1’ contains ‘created_date’ and ‘modified_date’ fields.

Resource properties are in Python format.

PropertyData TypeDescription
namestringList name
codestringThe list ID in ERP
is_auto_syncbooleanSpecifies whether the list will have synchronization with ERP. If the parameter is True, the list will be automatically updated by ERP.
currencyEnumFieldCurrency of the price list
modified_datedatetimeLast modified date of the price list
created_datedatetimeShows the date when the price list was created

“count” shows how many price lists exist in the system.

“next” shows the next page url to retrieve the desired price list.

“previous” shows the previous page url to retrieve the desired price list.

“results” shows every price list property with detailed field descriptions.


{
"count": 3,
"next": null,
"previous": null,
"results": [

{
"id": 696,
"name": "Shop Price List v02",
"code": "Shop Price List v02",
"is_auto_sync": true,
"currency": "try",
"modified_date": "2022-03-02T09:20:07.171465Z",
"created_date": "2022-03-02T09:20:07.171453Z"
},
{
"id": 697,
"name": "Example Price List",
"code": "example_price_list",
"is_auto_sync": true,
"currency": "try",
"modified_date": "2022-03-02T09:20:07.171465Z",
"created_date": "2022-03-02T09:20:07.171453Z"
},
{
"id": 698,
"name": "Example Price List 2",
"code": "example_price_list_2",
"is_auto_sync": true,
"currency": "try",
"modified_date": "2022-03-02T09:20:07.171465Z",
"created_date": "2022-03-02T09:20:07.171453Z"
}
]
}

Create Price List

The prices of the products are kept in the price list. Therefore, before defining a price for a product, if there is no price list, it is necessary to define a price list first.

ParameterData TypeInRequiredDescription
api_tokenstringheaderYESThe API key of the customer account
namefloatbodyYESList name
codestringbodyYESThe list ID in ERP
is_auto_syncidbodyYESSpecifies whether the list will have synchronization with ERP. If the parameter is True, the list will be automatically updated by ERP. If it is False, price creation and updating processes are managed in Omnitron with excel.
currencyEnumFieldbodyYESCurrency of the price list. Default value is “try”

Request POST

POST request is used to create a new price list.

‘content_type’ header represents the response type.

‘Authorization’ header is a required header for authentication. You can retrieve api_token with login.

‘name’ and ‘code’ fields should be unique.

Path: v1/price_list/


import requests
import json

url = "https://{customer_api_url}/api/v1/price_list/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

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

data = {
'name': 'shop_price_list_v03',
'code': 'shop_price_list_v03',
'is_auto_sync': True,
'currency': 'usd',
}

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

Response

Returns the created object data, after successfully creating the object. Response status is expected to be HTTP-201 Created.

Resource properties are in Python format.

PropertyData TypeDescription
pkintPrimary key of the created list
namestringList name
codestringThe list ID in ERP
is_auto_syncbooleanSpecifies whether the list will have synchronization with ERP. If the parameter is True, the list will be automatically updated by ERP.
modified_datedateLast modified date of the price list
created_datedateShows the date when the price list was created
currencystring enumCurrency of the price list

{
"pk": 697,
"name": "shop_price_list_v03",
"code": "shop_price_list_v03",
"is_auto_sync": true,
"modified_date": "2021-07-12T08:05:37.190931Z",
"created_date": "2021-07-12T08:05:37.190905Z",
"currency": "usd"
}

Bad Request Responses

When the requested action cannot be executed, API gives an explanation about the request.

While creating a price list, if is_auto_sync is True _and code is _None, then the below error appears.

{
'non_field_errors': u'PriceList code is required when is_auto_sync is True.',
'error_code': u'product_price_300_2'
}

‘name’ and ‘code’ fields should be unique.

{
'name': [ErrorDetail(string=u'price list with this name already exists.', code=u'unique')]
}
{
'code': [ErrorDetail(string=u'price list with this code already exists.', code=u'unique')]
}