Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get all categories with custom attributes in Magento 2 REST Api

I am using Magento 2 rest api for listing all the categories.

{{production_url}}/index.php/rest/V1/categories

It will return all the categories,

{
    "id": 2,
    "parent_id": 1,
    "name": "Default Category",
    "is_active": true,
    "position": 1,
    "level": 1,
    "product_count": 0,
    "children_data": [{
        "id": 3,
        "parent_id": 2,
        "name": "T-shirts",
        "is_active": true,
        "position": 1,
        "level": 2,
        "product_count": 8,
        "children_data": []
    }, {
        "id": 4,
        "parent_id": 2,
        "name": "Phants",
        "is_active": true,
        "position": 2,
        "level": 2,
        "product_count": 0,
        "children_data": []
    }, {
        "id": 5,
        "parent_id": 2,
        "name": "Chridar",
        "is_active": true,
        "position": 3,
        "level": 2,
        "product_count": 0,
        "children_data": []
    }]
}

But i need custom attributes for every categories in the result.But now i have to call the below api for getting custom attributes.

{{production_url}}/index.php/rest/V1/categories/3

It will return ,

{
    "id": 3,
    "parent_id": 2,
    "name": "T-shirts",
    "is_active": true,
    "position": 1,
    "level": 2,
    "children": "",
    "created_at": "2017-06-02 11:21:16",
    "updated_at": "2017-06-02 11:21:16",
    "path": "1/2/3",
    "available_sort_by": [],
    "include_in_menu": true,
    "custom_attributes": [
        {
            "attribute_code": "description",
            "value": "<p>retest</p>"
        },
        {
            "attribute_code": "image",
            "value": "Screen_Shot_2017-06-16_at_4.06.35_PM.png"
        },
        {
            "attribute_code": "display_mode",
            "value": "PRODUCTS"
        },
        {
            "attribute_code": "is_anchor",
            "value": "1"
        },
        {
            "attribute_code": "path",
            "value": "1/2/3"
        },
        {
            "attribute_code": "children_count",
            "value": "0"
        },
        {
            "attribute_code": "custom_use_parent_settings",
            "value": "0"
        },
        {
            "attribute_code": "custom_apply_to_products",
            "value": "0"
        },
        {
            "attribute_code": "url_key",
            "value": "redwine"
        },
        {
            "attribute_code": "url_path",
            "value": "redwine"
        }
    ]
}

Suppose if there are n categories i need to call n api for getting custom attributes. Is there any single api for getting all the attributes for all categories in a single API?

like image 492
Muhsin Keloth Avatar asked Sep 06 '25 01:09

Muhsin Keloth


1 Answers

The Magento Api CatalogTreeInterface doesn't extend Magento\Framework\Api\ExtensibleDataInterface which means that custom attributes or extension attributes cannot be added to the tree response. The only workaround for me was to create my own module and a new api call that extends the tree interface to add my custom attributes.

like image 143
Ruben Casas Avatar answered Sep 08 '25 16:09

Ruben Casas