Taking a quick look at the Magento API files; shows that it goes through a different logic code base at some places, but still trigger events like the example below, inside Mage_Checkout_Model_Cart_Api :
public function createOrder($quoteId, $store = null, $agreements = null)
{
$requiredAgreements = Mage::helper('checkout')->getRequiredAgreementIds();
if (!empty($requiredAgreements)) {
$diff = array_diff($agreements, $requiredAgreements);
if (!empty($diff)) {
$this->_fault('required_agreements_are_not_all');
}
}
$quote = $this->_getQuote($quoteId, $store);
if ($quote->getIsMultiShipping()) {
$this->_fault('invalid_checkout_type');
}
if ($quote->getCheckoutMethod() == Mage_Checkout_Model_Api_Resource_Customer::MODE_GUEST
&& !Mage::helper('checkout')->isAllowedGuestCheckout($quote, $quote->getStoreId())) {
$this->_fault('guest_checkout_is_not_enabled');
}
/** @var $customerResource Mage_Checkout_Model_Api_Resource_Customer */
$customerResource = Mage::getModel("checkout/api_resource_customer");
$isNewCustomer = $customerResource->prepareCustomerForQuote($quote);
try {
$quote->collectTotals();
/** @var $service Mage_Sales_Model_Service_Quote */
$service = Mage::getModel('sales/service_quote', $quote);
$service->submitAll();
if ($isNewCustomer) {
try {
$customerResource->involveNewCustomer($quote);
} catch (Exception $e) {
Mage::logException($e);
}
}
$order = $service->getOrder();
if ($order) {
Mage::dispatchEvent(
'checkout_type_onepage_save_order_after',
array('order' => $order, 'quote' => $quote));
try {
$order->sendNewOrderEmail();
} catch (Exception $e) {
Mage::logException($e);
}
}
Mage::dispatchEvent(
'checkout_submit_all_after',
array('order' => $order, 'quote' => $quote)
);
} catch (Mage_Core_Exception $e) {
$this->_fault('create_order_fault', $e->getMessage());
}
return $order->getIncrementId();
}
Here is how I would do it.
You need to create a module and a plugin for that.
In app/code/Vendor/Module/etc/di.xml
you need the following:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<type name="Magento\Framework\Event\ManagerInterface">
<plugin name="list_dispatched_event" type="Vendor\Module\Plugin\ListDispatchedEvents" sortOrder="10" disabled="false"/>
</type>
</config>
Then in your app/code/Vendor/Module/Plugin/ListDispatchedEvents.php
file:
<?php
namespace Vendor\Module\Plugin;
class ListDispatchedEvents
{
public function beforeDispatch($subject, $eventName, array $data = [])
{
$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/test.log');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info($eventName);
}
}
Then I suggest you disable that module until you reach the page where you can click the Place Order button. Re enable module, click the button, disable the module once the the page has redirected you to the success page and check the var/log/test.log
file.
Best Answer
Below Are the list of Events for cart :
checkout_cart_update_items_after
checkout_cart_save_before
For Use of each refer this url - https://cyrillschumacher.com/magento-2.1-list-of-all-dispatched-events/