REST filters only firing when I have a param set

I’m trying to use a REST filter to require a certain parameter is set.

Using custom taxonomies and custom posts I’ve been able to make it so when I request

That the only Cars that come back are ones with a visible_to taxonomy of 123.

However when someone asks for

I want to throw an error, saying that ?visible_to needs to be set.

I’ve tried hooking into rest_index, rest_pre_dispatch, and some others. Each only fires when I have ?visible_to set in the URL, without them the hooks don’t fire.

For example, I would expect this to fire on every REST request

But it will only return a WP_Error on

Both

And

Run without that filter being hit.

Can someone explain why this would be the case and what I can do to avoid it?

I’ve also tried specific filters like rest_prepare_car but I couldn’t get it to fire at all.