In the documentation it says:

> *"A plugin, or interceptor, is a class that modifies the behavior of public class functions by intercepting a function call and running
> code before, after, or around that function call. This allows you to
> substitute or extend the behavior of original, public methods **for
> any class or interface**."*

But is this also true for API?

I try to write a **afterSave** Plugin for the class **Magento\Quote\Api\CartItemRepositoryInterface** to log something if the quote is getting saved.

But it does not work and no log is created.

**app/code/Company/Checkout/etc/frontend/di.xml**

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
        <type name="Magento\Quote\Api\CartItemRepositoryInterface">
            <plugin name="Company_Checkout_CartItemRepositoryInterface" type="Company\Checkout\Plugin\Quote\Api\CartItemRepositoryInterface" sortOrder="10"/>
        </type>
    </config>

**app/code/Company/Checkout/Plugin/Quote/Api/CartItemRepositoryInterface.php**

    <?php
    namespace Company\Checkout\Plugin\Quote\Api;
    
    class CartItemRepositoryInterface
    {
        protected $_cartFactory;
    
        public function __construct(
            \Magento\Checkout\Model\CartFactory $cartFactory
        ) {
            $this->_cartFactory = $cartFactory;
        }
    
        public function afterSave(\Magento\Quote\Api\Data\CartItemInterface $cartItem)
        {
            $cart = $this->_cartFactory->create();
            $quote = $cart->getQuote();
    
            \Eddcapone\ChromePhp\Helper\ChromePhp::log("Hello from afterSave Plugin (API: module-quote/api/CartItemRepositoryInterface/save");
            \Eddcapone\ChromePhp\Helper\ChromePhp::log("QuoteId = ". $quote->getId());
        }
    
    
    
    }