# This file was auto-generated by Fern from our API Definition.

import typing

from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
from ..types.connection_config_options_response import ConnectionConfigOptionsResponse
from ..types.health_response import HealthResponse
from ..types.o_auth_config_options_response import OAuthConfigOptionsResponse
from .raw_client import AsyncRawKnowledgeConnectorsClient, RawKnowledgeConnectorsClient

# this is used as the default value for optional parameters
OMIT = typing.cast(typing.Any, ...)


class KnowledgeConnectorsClient:
    def __init__(self, *, client_wrapper: SyncClientWrapper):
        self._raw_client = RawKnowledgeConnectorsClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> RawKnowledgeConnectorsClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        RawKnowledgeConnectorsClient
        """
        return self._raw_client

    def health_check(self, *, request_options: typing.Optional[RequestOptions] = None) -> HealthResponse:
        """
        Check whether the connector service is reachable.

        Parameters
        ----------
        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HealthResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.health_check()
        """
        _response = self._raw_client.health_check(request_options=request_options)
        return _response.data

    def serve_connector_icon(self, slug: str, *, request_options: typing.Optional[RequestOptions] = None) -> typing.Any:
        """
        Proxy connector icon through Aitronos API.

        Parameters
        ----------
        slug : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.serve_connector_icon(
            slug="slug",
        )
        """
        _response = self._raw_client.serve_connector_icon(slug, request_options=request_options)
        return _response.data

    def health_check_org_scoped(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> HealthResponse:
        """
        Check whether the connector service is reachable (org-scoped).

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HealthResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.health_check_org_scoped(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.health_check_org_scoped(organization_id, request_options=request_options)
        return _response.data

    def list_workspaces(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_workspaces(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_workspaces(organization_id, request_options=request_options)
        return _response.data

    def create_workspace(
        self, organization_id: str, *, name: str, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Human-readable workspace name

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_workspace(
            organization_id="organization_id",
            name="name",
        )
        """
        _response = self._raw_client.create_workspace(organization_id, name=name, request_options=request_options)
        return _response.data

    def get_workspace(
        self, organization_id: str, workspace_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_workspace(
            organization_id="organization_id",
            workspace_id="workspace_id",
        )
        """
        _response = self._raw_client.get_workspace(organization_id, workspace_id, request_options=request_options)
        return _response.data

    def delete_workspace(
        self, organization_id: str, workspace_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_workspace(
            organization_id="organization_id",
            workspace_id="workspace_id",
        )
        """
        _response = self._raw_client.delete_workspace(organization_id, workspace_id, request_options=request_options)
        return _response.data

    def update_workspace(
        self,
        organization_id: str,
        workspace_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        name : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_workspace(
            organization_id="organization_id",
            workspace_id="workspace_id",
        )
        """
        _response = self._raw_client.update_workspace(
            organization_id, workspace_id, name=name, request_options=request_options
        )
        return _response.data

    def set_workspace_oauth_credentials(
        self,
        organization_id: str,
        workspace_id: str,
        *,
        actor_type: str,
        name: str,
        configuration: typing.Dict[str, typing.Any],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        actor_type : str
            e.g. workspace

        name : str
            Credential name

        configuration : typing.Dict[str, typing.Any]
            OAuth config blob

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.set_workspace_oauth_credentials(
            organization_id="organization_id",
            workspace_id="workspace_id",
            actor_type="actor_type",
            name="name",
            configuration={"key": "value"},
        )
        """
        _response = self._raw_client.set_workspace_oauth_credentials(
            organization_id,
            workspace_id,
            actor_type=actor_type,
            name=name,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    def get_source_definition_filter_options(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Return available categories, statuses, and sort options with counts.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_source_definition_filter_options(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.get_source_definition_filter_options(
            organization_id, request_options=request_options
        )
        return _response.data

    def list_source_definitions(
        self,
        organization_id: str,
        *,
        search: typing.Optional[str] = None,
        category: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        sort: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        search : typing.Optional[str]
            Search by connector name

        category : typing.Optional[str]
            Filter by category

        status : typing.Optional[str]
            Filter by status (ga, beta, alpha)

        sort : typing.Optional[str]
            Sort order (name_asc, name_desc, status)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_source_definitions(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_source_definitions(
            organization_id, search=search, category=category, status=status, sort=sort, request_options=request_options
        )
        return _response.data

    def create_source_definition(
        self,
        organization_id: str,
        *,
        name: str,
        docker_repository: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str

        docker_repository : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_source_definition(
            organization_id="organization_id",
            name="name",
        )
        """
        _response = self._raw_client.create_source_definition(
            organization_id,
            name=name,
            docker_repository=docker_repository,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    def get_source_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_source_definition(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.get_source_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def update_source_definition(
        self,
        organization_id: str,
        definition_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        name : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_source_definition(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.update_source_definition(
            organization_id,
            definition_id,
            name=name,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    def delete_source_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_source_definition(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.delete_source_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def get_source_definition_spec(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_source_definition_spec(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.get_source_definition_spec(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def list_sources(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_sources(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_sources(organization_id, request_options=request_options)
        return _response.data

    def create_source(
        self,
        organization_id: str,
        *,
        name: str,
        definition_id: str,
        workspace_id: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str

        definition_id : str

        workspace_id : typing.Optional[str]
            Resolved server-side if empty

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_source(
            organization_id="organization_id",
            name="name",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.create_source(
            organization_id,
            name=name,
            definition_id=definition_id,
            workspace_id=workspace_id,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    def get_source(
        self, organization_id: str, source_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_source(
            organization_id="organization_id",
            source_id="source_id",
        )
        """
        _response = self._raw_client.get_source(organization_id, source_id, request_options=request_options)
        return _response.data

    def update_source(
        self,
        organization_id: str,
        source_id: str,
        *,
        name: str,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        name : str

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_source(
            organization_id="organization_id",
            source_id="source_id",
            name="name",
        )
        """
        _response = self._raw_client.update_source(
            organization_id, source_id, name=name, configuration=configuration, request_options=request_options
        )
        return _response.data

    def delete_source(
        self, organization_id: str, source_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_source(
            organization_id="organization_id",
            source_id="source_id",
        )
        """
        _response = self._raw_client.delete_source(organization_id, source_id, request_options=request_options)
        return _response.data

    def patch_source(
        self,
        organization_id: str,
        source_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        name : typing.Optional[str]

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.patch_source(
            organization_id="organization_id",
            source_id="source_id",
        )
        """
        _response = self._raw_client.patch_source(
            organization_id, source_id, name=name, configuration=configuration, request_options=request_options
        )
        return _response.data

    def test_source(
        self,
        organization_id: str,
        *,
        source_id: typing.Optional[str] = OMIT,
        source_definition_id: typing.Optional[str] = OMIT,
        workspace_id: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        name: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : typing.Optional[str]

        source_definition_id : typing.Optional[str]

        workspace_id : typing.Optional[str]

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        name : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.test_source(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.test_source(
            organization_id,
            source_id=source_id,
            source_definition_id=source_definition_id,
            workspace_id=workspace_id,
            configuration=configuration,
            name=name,
            request_options=request_options,
        )
        return _response.data

    def test_existing_source(
        self, organization_id: str, source_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.test_existing_source(
            organization_id="organization_id",
            source_id="source_id",
        )
        """
        _response = self._raw_client.test_existing_source(organization_id, source_id, request_options=request_options)
        return _response.data

    def source_oauth(
        self,
        organization_id: str,
        *,
        source_definition_id: str,
        workspace_id: str,
        redirect_url: str,
        o_auth_input_configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        integration_params: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_definition_id : str

        workspace_id : str

        redirect_url : str

        o_auth_input_configuration : typing.Optional[typing.Dict[str, typing.Any]]

        integration_params : typing.Optional[typing.Dict[str, typing.Any]]
            Connector-specific params required before OAuth (e.g. {'subdomain': 'contoso'} for SharePoint)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.source_oauth(
            organization_id="organization_id",
            source_definition_id="source_definition_id",
            workspace_id="workspace_id",
            redirect_url="redirect_url",
        )
        """
        _response = self._raw_client.source_oauth(
            organization_id,
            source_definition_id=source_definition_id,
            workspace_id=workspace_id,
            redirect_url=redirect_url,
            o_auth_input_configuration=o_auth_input_configuration,
            integration_params=integration_params,
            request_options=request_options,
        )
        return _response.data

    def source_authorize(
        self,
        organization_id: str,
        *,
        slug: str,
        redirect_url: str,
        integration_params: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        slug : str
            Connector app slug

        redirect_url : str

        integration_params : typing.Optional[typing.Dict[str, typing.Any]]
            Connector-specific params required before OAuth (e.g. {'subdomain': 'contoso'} for SharePoint)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.source_authorize(
            organization_id="organization_id",
            slug="slug",
            redirect_url="redirect_url",
        )
        """
        _response = self._raw_client.source_authorize(
            organization_id,
            slug=slug,
            redirect_url=redirect_url,
            integration_params=integration_params,
            request_options=request_options,
        )
        return _response.data

    def source_oauth_callback(
        self,
        organization_id: str,
        *,
        connection_id: str,
        workspace_id: str,
        source_definition_id: str,
        source_name: str,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        workspace_id : str

        source_definition_id : str

        source_name : str

        configuration : typing.Optional[typing.Dict[str, typing.Any]]
            Extra connector-specific configuration (e.g. repositories for GitHub)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.source_oauth_callback(
            organization_id="organization_id",
            connection_id="connection_id",
            workspace_id="workspace_id",
            source_definition_id="source_definition_id",
            source_name="source_name",
        )
        """
        _response = self._raw_client.source_oauth_callback(
            organization_id,
            connection_id=connection_id,
            workspace_id=workspace_id,
            source_definition_id=source_definition_id,
            source_name=source_name,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    def source_manual_config_options(
        self,
        organization_id: str,
        *,
        source_definition_id: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> OAuthConfigOptionsResponse:
        """
        Return UI-friendly configuration fields for manual (non-OAuth) setup.

        Parameters
        ----------
        organization_id : str

        source_definition_id : str
            Source definition UUID

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        OAuthConfigOptionsResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.source_manual_config_options(
            organization_id="organization_id",
            source_definition_id="source_definition_id",
        )
        """
        _response = self._raw_client.source_manual_config_options(
            organization_id, source_definition_id=source_definition_id, request_options=request_options
        )
        return _response.data

    def source_oauth_config_options(
        self,
        organization_id: str,
        *,
        connection_id: str,
        source_definition_id: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> OAuthConfigOptionsResponse:
        """
        Return UI-friendly configuration fields for a connector after OAuth.

        Parameters
        ----------
        organization_id : str

        connection_id : str
            Connection ID from OAuth callback

        source_definition_id : str
            Source definition UUID

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        OAuthConfigOptionsResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.source_oauth_config_options(
            organization_id="organization_id",
            connection_id="connection_id",
            source_definition_id="source_definition_id",
        )
        """
        _response = self._raw_client.source_oauth_config_options(
            organization_id,
            connection_id=connection_id,
            source_definition_id=source_definition_id,
            request_options=request_options,
        )
        return _response.data

    def discover_streams(
        self, organization_id: str, *, source_id: str, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str
            Source ID to discover streams for

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.discover_streams(
            organization_id="organization_id",
            source_id="source_id",
        )
        """
        _response = self._raw_client.discover_streams(
            organization_id, source_id=source_id, request_options=request_options
        )
        return _response.data

    def list_declarative_sources(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_declarative_sources(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_declarative_sources(organization_id, request_options=request_options)
        return _response.data

    def create_declarative_source(
        self,
        organization_id: str,
        *,
        name: str,
        workspace_id: str,
        manifest: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Human-readable name for the declarative source

        workspace_id : str
            Workspace ID

        manifest : typing.Optional[typing.Dict[str, typing.Any]]
            YAML/JSON manifest for the low-code connector definition

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_declarative_source(
            organization_id="organization_id",
            name="name",
            workspace_id="workspace_id",
        )
        """
        _response = self._raw_client.create_declarative_source(
            organization_id, name=name, workspace_id=workspace_id, manifest=manifest, request_options=request_options
        )
        return _response.data

    def get_declarative_source(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_declarative_source(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.get_declarative_source(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def update_declarative_source(
        self,
        organization_id: str,
        definition_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        manifest: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        name : typing.Optional[str]

        manifest : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_declarative_source(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.update_declarative_source(
            organization_id, definition_id, name=name, manifest=manifest, request_options=request_options
        )
        return _response.data

    def delete_declarative_source(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_declarative_source(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.delete_declarative_source(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def list_tags(self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_tags(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_tags(organization_id, request_options=request_options)
        return _response.data

    def create_tag(
        self,
        organization_id: str,
        *,
        name: str,
        workspace_id: str,
        color: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Tag display name

        workspace_id : str
            Workspace ID

        color : typing.Optional[str]
            Hex color code (e.g. '#FF5733')

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_tag(
            organization_id="organization_id",
            name="name",
            workspace_id="workspace_id",
        )
        """
        _response = self._raw_client.create_tag(
            organization_id, name=name, workspace_id=workspace_id, color=color, request_options=request_options
        )
        return _response.data

    def get_tag(
        self, organization_id: str, tag_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        tag_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_tag(
            organization_id="organization_id",
            tag_id="tag_id",
        )
        """
        _response = self._raw_client.get_tag(organization_id, tag_id, request_options=request_options)
        return _response.data

    def delete_tag(
        self, organization_id: str, tag_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        tag_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_tag(
            organization_id="organization_id",
            tag_id="tag_id",
        )
        """
        _response = self._raw_client.delete_tag(organization_id, tag_id, request_options=request_options)
        return _response.data

    def update_tag(
        self,
        organization_id: str,
        tag_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        color: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        tag_id : str

        name : typing.Optional[str]

        color : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_tag(
            organization_id="organization_id",
            tag_id="tag_id",
        )
        """
        _response = self._raw_client.update_tag(
            organization_id, tag_id, name=name, color=color, request_options=request_options
        )
        return _response.data

    def get_destination_definition_filter_options(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Return available categories, statuses, and sort options with counts.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_destination_definition_filter_options(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.get_destination_definition_filter_options(
            organization_id, request_options=request_options
        )
        return _response.data

    def list_destination_definitions(
        self,
        organization_id: str,
        *,
        search: typing.Optional[str] = None,
        category: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        sort: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        search : typing.Optional[str]
            Search by connector name

        category : typing.Optional[str]
            Filter by category

        status : typing.Optional[str]
            Filter by status (ga, beta, alpha)

        sort : typing.Optional[str]
            Sort order (name_asc, name_desc, status)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_destination_definitions(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_destination_definitions(
            organization_id, search=search, category=category, status=status, sort=sort, request_options=request_options
        )
        return _response.data

    def create_destination_definition(
        self,
        organization_id: str,
        *,
        name: str,
        docker_repository: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Definition name

        docker_repository : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_destination_definition(
            organization_id="organization_id",
            name="name",
        )
        """
        _response = self._raw_client.create_destination_definition(
            organization_id,
            name=name,
            docker_repository=docker_repository,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    def get_destination_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_destination_definition(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.get_destination_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def update_destination_definition(
        self,
        organization_id: str,
        definition_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        name : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_destination_definition(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.update_destination_definition(
            organization_id,
            definition_id,
            name=name,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    def delete_destination_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_destination_definition(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.delete_destination_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def list_destinations(
        self,
        organization_id: str,
        *,
        slice_id: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        List vector stores available as connector destinations.

        Parameters
        ----------
        organization_id : str

        slice_id : typing.Optional[str]
            Filter by knowledge slice ID

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_destinations(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_destinations(
            organization_id, slice_id=slice_id, request_options=request_options
        )
        return _response.data

    def create_destination(
        self,
        organization_id: str,
        *,
        name: str,
        destination_definition_id: str,
        workspace_id: str,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Destination name

        destination_definition_id : str
            Destination definition ID

        workspace_id : str
            Workspace ID

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_destination(
            organization_id="organization_id",
            name="name",
            destination_definition_id="destination_definition_id",
            workspace_id="workspace_id",
        )
        """
        _response = self._raw_client.create_destination(
            organization_id,
            name=name,
            destination_definition_id=destination_definition_id,
            workspace_id=workspace_id,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    def get_destination(
        self, organization_id: str, destination_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        destination_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_destination(
            organization_id="organization_id",
            destination_id="destination_id",
        )
        """
        _response = self._raw_client.get_destination(organization_id, destination_id, request_options=request_options)
        return _response.data

    def delete_destination(
        self, organization_id: str, destination_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        destination_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_destination(
            organization_id="organization_id",
            destination_id="destination_id",
        )
        """
        _response = self._raw_client.delete_destination(
            organization_id, destination_id, request_options=request_options
        )
        return _response.data

    def update_destination(
        self,
        organization_id: str,
        destination_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        destination_id : str

        name : typing.Optional[str]

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_destination(
            organization_id="organization_id",
            destination_id="destination_id",
        )
        """
        _response = self._raw_client.update_destination(
            organization_id, destination_id, name=name, configuration=configuration, request_options=request_options
        )
        return _response.data

    def list_connector_versions(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_connector_versions(
            organization_id="organization_id",
            definition_id="definition_id",
        )
        """
        _response = self._raw_client.list_connector_versions(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    def upgrade_source(
        self,
        organization_id: str,
        source_id: str,
        *,
        target_version: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        target_version : str
            Docker image tag for the target connector version

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.upgrade_source(
            organization_id="organization_id",
            source_id="source_id",
            target_version="target_version",
        )
        """
        _response = self._raw_client.upgrade_source(
            organization_id, source_id, target_version=target_version, request_options=request_options
        )
        return _response.data

    def list_jobs(
        self,
        organization_id: str,
        *,
        connection_id: typing.Optional[str] = None,
        job_type: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        offset: typing.Optional[int] = None,
        created_at_start: typing.Optional[str] = None,
        created_at_end: typing.Optional[str] = None,
        order_by: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : typing.Optional[str]

        job_type : typing.Optional[str]

        status : typing.Optional[str]

        limit : typing.Optional[int]

        offset : typing.Optional[int]

        created_at_start : typing.Optional[str]

        created_at_end : typing.Optional[str]

        order_by : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_jobs(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_jobs(
            organization_id,
            connection_id=connection_id,
            job_type=job_type,
            status=status,
            limit=limit,
            offset=offset,
            created_at_start=created_at_start,
            created_at_end=created_at_end,
            order_by=order_by,
            request_options=request_options,
        )
        return _response.data

    def trigger_job(
        self,
        organization_id: str,
        *,
        connection_id: str,
        job_type: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str
            Connection to trigger

        job_type : str
            Job type: 'sync' or 'reset'

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.trigger_job(
            organization_id="organization_id",
            connection_id="connectionId",
            job_type="jobType",
        )
        """
        _response = self._raw_client.trigger_job(
            organization_id, connection_id=connection_id, job_type=job_type, request_options=request_options
        )
        return _response.data

    def get_job(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_job(
            organization_id="organization_id",
            job_id="job_id",
        )
        """
        _response = self._raw_client.get_job(organization_id, job_id, request_options=request_options)
        return _response.data

    def cancel_job(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.cancel_job(
            organization_id="organization_id",
            job_id="job_id",
        )
        """
        _response = self._raw_client.cancel_job(organization_id, job_id, request_options=request_options)
        return _response.data

    def retry_job(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.retry_job(
            organization_id="organization_id",
            job_id="job_id",
        )
        """
        _response = self._raw_client.retry_job(organization_id, job_id, request_options=request_options)
        return _response.data

    def get_job_logs(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_job_logs(
            organization_id="organization_id",
            job_id="job_id",
        )
        """
        _response = self._raw_client.get_job_logs(organization_id, job_id, request_options=request_options)
        return _response.data

    def refresh_connection(
        self,
        organization_id: str,
        connection_id: str,
        *,
        streams: typing.Sequence[str],
        remove_records: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        streams : typing.Sequence[str]
            Stream names to refresh

        remove_records : typing.Optional[bool]
            Remove existing records before re-sync

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.refresh_connection(
            organization_id="organization_id",
            connection_id="connection_id",
            streams=["streams"],
        )
        """
        _response = self._raw_client.refresh_connection(
            organization_id,
            connection_id,
            streams=streams,
            remove_records=remove_records,
            request_options=request_options,
        )
        return _response.data

    def clear_connection(
        self,
        organization_id: str,
        connection_id: str,
        *,
        streams: typing.Sequence[str],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        streams : typing.Sequence[str]
            Stream names to clear

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.clear_connection(
            organization_id="organization_id",
            connection_id="connection_id",
            streams=["streams"],
        )
        """
        _response = self._raw_client.clear_connection(
            organization_id, connection_id, streams=streams, request_options=request_options
        )
        return _response.data

    def get_timeline(
        self,
        organization_id: str,
        connection_id: str,
        *,
        event_type: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        offset: typing.Optional[int] = None,
        created_at_start: typing.Optional[str] = None,
        created_at_end: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        event_type : typing.Optional[str]

        status : typing.Optional[str]

        limit : typing.Optional[int]

        offset : typing.Optional[int]

        created_at_start : typing.Optional[str]

        created_at_end : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_timeline(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_timeline(
            organization_id,
            connection_id,
            event_type=event_type,
            status=status,
            limit=limit,
            offset=offset,
            created_at_start=created_at_start,
            created_at_end=created_at_end,
            request_options=request_options,
        )
        return _response.data

    def get_notifications(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_notifications(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.get_notifications(organization_id, request_options=request_options)
        return _response.data

    def update_notifications(
        self,
        organization_id: str,
        *,
        notifications: typing.Sequence[typing.Dict[str, typing.Any]],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        notifications : typing.Sequence[typing.Dict[str, typing.Any]]
            Notification rules (webhook, email, etc.)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_notifications(
            organization_id="organization_id",
            notifications=[{"key": "value"}],
        )
        """
        _response = self._raw_client.update_notifications(
            organization_id, notifications=notifications, request_options=request_options
        )
        return _response.data

    def test_notifications(
        self,
        organization_id: str,
        *,
        notification_type: str,
        url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        notification_type : str
            Type to test (e.g. webhook, email)

        url : typing.Optional[str]
            Webhook URL to test

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.test_notifications(
            organization_id="organization_id",
            notification_type="notification_type",
        )
        """
        _response = self._raw_client.test_notifications(
            organization_id, notification_type=notification_type, url=url, request_options=request_options
        )
        return _response.data

    def validate_sync_config(
        self,
        organization_id: str,
        *,
        connection_id: typing.Optional[str] = OMIT,
        source_id: typing.Optional[str] = OMIT,
        destination_id: typing.Optional[str] = OMIT,
        streams: typing.Optional[typing.Sequence[typing.Dict[str, typing.Any]]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : typing.Optional[str]

        source_id : typing.Optional[str]

        destination_id : typing.Optional[str]

        streams : typing.Optional[typing.Sequence[typing.Dict[str, typing.Any]]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.validate_sync_config(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.validate_sync_config(
            organization_id,
            connection_id=connection_id,
            source_id=source_id,
            destination_id=destination_id,
            streams=streams,
            request_options=request_options,
        )
        return _response.data

    def get_aggregate_stats(
        self,
        organization_id: str,
        *,
        start_date: typing.Optional[str] = None,
        end_date: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        start_date : typing.Optional[str]

        end_date : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_aggregate_stats(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.get_aggregate_stats(
            organization_id, start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_connection_stats(
        self,
        organization_id: str,
        connection_id: str,
        *,
        start_date: typing.Optional[str] = None,
        end_date: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        start_date : typing.Optional[str]

        end_date : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_connection_stats(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_connection_stats(
            organization_id, connection_id, start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    def get_connection_config_options(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> ConnectionConfigOptionsResponse:
        """
        Return UI-friendly field descriptors for connection settings.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ConnectionConfigOptionsResponse
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_connection_config_options(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.get_connection_config_options(organization_id, request_options=request_options)
        return _response.data

    def list_connections(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.list_connections(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.list_connections(organization_id, request_options=request_options)
        return _response.data

    def create_connection(
        self,
        organization_id: str,
        *,
        source_id: str,
        destination_id: typing.Optional[str] = OMIT,
        name: typing.Optional[str] = OMIT,
        namespace_definition: typing.Optional[str] = OMIT,
        namespace_format: typing.Optional[str] = OMIT,
        prefix: typing.Optional[str] = OMIT,
        schedule: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        configurations: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        status: typing.Optional[str] = OMIT,
        non_breaking_schema_updates_behavior: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str
            Source to connect from

        destination_id : typing.Optional[str]
            Destination to connect to (auto-filled if omitted)

        name : typing.Optional[str]
            Human-readable connection name

        namespace_definition : typing.Optional[str]

        namespace_format : typing.Optional[str]

        prefix : typing.Optional[str]

        schedule : typing.Optional[typing.Dict[str, typing.Any]]
            Sync schedule configuration

        configurations : typing.Optional[typing.Dict[str, typing.Any]]
            Stream configurations

        status : typing.Optional[str]
            active or inactive

        non_breaking_schema_updates_behavior : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.create_connection(
            organization_id="organization_id",
            source_id="sourceId",
        )
        """
        _response = self._raw_client.create_connection(
            organization_id,
            source_id=source_id,
            destination_id=destination_id,
            name=name,
            namespace_definition=namespace_definition,
            namespace_format=namespace_format,
            prefix=prefix,
            schedule=schedule,
            configurations=configurations,
            status=status,
            non_breaking_schema_updates_behavior=non_breaking_schema_updates_behavior,
            request_options=request_options,
        )
        return _response.data

    def get_connection(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_connection(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_connection(organization_id, connection_id, request_options=request_options)
        return _response.data

    def delete_connection(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.delete_connection(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.delete_connection(organization_id, connection_id, request_options=request_options)
        return _response.data

    def update_connection(
        self,
        organization_id: str,
        connection_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        namespace_definition: typing.Optional[str] = OMIT,
        namespace_format: typing.Optional[str] = OMIT,
        prefix: typing.Optional[str] = OMIT,
        schedule: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        configurations: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        status: typing.Optional[str] = OMIT,
        non_breaking_schema_updates_behavior: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        name : typing.Optional[str]

        namespace_definition : typing.Optional[str]

        namespace_format : typing.Optional[str]

        prefix : typing.Optional[str]

        schedule : typing.Optional[typing.Dict[str, typing.Any]]

        configurations : typing.Optional[typing.Dict[str, typing.Any]]

        status : typing.Optional[str]

        non_breaking_schema_updates_behavior : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_connection(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.update_connection(
            organization_id,
            connection_id,
            name=name,
            namespace_definition=namespace_definition,
            namespace_format=namespace_format,
            prefix=prefix,
            schedule=schedule,
            configurations=configurations,
            status=status,
            non_breaking_schema_updates_behavior=non_breaking_schema_updates_behavior,
            request_options=request_options,
        )
        return _response.data

    def get_connection_sync_status(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Return sync status fields for a single connection.

        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_connection_sync_status(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_connection_sync_status(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    def test_connection(
        self,
        organization_id: str,
        *,
        source_id: str,
        destination_id: typing.Optional[str] = OMIT,
        configurations: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str
            Source to test

        destination_id : typing.Optional[str]

        configurations : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.test_connection(
            organization_id="organization_id",
            source_id="source_id",
        )
        """
        _response = self._raw_client.test_connection(
            organization_id,
            source_id=source_id,
            destination_id=destination_id,
            configurations=configurations,
            request_options=request_options,
        )
        return _response.data

    def get_stream_config(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_stream_config(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_stream_config(organization_id, connection_id, request_options=request_options)
        return _response.data

    def update_stream_config(
        self,
        organization_id: str,
        connection_id: str,
        *,
        streams: typing.Sequence[typing.Dict[str, typing.Any]],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        streams : typing.Sequence[typing.Dict[str, typing.Any]]
            Per-stream sync settings

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_stream_config(
            organization_id="organization_id",
            connection_id="connection_id",
            streams=[{"key": "value"}],
        )
        """
        _response = self._raw_client.update_stream_config(
            organization_id, connection_id, streams=streams, request_options=request_options
        )
        return _response.data

    def get_mappings(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_mappings(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_mappings(organization_id, connection_id, request_options=request_options)
        return _response.data

    def update_mappings(
        self,
        organization_id: str,
        connection_id: str,
        *,
        mappings: typing.Sequence[typing.Dict[str, typing.Any]],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        mappings : typing.Sequence[typing.Dict[str, typing.Any]]
            Field transformations (hashing, renaming, filtering)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_mappings(
            organization_id="organization_id",
            connection_id="connection_id",
            mappings=[{"key": "value"}],
        )
        """
        _response = self._raw_client.update_mappings(
            organization_id, connection_id, mappings=mappings, request_options=request_options
        )
        return _response.data

    def get_schema_changes(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_schema_changes(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_schema_changes(organization_id, connection_id, request_options=request_options)
        return _response.data

    def refresh_schema(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.refresh_schema(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.refresh_schema(organization_id, connection_id, request_options=request_options)
        return _response.data

    def update_schema_propagation(
        self,
        organization_id: str,
        connection_id: str,
        *,
        propagation_strategy: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        propagation_strategy : str
            One of: propagate_fully, propagate_columns, ignore, disable_connection

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_schema_propagation(
            organization_id="organization_id",
            connection_id="connection_id",
            propagation_strategy="propagation_strategy",
        )
        """
        _response = self._raw_client.update_schema_propagation(
            organization_id, connection_id, propagation_strategy=propagation_strategy, request_options=request_options
        )
        return _response.data

    def get_state(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.get_state(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.get_state(organization_id, connection_id, request_options=request_options)
        return _response.data

    def update_state(
        self,
        organization_id: str,
        connection_id: str,
        *,
        state: typing.Dict[str, typing.Any],
        state_type: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        state : typing.Dict[str, typing.Any]
            Updated cursor state for streams

        state_type : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.update_state(
            organization_id="organization_id",
            connection_id="connection_id",
            state={"key": "value"},
        )
        """
        _response = self._raw_client.update_state(
            organization_id, connection_id, state=state, state_type=state_type, request_options=request_options
        )
        return _response.data

    def pause_connection(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.pause_connection(
            organization_id="organization_id",
            connection_id="connection_id",
        )
        """
        _response = self._raw_client.pause_connection(organization_id, connection_id, request_options=request_options)
        return _response.data

    def diagnose(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Dict[str, typing.Any]:
        """
        Run a comprehensive health check on the connector infrastructure.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Dict[str, typing.Any]
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.diagnose(
            organization_id="organization_id",
        )
        """
        _response = self._raw_client.diagnose(organization_id, request_options=request_options)
        return _response.data

    def fix(
        self,
        organization_id: str,
        *,
        fixes: typing.Sequence[str],
        dry_run: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Dict[str, typing.Any]:
        """
        Apply fixes for known connector issues.

        Parameters
        ----------
        organization_id : str

        fixes : typing.Sequence[str]

        dry_run : typing.Optional[bool]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Dict[str, typing.Any]
            Successful Response

        Examples
        --------
        from aitronos import Aitronos

        client = Aitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )
        client.knowledge_connectors.fix(
            organization_id="organization_id",
            fixes=["fixes"],
        )
        """
        _response = self._raw_client.fix(organization_id, fixes=fixes, dry_run=dry_run, request_options=request_options)
        return _response.data


class AsyncKnowledgeConnectorsClient:
    def __init__(self, *, client_wrapper: AsyncClientWrapper):
        self._raw_client = AsyncRawKnowledgeConnectorsClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> AsyncRawKnowledgeConnectorsClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        AsyncRawKnowledgeConnectorsClient
        """
        return self._raw_client

    async def health_check(self, *, request_options: typing.Optional[RequestOptions] = None) -> HealthResponse:
        """
        Check whether the connector service is reachable.

        Parameters
        ----------
        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HealthResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.health_check()


        asyncio.run(main())
        """
        _response = await self._raw_client.health_check(request_options=request_options)
        return _response.data

    async def serve_connector_icon(
        self, slug: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Proxy connector icon through Aitronos API.

        Parameters
        ----------
        slug : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.serve_connector_icon(
                slug="slug",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.serve_connector_icon(slug, request_options=request_options)
        return _response.data

    async def health_check_org_scoped(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> HealthResponse:
        """
        Check whether the connector service is reachable (org-scoped).

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HealthResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.health_check_org_scoped(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.health_check_org_scoped(organization_id, request_options=request_options)
        return _response.data

    async def list_workspaces(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_workspaces(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_workspaces(organization_id, request_options=request_options)
        return _response.data

    async def create_workspace(
        self, organization_id: str, *, name: str, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Human-readable workspace name

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_workspace(
                organization_id="organization_id",
                name="name",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_workspace(organization_id, name=name, request_options=request_options)
        return _response.data

    async def get_workspace(
        self, organization_id: str, workspace_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_workspace(
                organization_id="organization_id",
                workspace_id="workspace_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_workspace(organization_id, workspace_id, request_options=request_options)
        return _response.data

    async def delete_workspace(
        self, organization_id: str, workspace_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_workspace(
                organization_id="organization_id",
                workspace_id="workspace_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_workspace(
            organization_id, workspace_id, request_options=request_options
        )
        return _response.data

    async def update_workspace(
        self,
        organization_id: str,
        workspace_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        name : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_workspace(
                organization_id="organization_id",
                workspace_id="workspace_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_workspace(
            organization_id, workspace_id, name=name, request_options=request_options
        )
        return _response.data

    async def set_workspace_oauth_credentials(
        self,
        organization_id: str,
        workspace_id: str,
        *,
        actor_type: str,
        name: str,
        configuration: typing.Dict[str, typing.Any],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        workspace_id : str

        actor_type : str
            e.g. workspace

        name : str
            Credential name

        configuration : typing.Dict[str, typing.Any]
            OAuth config blob

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.set_workspace_oauth_credentials(
                organization_id="organization_id",
                workspace_id="workspace_id",
                actor_type="actor_type",
                name="name",
                configuration={"key": "value"},
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.set_workspace_oauth_credentials(
            organization_id,
            workspace_id,
            actor_type=actor_type,
            name=name,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    async def get_source_definition_filter_options(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Return available categories, statuses, and sort options with counts.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_source_definition_filter_options(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_source_definition_filter_options(
            organization_id, request_options=request_options
        )
        return _response.data

    async def list_source_definitions(
        self,
        organization_id: str,
        *,
        search: typing.Optional[str] = None,
        category: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        sort: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        search : typing.Optional[str]
            Search by connector name

        category : typing.Optional[str]
            Filter by category

        status : typing.Optional[str]
            Filter by status (ga, beta, alpha)

        sort : typing.Optional[str]
            Sort order (name_asc, name_desc, status)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_source_definitions(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_source_definitions(
            organization_id, search=search, category=category, status=status, sort=sort, request_options=request_options
        )
        return _response.data

    async def create_source_definition(
        self,
        organization_id: str,
        *,
        name: str,
        docker_repository: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str

        docker_repository : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_source_definition(
                organization_id="organization_id",
                name="name",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_source_definition(
            organization_id,
            name=name,
            docker_repository=docker_repository,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    async def get_source_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_source_definition(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_source_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def update_source_definition(
        self,
        organization_id: str,
        definition_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        name : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_source_definition(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_source_definition(
            organization_id,
            definition_id,
            name=name,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    async def delete_source_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_source_definition(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_source_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def get_source_definition_spec(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_source_definition_spec(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_source_definition_spec(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def list_sources(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_sources(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_sources(organization_id, request_options=request_options)
        return _response.data

    async def create_source(
        self,
        organization_id: str,
        *,
        name: str,
        definition_id: str,
        workspace_id: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str

        definition_id : str

        workspace_id : typing.Optional[str]
            Resolved server-side if empty

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_source(
                organization_id="organization_id",
                name="name",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_source(
            organization_id,
            name=name,
            definition_id=definition_id,
            workspace_id=workspace_id,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    async def get_source(
        self, organization_id: str, source_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_source(
                organization_id="organization_id",
                source_id="source_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_source(organization_id, source_id, request_options=request_options)
        return _response.data

    async def update_source(
        self,
        organization_id: str,
        source_id: str,
        *,
        name: str,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        name : str

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_source(
                organization_id="organization_id",
                source_id="source_id",
                name="name",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_source(
            organization_id, source_id, name=name, configuration=configuration, request_options=request_options
        )
        return _response.data

    async def delete_source(
        self, organization_id: str, source_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_source(
                organization_id="organization_id",
                source_id="source_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_source(organization_id, source_id, request_options=request_options)
        return _response.data

    async def patch_source(
        self,
        organization_id: str,
        source_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        name : typing.Optional[str]

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.patch_source(
                organization_id="organization_id",
                source_id="source_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.patch_source(
            organization_id, source_id, name=name, configuration=configuration, request_options=request_options
        )
        return _response.data

    async def test_source(
        self,
        organization_id: str,
        *,
        source_id: typing.Optional[str] = OMIT,
        source_definition_id: typing.Optional[str] = OMIT,
        workspace_id: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        name: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : typing.Optional[str]

        source_definition_id : typing.Optional[str]

        workspace_id : typing.Optional[str]

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        name : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.test_source(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.test_source(
            organization_id,
            source_id=source_id,
            source_definition_id=source_definition_id,
            workspace_id=workspace_id,
            configuration=configuration,
            name=name,
            request_options=request_options,
        )
        return _response.data

    async def test_existing_source(
        self, organization_id: str, source_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.test_existing_source(
                organization_id="organization_id",
                source_id="source_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.test_existing_source(
            organization_id, source_id, request_options=request_options
        )
        return _response.data

    async def source_oauth(
        self,
        organization_id: str,
        *,
        source_definition_id: str,
        workspace_id: str,
        redirect_url: str,
        o_auth_input_configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        integration_params: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_definition_id : str

        workspace_id : str

        redirect_url : str

        o_auth_input_configuration : typing.Optional[typing.Dict[str, typing.Any]]

        integration_params : typing.Optional[typing.Dict[str, typing.Any]]
            Connector-specific params required before OAuth (e.g. {'subdomain': 'contoso'} for SharePoint)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.source_oauth(
                organization_id="organization_id",
                source_definition_id="source_definition_id",
                workspace_id="workspace_id",
                redirect_url="redirect_url",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.source_oauth(
            organization_id,
            source_definition_id=source_definition_id,
            workspace_id=workspace_id,
            redirect_url=redirect_url,
            o_auth_input_configuration=o_auth_input_configuration,
            integration_params=integration_params,
            request_options=request_options,
        )
        return _response.data

    async def source_authorize(
        self,
        organization_id: str,
        *,
        slug: str,
        redirect_url: str,
        integration_params: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        slug : str
            Connector app slug

        redirect_url : str

        integration_params : typing.Optional[typing.Dict[str, typing.Any]]
            Connector-specific params required before OAuth (e.g. {'subdomain': 'contoso'} for SharePoint)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.source_authorize(
                organization_id="organization_id",
                slug="slug",
                redirect_url="redirect_url",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.source_authorize(
            organization_id,
            slug=slug,
            redirect_url=redirect_url,
            integration_params=integration_params,
            request_options=request_options,
        )
        return _response.data

    async def source_oauth_callback(
        self,
        organization_id: str,
        *,
        connection_id: str,
        workspace_id: str,
        source_definition_id: str,
        source_name: str,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        workspace_id : str

        source_definition_id : str

        source_name : str

        configuration : typing.Optional[typing.Dict[str, typing.Any]]
            Extra connector-specific configuration (e.g. repositories for GitHub)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.source_oauth_callback(
                organization_id="organization_id",
                connection_id="connection_id",
                workspace_id="workspace_id",
                source_definition_id="source_definition_id",
                source_name="source_name",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.source_oauth_callback(
            organization_id,
            connection_id=connection_id,
            workspace_id=workspace_id,
            source_definition_id=source_definition_id,
            source_name=source_name,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    async def source_manual_config_options(
        self,
        organization_id: str,
        *,
        source_definition_id: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> OAuthConfigOptionsResponse:
        """
        Return UI-friendly configuration fields for manual (non-OAuth) setup.

        Parameters
        ----------
        organization_id : str

        source_definition_id : str
            Source definition UUID

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        OAuthConfigOptionsResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.source_manual_config_options(
                organization_id="organization_id",
                source_definition_id="source_definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.source_manual_config_options(
            organization_id, source_definition_id=source_definition_id, request_options=request_options
        )
        return _response.data

    async def source_oauth_config_options(
        self,
        organization_id: str,
        *,
        connection_id: str,
        source_definition_id: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> OAuthConfigOptionsResponse:
        """
        Return UI-friendly configuration fields for a connector after OAuth.

        Parameters
        ----------
        organization_id : str

        connection_id : str
            Connection ID from OAuth callback

        source_definition_id : str
            Source definition UUID

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        OAuthConfigOptionsResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.source_oauth_config_options(
                organization_id="organization_id",
                connection_id="connection_id",
                source_definition_id="source_definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.source_oauth_config_options(
            organization_id,
            connection_id=connection_id,
            source_definition_id=source_definition_id,
            request_options=request_options,
        )
        return _response.data

    async def discover_streams(
        self, organization_id: str, *, source_id: str, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str
            Source ID to discover streams for

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.discover_streams(
                organization_id="organization_id",
                source_id="source_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.discover_streams(
            organization_id, source_id=source_id, request_options=request_options
        )
        return _response.data

    async def list_declarative_sources(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_declarative_sources(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_declarative_sources(organization_id, request_options=request_options)
        return _response.data

    async def create_declarative_source(
        self,
        organization_id: str,
        *,
        name: str,
        workspace_id: str,
        manifest: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Human-readable name for the declarative source

        workspace_id : str
            Workspace ID

        manifest : typing.Optional[typing.Dict[str, typing.Any]]
            YAML/JSON manifest for the low-code connector definition

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_declarative_source(
                organization_id="organization_id",
                name="name",
                workspace_id="workspace_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_declarative_source(
            organization_id, name=name, workspace_id=workspace_id, manifest=manifest, request_options=request_options
        )
        return _response.data

    async def get_declarative_source(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_declarative_source(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_declarative_source(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def update_declarative_source(
        self,
        organization_id: str,
        definition_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        manifest: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        name : typing.Optional[str]

        manifest : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_declarative_source(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_declarative_source(
            organization_id, definition_id, name=name, manifest=manifest, request_options=request_options
        )
        return _response.data

    async def delete_declarative_source(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_declarative_source(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_declarative_source(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def list_tags(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_tags(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_tags(organization_id, request_options=request_options)
        return _response.data

    async def create_tag(
        self,
        organization_id: str,
        *,
        name: str,
        workspace_id: str,
        color: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Tag display name

        workspace_id : str
            Workspace ID

        color : typing.Optional[str]
            Hex color code (e.g. '#FF5733')

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_tag(
                organization_id="organization_id",
                name="name",
                workspace_id="workspace_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_tag(
            organization_id, name=name, workspace_id=workspace_id, color=color, request_options=request_options
        )
        return _response.data

    async def get_tag(
        self, organization_id: str, tag_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        tag_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_tag(
                organization_id="organization_id",
                tag_id="tag_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_tag(organization_id, tag_id, request_options=request_options)
        return _response.data

    async def delete_tag(
        self, organization_id: str, tag_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        tag_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_tag(
                organization_id="organization_id",
                tag_id="tag_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_tag(organization_id, tag_id, request_options=request_options)
        return _response.data

    async def update_tag(
        self,
        organization_id: str,
        tag_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        color: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        tag_id : str

        name : typing.Optional[str]

        color : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_tag(
                organization_id="organization_id",
                tag_id="tag_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_tag(
            organization_id, tag_id, name=name, color=color, request_options=request_options
        )
        return _response.data

    async def get_destination_definition_filter_options(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Return available categories, statuses, and sort options with counts.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_destination_definition_filter_options(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_destination_definition_filter_options(
            organization_id, request_options=request_options
        )
        return _response.data

    async def list_destination_definitions(
        self,
        organization_id: str,
        *,
        search: typing.Optional[str] = None,
        category: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        sort: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        search : typing.Optional[str]
            Search by connector name

        category : typing.Optional[str]
            Filter by category

        status : typing.Optional[str]
            Filter by status (ga, beta, alpha)

        sort : typing.Optional[str]
            Sort order (name_asc, name_desc, status)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_destination_definitions(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_destination_definitions(
            organization_id, search=search, category=category, status=status, sort=sort, request_options=request_options
        )
        return _response.data

    async def create_destination_definition(
        self,
        organization_id: str,
        *,
        name: str,
        docker_repository: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Definition name

        docker_repository : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_destination_definition(
                organization_id="organization_id",
                name="name",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_destination_definition(
            organization_id,
            name=name,
            docker_repository=docker_repository,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    async def get_destination_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_destination_definition(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_destination_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def update_destination_definition(
        self,
        organization_id: str,
        definition_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        docker_image_tag: typing.Optional[str] = OMIT,
        documentation_url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        name : typing.Optional[str]

        docker_image_tag : typing.Optional[str]

        documentation_url : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_destination_definition(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_destination_definition(
            organization_id,
            definition_id,
            name=name,
            docker_image_tag=docker_image_tag,
            documentation_url=documentation_url,
            request_options=request_options,
        )
        return _response.data

    async def delete_destination_definition(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_destination_definition(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_destination_definition(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def list_destinations(
        self,
        organization_id: str,
        *,
        slice_id: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        List vector stores available as connector destinations.

        Parameters
        ----------
        organization_id : str

        slice_id : typing.Optional[str]
            Filter by knowledge slice ID

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_destinations(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_destinations(
            organization_id, slice_id=slice_id, request_options=request_options
        )
        return _response.data

    async def create_destination(
        self,
        organization_id: str,
        *,
        name: str,
        destination_definition_id: str,
        workspace_id: str,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        name : str
            Destination name

        destination_definition_id : str
            Destination definition ID

        workspace_id : str
            Workspace ID

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_destination(
                organization_id="organization_id",
                name="name",
                destination_definition_id="destination_definition_id",
                workspace_id="workspace_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_destination(
            organization_id,
            name=name,
            destination_definition_id=destination_definition_id,
            workspace_id=workspace_id,
            configuration=configuration,
            request_options=request_options,
        )
        return _response.data

    async def get_destination(
        self, organization_id: str, destination_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        destination_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_destination(
                organization_id="organization_id",
                destination_id="destination_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_destination(
            organization_id, destination_id, request_options=request_options
        )
        return _response.data

    async def delete_destination(
        self, organization_id: str, destination_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        destination_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_destination(
                organization_id="organization_id",
                destination_id="destination_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_destination(
            organization_id, destination_id, request_options=request_options
        )
        return _response.data

    async def update_destination(
        self,
        organization_id: str,
        destination_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        configuration: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        destination_id : str

        name : typing.Optional[str]

        configuration : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_destination(
                organization_id="organization_id",
                destination_id="destination_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_destination(
            organization_id, destination_id, name=name, configuration=configuration, request_options=request_options
        )
        return _response.data

    async def list_connector_versions(
        self, organization_id: str, definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        definition_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_connector_versions(
                organization_id="organization_id",
                definition_id="definition_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_connector_versions(
            organization_id, definition_id, request_options=request_options
        )
        return _response.data

    async def upgrade_source(
        self,
        organization_id: str,
        source_id: str,
        *,
        target_version: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str

        target_version : str
            Docker image tag for the target connector version

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.upgrade_source(
                organization_id="organization_id",
                source_id="source_id",
                target_version="target_version",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.upgrade_source(
            organization_id, source_id, target_version=target_version, request_options=request_options
        )
        return _response.data

    async def list_jobs(
        self,
        organization_id: str,
        *,
        connection_id: typing.Optional[str] = None,
        job_type: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        offset: typing.Optional[int] = None,
        created_at_start: typing.Optional[str] = None,
        created_at_end: typing.Optional[str] = None,
        order_by: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : typing.Optional[str]

        job_type : typing.Optional[str]

        status : typing.Optional[str]

        limit : typing.Optional[int]

        offset : typing.Optional[int]

        created_at_start : typing.Optional[str]

        created_at_end : typing.Optional[str]

        order_by : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_jobs(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_jobs(
            organization_id,
            connection_id=connection_id,
            job_type=job_type,
            status=status,
            limit=limit,
            offset=offset,
            created_at_start=created_at_start,
            created_at_end=created_at_end,
            order_by=order_by,
            request_options=request_options,
        )
        return _response.data

    async def trigger_job(
        self,
        organization_id: str,
        *,
        connection_id: str,
        job_type: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str
            Connection to trigger

        job_type : str
            Job type: 'sync' or 'reset'

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.trigger_job(
                organization_id="organization_id",
                connection_id="connectionId",
                job_type="jobType",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.trigger_job(
            organization_id, connection_id=connection_id, job_type=job_type, request_options=request_options
        )
        return _response.data

    async def get_job(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_job(
                organization_id="organization_id",
                job_id="job_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_job(organization_id, job_id, request_options=request_options)
        return _response.data

    async def cancel_job(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.cancel_job(
                organization_id="organization_id",
                job_id="job_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.cancel_job(organization_id, job_id, request_options=request_options)
        return _response.data

    async def retry_job(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.retry_job(
                organization_id="organization_id",
                job_id="job_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.retry_job(organization_id, job_id, request_options=request_options)
        return _response.data

    async def get_job_logs(
        self, organization_id: str, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        job_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_job_logs(
                organization_id="organization_id",
                job_id="job_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_job_logs(organization_id, job_id, request_options=request_options)
        return _response.data

    async def refresh_connection(
        self,
        organization_id: str,
        connection_id: str,
        *,
        streams: typing.Sequence[str],
        remove_records: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        streams : typing.Sequence[str]
            Stream names to refresh

        remove_records : typing.Optional[bool]
            Remove existing records before re-sync

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.refresh_connection(
                organization_id="organization_id",
                connection_id="connection_id",
                streams=["streams"],
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.refresh_connection(
            organization_id,
            connection_id,
            streams=streams,
            remove_records=remove_records,
            request_options=request_options,
        )
        return _response.data

    async def clear_connection(
        self,
        organization_id: str,
        connection_id: str,
        *,
        streams: typing.Sequence[str],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        streams : typing.Sequence[str]
            Stream names to clear

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.clear_connection(
                organization_id="organization_id",
                connection_id="connection_id",
                streams=["streams"],
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.clear_connection(
            organization_id, connection_id, streams=streams, request_options=request_options
        )
        return _response.data

    async def get_timeline(
        self,
        organization_id: str,
        connection_id: str,
        *,
        event_type: typing.Optional[str] = None,
        status: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        offset: typing.Optional[int] = None,
        created_at_start: typing.Optional[str] = None,
        created_at_end: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        event_type : typing.Optional[str]

        status : typing.Optional[str]

        limit : typing.Optional[int]

        offset : typing.Optional[int]

        created_at_start : typing.Optional[str]

        created_at_end : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_timeline(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_timeline(
            organization_id,
            connection_id,
            event_type=event_type,
            status=status,
            limit=limit,
            offset=offset,
            created_at_start=created_at_start,
            created_at_end=created_at_end,
            request_options=request_options,
        )
        return _response.data

    async def get_notifications(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_notifications(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_notifications(organization_id, request_options=request_options)
        return _response.data

    async def update_notifications(
        self,
        organization_id: str,
        *,
        notifications: typing.Sequence[typing.Dict[str, typing.Any]],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        notifications : typing.Sequence[typing.Dict[str, typing.Any]]
            Notification rules (webhook, email, etc.)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_notifications(
                organization_id="organization_id",
                notifications=[{"key": "value"}],
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_notifications(
            organization_id, notifications=notifications, request_options=request_options
        )
        return _response.data

    async def test_notifications(
        self,
        organization_id: str,
        *,
        notification_type: str,
        url: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        notification_type : str
            Type to test (e.g. webhook, email)

        url : typing.Optional[str]
            Webhook URL to test

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.test_notifications(
                organization_id="organization_id",
                notification_type="notification_type",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.test_notifications(
            organization_id, notification_type=notification_type, url=url, request_options=request_options
        )
        return _response.data

    async def validate_sync_config(
        self,
        organization_id: str,
        *,
        connection_id: typing.Optional[str] = OMIT,
        source_id: typing.Optional[str] = OMIT,
        destination_id: typing.Optional[str] = OMIT,
        streams: typing.Optional[typing.Sequence[typing.Dict[str, typing.Any]]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : typing.Optional[str]

        source_id : typing.Optional[str]

        destination_id : typing.Optional[str]

        streams : typing.Optional[typing.Sequence[typing.Dict[str, typing.Any]]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.validate_sync_config(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.validate_sync_config(
            organization_id,
            connection_id=connection_id,
            source_id=source_id,
            destination_id=destination_id,
            streams=streams,
            request_options=request_options,
        )
        return _response.data

    async def get_aggregate_stats(
        self,
        organization_id: str,
        *,
        start_date: typing.Optional[str] = None,
        end_date: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        start_date : typing.Optional[str]

        end_date : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_aggregate_stats(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_aggregate_stats(
            organization_id, start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_connection_stats(
        self,
        organization_id: str,
        connection_id: str,
        *,
        start_date: typing.Optional[str] = None,
        end_date: typing.Optional[str] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        start_date : typing.Optional[str]

        end_date : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_connection_stats(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_connection_stats(
            organization_id, connection_id, start_date=start_date, end_date=end_date, request_options=request_options
        )
        return _response.data

    async def get_connection_config_options(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> ConnectionConfigOptionsResponse:
        """
        Return UI-friendly field descriptors for connection settings.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        ConnectionConfigOptionsResponse
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_connection_config_options(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_connection_config_options(
            organization_id, request_options=request_options
        )
        return _response.data

    async def list_connections(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.list_connections(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.list_connections(organization_id, request_options=request_options)
        return _response.data

    async def create_connection(
        self,
        organization_id: str,
        *,
        source_id: str,
        destination_id: typing.Optional[str] = OMIT,
        name: typing.Optional[str] = OMIT,
        namespace_definition: typing.Optional[str] = OMIT,
        namespace_format: typing.Optional[str] = OMIT,
        prefix: typing.Optional[str] = OMIT,
        schedule: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        configurations: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        status: typing.Optional[str] = OMIT,
        non_breaking_schema_updates_behavior: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str
            Source to connect from

        destination_id : typing.Optional[str]
            Destination to connect to (auto-filled if omitted)

        name : typing.Optional[str]
            Human-readable connection name

        namespace_definition : typing.Optional[str]

        namespace_format : typing.Optional[str]

        prefix : typing.Optional[str]

        schedule : typing.Optional[typing.Dict[str, typing.Any]]
            Sync schedule configuration

        configurations : typing.Optional[typing.Dict[str, typing.Any]]
            Stream configurations

        status : typing.Optional[str]
            active or inactive

        non_breaking_schema_updates_behavior : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.create_connection(
                organization_id="organization_id",
                source_id="sourceId",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create_connection(
            organization_id,
            source_id=source_id,
            destination_id=destination_id,
            name=name,
            namespace_definition=namespace_definition,
            namespace_format=namespace_format,
            prefix=prefix,
            schedule=schedule,
            configurations=configurations,
            status=status,
            non_breaking_schema_updates_behavior=non_breaking_schema_updates_behavior,
            request_options=request_options,
        )
        return _response.data

    async def get_connection(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_connection(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_connection(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    async def delete_connection(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> None:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        None

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.delete_connection(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete_connection(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    async def update_connection(
        self,
        organization_id: str,
        connection_id: str,
        *,
        name: typing.Optional[str] = OMIT,
        namespace_definition: typing.Optional[str] = OMIT,
        namespace_format: typing.Optional[str] = OMIT,
        prefix: typing.Optional[str] = OMIT,
        schedule: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        configurations: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        status: typing.Optional[str] = OMIT,
        non_breaking_schema_updates_behavior: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        name : typing.Optional[str]

        namespace_definition : typing.Optional[str]

        namespace_format : typing.Optional[str]

        prefix : typing.Optional[str]

        schedule : typing.Optional[typing.Dict[str, typing.Any]]

        configurations : typing.Optional[typing.Dict[str, typing.Any]]

        status : typing.Optional[str]

        non_breaking_schema_updates_behavior : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_connection(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_connection(
            organization_id,
            connection_id,
            name=name,
            namespace_definition=namespace_definition,
            namespace_format=namespace_format,
            prefix=prefix,
            schedule=schedule,
            configurations=configurations,
            status=status,
            non_breaking_schema_updates_behavior=non_breaking_schema_updates_behavior,
            request_options=request_options,
        )
        return _response.data

    async def get_connection_sync_status(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Return sync status fields for a single connection.

        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_connection_sync_status(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_connection_sync_status(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    async def test_connection(
        self,
        organization_id: str,
        *,
        source_id: str,
        destination_id: typing.Optional[str] = OMIT,
        configurations: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        source_id : str
            Source to test

        destination_id : typing.Optional[str]

        configurations : typing.Optional[typing.Dict[str, typing.Any]]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.test_connection(
                organization_id="organization_id",
                source_id="source_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.test_connection(
            organization_id,
            source_id=source_id,
            destination_id=destination_id,
            configurations=configurations,
            request_options=request_options,
        )
        return _response.data

    async def get_stream_config(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_stream_config(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_stream_config(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    async def update_stream_config(
        self,
        organization_id: str,
        connection_id: str,
        *,
        streams: typing.Sequence[typing.Dict[str, typing.Any]],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        streams : typing.Sequence[typing.Dict[str, typing.Any]]
            Per-stream sync settings

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_stream_config(
                organization_id="organization_id",
                connection_id="connection_id",
                streams=[{"key": "value"}],
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_stream_config(
            organization_id, connection_id, streams=streams, request_options=request_options
        )
        return _response.data

    async def get_mappings(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_mappings(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_mappings(organization_id, connection_id, request_options=request_options)
        return _response.data

    async def update_mappings(
        self,
        organization_id: str,
        connection_id: str,
        *,
        mappings: typing.Sequence[typing.Dict[str, typing.Any]],
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        mappings : typing.Sequence[typing.Dict[str, typing.Any]]
            Field transformations (hashing, renaming, filtering)

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_mappings(
                organization_id="organization_id",
                connection_id="connection_id",
                mappings=[{"key": "value"}],
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_mappings(
            organization_id, connection_id, mappings=mappings, request_options=request_options
        )
        return _response.data

    async def get_schema_changes(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_schema_changes(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_schema_changes(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    async def refresh_schema(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.refresh_schema(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.refresh_schema(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    async def update_schema_propagation(
        self,
        organization_id: str,
        connection_id: str,
        *,
        propagation_strategy: str,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        propagation_strategy : str
            One of: propagate_fully, propagate_columns, ignore, disable_connection

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_schema_propagation(
                organization_id="organization_id",
                connection_id="connection_id",
                propagation_strategy="propagation_strategy",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_schema_propagation(
            organization_id, connection_id, propagation_strategy=propagation_strategy, request_options=request_options
        )
        return _response.data

    async def get_state(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.get_state(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.get_state(organization_id, connection_id, request_options=request_options)
        return _response.data

    async def update_state(
        self,
        organization_id: str,
        connection_id: str,
        *,
        state: typing.Dict[str, typing.Any],
        state_type: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        state : typing.Dict[str, typing.Any]
            Updated cursor state for streams

        state_type : typing.Optional[str]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.update_state(
                organization_id="organization_id",
                connection_id="connection_id",
                state={"key": "value"},
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update_state(
            organization_id, connection_id, state=state, state_type=state_type, request_options=request_options
        )
        return _response.data

    async def pause_connection(
        self, organization_id: str, connection_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Any:
        """
        Parameters
        ----------
        organization_id : str

        connection_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Any
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.pause_connection(
                organization_id="organization_id",
                connection_id="connection_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.pause_connection(
            organization_id, connection_id, request_options=request_options
        )
        return _response.data

    async def diagnose(
        self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> typing.Dict[str, typing.Any]:
        """
        Run a comprehensive health check on the connector infrastructure.

        Parameters
        ----------
        organization_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Dict[str, typing.Any]
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.diagnose(
                organization_id="organization_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.diagnose(organization_id, request_options=request_options)
        return _response.data

    async def fix(
        self,
        organization_id: str,
        *,
        fixes: typing.Sequence[str],
        dry_run: typing.Optional[bool] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> typing.Dict[str, typing.Any]:
        """
        Apply fixes for known connector issues.

        Parameters
        ----------
        organization_id : str

        fixes : typing.Sequence[str]

        dry_run : typing.Optional[bool]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        typing.Dict[str, typing.Any]
            Successful Response

        Examples
        --------
        import asyncio

        from aitronos import AsyncAitronos

        client = AsyncAitronos(
            api_key="YOUR_API_KEY",
            token="YOUR_TOKEN",
        )


        async def main() -> None:
            await client.knowledge_connectors.fix(
                organization_id="organization_id",
                fixes=["fixes"],
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.fix(
            organization_id, fixes=fixes, dry_run=dry_run, request_options=request_options
        )
        return _response.data
