# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities
from . import outputs

__all__ = [
    'GetDashboardResult',
    'AwaitableGetDashboardResult',
    'get_dashboard',
    'get_dashboard_output',
]

@pulumi.output_type
class GetDashboardResult:
    """
    A collection of values returned by getDashboard.
    """
    def __init__(__self__, can_modifies=None, can_views=None, chart_title_bg_color=None, chart_title_color=None, chart_title_scalar=None, created_epoch_millis=None, creator_id=None, customer=None, default_end_time=None, default_start_time=None, default_time_window=None, deleted=None, description=None, display_description=None, display_query_parameters=None, display_section_table_of_contents=None, event_filter_type=None, event_query=None, favorite=None, hidden=None, id=None, name=None, num_charts=None, num_favorites=None, parameter_details=None, parameters=None, sections=None, system_owned=None, tags=None, updated_epoch_millis=None, updater_id=None, url=None, views_last_day=None, views_last_month=None, views_last_week=None):
        if can_modifies and not isinstance(can_modifies, list):
            raise TypeError("Expected argument 'can_modifies' to be a list")
        pulumi.set(__self__, "can_modifies", can_modifies)
        if can_views and not isinstance(can_views, list):
            raise TypeError("Expected argument 'can_views' to be a list")
        pulumi.set(__self__, "can_views", can_views)
        if chart_title_bg_color and not isinstance(chart_title_bg_color, str):
            raise TypeError("Expected argument 'chart_title_bg_color' to be a str")
        pulumi.set(__self__, "chart_title_bg_color", chart_title_bg_color)
        if chart_title_color and not isinstance(chart_title_color, str):
            raise TypeError("Expected argument 'chart_title_color' to be a str")
        pulumi.set(__self__, "chart_title_color", chart_title_color)
        if chart_title_scalar and not isinstance(chart_title_scalar, int):
            raise TypeError("Expected argument 'chart_title_scalar' to be a int")
        pulumi.set(__self__, "chart_title_scalar", chart_title_scalar)
        if created_epoch_millis and not isinstance(created_epoch_millis, int):
            raise TypeError("Expected argument 'created_epoch_millis' to be a int")
        pulumi.set(__self__, "created_epoch_millis", created_epoch_millis)
        if creator_id and not isinstance(creator_id, str):
            raise TypeError("Expected argument 'creator_id' to be a str")
        pulumi.set(__self__, "creator_id", creator_id)
        if customer and not isinstance(customer, str):
            raise TypeError("Expected argument 'customer' to be a str")
        pulumi.set(__self__, "customer", customer)
        if default_end_time and not isinstance(default_end_time, int):
            raise TypeError("Expected argument 'default_end_time' to be a int")
        pulumi.set(__self__, "default_end_time", default_end_time)
        if default_start_time and not isinstance(default_start_time, int):
            raise TypeError("Expected argument 'default_start_time' to be a int")
        pulumi.set(__self__, "default_start_time", default_start_time)
        if default_time_window and not isinstance(default_time_window, str):
            raise TypeError("Expected argument 'default_time_window' to be a str")
        pulumi.set(__self__, "default_time_window", default_time_window)
        if deleted and not isinstance(deleted, bool):
            raise TypeError("Expected argument 'deleted' to be a bool")
        pulumi.set(__self__, "deleted", deleted)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if display_description and not isinstance(display_description, bool):
            raise TypeError("Expected argument 'display_description' to be a bool")
        pulumi.set(__self__, "display_description", display_description)
        if display_query_parameters and not isinstance(display_query_parameters, bool):
            raise TypeError("Expected argument 'display_query_parameters' to be a bool")
        pulumi.set(__self__, "display_query_parameters", display_query_parameters)
        if display_section_table_of_contents and not isinstance(display_section_table_of_contents, bool):
            raise TypeError("Expected argument 'display_section_table_of_contents' to be a bool")
        pulumi.set(__self__, "display_section_table_of_contents", display_section_table_of_contents)
        if event_filter_type and not isinstance(event_filter_type, str):
            raise TypeError("Expected argument 'event_filter_type' to be a str")
        pulumi.set(__self__, "event_filter_type", event_filter_type)
        if event_query and not isinstance(event_query, str):
            raise TypeError("Expected argument 'event_query' to be a str")
        pulumi.set(__self__, "event_query", event_query)
        if favorite and not isinstance(favorite, bool):
            raise TypeError("Expected argument 'favorite' to be a bool")
        pulumi.set(__self__, "favorite", favorite)
        if hidden and not isinstance(hidden, bool):
            raise TypeError("Expected argument 'hidden' to be a bool")
        pulumi.set(__self__, "hidden", hidden)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if num_charts and not isinstance(num_charts, int):
            raise TypeError("Expected argument 'num_charts' to be a int")
        pulumi.set(__self__, "num_charts", num_charts)
        if num_favorites and not isinstance(num_favorites, int):
            raise TypeError("Expected argument 'num_favorites' to be a int")
        pulumi.set(__self__, "num_favorites", num_favorites)
        if parameter_details and not isinstance(parameter_details, list):
            raise TypeError("Expected argument 'parameter_details' to be a list")
        pulumi.set(__self__, "parameter_details", parameter_details)
        if parameters and not isinstance(parameters, dict):
            raise TypeError("Expected argument 'parameters' to be a dict")
        pulumi.set(__self__, "parameters", parameters)
        if sections and not isinstance(sections, list):
            raise TypeError("Expected argument 'sections' to be a list")
        pulumi.set(__self__, "sections", sections)
        if system_owned and not isinstance(system_owned, bool):
            raise TypeError("Expected argument 'system_owned' to be a bool")
        pulumi.set(__self__, "system_owned", system_owned)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if updated_epoch_millis and not isinstance(updated_epoch_millis, int):
            raise TypeError("Expected argument 'updated_epoch_millis' to be a int")
        pulumi.set(__self__, "updated_epoch_millis", updated_epoch_millis)
        if updater_id and not isinstance(updater_id, str):
            raise TypeError("Expected argument 'updater_id' to be a str")
        pulumi.set(__self__, "updater_id", updater_id)
        if url and not isinstance(url, str):
            raise TypeError("Expected argument 'url' to be a str")
        pulumi.set(__self__, "url", url)
        if views_last_day and not isinstance(views_last_day, int):
            raise TypeError("Expected argument 'views_last_day' to be a int")
        pulumi.set(__self__, "views_last_day", views_last_day)
        if views_last_month and not isinstance(views_last_month, int):
            raise TypeError("Expected argument 'views_last_month' to be a int")
        pulumi.set(__self__, "views_last_month", views_last_month)
        if views_last_week and not isinstance(views_last_week, int):
            raise TypeError("Expected argument 'views_last_week' to be a int")
        pulumi.set(__self__, "views_last_week", views_last_week)

    @_builtins.property
    @pulumi.getter(name="canModifies")
    def can_modifies(self) -> Sequence[_builtins.str]:
        """
        A list of users that have modify ACL access to the dashboard.
        """
        return pulumi.get(self, "can_modifies")

    @_builtins.property
    @pulumi.getter(name="canViews")
    def can_views(self) -> Sequence[_builtins.str]:
        """
        A list of users that have view ACL access to the dashboard.
        """
        return pulumi.get(self, "can_views")

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

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

    @_builtins.property
    @pulumi.getter(name="chartTitleScalar")
    def chart_title_scalar(self) -> _builtins.int:
        return pulumi.get(self, "chart_title_scalar")

    @_builtins.property
    @pulumi.getter(name="createdEpochMillis")
    def created_epoch_millis(self) -> _builtins.int:
        return pulumi.get(self, "created_epoch_millis")

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

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

    @_builtins.property
    @pulumi.getter(name="defaultEndTime")
    def default_end_time(self) -> _builtins.int:
        return pulumi.get(self, "default_end_time")

    @_builtins.property
    @pulumi.getter(name="defaultStartTime")
    def default_start_time(self) -> _builtins.int:
        return pulumi.get(self, "default_start_time")

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

    @_builtins.property
    @pulumi.getter
    def deleted(self) -> _builtins.bool:
        return pulumi.get(self, "deleted")

    @_builtins.property
    @pulumi.getter
    def description(self) -> _builtins.str:
        """
        Description of the chart.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="displayDescription")
    def display_description(self) -> _builtins.bool:
        return pulumi.get(self, "display_description")

    @_builtins.property
    @pulumi.getter(name="displayQueryParameters")
    def display_query_parameters(self) -> _builtins.bool:
        """
        Whether the dashboard parameters section is opened by default when the dashboard
        is shown.
        """
        return pulumi.get(self, "display_query_parameters")

    @_builtins.property
    @pulumi.getter(name="displaySectionTableOfContents")
    def display_section_table_of_contents(self) -> _builtins.bool:
        """
        Whether the "pills" quick-linked the sections of the dashboard are
        displayed by default when the dashboard is shown.
        """
        return pulumi.get(self, "display_section_table_of_contents")

    @_builtins.property
    @pulumi.getter(name="eventFilterType")
    def event_filter_type(self) -> _builtins.str:
        """
        How charts belonging to this dashboard should display events. `BYCHART` is default if
        unspecified. Valid options are: `BYCHART`, `AUTOMATIC`, `ALL`, `NONE`, `BYDASHBOARD`, and `BYCHARTANDDASHBOARD`.
        """
        return pulumi.get(self, "event_filter_type")

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

    @_builtins.property
    @pulumi.getter
    def favorite(self) -> _builtins.bool:
        return pulumi.get(self, "favorite")

    @_builtins.property
    @pulumi.getter
    def hidden(self) -> _builtins.bool:
        return pulumi.get(self, "hidden")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        The name of the parameters.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="numCharts")
    def num_charts(self) -> _builtins.int:
        return pulumi.get(self, "num_charts")

    @_builtins.property
    @pulumi.getter(name="numFavorites")
    def num_favorites(self) -> _builtins.int:
        return pulumi.get(self, "num_favorites")

    @_builtins.property
    @pulumi.getter(name="parameterDetails")
    def parameter_details(self) -> Sequence['outputs.GetDashboardParameterDetailResult']:
        """
        The current JSON representation of dashboard parameters. See parameter details.
        """
        return pulumi.get(self, "parameter_details")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Mapping[str, _builtins.str]:
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter
    def sections(self) -> Sequence['outputs.GetDashboardSectionResult']:
        return pulumi.get(self, "sections")

    @_builtins.property
    @pulumi.getter(name="systemOwned")
    def system_owned(self) -> _builtins.bool:
        return pulumi.get(self, "system_owned")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Sequence[_builtins.str]:
        """
        A set of tags to assign to this resource.
        """
        return pulumi.get(self, "tags")

    @_builtins.property
    @pulumi.getter(name="updatedEpochMillis")
    def updated_epoch_millis(self) -> _builtins.int:
        return pulumi.get(self, "updated_epoch_millis")

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

    @_builtins.property
    @pulumi.getter
    def url(self) -> _builtins.str:
        """
        Unique identifier, also a URL slug of the dashboard.
        """
        return pulumi.get(self, "url")

    @_builtins.property
    @pulumi.getter(name="viewsLastDay")
    def views_last_day(self) -> _builtins.int:
        return pulumi.get(self, "views_last_day")

    @_builtins.property
    @pulumi.getter(name="viewsLastMonth")
    def views_last_month(self) -> _builtins.int:
        return pulumi.get(self, "views_last_month")

    @_builtins.property
    @pulumi.getter(name="viewsLastWeek")
    def views_last_week(self) -> _builtins.int:
        return pulumi.get(self, "views_last_week")


class AwaitableGetDashboardResult(GetDashboardResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDashboardResult(
            can_modifies=self.can_modifies,
            can_views=self.can_views,
            chart_title_bg_color=self.chart_title_bg_color,
            chart_title_color=self.chart_title_color,
            chart_title_scalar=self.chart_title_scalar,
            created_epoch_millis=self.created_epoch_millis,
            creator_id=self.creator_id,
            customer=self.customer,
            default_end_time=self.default_end_time,
            default_start_time=self.default_start_time,
            default_time_window=self.default_time_window,
            deleted=self.deleted,
            description=self.description,
            display_description=self.display_description,
            display_query_parameters=self.display_query_parameters,
            display_section_table_of_contents=self.display_section_table_of_contents,
            event_filter_type=self.event_filter_type,
            event_query=self.event_query,
            favorite=self.favorite,
            hidden=self.hidden,
            id=self.id,
            name=self.name,
            num_charts=self.num_charts,
            num_favorites=self.num_favorites,
            parameter_details=self.parameter_details,
            parameters=self.parameters,
            sections=self.sections,
            system_owned=self.system_owned,
            tags=self.tags,
            updated_epoch_millis=self.updated_epoch_millis,
            updater_id=self.updater_id,
            url=self.url,
            views_last_day=self.views_last_day,
            views_last_month=self.views_last_month,
            views_last_week=self.views_last_week)


def get_dashboard(id: Optional[_builtins.str] = None,
                  opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDashboardResult:
    """
    Use this data source to get information about a certain Wavefront dashboard by its ID.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_wavefront as wavefront

    # Get the information about a dashboard.
    example = wavefront.get_dashboard(id="dashboard-id")
    ```


    :param _builtins.str id: The ID associated with the dashboard data to be fetched.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('wavefront:index/getDashboard:getDashboard', __args__, opts=opts, typ=GetDashboardResult).value

    return AwaitableGetDashboardResult(
        can_modifies=pulumi.get(__ret__, 'can_modifies'),
        can_views=pulumi.get(__ret__, 'can_views'),
        chart_title_bg_color=pulumi.get(__ret__, 'chart_title_bg_color'),
        chart_title_color=pulumi.get(__ret__, 'chart_title_color'),
        chart_title_scalar=pulumi.get(__ret__, 'chart_title_scalar'),
        created_epoch_millis=pulumi.get(__ret__, 'created_epoch_millis'),
        creator_id=pulumi.get(__ret__, 'creator_id'),
        customer=pulumi.get(__ret__, 'customer'),
        default_end_time=pulumi.get(__ret__, 'default_end_time'),
        default_start_time=pulumi.get(__ret__, 'default_start_time'),
        default_time_window=pulumi.get(__ret__, 'default_time_window'),
        deleted=pulumi.get(__ret__, 'deleted'),
        description=pulumi.get(__ret__, 'description'),
        display_description=pulumi.get(__ret__, 'display_description'),
        display_query_parameters=pulumi.get(__ret__, 'display_query_parameters'),
        display_section_table_of_contents=pulumi.get(__ret__, 'display_section_table_of_contents'),
        event_filter_type=pulumi.get(__ret__, 'event_filter_type'),
        event_query=pulumi.get(__ret__, 'event_query'),
        favorite=pulumi.get(__ret__, 'favorite'),
        hidden=pulumi.get(__ret__, 'hidden'),
        id=pulumi.get(__ret__, 'id'),
        name=pulumi.get(__ret__, 'name'),
        num_charts=pulumi.get(__ret__, 'num_charts'),
        num_favorites=pulumi.get(__ret__, 'num_favorites'),
        parameter_details=pulumi.get(__ret__, 'parameter_details'),
        parameters=pulumi.get(__ret__, 'parameters'),
        sections=pulumi.get(__ret__, 'sections'),
        system_owned=pulumi.get(__ret__, 'system_owned'),
        tags=pulumi.get(__ret__, 'tags'),
        updated_epoch_millis=pulumi.get(__ret__, 'updated_epoch_millis'),
        updater_id=pulumi.get(__ret__, 'updater_id'),
        url=pulumi.get(__ret__, 'url'),
        views_last_day=pulumi.get(__ret__, 'views_last_day'),
        views_last_month=pulumi.get(__ret__, 'views_last_month'),
        views_last_week=pulumi.get(__ret__, 'views_last_week'))
def get_dashboard_output(id: Optional[pulumi.Input[_builtins.str]] = None,
                         opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDashboardResult]:
    """
    Use this data source to get information about a certain Wavefront dashboard by its ID.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_wavefront as wavefront

    # Get the information about a dashboard.
    example = wavefront.get_dashboard(id="dashboard-id")
    ```


    :param _builtins.str id: The ID associated with the dashboard data to be fetched.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('wavefront:index/getDashboard:getDashboard', __args__, opts=opts, typ=GetDashboardResult)
    return __ret__.apply(lambda __response__: GetDashboardResult(
        can_modifies=pulumi.get(__response__, 'can_modifies'),
        can_views=pulumi.get(__response__, 'can_views'),
        chart_title_bg_color=pulumi.get(__response__, 'chart_title_bg_color'),
        chart_title_color=pulumi.get(__response__, 'chart_title_color'),
        chart_title_scalar=pulumi.get(__response__, 'chart_title_scalar'),
        created_epoch_millis=pulumi.get(__response__, 'created_epoch_millis'),
        creator_id=pulumi.get(__response__, 'creator_id'),
        customer=pulumi.get(__response__, 'customer'),
        default_end_time=pulumi.get(__response__, 'default_end_time'),
        default_start_time=pulumi.get(__response__, 'default_start_time'),
        default_time_window=pulumi.get(__response__, 'default_time_window'),
        deleted=pulumi.get(__response__, 'deleted'),
        description=pulumi.get(__response__, 'description'),
        display_description=pulumi.get(__response__, 'display_description'),
        display_query_parameters=pulumi.get(__response__, 'display_query_parameters'),
        display_section_table_of_contents=pulumi.get(__response__, 'display_section_table_of_contents'),
        event_filter_type=pulumi.get(__response__, 'event_filter_type'),
        event_query=pulumi.get(__response__, 'event_query'),
        favorite=pulumi.get(__response__, 'favorite'),
        hidden=pulumi.get(__response__, 'hidden'),
        id=pulumi.get(__response__, 'id'),
        name=pulumi.get(__response__, 'name'),
        num_charts=pulumi.get(__response__, 'num_charts'),
        num_favorites=pulumi.get(__response__, 'num_favorites'),
        parameter_details=pulumi.get(__response__, 'parameter_details'),
        parameters=pulumi.get(__response__, 'parameters'),
        sections=pulumi.get(__response__, 'sections'),
        system_owned=pulumi.get(__response__, 'system_owned'),
        tags=pulumi.get(__response__, 'tags'),
        updated_epoch_millis=pulumi.get(__response__, 'updated_epoch_millis'),
        updater_id=pulumi.get(__response__, 'updater_id'),
        url=pulumi.get(__response__, 'url'),
        views_last_day=pulumi.get(__response__, 'views_last_day'),
        views_last_month=pulumi.get(__response__, 'views_last_month'),
        views_last_week=pulumi.get(__response__, 'views_last_week')))
