REST API
Overview
The REST API module provides fluent builders for route registration, request argument schemas, resource schemas, initial-data serialization, and registering WordPress Abilities API abilities and categories. It is aimed at WordPress REST and Abilities API integrations that want typed, composable configuration objects.
Types in this module
Lipe\Lib\Rest_Api\Arguments_SchemaLipe\Lib\Rest_Api\Initial_DataLipe\Lib\Rest_Api\Register_Rest_RouteLipe\Lib\Rest_Api\Register_Rest_Route\MethodLipe\Lib\Rest_Api\Resource_SchemaLipe\Lib\Rest_Api\Wp_Register_AbilityLipe\Lib\Rest_Api\Wp_Register_Ability_CategoryLipe\Lib\Rest_Api\Schema\Argument_PropLipe\Lib\Rest_Api\Schema\ArrayTypeLipe\Lib\Rest_Api\Schema\BooleanTypeLipe\Lib\Rest_Api\Schema\IntegerTypeLipe\Lib\Rest_Api\Schema\NullTypeLipe\Lib\Rest_Api\Schema\NumberTypeLipe\Lib\Rest_Api\Schema\ObjectTypeLipe\Lib\Rest_Api\Schema\Prop(trait)Lipe\Lib\Rest_Api\Schema\PropRules(interface)Lipe\Lib\Rest_Api\Schema\Resource_PropLipe\Lib\Rest_Api\Schema\StringTypeLipe\Lib\Rest_Api\Schema\TypeLipe\Lib\Rest_Api\Schema\TypeRules(interface)
Register_Rest_Route
Fluent wrapper around register_rest_route() that composes one or more HTTP method definitions and an optional schema.
Key public methods
public function __construct(array $do_not_use)public function method(string $methods): Methodpublic function schema(Resource_Schema $schema): staticpublic function get_args(): array
Example
<?php
use Lipe\Lib\Rest_Api\Register_Rest_Route;
use WP_REST_Request;
use WP_REST_Server;
$route = new Register_Rest_Route([]);
$route->method(WP_REST_Server::READABLE)
->callback(function(WP_REST_Request $request): array {
return ['ok' => true];
})
->permission_callback(fn () => current_user_can('read'));
register_rest_route('acme/v1', '/books', $route->get_args());
Method
Represents one method entry inside a REST route.
Key public methods
public function args(Arguments_Schema $args): staticpublic function callback(\Closure $callback): staticpublic function permission_callback(\Closure $callback): staticpublic function methods(string $methods): static
Arguments_Schema
Builds a REST endpoint args array.
Key public methods
public function prop(string $key): Argument_Proppublic function get_args(): array
Resource_Schema
Builds a public resource schema.
Key public methods
public function title(string $title): staticpublic function type(): Typepublic function get_args(): array
Wp_Register_Ability
Fluent wrapper around wp_register_ability() from the WordPress Abilities API.
Key public methods
public function __construct(array $existing)public function input_schema(): Resource_Schemapublic function output_schema(): Resource_Schemapublic function get_args(): array
Example
<?php
use Lipe\Lib\Rest_Api\Wp_Register_Ability;
use Lipe\Lib\Rest_Api\Wp_Register_Ability_Category;
$category = new Wp_Register_Ability_Category([]);
$category->label = 'Books';
$category->description = 'Abilities for working with books.';
wp_register_ability_category('acme/books', $category->get_args());
$ability = new Wp_Register_Ability([]);
$ability->label = 'List Books';
$ability->description = 'Returns a list of published books.';
$ability->category = 'acme/books';
$ability->permission_callback = fn() => current_user_can('read');
$ability->execute_callback = fn() => get_posts(['post_type' => 'book']);
wp_register_ability('acme/list-books', $ability->get_args());
Wp_Register_Ability_Category
Fluent wrapper around wp_register_ability_category() from the WordPress Abilities API.
Key public methods
public function __construct(array $existing)public function get_args(): array
Type
Proxy that maps a schema field to its concrete type class.
Key public methods
public function string(): StringTypepublic function array(): ArrayTypepublic function object(): ObjectTypepublic function number(): NumberTypepublic function integer(): IntegerTypepublic function boolean(): BooleanTypepublic function null(): NullTypepublic function one_of(array $types): staticpublic function any_of(array $types): staticpublic function get_args(): array
Prop (trait)
Shared properties for a schema property, used by Argument_Prop and Resource_Prop.
Key public methods
public function title(string $title): staticpublic function description(string $description): staticpublic function required(bool $is_required): staticpublic function type(): Typepublic function get_args(): array
PropRules (interface)
Common contract for schema property classes.
Methods
public function get_args(): array
TypeRules (interface)
Common contract for schema type classes.
Methods
public function get_args(): array
Argument_Prop
A property shape for a register_rest_route() argument schema. Uses the Prop trait for shared title(), description(), required(), type(), and get_args() methods.
Key public methods
public function default(mixed $default_value): staticpublic function validate_callback(callable $callback): staticpublic function sanitize_callback(callable $callback): static
Resource_Prop
A property shape for a resource schema. Uses the Prop trait for shared title(), description(), required(), type(), and get_args() methods.
Key public methods
public function context(array $context): staticpublic function readonly(bool $is_readonly): static
StringType
Key public methods
public function enum(array $values): staticpublic function format(string $format): staticpublic function max_length(int $maxLength): staticpublic function min_length(int $minLength): staticpublic function pattern(string $pattern): staticpublic function get_args(): array
ArrayType
Key public methods
public function items(): Typepublic function min_items(int $min): staticpublic function max_items(int $max): staticpublic function unique_items(bool $is_unique = true): staticpublic function get_args(): array
ObjectType
Key public methods
public function prop(string $key): Resource_Proppublic function additional_properties(?bool $enabled = null, ?int $max = null, ?int $min = null): ?Resource_Proppublic function pattern_properties(string $regex_key): Resource_Proppublic function get_args(): array
NumberType
Key public methods
public function exclusive_maximum(bool $is_exclusive): staticpublic function exclusive_minimum(bool $is_exclusive): staticpublic function multiple_of(int $multiple_of): staticpublic function minimum(float|int $minimum): staticpublic function maximum(float|int $maximum): staticpublic function get_args(): array
IntegerType
Key public methods
public function exclusive_maximum(bool $is_exclusive): staticpublic function exclusive_minimum(bool $is_exclusive): staticpublic function multiple_of(int $multiple_of): staticpublic function minimum(int $minimum): staticpublic function maximum(int $maximum): staticpublic function get_args(): array
BooleanType
Key public methods
public function get_args(): array
NullType
Key public methods
public function get_args(): array
Initial_Data
Serializes posts, terms, users, comments, and attachments using the shapes provided by the WordPress REST server.
Key public methods
public function is_retrieving(): boolpublic function get_comments_data(array $comments, bool $with_links = false, array|bool $embed = false): arraypublic function get_post_data(?array $posts = null, bool $with_links = false, array|bool $embed = false): arraypublic function get_user_data(array $users, bool $with_links = false, array|bool $embed = false): arraypublic function get_term_data(array $terms, bool $with_links = false, array|bool $embed = false): arraypublic function get_attachments_data(array $attachments, bool $with_links = false, array|bool $embed = false): array