Category API
This is an old revision of the document!
Allows to export/import categories from/to Magento.
Module: Mage_Catalog
Resource: catalog_category
Aliases:
- category
Methods |
catalog_category.currentStore |
Set/Get current store view
Return: int
Arguments:
- mixed storeView - Store view ID or code.
Aliases:
- category.currentStore
catalog_category.tree |
Retrieve hierarchical tree of categories.
Return: array
Arguments:
- int parentId - parent category id (optional)
- mixed storeView - store view (optional)
Aliases:
- category.tree
catalog_category.level |
Retrieve one level of categories by website/store view/parent category
Return: array
Arguments:
- mixed website - website code or Id (optional)
- mixed storeView - store view code or Id (optional)
- mixed parentCategory - parent category Id (optional)
Aliases:
- category.level
catalog_category.info |
Retrieve category data
Return: array
Arguments:
- int $categoryId - category ID
- mixed $storeView - store view id or code (optional)
- array $attributes - return only specified attributes (optional)
Aliases:
- category.info
catalog_category.create |
Create new category and return its id.
Return: int
Arguments:
- int $parentId - ID of parent category
- array $categoryData - category data ( array(’attribute_code’⇒‘attribute_value’ )
- mixed $storeView - store view ID or code (optional)
Aliases:
- category.create
catalog_category.update |
Update category
Return: boolean
Arguments:
- int $categoryId - ID of category for updating
- array $categoryData - category data ( array(’attribute_code’⇒‘attribute_value’ )
- mixed storeView - store view ID or code (optional)
Aliases:
- category.update
catalog_category.move |
Move category in tree
Return: boolean
Arguments:
- int $categoryId - category ID for moving
- int $parentId - new category parent
- int $afterId - category ID after what position it will be moved (optional)
Aliases:
- category.move
catalog_category.delete |
Delete category
Return: boolean
Arguments:
- int $categoryId - category ID
Aliases:
- category.delete
catalog_category.assignedProducts |
Retrieve list of assigned products
Return: array
Arguments:
- int $categoryId - category ID
Aliases:
- category.assignedProducts
catalog_category.assignProduct |
Assign product to category
Return: boolean
Arguments:
- int $categoryId - category ID
- mixed $product - product ID or sku
- int $position - position of product in category (optional)
Aliases:
- category.assignProduct
catalog_category.updateProduct |
Update assigned product
Return: boolean
Arguments:
- int $categoryId - category ID
- mixed $product - product ID or sku
- int $position - position of product in category (optional)
Aliases:
- category.updateProduct
catalog_category.removeProduct |
Remove product assignment from category
Return: boolean
Arguments:
- int $categoryId - category ID
- mixed $product - product ID or sku
Aliases:
- category.removeProduct
Faults |
| 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. |
Examples |
Example 1. Working with categories |
- function getSomeRandomCategory(&$categories, $targetLevel, $currentLevel = 0) {
- if (count($categories)==0) {
- return false;
- }
- if ($targetLevel == $currentLevel) {
- return $categories[rand(0, count($categories)-1)];
- } else {
- return getSomeRandomCategory($categories[rand(0, count($categories)-1)]['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(
- $sessionId,
- 'category.create',
- array(
- $selectedCategory['category_id'],
- array('name'=>'New Category Through Soap')
- )
- );
- $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']));
- var_dump($firstLevel);
- // If you wish remove category, uncomment next line
- //$proxy->call($sessionId, 'category.remove', $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
- $assignedProducts = $proxy->call($sessionId, 'category.assignedProducts', $categoryId);
- var_dump($assignedProducts); // Will output assigned products.
- // Assign product
- $proxy->call($sessionId, 'category.assignProduct', array($categoryId, 'someProductSku', 5));
- // Update product assignment postion
- $proxy->call($sessionId, 'category.updateProduct', array($categoryId, 'someProductSku', 25));
- // Remove product assignment
- $proxy->call($sessionId, 'category.removeProduct', array($categoryId, 'someProductSku'));


