Source code for tenable.ad.profiles.api

'''
Profiles
=============

Methods described in this section relate to the profiles API.
These methods can be accessed at ``TenableAD.profiles``.

.. rst-class:: hide-signature
.. autoclass:: ProfilesAPI
    :members:
'''
from typing import List, Dict
from tenable.base.endpoint import APIEndpoint
from .schema import ProfileSchema


[docs]class ProfilesAPI(APIEndpoint): _path = 'profiles' _schema = ProfileSchema()
[docs] def list(self) -> List[Dict]: ''' Retrieve all profiles Returns: list[dict]: The list of profile objects Examples: >>> tad.profiles.list() ''' return self._schema.load(self._get(), many=True)
[docs] def create(self, name: str, directories: List[int] ) -> List[Dict]: ''' Create a profile Args: name (str): The name of new profile. directories (List[int]): The list of directory identifiers. Return: list[dict]: The created profile objects Example: >>> tad.profiles.create( ... name='ExampleProfile', ... directories=[1, 2] ... ) ''' payload = [ self._schema.dump(self._schema.load({ 'name': name, 'directories': directories })) ] return self._schema.load(self._post(json=payload), many=True)
[docs] def details(self, profile_id: str ) -> Dict: ''' Retrieves the details for a specific profile Args: profile_id (str): The profile instance identifier. Returns: dict: The profile object. Examples: >>> tad.profiles.details('1') ''' return self._schema.load(self._get(f'{profile_id}'))
[docs] def update(self, profile_id: str, **kwargs ) -> Dict: ''' Update an existing profile Args: profile_id (str): The profile instance identifier. name (optional, str): The name of profile. deleted (optional, bool): is the profile deleted? directories (optional, List[int]): The list of directory ids. Returns: dict: The updated profile object. Examples: >>> tad.profiles.update( ... profile_id='1', ... name='EDITED' ... ) ''' payload = self._schema.dump(self._schema.load(kwargs)) return self._schema.load(self._patch(f"{profile_id}", json=payload))
[docs] def delete(self, profile_id: str) -> None: ''' Delete an existing profile Args: profile_id (str): The profile instance identifier. Returns: None: Examples: >>> tad.profiles.delete(profile_id='1') ''' self._delete(f"{profile_id}")
[docs] def copy_profile(self, from_id: str, name: str, directories: List[int] ) -> Dict: ''' Creates a new profile from another profile Args: from_id (str): The profile instance identifier user wants to copy. name (str): The name of new profile. directories (List[int]): The list of directory ids. Returns: dict: The copied role object. Examples: >>> tad.profiles.copy_profile( ... from_id='1', ... name='Copied name', ... directories=[1, 2] ... ) ''' payload = self._schema.dump(self._schema.load({ 'name': name, 'directories': directories })) return self._schema.load(self._post(f'from/{from_id}', json=payload))
[docs] def commit(self, profile_id: str ) -> None: ''' Commits change of the related profile Args: profile_id (str): The profile instance identifier. Return: None Example: >>> tad.profiles.commit('1') ''' self._post(f'{profile_id}/commit')
[docs] def unstage(self, profile_id: str ) -> None: ''' Unstages changes of the related profile Args: profile_id (str): The profile instance identifier. Return: None Example: >>> tad.profiles.unstage('1') ''' self._post(f'{profile_id}/unstage')