I've set `file` optional because the other params are also optional (`target`, `features` and `projection`).
If the event type is `addfeatures` then all  the params will be defined but if we introduce a new event type it may not be the case (I guess it was the reason of the optional params)