Custom Rest API POST endpoint with conditionally required parameters



I’ve spent the last 6 hours trying to figure this out, I’m likely being dumb.

I’m trying to create a POST endpoint that has parameters that are required based on the value of another parameter.

            'methods'  => 'POST',
            'callback' => array( $this, 'create_something' ),
            'args'     => array(
                'foo' => array(
                    'required' => true,
                    'type'     => 'integer',
                'bar' => array(
                    'required' => true, // make this false if foo = 3
                    'type'     => 'integer',

I’ve tried a few things including:

  • Setting a callback as the required value. (It didn’t get into the function so I guess it doesn’t like callbacks).
  • Using validate_callback with required as false by default, the problem was that if the parameter wasn’t submitted to the request it didn’t get into the function.
  • Using validate_callback with required as true by default, the problem was that the parameter still existed when it wasn’t needed (which in my case would cause issue further down the line).

I was looking through the core for a filter or hook that would let me change the required value dynamically, (a little hacky sure), but I couldn’t find anything.

Just thought I’d ask here, incase I’m missing something obvious.


Toby Osborne 2 years 2020-09-26T11:10:24-05:00 0 Answers 14 views 0

Leave an answer