How do I get a list of craft provided events at runtime? The documentation provides a very comprehensive list of events provided by Craft  but I would like to know if there is a way to get a list of those events at runtime.

Having such list would enable me to display a &lt;select&gt; field whereby a user could choose the event that should trigger an action.

Think of it as dynamic event registration!
Events don’t get pre-registered anywhere in Craft, so there’s no way to easily fetch a definitive list of all events that will ever get called, but with a little PHP we can get a pretty good idea of what they all are.

You’d start by getting a list of all the components on WebApp (what craft() returns) by calling its getComponents() method, loop through each of them, use reflection to get each of their methods, and find the ones that start with on. (By convention, all event methods should start with that, and non-event methods generally shouldn’t start with that, although it’s possible this will yield some false positives, so make sure you double-check the results.)

$events = [];
$components = craft()-&gt;getComponents(false);

foreach ($components as $id =&gt; $component)
{
    // Skip some non-existent components
    if ($id == 'fieldTypes' || $id == 'file')
    {
        continue;
    }

    // If the component hasn't been loaded yet, $component will just be its config array
    if (is_array($component))
    {
        $component = craft()-&gt;getComponent($id);
    }

    // Find the event methods
    $class = new \ReflectionClass($component);
    $methods = $class-&gt;getMethods(\ReflectionMethod::IS_PUBLIC);

    foreach ($methods as $method)
    {
        if (strncasecmp($method-&gt;name, 'on', 2) === 0)
        {
            $events[] = $id.'.'.$method-&gt;name;
        }
    }
}

// Dump 'em out
Craft::dd($events);