"""Interact with the Censys Saved Queries API."""
from typing import Optional
from .api import CensysAsmAPI
[docs]
class SavedQueries(CensysAsmAPI):
"""Saved Queries API class."""
base_path = "/inventory/v1/saved-query"
[docs]
def get_saved_queries(
self,
query_name_prefix: Optional[str] = None,
page_size: Optional[int] = None,
page: Optional[int] = None,
filter_term: Optional[str] = None,
) -> dict:
"""Get saved queries.
Args:
query_name_prefix (str, optional): Prefix for the saved query name.
page_size (int, optional): Number of results to return. Defaults to 50.
page (int, optional): Page number to begin at when searching. Defaults to 1.
filter_term (str, optional): Term used to filter the list of saved query names and the saved queries.
Returns:
dict: Saved queries results.
"""
if page_size is None:
page_size = 50
if page is None:
page = 1
args: dict = {
"pageSize": page_size,
"page": page,
}
if query_name_prefix:
args["queryNamePrefix"] = query_name_prefix
if filter_term:
args["filterTerm"] = filter_term
return self._get(self.base_path, args=args)
[docs]
def add_saved_query(
self,
query: str,
query_name: str,
) -> dict:
"""Add a new saved query to the ASM platform.
Args:
query (str): Query string.
query_name (str): Saved query name.
Returns:
dict: Added saved query results.
"""
body = {
"query": query,
"queryName": query_name,
}
return self._post(self.base_path, data=body)
[docs]
def get_saved_query_by_id(
self,
query_id: str,
) -> dict:
"""Get saved query by query ID.
Args:
query_id (str): The saved query's ID.
Returns:
dict: Saved query result.
"""
return self._get(f"{self.base_path}/{query_id}")
[docs]
def edit_saved_query_by_id(
self,
query_id: str,
query: str,
query_name: str,
) -> dict:
"""Edit an existing saved query by query ID.
Args:
query_id (str): The saved query's ID.
query (str): New query string.
query_name (str): New saved query name.
Returns:
dict: Edited saved query result.
"""
body = {
"query": query,
"queryName": query_name,
}
return self._put(f"{self.base_path}/{query_id}", data=body)
[docs]
def delete_saved_query_by_id(
self,
query_id: str,
) -> dict:
"""Delete saved query by query ID.
Args:
query_id (str): The saved query's ID.
Returns:
dict: Delete results.
"""
return self._delete(f"{self.base_path}/{query_id}")