notebooklm 4.7.0

Async Rust client for the local Gemini Notebook (NotebookLM) REST API: citation-backed answers, passage search, and the UTCP manual.
Documentation
// @generated by scripts/build-rust-client.mjs — do not edit by hand.
//
// The synchronous twin, for programs with no runtime. It owns a
// current-thread runtime and blocks on the asynchronous calls, which is the
// honest way round: those are the real ones. Do not call these from inside an
// async context — use [`crate::Client`] there.

// One import of the generated types rather than ninety names.
#![allow(
    clippy::too_many_arguments,
    clippy::doc_markdown,
    clippy::wildcard_imports
)]

use crate::error::{Error, Result};
use crate::generated::*;

/// The blocking twin of [`crate::Client`], with the same calls.
#[derive(Debug)]
pub struct Client {
    inner: crate::Client,
    runtime: tokio::runtime::Runtime,
}

impl Client {
    /// A blocking client for a server on the given address.
    pub fn new(base: impl Into<String>) -> Result<Self> {
        Self::from_async(crate::Client::new(base)?)
    }

    /// A blocking client for the usual loopback address and port.
    pub fn local() -> Result<Self> {
        Self::from_async(crate::Client::local()?)
    }

    /// Wrap a configured asynchronous client, so the builder needs no twin.
    pub fn from_async(inner: crate::Client) -> Result<Self> {
        let runtime = tokio::runtime::Builder::new_current_thread()
            .enable_all()
            .build()
            .map_err(Error::Runtime)?;
        Ok(Self { inner, runtime })
    }

    /// See [`crate::Client::get_server_info`].
    pub fn get_server_info(&self) -> Result<ServerInfo> {
        self.runtime.block_on(self.inner.get_server_info())
    }

    /// See [`crate::Client::get_health`].
    pub fn get_health(&self) -> Result<GetHealthData> {
        self.runtime.block_on(self.inner.get_health())
    }

    /// See [`crate::Client::get_utcp_manual`].
    pub fn get_utcp_manual(&self) -> Result<UtcpManual> {
        self.runtime.block_on(self.inner.get_utcp_manual())
    }

    /// See [`crate::Client::setup_auth`].
    pub fn setup_auth(&self, body: &SetupAuthRequest) -> Result<SetupAuthData> {
        self.runtime.block_on(self.inner.setup_auth(body))
    }

    /// See [`crate::Client::de_auth`].
    pub fn de_auth(&self) -> Result<DeAuthData> {
        self.runtime.block_on(self.inner.de_auth())
    }

    /// See [`crate::Client::re_auth`].
    pub fn re_auth(&self, body: &ReAuthRequest) -> Result<ReAuthData> {
        self.runtime.block_on(self.inner.re_auth(body))
    }

    /// See [`crate::Client::ask_question`].
    pub fn ask_question(&self, body: &AskRequest) -> Result<AskQuestionData> {
        self.runtime.block_on(self.inner.ask_question(body))
    }

    /// See [`crate::Client::list_notebooks`].
    pub fn list_notebooks(&self) -> Result<ListNotebooksData> {
        self.runtime.block_on(self.inner.list_notebooks())
    }

    /// See [`crate::Client::add_notebook`].
    pub fn add_notebook(&self, body: &AddNotebookRequest) -> Result<AddNotebookData> {
        self.runtime.block_on(self.inner.add_notebook(body))
    }

    /// See [`crate::Client::list_notebooks_from_nblm`].
    pub fn list_notebooks_from_nblm(&self) -> Result<ListNotebooksFromNblmData> {
        self.runtime.block_on(self.inner.list_notebooks_from_nblm())
    }

    /// See [`crate::Client::import_scraped_notebooks`].
    pub fn import_scraped_notebooks(&self) -> Result<ImportScrapedNotebooksData> {
        self.runtime.block_on(self.inner.import_scraped_notebooks())
    }

    /// See [`crate::Client::auto_discover_notebook`].
    pub fn auto_discover_notebook(
        &self,
        body: &AutoDiscoverNotebookRequest,
    ) -> Result<AutoDiscoverNotebookData> {
        self.runtime
            .block_on(self.inner.auto_discover_notebook(body))
    }

    /// See [`crate::Client::search_notebooks`].
    pub fn search_notebooks(&self, query: &SearchNotebooksQuery) -> Result<SearchNotebooksData> {
        self.runtime.block_on(self.inner.search_notebooks(query))
    }

    /// See [`crate::Client::get_library_stats`].
    pub fn get_library_stats(&self) -> Result<GetLibraryStatsData> {
        self.runtime.block_on(self.inner.get_library_stats())
    }

    /// See [`crate::Client::delete_notebooks_from_nblm`].
    pub fn delete_notebooks_from_nblm(
        &self,
        body: &DeleteNotebooksFromNblmRequest,
    ) -> Result<DeleteNotebooksFromNblmData> {
        self.runtime
            .block_on(self.inner.delete_notebooks_from_nblm(body))
    }

    /// See [`crate::Client::get_notebook`].
    pub fn get_notebook(&self, id: &str) -> Result<GetNotebookData> {
        self.runtime.block_on(self.inner.get_notebook(id))
    }

    /// See [`crate::Client::update_notebook`].
    pub fn update_notebook(&self, id: &str) -> Result<UpdateNotebookData> {
        self.runtime.block_on(self.inner.update_notebook(id))
    }

    /// See [`crate::Client::remove_notebook`].
    pub fn remove_notebook(&self, id: &str) -> Result<RemoveNotebookData> {
        self.runtime.block_on(self.inner.remove_notebook(id))
    }

    /// See [`crate::Client::select_notebook`].
    pub fn select_notebook(&self, id: &str) -> Result<SelectNotebookData> {
        self.runtime.block_on(self.inner.select_notebook(id))
    }

    /// See [`crate::Client::create_notebook`].
    pub fn create_notebook(&self, body: &CreateNotebookRequest) -> Result<CreateNotebookData> {
        self.runtime.block_on(self.inner.create_notebook(body))
    }

    /// See [`crate::Client::list_sessions`].
    pub fn list_sessions(&self) -> Result<ListSessionsData> {
        self.runtime.block_on(self.inner.list_sessions())
    }

    /// See [`crate::Client::close_session`].
    pub fn close_session(&self, id: &str) -> Result<CloseSessionData> {
        self.runtime.block_on(self.inner.close_session(id))
    }

    /// See [`crate::Client::reset_session`].
    pub fn reset_session(&self, id: &str) -> Result<ResetSessionData> {
        self.runtime.block_on(self.inner.reset_session(id))
    }

    /// See [`crate::Client::add_source`].
    pub fn add_source(&self, body: &AddSourceRequest) -> Result<AddSourceData> {
        self.runtime.block_on(self.inner.add_source(body))
    }

    /// See [`crate::Client::delete_source`].
    pub fn delete_source(&self, query: &DeleteSourceQuery) -> Result<DeleteSourceData> {
        self.runtime.block_on(self.inner.delete_source(query))
    }

    /// See [`crate::Client::delete_source_by_id`].
    pub fn delete_source_by_id(&self, id: &str) -> Result<DeleteSourceByIdData> {
        self.runtime.block_on(self.inner.delete_source_by_id(id))
    }

    /// See [`crate::Client::delete_content`].
    pub fn delete_content(
        &self,
        content_id: &str,
        query: &DeleteContentQuery,
    ) -> Result<DeleteContentData> {
        self.runtime
            .block_on(self.inner.delete_content(content_id, query))
    }

    /// See [`crate::Client::list_sources`].
    pub fn list_sources(&self, id: &str) -> Result<ListSourcesData> {
        self.runtime.block_on(self.inner.list_sources(id))
    }

    /// See [`crate::Client::read_source`].
    pub fn read_source(
        &self,
        id: &str,
        source_id: &str,
        query: &ReadSourceQuery,
    ) -> Result<ReadSourceData> {
        self.runtime
            .block_on(self.inner.read_source(id, source_id, query))
    }

    /// See [`crate::Client::rename_source`].
    pub fn rename_source(
        &self,
        id: &str,
        source_id: &str,
        body: &RenameSourceRequest,
    ) -> Result<RenameSourceData> {
        self.runtime
            .block_on(self.inner.rename_source(id, source_id, body))
    }

    /// See [`crate::Client::get_source_guide`].
    pub fn get_source_guide(&self, id: &str, source_id: &str) -> Result<GetSourceGuideData> {
        self.runtime
            .block_on(self.inner.get_source_guide(id, source_id))
    }

    /// See [`crate::Client::search_passages`].
    pub fn search_passages(
        &self,
        id: &str,
        body: &SearchPassagesRequest,
    ) -> Result<SearchPassagesData> {
        self.runtime.block_on(self.inner.search_passages(id, body))
    }

    /// See [`crate::Client::get_notebook_summary`].
    pub fn get_notebook_summary(&self, id: &str) -> Result<GetNotebookSummaryData> {
        self.runtime.block_on(self.inner.get_notebook_summary(id))
    }

    /// See [`crate::Client::check_source_freshness`].
    pub fn check_source_freshness(
        &self,
        id: &str,
        query: &CheckSourceFreshnessQuery,
    ) -> Result<CheckSourceFreshnessData> {
        self.runtime
            .block_on(self.inner.check_source_freshness(id, query))
    }

    /// See [`crate::Client::get_chat_history`].
    pub fn get_chat_history(
        &self,
        id: &str,
        query: &GetChatHistoryQuery,
    ) -> Result<GetChatHistoryData> {
        self.runtime
            .block_on(self.inner.get_chat_history(id, query))
    }

    /// See [`crate::Client::delete_chat_history`].
    pub fn delete_chat_history(
        &self,
        id: &str,
        query: &DeleteChatHistoryQuery,
    ) -> Result<DeleteChatHistoryData> {
        self.runtime
            .block_on(self.inner.delete_chat_history(id, query))
    }

    /// See [`crate::Client::get_share_status`].
    pub fn get_share_status(&self, id: &str) -> Result<GetShareStatusData> {
        self.runtime.block_on(self.inner.get_share_status(id))
    }

    /// See [`crate::Client::share_notebook`].
    pub fn share_notebook(
        &self,
        id: &str,
        body: &ShareNotebookRequest,
    ) -> Result<ShareNotebookData> {
        self.runtime.block_on(self.inner.share_notebook(id, body))
    }

    /// See [`crate::Client::retry_content`].
    pub fn retry_content(
        &self,
        artifact_id: &str,
        body: &RetryContentRequest,
    ) -> Result<RetryContentData> {
        self.runtime
            .block_on(self.inner.retry_content(artifact_id, body))
    }

    /// See [`crate::Client::export_artifact`].
    pub fn export_artifact(
        &self,
        artifact_id: &str,
        body: &ExportArtifactRequest,
    ) -> Result<ExportArtifactData> {
        self.runtime
            .block_on(self.inner.export_artifact(artifact_id, body))
    }

    /// See [`crate::Client::revise_slide`].
    pub fn revise_slide(
        &self,
        artifact_id: &str,
        body: &ReviseSlideRequest,
    ) -> Result<ReviseSlideData> {
        self.runtime
            .block_on(self.inner.revise_slide(artifact_id, body))
    }

    /// See [`crate::Client::list_labels`].
    pub fn list_labels(&self, id: &str) -> Result<ListLabelsData> {
        self.runtime.block_on(self.inner.list_labels(id))
    }

    /// See [`crate::Client::manage_labels`].
    pub fn manage_labels(&self, id: &str, body: &ManageLabelsRequest) -> Result<ManageLabelsData> {
        self.runtime.block_on(self.inner.manage_labels(id, body))
    }

    /// See [`crate::Client::generate_study_aid`].
    pub fn generate_study_aid(
        &self,
        body: &GenerateStudyAidRequest,
    ) -> Result<GenerateStudyAidData> {
        self.runtime.block_on(self.inner.generate_study_aid(body))
    }

    /// See [`crate::Client::generate_mind_map`].
    pub fn generate_mind_map(&self, body: &GenerateMindMapRequest) -> Result<GenerateMindMapData> {
        self.runtime.block_on(self.inner.generate_mind_map(body))
    }

    /// See [`crate::Client::research_sources`].
    pub fn research_sources(&self, body: &ResearchSourcesRequest) -> Result<ResearchSourcesData> {
        self.runtime.block_on(self.inner.research_sources(body))
    }

    /// See [`crate::Client::generate_content`].
    pub fn generate_content(&self, body: &GenerateRequest) -> Result<GenerateContentData> {
        self.runtime.block_on(self.inner.generate_content(body))
    }

    /// See [`crate::Client::download_content`].
    pub fn download_content(&self, query: &DownloadContentQuery) -> Result<DownloadContentData> {
        self.runtime.block_on(self.inner.download_content(query))
    }

    /// See [`crate::Client::list_content`].
    pub fn list_content(&self) -> Result<ListContentData> {
        self.runtime.block_on(self.inner.list_content())
    }

    /// See [`crate::Client::create_note`].
    pub fn create_note(&self) -> Result<CreateNoteData> {
        self.runtime.block_on(self.inner.create_note())
    }

    /// See [`crate::Client::save_chat_to_note`].
    pub fn save_chat_to_note(&self) -> Result<SaveChatToNoteData> {
        self.runtime.block_on(self.inner.save_chat_to_note())
    }

    /// See [`crate::Client::convert_note_to_source`].
    pub fn convert_note_to_source(&self, note_title: &str) -> Result<ConvertNoteToSourceData> {
        self.runtime
            .block_on(self.inner.convert_note_to_source(note_title))
    }

    /// See [`crate::Client::batch_to_vault`].
    pub fn batch_to_vault(&self, body: &BatchToVaultRequest) -> Result<BatchToVaultData> {
        self.runtime.block_on(self.inner.batch_to_vault(body))
    }

    /// See [`crate::Client::list_notes`].
    pub fn list_notes(&self, body: &ListNotesRequest) -> Result<ListNotesData> {
        self.runtime.block_on(self.inner.list_notes(body))
    }

    /// See [`crate::Client::get_note`].
    pub fn get_note(&self, body: &GetNoteRequest) -> Result<GetNoteData> {
        self.runtime.block_on(self.inner.get_note(body))
    }

    /// See [`crate::Client::cleanup_data`].
    pub fn cleanup_data(&self, body: &CleanupDataRequest) -> Result<CleanupDataData> {
        self.runtime.block_on(self.inner.cleanup_data(body))
    }
}