WP_REST_Users_Controller::get_item_schema(): array

In this article

Retrieves the user’s schema, conforming to JSON Schema.

Return

array Item schema data.

Source

 * @param string          $param   The parameter name.
 * @return string|WP_Error The sanitized password, if valid, otherwise an error.
 */
public function check_user_password(
	#[\SensitiveParameter]
	$value,
	$request,
	$param
) {
	$password = (string) $value;

	if ( empty( $password ) ) {
		return new WP_Error(
			'rest_user_invalid_password',
			__( 'Passwords cannot be empty.' ),
			array( 'status' => 400 )
		);
	}

	if ( str_contains( $password, '\\' ) ) {
		return new WP_Error(
			'rest_user_invalid_password',
			sprintf(
				/* translators: %s: The '\' character. */
				__( 'Passwords cannot contain the "%s" character.' ),
				'\\'
			),
			array( 'status' => 400 )
		);
	}

	return $password;
}

/**
 * Retrieves the user's schema, conforming to JSON Schema.
 *
 * @since 4.7.0
 *
 * @return array Item schema data.
 */
public function get_item_schema() {
	if ( $this->schema ) {
		return $this->add_additional_fields_schema( $this->schema );
	}

	$schema = array(
		'$schema'    => 'http://json-schema.org/draft-04/schema#',
		'title'      => 'user',
		'type'       => 'object',
		'properties' => array(
			'id'                 => array(
				'description' => __( 'Unique identifier for the user.' ),
				'type'        => 'integer',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
			),
			'username'           => array(
				'description' => __( 'Login name for the user.' ),
				'type'        => 'string',
				'context'     => array( 'edit' ),
				'required'    => true,
				'arg_options' => array(
					'sanitize_callback' => array( $this, 'check_username' ),
				),
			),
			'name'               => array(
				'description' => __( 'Display name for the user.' ),
				'type'        => 'string',
				'context'     => array( 'embed', 'view', 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => 'sanitize_text_field',
				),
			),
			'first_name'         => array(
				'description' => __( 'First name for the user.' ),
				'type'        => 'string',
				'context'     => array( 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => 'sanitize_text_field',
				),
			),
			'last_name'          => array(
				'description' => __( 'Last name for the user.' ),
				'type'        => 'string',
				'context'     => array( 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => 'sanitize_text_field',
				),
			),
			'email'              => array(
				'description' => __( 'The email address for the user.' ),
				'type'        => 'string',
				'format'      => 'email',
				'context'     => array( 'edit' ),
				'required'    => true,
			),
			'url'                => array(
				'description' => __( 'URL of the user.' ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'embed', 'view', 'edit' ),
			),
			'description'        => array(
				'description' => __( 'Description of the user.' ),
				'type'        => 'string',
				'context'     => array( 'embed', 'view', 'edit' ),
			),
			'link'               => array(
				'description' => __( 'Author URL of the user.' ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
			),
			'locale'             => array(
				'description' => __( 'Locale for the user.' ),
				'type'        => 'string',
				'enum'        => array_merge( array( '', 'en_US' ), get_available_languages() ),
				'context'     => array( 'edit' ),
			),
			'nickname'           => array(
				'description' => __( 'The nickname for the user.' ),
				'type'        => 'string',
				'context'     => array( 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => 'sanitize_text_field',
				),
			),
			'slug'               => array(
				'description' => __( 'An alphanumeric identifier for the user.' ),
				'type'        => 'string',
				'context'     => array( 'embed', 'view', 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => array( $this, 'sanitize_slug' ),
				),
			),
			'registered_date'    => array(
				'description' => __( 'Registration date for the user.' ),
				'type'        => 'string',
				'format'      => 'date-time',
				'context'     => array( 'edit' ),
				'readonly'    => true,
			),
			'roles'              => array(
				'description' => __( 'Roles assigned to the user.' ),
				'type'        => 'array',
				'items'       => array(
					'type' => 'string',
				),
				'context'     => array( 'edit' ),
			),
			'password'           => array(
				'description' => __( 'Password for the user (never included).' ),
				'type'        => 'string',
				'context'     => array(), // Password is never displayed.
				'required'    => true,
				'arg_options' => array(
					'sanitize_callback' => array( $this, 'check_user_password' ),
				),
			),
			'capabilities'       => array(
				'description' => __( 'All capabilities assigned to the user.' ),
				'type'        => 'object',
				'context'     => array( 'edit' ),

Changelog

VersionDescription
4.7.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.