m openmage

OpenMage LTS Developer Documentation

Catalog Category

Edit this page on GitHub

Module: Mage_Catalog

The Mage_Catalog module allows you to manage categories and products.


Allows you to manage categories and how products are assigned to categories.

Resource Name: catalog_category




Fault Code Fault Message
100 Requested store view not found.
101 Requested website not found.
102 Category not exists.
103 Invalid data given. Details in error message.
104 Category not moved. Details in error message.
105 Category not deleted. Details in error message.
106 Requested product is not assigned to category.

Example 1. Working with categories

function getSomeRandomCategory(&$categories, $targetLevel, $currentLevel = 0) {
    if (count($categories)==0) {
        return false;
    if ($targetLevel == $currentLevel) {
        return $categories[array_rand($categories)];
    } else {
        return getSomeRandomCategory($categories[array_rand($categories)]['children'], $targetLevel + 1);

$proxy = new SoapClient('http://magentohost/api/soap/?wsdl');
$sessionId = $proxy->login('apiUser', 'apiKey');
$allCategories = $proxy->call($sessionId, 'category.tree'); // Get all categories.

// select random category from tree
while (($selectedCategory = getSomeRandomCategory($allCategories, 3)) === false) {}

// create new category
$newCategoryId = $proxy->call(

$newData = array('is_active'=>1);
// update created category on German store view
$proxy->call($sessionId, 'category.update', array($newCategoryId, $newData, 'german'));

$firstLevel = $proxy->call($sessionId, 'category.level', array(null, 'german', $selectedCategory['category_id']));


// If you wish remove category, uncomment next line
//$proxy->call($sessionId, 'category.delete', $newCategoryId);

Example 2. Working with assigned products

$proxy = new SoapClient('http://magentohost/api/soap/?wsdl');
$sessionId = $proxy->login('apiUser', 'apiKey');

$categoryId = 5; // Put here your category id
$storeId = 1; // You can add store level

$assignedProducts = $proxy->call($sessionId, 'category.assignedProducts', array($categoryId, $storeId));
var_dump($assignedProducts); // Will output assigned products.

// Assign product
$proxy->call($sessionId, 'category.assignProduct', array($categoryId, 'someProductSku', 5));

// Update product assignment position
$proxy->call($sessionId, 'category.updateProduct', array($categoryId, 'someProductSku', 25));

// Remove product assignment
$proxy->call($sessionId, 'category.removeProduct', array($categoryId, 'someProductSku'));