Merge Product Categories
Merge one or more duplicate canonical categories into a single winner: re-points products, per-branch sort order and kitchen mappings from the losers onto the winner, migrates per-tenant overrides, then soft-deletes the losers. Order history is never touched. Admin only.
Authorization
API-TOKEN Your partner API key. Send it in the API-TOKEN header on every request.
In: header
Header Parameters
API contract version to target. See the Changelog for what changed in each version.
"2.0.0""2.3.0" | "2.2.0" | "2.1.0" | "2.0.0"Request Body
application/json
Must match an existing stored value.
The value and winner_id must be different. Must match an existing stored value.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.flavours.sa/dev/api/v2/product-categories/merge" \ -H "X-API-Version: 2.3.0" \ -H "Content-Type: application/json" \ -d '{ "winner_id": 6 }'{
"meta": {
"code": 200,
"status": "success",
"message": "Product categories merged successfully."
},
"data": {
"id": 14,
"icon": "🥤",
"name_en": "Merge Winner",
"name_ar": "الفائز",
"deleted_at": null,
"created_at": 1792593344925,
"updated_at": 1792593344925,
"market_id": null,
"image_url": null,
"products_count": "0",
"sectors": []
}
}{
"meta": {
"code": 401,
"status": "error",
"message": "Unauthenticated."
},
"data": null
}{
"meta": {
"code": 403,
"status": "error",
"message": "Unauthorized."
},
"data": null
}{
"meta": {
"code": 404,
"status": "error",
"message": "Resource not found."
},
"data": null
}{
"meta": {
"code": 500,
"status": "error",
"message": "Internal server error."
},
"data": null
}List Product Categories GET
List product categories with pagination, search, sector/market/branch filtering and the display order: the market order, or with filter[branch_id] the branch order (a branch that never sorted follows the market order, categories the branch has no row for come after its own order). sort_level=market returns the market order even when filter[branch_id] is sent; sort_level=branch requires filter[branch_id].
Product Category Stats — By Category GET
Product counts (total / active / inactive / sellable) for a single category.