rest_authorization_required_code() ] ); } if ( ! current_user_can( 'wpf_manage_funnels' ) && ! current_user_can( 'manage_options' ) ) { return new WP_Error( 'wpfunnels_rest_cannot_access', __( 'Sorry, you do not have permission to access AI generation.', 'wpfnl' ), [ 'status' => rest_authorization_required_code() ] ); } return true; } /** * Register REST routes. * * @return void */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base . '/generate', [ [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => [ $this, 'generate' ], 'permission_callback' => [ $this, 'check_permission' ], ], ] ); } /** * Single-shot generation endpoint handler. * * @param WP_REST_Request $request Request. * @return WP_REST_Response|WP_Error */ public function generate( $request ) { $task = sanitize_text_field( (string) $request->get_param( 'task' ) ); $prompt = sanitize_textarea_field( (string) $request->get_param( 'prompt' ) ); $params = $request->get_param( 'params' ) ?: []; $result = \WPFunnels\AI\SingleShotAIService::executeTask( $task, $prompt, $params ); if ( is_wp_error( $result ) ) { return $result; } return rest_ensure_response( $result ); } }