#!/usr/bin/python
# -*- coding: utf-8 -*-

# Copyright (c) 2021, Cisco Systems
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)

DOCUMENTATION = r"""
---
module: assurance_issues_count_v1_info
short_description: Information module for Assurance Issues Count V1
description:
- Get all Assurance Issues Count V1.
- >
   Returns the total number issues for given set of filters. If there is no start and/or end time, then end time will
   be defaulted to current time and start time will be defaulted to 24-hours ago from end time. Https
   //github.com/cisco-en-programmability/catalyst-center-api-specs/blob/main/Assurance/CE_Cat_Center_Org-
   IssuesList-1.0.0-resolved.yaml.
version_added: '6.15.0'
extends_documentation_fragment:
  - cisco.dnac.module_info
author: Rafael Campos (@racampos)
options:
  headers:
    description: Additional headers.
    type: dict
  startTime:
    description:
    - >
      StartTime query parameter. Start time from which API queries the data set related to the resource. It must
      be specified in UNIX epochtime in milliseconds. Value is inclusive. If `startTime` is not provided, API will
      default to current time.
    type: float
  endTime:
    description:
    - >
      EndTime query parameter. End time to which API queries the data set related to the resource. It must be
      specified in UNIX epochtime in milliseconds. Value is inclusive.
    type: float
  isGlobal:
    description:
    - >
      IsGlobal query parameter. Global issues are those issues which impacts across many devices, sites. They are
      also displayed on Issue Dashboard in Catalyst Center UI. Non-Global issues are displayed only on Client 360
      or Device 360 pages. If this flag is 'true', only global issues are returned. If it if 'false', all issues
      are returned.
    type: bool
  priority:
    description:
    - >
      Priority query parameter. Priority of the issue. Supports single priority and multiple priorities Examples
      priority=P1 (single priority requested) priority=P1&priority=P2&priority=P3 (multiple priorities requested).
    type: str
  severity:
    description:
    - >
      Severity query parameter. Severity of the issue. Supports single severity and multiple severities. Examples
      severity=high (single severity requested) severity=high&severity=medium (multiple severities requested).
    type: str
  status:
    description:
    - >
      Status query parameter. Status of the issue. Supports single status and multiple statuses. Examples
      status=active (single status requested) status=active&status=resolved (multiple statuses requested).
    type: str
  entityType:
    description:
    - >
      EntityType query parameter. Entity type of the issue. Supports single entity type and multiple entity types.
      Examples entityType=networkDevice (single entity type requested) entityType=network device&entityType=client
      (multiple entity types requested).
    type: str
  category:
    description:
    - >
      Category query parameter. Categories of the issue. Supports single category and multiple categories.
      Examples category=availability (single status requested) category=availability&category=onboarding (multiple
      categories requested).
    type: str
  deviceType:
    description:
    - >
      DeviceType query parameter. Device Type of the device to which this issue belongs to. Supports single device
      type and multiple device types. Examples deviceType=wireless controller (single device type requested)
      deviceType=wireless controller&deviceType=core (multiple device types requested).
    type: str
  name:
    description:
    - >
      Name query parameter. The name of the issue Examples name=ap_down (single issue name requested)
      name=ap_down&name=wlc_monitor (multiple issue names requested) Issue names can be retrieved using the API -
      /data/api/v1/assuranceIssueConfigurations.
    type: str
  issueId:
    description:
    - >
      IssueId query parameter. UUID of the issue Examples issueId=e52aecfe-b142-4287-a587-11a16ba6dd26 (single
      issue id requested)
      issueId=e52aecfe-b142-4287-a587-11a16ba6dd26&issueId=864d0421-02c0-43a6-9c52-81cad45f66d8 (multiple issue
      ids requested).
    type: str
  entityId:
    description:
    - >
      EntityId query parameter. Id of the entity for which this issue belongs to. For example, it could be mac
      address of AP or UUID of Sensor example 68 ca e4 79 3f 20 4de02167-901b-43cf-8822-cffd3caa286f Examples
      entityId=68 ca e4 79 3f 20 (single entity id requested) entityId=68 ca e4 79 3f
      20&entityId=864d0421-02c0-43a6-9c52-81cad45f66d8 (multiple entity ids requested).
    type: str
  updatedBy:
    description:
    - >
      UpdatedBy query parameter. The user who last updated this issue. Examples updatedBy=admin (single updatedBy
      requested) updatedBy=admin&updatedBy=john (multiple updatedBy requested).
    type: str
  siteHierarchy:
    description:
    - >
      SiteHierarchy query parameter. The full hierarchical breakdown of the site tree starting from Global site
      name and ending with the specific site name. The Root site is named "Global" (Ex.
      `Global/AreaName/BuildingName/FloorName`) This field supports wildcard asterisk (*) character search
      support. E.g. */San*, */San, /San* Examples `?siteHierarchy=Global/AreaName/BuildingName/FloorName` (single
      siteHierarchy requested) `?siteHierarchy=Global/AreaName/BuildingName/FloorName&siteHierarchy=Global/AreaNam
      e2/BuildingName2/FloorName2` (multiple siteHierarchies requested).
    type: str
  siteHierarchyId:
    description:
    - >
      SiteHierarchyId query parameter. The full hierarchy breakdown of the site tree in id form starting from
      Global site UUID and ending with the specific site UUID. (Ex. `globalUuid/areaUuid/buildingUuid/floorUuid`)
      This field supports wildcard asterisk (*) character search support. E.g. `*uuid*, *uuid, uuid* Examples
      `?siteHierarchyId=globalUuid/areaUuid/buildingUuid/floorUuid `(single siteHierarchyId requested) `?siteHiera
      rchyId=globalUuid/areaUuid/buildingUuid/floorUuid&siteHierarchyId=globalUuid/areaUuid2/buildingUuid2/floorUu
      id2` (multiple siteHierarchyIds requested).
    type: str
  siteName:
    description:
    - >
      SiteName query parameter. The name of the site. (Ex. `FloorName`) This field supports wildcard asterisk (*)
      character search support. E.g. *San*, *San, San* Examples `?siteName=building1` (single siteName requested)
      `?siteName=building1&siteName=building2&siteName=building3` (multiple siteNames requested).
    type: str
  siteId:
    description:
    - >
      SiteId query parameter. The UUID of the site. (Ex. `flooruuid`) This field supports wildcard asterisk (*)
      character search support. E.g.*flooruuid*, *flooruuid, flooruuid* Examples `?siteId=id1` (single id
      requested) `?siteId=id1&siteId=id2&siteId=id3` (multiple ids requested).
    type: str
  fabricSiteId:
    description:
    - >
      FabricSiteId query parameter. The UUID of the fabric site. (Ex. "flooruuid") Examples
      fabricSiteId=e52aecfe-b142-4287-a587-11a16ba6dd26 (single id requested)
      fabricSiteId=e52aecfe-b142-4287-a587-11a16ba6dd26,864d0421-02c0-43a6-9c52-81cad45f66d8 (multiple ids
      requested).
    type: str
  fabricVnName:
    description:
    - >
      FabricVnName query parameter. The name of the fabric virtual network Examples fabricVnName=name1 (single
      fabric virtual network name requested) fabricVnName=name1&fabricVnName=name2&fabricVnName=name3 (multiple
      fabric virtual network names requested).
    type: str
  fabricTransitSiteId:
    description:
    - >
      FabricTransitSiteId query parameter. The UUID of the fabric transit site. (Ex. "flooruuid") Examples
      fabricTransitSiteId=e52aecfe-b142-4287-a587-11a16ba6dd26 (single id requested) fabricTransitSiteId=e52aecfe-
      b142-4287-a587-11a16ba6dd26&fabricTransitSiteId=864d0421-02c0-43a6-9c52-81cad45f66d8 (multiple ids
      requested).
    type: str
  networkDeviceId:
    description:
    - >
      NetworkDeviceId query parameter. The list of Network Device Uuids. (Ex.
      `6bef213c-19ca-4170-8375-b694e251101c`) Examples `networkDeviceId=6bef213c-19ca-4170-8375-b694e251101c`
      (single networkDeviceId requested) `networkDeviceId=6bef213c-19ca-4170-8375-
      b694e251101c&networkDeviceId=32219612-819e-4b5e-a96b-cf22aca13dd9&networkDeviceId=2541e9a7-b80d-4955-8aa2-
      79b233318ba0` (multiple networkDeviceIds with & separator).
    type: str
  networkDeviceIpAddress:
    description:
    - >
      NetworkDeviceIpAddress query parameter. The list of Network Device management IP Address. (Ex. `121.1.1.10`)
      This field supports wildcard (`*`) character-based search. Ex `*1.1*` or `1.1*` or `*1.1` Examples
      `networkDeviceIpAddress=121.1.1.10`
      `networkDeviceIpAddress=121.1.1.10&networkDeviceIpAddress=172.20.1.10&networkDeviceIpAddress=10.10.20.10`
      (multiple networkDevice IP Address with & separator).
    type: str
  macAddress:
    description:
    - >
      MacAddress query parameter. The macAddress of the network device or client This field supports wildcard
      (`*`) character-based search. Ex `*AB AB AB*` or `AB AB AB*` or `*AB AB AB` Examples `macAddress=AB AB AB CD
      CD CD` (single macAddress requested) `macAddress=AB AB AB CD CD DC&macAddress=AB AB AB CD CD FE` (multiple
      macAddress requested).
    type: str
  aiDriven:
    description:
    - AiDriven query parameter. Flag whether the issue is AI driven issue.
    type: bool
  fabricDriven:
    description:
    - FabricDriven query parameter. Flag whether the issue is related to a Fabric site, a virtual network or a transit.
    type: bool
  fabricSiteDriven:
    description:
    - FabricSiteDriven query parameter. Flag whether the issue is Fabric site driven issue.
    type: bool
  fabricVnDriven:
    description:
    - FabricVnDriven query parameter. Flag whether the issue is Fabric Virtual Network driven issue.
    type: bool
  fabricTransitDriven:
    description:
    - FabricTransitDriven query parameter. Flag whether the issue is Fabric Transit driven issue.
    type: bool
requirements:
- dnacentersdk >= 2.4.9
- python >= 3.5
seealso:
- name: Cisco DNA Center documentation for Issues GetTheTotalNumberOfIssuesForGivenSetOfFiltersKnowYourNetworkV1
  description: Complete reference of the GetTheTotalNumberOfIssuesForGivenSetOfFiltersKnowYourNetworkV1 API.
  link: https://developer.cisco.com/docs/dna-center/#!get-the-total-number-of-issues-for-given-set-of-filters-know-your-network
notes:
  - SDK Method used are
    issues.Issues.get_the_total_number_of_issues_for_given_set_of_filters_know_your_network_v1,

  - Paths used are
    get /dna/data/api/v1/assuranceIssues/count,

"""

EXAMPLES = r"""
- name: Get all Assurance Issues Count V1
  cisco.dnac.assurance_issues_count_v1_info:
    dnac_host: "{{dnac_host}}"
    dnac_username: "{{dnac_username}}"
    dnac_password: "{{dnac_password}}"
    dnac_verify: "{{dnac_verify}}"
    dnac_port: "{{dnac_port}}"
    dnac_version: "{{dnac_version}}"
    dnac_debug: "{{dnac_debug}}"
    headers: "{{my_headers | from_json}}"
    startTime: 0
    endTime: 0
    isGlobal: True
    priority: string
    severity: string
    status: string
    entityType: string
    category: string
    deviceType: string
    name: string
    issueId: string
    entityId: string
    updatedBy: string
    siteHierarchy: string
    siteHierarchyId: string
    siteName: string
    siteId: string
    fabricSiteId: string
    fabricVnName: string
    fabricTransitSiteId: string
    networkDeviceId: string
    networkDeviceIpAddress: string
    macAddress: string
    aiDriven: True
    fabricDriven: True
    fabricSiteDriven: True
    fabricVnDriven: True
    fabricTransitDriven: True
  register: result

"""
RETURN = r"""
dnac_response:
  description: A dictionary or list with the response returned by the Cisco DNAC Python SDK
  returned: always
  type: dict
  sample: >
    {
      "response": {
        "count": 0
      },
      "version": "string"
    }
"""
