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

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' ),
				'readonly'    => true,
			),
			'extra_capabilities' => array(
				'description' => __( 'Any extra capabilities assigned to the user.' ),
				'type'        => 'object',
				'context'     => array( 'edit' ),
				'readonly'    => true,
			),
		),
	);

	if ( get_option( 'show_avatars' ) ) {
		$avatar_properties = array();

		$avatar_sizes = rest_get_avatar_sizes();

		foreach ( $avatar_sizes as $size ) {
			$avatar_properties[ $size ] = array(
				/* translators: %d: Avatar image size in pixels. */
				'description' => sprintf( __( 'Avatar URL with image size of %d pixels.' ), $size ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'embed', 'view', 'edit' ),
			);
		}

		$schema['properties']['avatar_urls'] = array(
			'description' => __( 'Avatar URLs for the user.' ),
			'type'        => 'object',
			'context'     => array( 'embed', 'view', 'edit' ),
			'readonly'    => true,
			'properties'  => $avatar_properties,
		);
	}

	$schema['properties']['meta'] = $this->meta->get_field_schema();

	$this->schema = $schema;

	return $this->add_additional_fields_schema( $this->schema );
}

Changelog

VersionDescription
4.7.0Introduced.

User Contributed Notes

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