# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities

__all__ = [
    'GetGroupResult',
    'AwaitableGetGroupResult',
    'get_group',
    'get_group_output',
]

@pulumi.output_type
class GetGroupResult:
    """
    A collection of values returned by getGroup.
    """
    def __init__(__self__, admin_privileges=None, auto_join=None, description=None, external_id=None, id=None, include_users=None, name=None, policy_manager=None, realm=None, realm_attributes=None, reports_manager=None, users_names=None, watch_manager=None):
        if admin_privileges and not isinstance(admin_privileges, bool):
            raise TypeError("Expected argument 'admin_privileges' to be a bool")
        pulumi.set(__self__, "admin_privileges", admin_privileges)
        if auto_join and not isinstance(auto_join, bool):
            raise TypeError("Expected argument 'auto_join' to be a bool")
        pulumi.set(__self__, "auto_join", auto_join)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if external_id and not isinstance(external_id, str):
            raise TypeError("Expected argument 'external_id' to be a str")
        pulumi.set(__self__, "external_id", external_id)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if include_users and not isinstance(include_users, str):
            raise TypeError("Expected argument 'include_users' to be a str")
        pulumi.set(__self__, "include_users", include_users)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if policy_manager and not isinstance(policy_manager, bool):
            raise TypeError("Expected argument 'policy_manager' to be a bool")
        pulumi.set(__self__, "policy_manager", policy_manager)
        if realm and not isinstance(realm, str):
            raise TypeError("Expected argument 'realm' to be a str")
        pulumi.set(__self__, "realm", realm)
        if realm_attributes and not isinstance(realm_attributes, str):
            raise TypeError("Expected argument 'realm_attributes' to be a str")
        pulumi.set(__self__, "realm_attributes", realm_attributes)
        if reports_manager and not isinstance(reports_manager, bool):
            raise TypeError("Expected argument 'reports_manager' to be a bool")
        pulumi.set(__self__, "reports_manager", reports_manager)
        if users_names and not isinstance(users_names, list):
            raise TypeError("Expected argument 'users_names' to be a list")
        pulumi.set(__self__, "users_names", users_names)
        if watch_manager and not isinstance(watch_manager, bool):
            raise TypeError("Expected argument 'watch_manager' to be a bool")
        pulumi.set(__self__, "watch_manager", watch_manager)

    @property
    @pulumi.getter(name="adminPrivileges")
    def admin_privileges(self) -> bool:
        """
        Any users added to this group will automatically be assigned with admin privileges in the system.
        """
        return pulumi.get(self, "admin_privileges")

    @property
    @pulumi.getter(name="autoJoin")
    def auto_join(self) -> bool:
        """
        When this parameter is set, any new users defined in the system are automatically assigned to this group.
        """
        return pulumi.get(self, "auto_join")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        A description for the group
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="externalId")
    def external_id(self) -> Optional[str]:
        """
        New external group ID used to configure the corresponding group in Azure AD.
        """
        return pulumi.get(self, "external_id")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The provider-assigned unique ID for this managed resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="includeUsers")
    def include_users(self) -> Optional[str]:
        return pulumi.get(self, "include_users")

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="policyManager")
    def policy_manager(self) -> Optional[bool]:
        """
        When this override is set, User in the group can set Xray security and compliance policies. Default value is `false`.
        """
        return pulumi.get(self, "policy_manager")

    @property
    @pulumi.getter
    def realm(self) -> str:
        """
        The realm for the group.
        """
        return pulumi.get(self, "realm")

    @property
    @pulumi.getter(name="realmAttributes")
    def realm_attributes(self) -> Optional[str]:
        """
        The realm attributes for the group.
        """
        return pulumi.get(self, "realm_attributes")

    @property
    @pulumi.getter(name="reportsManager")
    def reports_manager(self) -> Optional[bool]:
        """
        When this override is set, User in the group can manage Xray Reports on any resource type. Default value is `false`.
        """
        return pulumi.get(self, "reports_manager")

    @property
    @pulumi.getter(name="usersNames")
    def users_names(self) -> Optional[Sequence[str]]:
        """
        List of users assigned to the group. Set include_users to `true` to retrieve this list.
        """
        return pulumi.get(self, "users_names")

    @property
    @pulumi.getter(name="watchManager")
    def watch_manager(self) -> Optional[bool]:
        """
        When this override is set, User in the group can manage Xray Watches on any resource type. Default value is `false`.
        """
        return pulumi.get(self, "watch_manager")


class AwaitableGetGroupResult(GetGroupResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetGroupResult(
            admin_privileges=self.admin_privileges,
            auto_join=self.auto_join,
            description=self.description,
            external_id=self.external_id,
            id=self.id,
            include_users=self.include_users,
            name=self.name,
            policy_manager=self.policy_manager,
            realm=self.realm,
            realm_attributes=self.realm_attributes,
            reports_manager=self.reports_manager,
            users_names=self.users_names,
            watch_manager=self.watch_manager)


def get_group(admin_privileges: Optional[bool] = None,
              auto_join: Optional[bool] = None,
              description: Optional[str] = None,
              external_id: Optional[str] = None,
              include_users: Optional[str] = None,
              name: Optional[str] = None,
              policy_manager: Optional[bool] = None,
              realm: Optional[str] = None,
              realm_attributes: Optional[str] = None,
              reports_manager: Optional[bool] = None,
              users_names: Optional[Sequence[str]] = None,
              watch_manager: Optional[bool] = None,
              opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetGroupResult:
    """
    ## # Artifactory Group Data Source

    Provides an Artifactory group datasource. This can be used to read the configuration of groups in artifactory.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_artifactory as artifactory

    #
    my_group = artifactory.get_group(name="my_group",
        include_users="true")
    ```


    :param bool admin_privileges: Any users added to this group will automatically be assigned with admin privileges in the system.
    :param bool auto_join: When this parameter is set, any new users defined in the system are automatically assigned to this group.
    :param str description: A description for the group
    :param str external_id: New external group ID used to configure the corresponding group in Azure AD.
    :param str include_users: Determines if the group's associated user list will return as an attribute. Default is `false`.
    :param str name: Name of the group.
    :param bool policy_manager: When this override is set, User in the group can set Xray security and compliance policies. Default value is `false`.
    :param str realm: The realm for the group.
    :param str realm_attributes: The realm attributes for the group.
    :param bool reports_manager: When this override is set, User in the group can manage Xray Reports on any resource type. Default value is `false`.
    :param Sequence[str] users_names: List of users assigned to the group. Set include_users to `true` to retrieve this list.
    :param bool watch_manager: When this override is set, User in the group can manage Xray Watches on any resource type. Default value is `false`.
    """
    __args__ = dict()
    __args__['adminPrivileges'] = admin_privileges
    __args__['autoJoin'] = auto_join
    __args__['description'] = description
    __args__['externalId'] = external_id
    __args__['includeUsers'] = include_users
    __args__['name'] = name
    __args__['policyManager'] = policy_manager
    __args__['realm'] = realm
    __args__['realmAttributes'] = realm_attributes
    __args__['reportsManager'] = reports_manager
    __args__['usersNames'] = users_names
    __args__['watchManager'] = watch_manager
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('artifactory:index/getGroup:getGroup', __args__, opts=opts, typ=GetGroupResult).value

    return AwaitableGetGroupResult(
        admin_privileges=pulumi.get(__ret__, 'admin_privileges'),
        auto_join=pulumi.get(__ret__, 'auto_join'),
        description=pulumi.get(__ret__, 'description'),
        external_id=pulumi.get(__ret__, 'external_id'),
        id=pulumi.get(__ret__, 'id'),
        include_users=pulumi.get(__ret__, 'include_users'),
        name=pulumi.get(__ret__, 'name'),
        policy_manager=pulumi.get(__ret__, 'policy_manager'),
        realm=pulumi.get(__ret__, 'realm'),
        realm_attributes=pulumi.get(__ret__, 'realm_attributes'),
        reports_manager=pulumi.get(__ret__, 'reports_manager'),
        users_names=pulumi.get(__ret__, 'users_names'),
        watch_manager=pulumi.get(__ret__, 'watch_manager'))


@_utilities.lift_output_func(get_group)
def get_group_output(admin_privileges: Optional[pulumi.Input[Optional[bool]]] = None,
                     auto_join: Optional[pulumi.Input[Optional[bool]]] = None,
                     description: Optional[pulumi.Input[Optional[str]]] = None,
                     external_id: Optional[pulumi.Input[Optional[str]]] = None,
                     include_users: Optional[pulumi.Input[Optional[str]]] = None,
                     name: Optional[pulumi.Input[str]] = None,
                     policy_manager: Optional[pulumi.Input[Optional[bool]]] = None,
                     realm: Optional[pulumi.Input[Optional[str]]] = None,
                     realm_attributes: Optional[pulumi.Input[Optional[str]]] = None,
                     reports_manager: Optional[pulumi.Input[Optional[bool]]] = None,
                     users_names: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
                     watch_manager: Optional[pulumi.Input[Optional[bool]]] = None,
                     opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetGroupResult]:
    """
    ## # Artifactory Group Data Source

    Provides an Artifactory group datasource. This can be used to read the configuration of groups in artifactory.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_artifactory as artifactory

    #
    my_group = artifactory.get_group(name="my_group",
        include_users="true")
    ```


    :param bool admin_privileges: Any users added to this group will automatically be assigned with admin privileges in the system.
    :param bool auto_join: When this parameter is set, any new users defined in the system are automatically assigned to this group.
    :param str description: A description for the group
    :param str external_id: New external group ID used to configure the corresponding group in Azure AD.
    :param str include_users: Determines if the group's associated user list will return as an attribute. Default is `false`.
    :param str name: Name of the group.
    :param bool policy_manager: When this override is set, User in the group can set Xray security and compliance policies. Default value is `false`.
    :param str realm: The realm for the group.
    :param str realm_attributes: The realm attributes for the group.
    :param bool reports_manager: When this override is set, User in the group can manage Xray Reports on any resource type. Default value is `false`.
    :param Sequence[str] users_names: List of users assigned to the group. Set include_users to `true` to retrieve this list.
    :param bool watch_manager: When this override is set, User in the group can manage Xray Watches on any resource type. Default value is `false`.
    """
    ...
