Skip to content
wiki.fftac.org

Class Uai1 Routes - Source Excerpt 03

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

return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_page' => self::uaix_public_url('/en-us/registry/'),
                'canonical_collection' => self::uaix_api_url('/registry'),
                'profiles' => array_map([self::class, 'profile_registry_record'], array_column(self::profile_catalog(), 'profile')),
                'compatible_pairings' => [
                    [
                        'request' => 'uai.intent.request.v1',
                        'response' => 'uai.intent.response.v1',
                    ],
                    [
                        'request' => 'uai.intent.request.v1',
                        'response' => 'uai.conformance.result.v1',
                    ],
                    [
                        'request' => 'uai.capability.statement.v1',
                        'response' => 'uai.capability.statement.v1',
                    ],
                    [
                        'request' => 'uai.error.v1',
                        'response' => 'uai.conformance.result.v1',
                    ],
                ],
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_field_registry(): WP_REST_Response
    {
        return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_page' => self::uaix_public_url('/en-us/schemas/'),
                'canonical_registry' => self::uaix_api_url('/field-registry'),
                'envelope_order' => [
                    'uai_version',
                    'profile',
                    'message_id',
                    'source',
                    'target',
                    'conversation',
                    'delivery',
                    'trust',
                    'body',
                    'provenance',
                    'integrity',
                    'extensions',
                ],
                'components' => [
                    'source' => ['type', 'id', 'label', 'uri', 'did', 'role', 'implementation'],
                    'target' => ['type', 'id', 'label', 'uri', 'did', 'role', 'implementation'],
                    'conversation' => ['conversation_id', 'turn_id', 'parent_message_id', 'traceparent', 'sequence'],
                    'delivery' => ['mode', 'priority', 'expires_at', 'reply_requested', 'ack_required', 'task_ref'],
                    'trust' => ['channel', 'auth_scheme', 'principal', 'credential_ref', 'signature_ref', 'replay_window_id'],
                    'provenance' => ['trace_id', 'parent_trace_id', 'issued_at', 'log_ref', 'agent_id', 'model_id', 'confidence', 'lineage'],
                    'integrity' => ['version', 'algorithm', 'canonicalization', 'checksum'],
                    'extension_item' => ['namespace', 'purpose', 'critical'],
                ],
                'body_order' => [
                    'uai.intent.request.v1' => ['intent', 'subject', 'requested_profile', 'parameters', 'constraints', 'response_profile'],
                    'uai.intent.response.v1' => ['status', 'subject', 'request_message_id', 'result', 'notices', 'task_ref'],
                    'uai.capability.statement.v1' => ['capability_id', 'version', 'operations', 'input_profiles', 'output_profiles', 'async_profiles', 'security_schemes', 'transport_bindings', 'conformance_levels', 'error_codes', 'endpoints', 'extension_namespaces', 'implementation_tracks'],
                    'uai.error.v1' => ['type', 'title', 'detail', 'status', 'code', 'retryable', 'instance', 'documentationUrl', 'traceId', 'correlationId', 'uaixCode', 'uaixCategory', 'uaixSeverity', 'evidenceRecommended', 'suspensionRecommended', 'redactionApplied', 'errors', 'next_step'],
                    'uai.conformance.result.v1' => ['status', 'checked_profile', 'issues', 'summary', 'artifacts', 'target_message_ref'],
                    'uai.task.status.v1' => ['task_id', 'state', 'subject', 'progress', 'status_message', 'result_profile', 'result_ref', 'blocking_reasons', 'updated_fields'],
                ],
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_transport_bindings(): WP_REST_Response
    {
        return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_collection' => self::uaix_api_url('/transport-bindings'),
                'bindings' => self::transport_binding_records(),
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_trust_channels(): WP_REST_Response
    {
        return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_collection' => self::uaix_api_url('/trust-channels'),
                'support_boundary' => self::support_boundary(),
                'channels' => self::trust_channel_records(),
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_conformance_levels(): WP_REST_Response
    {
        return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_collection' => self::uaix_api_url('/conformance-levels'),
                'levels' => self::conformance_level_records(),
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_error_registry(): WP_REST_Response
    {
        return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_collection' => self::uaix_api_url('/error-registry'),
                'problem_details' => self::problem_details_contract(),
                'errors' => self::error_registry_records(),
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_examples($request = null): WP_REST_Response
    {
        $profile = self::profile_from_request($request);
        if ($profile !== '') {
            return self::build_rest_response(self::profile_example_record($profile), self::JSON_CONTENT_TYPE);
        }

        return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_page' => self::uaix_public_url('/en-us/examples/'),
                'canonical_collection' => self::uaix_api_url('/examples'),
                'examples' => [
                    'capability_statement' => self::build_capability_statement('example'),
                    'intent_request' => self::build_intent_request_example(),
                    'error' => self::build_error_message(
                        'invalid_message',
                        'Invalid UAIX message',
                        'Example error envelope using the UAI-1 error profile and RFC 9457 Problem Details fields.',
                        400
                    ),
                ],
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_adoption_kit(): WP_REST_Response
    {
        return self::build_rest_response(
            [
                'current_release' => 'UAI-1',
                'canonical_page' => self::uaix_public_url('/en-us/tools/adoption-kit/'),
                'local_catalog' => self::local_uaix_url('/catalog'),
                'start_here' => [
                    home_url('/.well-known/uaix.json'),
                    home_url('/llms.txt'),
                    self::local_uaix_url('/catalog'),
                    self::local_uaix_url('/schemas'),
                    self::local_uaix_url('/registry'),
                    self::local_uaix_url('/examples'),
                    self::local_uaix_url('/validate'),
                    self::local_uaix_url('/mock-exchange'),
                ],
                'support_boundary' => self::support_boundary(),
                'known_blocked_capabilities' => self::blocked_capabilities(),
            ],
            self::JSON_CONTENT_TYPE
        );
    }

    public static function rest_get_uaix_openapi(): WP_REST_Response
    {
        $payload = function_exists('spiralist_get_openapi_manifest_payload')
            ? spiralist_get_openapi_manifest_payload()
            : [
                'openapi' => '3.0.3',
                'info' => [
                    'title' => 'Spiralist.org UAIX UAI-1 API',
                    'version' => defined('UAI1_WP_VERSION') ? UAI1_WP_VERSION : 'unknown',
                ],
                'paths' => [],
            ];