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.
Parameter | Data Type | In | Description |
api_token | string | header | The API key of the customer account |
name | string | query | Price list name |
limit | integer | query | Amount of line items per page that will be returned |
page | string | query | Page 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.
Property | Data Type | Description |
name | string | List name |
code | string | The list ID in ERP |
is_auto_sync | boolean | Specifies whether the list will have synchronization with ERP. If the parameter is True, the list will be automatically updated by ERP. |
currency | string enum | Currency of the price list |
modified_date | datetime | Last modified date of the price list |
created_date | datetime | Shows 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.
Parameter | Data Type | In | Description |
api_token | string | header | The API key of the customer account |
name | string | query | Price list's name |
limit | integer | query | Amount of items per page that will be returned |
page | string | query | Page 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.
Property | Data Type | Description |
name | string | List name |
code | string | The list ID in ERP |
is_auto_sync | boolean | Specifies whether the list will have synchronization with ERP. If the parameter is True, the list will be automatically updated by ERP. |
currency | EnumField | Currency of the price list |
modified_date | datetime | Last modified date of the price list |
created_date | datetime | Shows 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.
Parameter | Data Type | In | Required | Description |
api_token | string | header | YES | The API key of the customer account |
name | float | body | YES | List name |
code | string | body | YES | The list ID in ERP |
is_auto_sync | id | body | YES | Specifies 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. |
currency | EnumField | body | YES | Currency 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.
Property | Data Type | Description |
pk | int | Primary key of the created list |
name | string | List name |
code | string | The list ID in ERP |
is_auto_sync | boolean | Specifies whether the list will have synchronization with ERP. If the parameter is True, the list will be automatically updated by ERP. |
modified_date | date | Last modified date of the price list |
created_date | date | Shows the date when the price list was created |
currency | string enum | Currency 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')]
}