Skip to content

Conversation

@gziolo
Copy link
Member

@gziolo gziolo commented Oct 22, 2025

Trac ticket: https://core.trac.wordpress.org/ticket/64139

Bug fix extracted from WordPress/abilities-api#108.

The problem

Without this patch REST would require a weird empty ?input field given how the current controller works with input schema that defines specific shape, example:

'input_schema'        => array(
	'type'                 => 'object',
 	'properties'           => array(
		'fields' => array(
			'type'        => 'array',
			'items'       => array(
				'type' => 'string',
				'enum' => $fields,
			),
			'description' => __( 'Optional: Limit response to specific fields. If omitted, all fields are returned.' ),
		),
	),
	'additionalProperties' => false,
	'default'              => array(),
),

Working examples:

GET /run?input # All fields
GET /run?input[fields][]=name # Filtered

We want the REST API controller to infer default value from the input schema, so it's possible to call:

GET /run # All fields

Solution

Normalizes the input for the ability, applying the default value from the input schema when needed.

When no input is provided and the input schema is defined with a top-level default key, this method returns the value of that key. If the input schema does not define a default, or if the input schema is empty, this method returns null. If input is provided, it is returned as-is.


This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.

@gziolo gziolo self-assigned this Oct 22, 2025
@github-actions
Copy link

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Core Committers: Use this line as a base for the props when committing in SVN:

Props gziolo.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@gziolo gziolo force-pushed the update/normalize-input-abilities-api branch from eac1d00 to d48cdcd Compare October 22, 2025 08:27
@github-actions
Copy link

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • The Plugin and Theme Directories cannot be accessed within Playground.
  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

@gziolo gziolo force-pushed the update/normalize-input-abilities-api branch from bf6f157 to 2cd9757 Compare October 22, 2025 08:55
Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code change looks and is properly tested 👍

pento pushed a commit that referenced this pull request Oct 22, 2025
Without this patch REST API would require a weird empty `?input` field for optional input given how the current controller works with input schema when it defines the expected shape. This patch normalizes the input for the ability, applying the default value from the input schema when needed.

Developed in #10395.

Follow-up [61032], [61045].

Props gziolo, jorgefilipecosta, mukesh27.
Fixes #64139.




git-svn-id: https://develop.svn.wordpress.org/trunk@61047 602fd350-edb4-49c9-b593-d223f7449a82
@github-actions
Copy link

A commit was made that fixes the Trac ticket referenced in the description of this pull request.

SVN changeset: 61047
GitHub commit: 409d03b

This PR will be closed, but please confirm the accuracy of this and reopen if there is more work to be done.

@github-actions github-actions bot closed this Oct 22, 2025
markjaquith pushed a commit to WordPress/WordPress that referenced this pull request Oct 22, 2025
Without this patch REST API would require a weird empty `?input` field for optional input given how the current controller works with input schema when it defines the expected shape. This patch normalizes the input for the ability, applying the default value from the input schema when needed.

Developed in WordPress/wordpress-develop#10395.

Follow-up [61032], [61045].

Props gziolo, jorgefilipecosta, mukesh27.
Fixes #64139.



Built from https://develop.svn.wordpress.org/trunk@61047


git-svn-id: http://core.svn.wordpress.org/trunk@60383 1a063a9b-81f0-0310-95a4-ce76da25c4cd
@gziolo gziolo deleted the update/normalize-input-abilities-api branch October 22, 2025 15:06
github-actions bot pushed a commit to gilzow/wordpress-performance that referenced this pull request Oct 22, 2025
Without this patch REST API would require a weird empty `?input` field for optional input given how the current controller works with input schema when it defines the expected shape. This patch normalizes the input for the ability, applying the default value from the input schema when needed.

Developed in WordPress/wordpress-develop#10395.

Follow-up [61032], [61045].

Props gziolo, jorgefilipecosta, mukesh27.
Fixes #64139.



Built from https://develop.svn.wordpress.org/trunk@61047


git-svn-id: https://core.svn.wordpress.org/trunk@60383 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants