SOAP / REST API Add-On
Adds CRUD WebAPI endpoints for pricelists (pricelists, pricelist products, customer assignments, group assignments).
Package
- Composer package:
mageb2b/pricesystem-pricelist-api - Magento module:
MageB2B_PricesystemPricelistApi
Installation
composer config bearer.repo.softwaresilo.io <token>
composer config repositories.softwaresilo composer https://repo.softwaresilo.io/
composer require mageb2b/pricesystem-pricelist-api:*
php bin/magento setup:upgrade
php bin/magento cache:flush
Endpoints (Overview)
Pricelist endpoints:
| Method | URL |
|---|---|
| GET | /V1/pricesystem/pricelist/:id |
| GET | /V1/pricesystem/pricelist/search |
| POST | /V1/pricesystem/pricelist |
| PUT | /V1/pricesystem/pricelist/:id |
| POST | /V1/pricesystem/pricelistbulk |
| DELETE | /V1/pricesystem/pricelist/:id |
| DELETE | /V1/pricesystem/pricelist/all |
Pricelist product endpoints:
| Method | URL |
|---|---|
| GET | /V1/pricesystem/pricelistproduct/:id |
| GET | /V1/pricesystem/pricelistproduct/search |
| POST | /V1/pricesystem/pricelistproduct |
| POST | /V1/pricesystem/pricelistproductbulk |
| PUT | /V1/pricesystem/pricelistproduct/:id |
| PUT | /V1/pricesystem/pricelistproductbulk |
| DELETE | /V1/pricesystem/pricelistproduct/:id |
Customer assignment endpoints:
| Method | URL |
|---|---|
| GET | /V1/pricesystem/pricelistcustomer/:id |
| GET | /V1/pricesystem/pricelistcustomer/search |
| POST | /V1/pricesystem/pricelistcustomer |
| PUT | /V1/pricesystem/pricelistcustomer/:id |
| DELETE | /V1/pricesystem/pricelistcustomer/:id |
| DELETE | /V1/pricesystem/pricelistcustomer/deleteByCustomerId/:customerId |
Customer group assignment endpoints:
| Method | URL |
|---|---|
| GET | /V1/pricesystem/pricelistgroup/:id |
| GET | /V1/pricesystem/pricelistgroup/search |
| POST | /V1/pricesystem/pricelistgroup |
| PUT | /V1/pricesystem/pricelistgroup/:id |
| DELETE | /V1/pricesystem/pricelistgroup/:id |
Authentication
All endpoints above require a valid admin bearer token.
curl -X POST "https://your-store.com/rest/V1/integration/admin/token" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"***"}'
Then call endpoints with:
-H "Authorization: Bearer <ADMIN_TOKEN>"
Request Payloads
The following payloads are the request wrappers expected by Magento WebAPI for this module.
Pricelist Requests
GET /V1/pricesystem/pricelist/:id
No request body.
GET /V1/pricesystem/pricelist/search
No request body. Use searchCriteria query parameters, for example:
/V1/pricesystem/pricelist/search?searchCriteria[filter_groups][0][filters][0][field]=name&searchCriteria[filter_groups][0][filters][0][value]=B2B&searchCriteria[filter_groups][0][filters][0][condition_type]=like&searchCriteria[currentPage]=1&searchCriteria[pageSize]=20
POST /V1/pricesystem/pricelist and PUT /V1/pricesystem/pricelist/:id use wrapper key pricelist:
{
"pricelist": {
"id": 12,
"name": "B2B Winter 2026",
"active": true,
"priority": 10,
"from_date": "2026-03-01",
"to_date": "2026-12-31",
"website_id": 1,
"products": [
{
"product_id": "24-MB01",
"qty": 1,
"price": "49.90",
"price_application_type": 1,
"start": "2026-03-01",
"end": "2026-12-31",
"price_attribute_id": 77
}
],
"customers": "42,99",
"groups": "1,3",
"is_base_pricelist": false,
"customer_attribute": "",
"customer_attribute_value": "",
"customer_address_attribute": "",
"customer_address_attribute_value": "",
"customer_attribute_combine": false
}
}
POST /V1/pricesystem/pricelistbulk uses wrapper key pricelists:
{
"pricelists": [
{
"name": "PL A",
"active": true,
"priority": 10,
"website_id": 1
},
{
"id": 12,
"name": "PL B Updated",
"active": true,
"priority": 20,
"website_id": 1
}
]
}
For the pricelist object, customers and groups are REST input strings (comma-separated), not arrays.
For assignment workflows, prefer the dedicated endpoints:
/V1/pricesystem/pricelistcustomer* and /V1/pricesystem/pricelistgroup*.
DELETE /V1/pricesystem/pricelist/:id and DELETE /V1/pricesystem/pricelist/all
No request body.
Pricelist Product Requests
GET /V1/pricesystem/pricelistproduct/:id
No request body.
GET /V1/pricesystem/pricelistproduct/search
No request body. Example:
/V1/pricesystem/pricelistproduct/search?searchCriteria[filter_groups][0][filters][0][field]=pricelist_id&searchCriteria[filter_groups][0][filters][0][value]=12&searchCriteria[filter_groups][0][filters][0][condition_type]=eq
POST /V1/pricesystem/pricelistproduct and PUT /V1/pricesystem/pricelistproduct/:id use wrapper key pricelistProduct:
{
"pricelistProduct": {
"id": 55,
"pricelist_id": 12,
"product_id": "24-MB01",
"qty": 1,
"price": "49.90",
"price_application_type": 1,
"start": "2026-03-01",
"end": "2026-12-31",
"price_attribute_id": 77
}
}
POST /V1/pricesystem/pricelistproductbulk and PUT /V1/pricesystem/pricelistproductbulk use wrapper key pricelistProducts:
{
"pricelistProducts": [
{
"id": 55,
"pricelist_id": 12,
"product_id": "24-MB01",
"qty": 1,
"price": "47.90",
"price_application_type": 1
},
{
"id": 56,
"pricelist_id": 12,
"product_id": "24-MB04",
"qty": 5,
"price": "37.90",
"price_application_type": 5
}
]
}
DELETE /V1/pricesystem/pricelistproduct/:id
No request body.
Pricelist Customer Assignment Requests
GET /V1/pricesystem/pricelistcustomer/:id
No request body.
GET /V1/pricesystem/pricelistcustomer/search
No request body. Example:
/V1/pricesystem/pricelistcustomer/search?searchCriteria[filter_groups][0][filters][0][field]=pricelist_id&searchCriteria[filter_groups][0][filters][0][value]=12&searchCriteria[filter_groups][0][filters][0][condition_type]=eq
POST /V1/pricesystem/pricelistcustomer and PUT /V1/pricesystem/pricelistcustomer/:id use wrapper key pricelistCustomer:
{
"pricelistCustomer": {
"id": 90,
"pricelist_id": 12,
"customer_id": "alice@example.com"
}
}
DELETE /V1/pricesystem/pricelistcustomer/:id and DELETE /V1/pricesystem/pricelistcustomer/deleteByCustomerId/:customerId
No request body.
Pricelist Group Assignment Requests
GET /V1/pricesystem/pricelistgroup/:id
No request body.
GET /V1/pricesystem/pricelistgroup/search
No request body. Example:
/V1/pricesystem/pricelistgroup/search?searchCriteria[filter_groups][0][filters][0][field]=pricelist_id&searchCriteria[filter_groups][0][filters][0][value]=12&searchCriteria[filter_groups][0][filters][0][condition_type]=eq
POST /V1/pricesystem/pricelistgroup and PUT /V1/pricesystem/pricelistgroup/:id use wrapper key pricelistGroup:
{
"pricelistGroup": {
"id": 77,
"pricelist_id": 12,
"group_id": 3
}
}
DELETE /V1/pricesystem/pricelistgroup/:id
No request body.
Field Notes
price_application_typevalues:1= fixed2= surcharge nominal3= surcharge percent4= discount nominal5= discount percent
product_idcan resolve from ID or SKU, depending onpricesystem/api/product_attribute_code.customer_idcan resolve from ID or email, depending onpricesystem/api/customer_attribute_code.website_idsupports numeric website ID and website code.
For the full list, see: Pricesystem SOAP / REST API