Skip to content
wiki.fftac.org

Class Uai1 Routes - Source Excerpt 01

Back to Class Uai1 Routes

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/uai-1-wordpress/includes/class-uai1-routes.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/plugins/uai-1-wordpress/includes/class-uai1-routes.php

<?php

if (!defined('ABSPATH')) {
    exit;
}

class UAI1_Routes
{
    private const ROUTE_MANUSCRIPT_IMAGE = 'manuscript_image';
    private const UAIX_NAMESPACE = 'uaix/v1';
    private const LEGACY_NAMESPACE = 'uai1/v1';
    private const UAIX_CONTENT_TYPE = 'application/vnd.uaix.uai+json; charset=utf-8';
    private const JSON_CONTENT_TYPE = 'application/json; charset=utf-8';
    private const PROBLEM_JSON_CONTENT_TYPE = 'application/problem+json; charset=utf-8';
    private const UAIX_PUBLIC_BASE = 'https://uaix.org';

    public static function register_rewrite_rules(): void
    {
        add_rewrite_rule(
            '^manuscript/full-image/?$',
            'index.php?uai1=' . self::ROUTE_MANUSCRIPT_IMAGE,
            'top'
        );
    }

    public static function register_rest_routes(): void
    {
        foreach ([self::UAIX_NAMESPACE, self::LEGACY_NAMESPACE] as $namespace) {
            register_rest_route(
                $namespace,
                '/catalog',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_catalog'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/discovery',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_discovery'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/capability',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_capability'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/schemas',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_schemas'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/schemas/(?P<profile>[a-zA-Z0-9._-]+)',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_schemas'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/registry',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_registry'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/registry/(?P<profile>[a-zA-Z0-9._-]+)',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_registry'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/field-registry',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_field_registry'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/transport-bindings',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_transport_bindings'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/trust-channels',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_trust_channels'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/conformance-levels',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_conformance_levels'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/error-registry',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_error_registry'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/examples',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_examples'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/examples/(?P<profile>[a-zA-Z0-9._-]+)',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_examples'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/validate',
                [
                    'methods' => WP_REST_Server::CREATABLE,
                    'callback' => [self::class, 'rest_validate_uaix_message'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/mock-exchange',
                [
                    'methods' => [WP_REST_Server::READABLE, WP_REST_Server::CREATABLE],
                    'callback' => [self::class, 'rest_mock_uaix_exchange'],
                    'permission_callback' => '__return_true',
                ]
            );

            register_rest_route(
                $namespace,
                '/adoption-kit',
                [
                    'methods' => WP_REST_Server::READABLE,
                    'callback' => [self::class, 'rest_get_uaix_adoption_kit'],
                    'permission_callback' => '__return_true',
                ]
            );