Skip to content

Proposal: add filters for input and output validation #149

@priethor

Description

@priethor

The Abilities API currently validates ability input and output against JSON Schema using WordPress's built-in rest_validate_value_from_schema(), which supports only a subset of JSON Schema Draft 4 (aligning with WordPress core). This approach is reliable for core compatibility but limits extenders to dated JSON Schema features, missing newer ones like $ref references for composability and reusability, and not keyword to exclude patterns.

Developers extending the Abilities API that need more expressive schema validation have no way to override the default validator without forking or monkey-patching.

Proposed Solution

Introduce two hooks to allow custom validation:

/**
 * Filter to override input validation for an ability.
 * 
 * @param true|WP_Error $is_valid      Validation result (true or WP_Error)
 * @param mixed         $input         The input being validated
 * @param array         $input_schema  The input schema definition
 * @param string        $ability_name  The ability name
 * @param WP_Ability    $ability       The ability instance
 */
apply_filters( 'wp_ability_validate_input', $is_valid, $input, $input_schema, $ability_name, $ability );

/**
 * Filter to override output validation for an ability.
 * 
 * @param true|WP_Error $is_valid       Validation result (true or WP_Error)
 * @param mixed         $output         The output being validated
 * @param array         $output_schema  The output schema definition
 * @param string        $ability_name   The ability name
 * @param WP_Ability    $ability        The ability instance
 */
apply_filters( 'wp_ability_validate_output', $is_valid, $output, $output_schema, $ability_name, $ability );

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions