This class determines what fields are allowed for a request and validates that the fields are provided correctly.
The ChainSubscriber looks for API parameters which specify a nested or chained API call. For example:
Given an entity which dynamically attaches itself to another entity, determine if one has permission to the other entity.
Class I18nSubscriber
For any API requests that correspond to a Doctrine entity ($apiRequest['doctrineClass']), check permissions specified in Civi\API\Annotation\Permission.
Class TransactionSubscriber
The WhitelistSubscriber listens to API requests and matches them against a whitelist of allowed API calls. If an API call does NOT appear in the whitelist, then it generates an error.
This is a wrapper for the legacy "API Wrapper" interface which allows wrappers to run through the new kernel. It translates from dispatcher events ('civi.api.prepare', 'civi.api.respond') to wrapper calls ('fromApiInput', 'toApiOutput').
Class XDebugSubscriber