# 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
from . import outputs

__all__ = [
    'GetVulnerabilityAuditApplicationDependencyVulnerabilityResult',
    'AwaitableGetVulnerabilityAuditApplicationDependencyVulnerabilityResult',
    'get_vulnerability_audit_application_dependency_vulnerability',
    'get_vulnerability_audit_application_dependency_vulnerability_output',
]

@pulumi.output_type
class GetVulnerabilityAuditApplicationDependencyVulnerabilityResult:
    """
    A collection of values returned by getVulnerabilityAuditApplicationDependencyVulnerability.
    """
    def __init__(__self__, cvss_v2greater_than_or_equal=None, cvss_v3greater_than_or_equal=None, depth=None, gav=None, id=None, items=None, root_node_id=None, sort_by=None, vulnerability_audit_id=None, vulnerability_id=None):
        if cvss_v2greater_than_or_equal and not isinstance(cvss_v2greater_than_or_equal, float):
            raise TypeError("Expected argument 'cvss_v2greater_than_or_equal' to be a float")
        pulumi.set(__self__, "cvss_v2greater_than_or_equal", cvss_v2greater_than_or_equal)
        if cvss_v3greater_than_or_equal and not isinstance(cvss_v3greater_than_or_equal, float):
            raise TypeError("Expected argument 'cvss_v3greater_than_or_equal' to be a float")
        pulumi.set(__self__, "cvss_v3greater_than_or_equal", cvss_v3greater_than_or_equal)
        if depth and not isinstance(depth, int):
            raise TypeError("Expected argument 'depth' to be a int")
        pulumi.set(__self__, "depth", depth)
        if gav and not isinstance(gav, str):
            raise TypeError("Expected argument 'gav' to be a str")
        pulumi.set(__self__, "gav", gav)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if items and not isinstance(items, list):
            raise TypeError("Expected argument 'items' to be a list")
        pulumi.set(__self__, "items", items)
        if root_node_id and not isinstance(root_node_id, str):
            raise TypeError("Expected argument 'root_node_id' to be a str")
        pulumi.set(__self__, "root_node_id", root_node_id)
        if sort_by and not isinstance(sort_by, str):
            raise TypeError("Expected argument 'sort_by' to be a str")
        pulumi.set(__self__, "sort_by", sort_by)
        if vulnerability_audit_id and not isinstance(vulnerability_audit_id, str):
            raise TypeError("Expected argument 'vulnerability_audit_id' to be a str")
        pulumi.set(__self__, "vulnerability_audit_id", vulnerability_audit_id)
        if vulnerability_id and not isinstance(vulnerability_id, str):
            raise TypeError("Expected argument 'vulnerability_id' to be a str")
        pulumi.set(__self__, "vulnerability_id", vulnerability_id)

    @property
    @pulumi.getter(name="cvssV2greaterThanOrEqual")
    def cvss_v2greater_than_or_equal(self) -> Optional[float]:
        return pulumi.get(self, "cvss_v2greater_than_or_equal")

    @property
    @pulumi.getter(name="cvssV3greaterThanOrEqual")
    def cvss_v3greater_than_or_equal(self) -> Optional[float]:
        return pulumi.get(self, "cvss_v3greater_than_or_equal")

    @property
    @pulumi.getter
    def depth(self) -> Optional[int]:
        return pulumi.get(self, "depth")

    @property
    @pulumi.getter
    def gav(self) -> Optional[str]:
        """
        Group Artifact Version (GAV) identifier (Group:Artifact:Version), for example org.graalvm.nativeimage:svm:21.1.0.
        """
        return pulumi.get(self, "gav")

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

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetVulnerabilityAuditApplicationDependencyVulnerabilityItemResult']:
        """
        List of Vulnerability Audit summaries.
        """
        return pulumi.get(self, "items")

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

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

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

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


class AwaitableGetVulnerabilityAuditApplicationDependencyVulnerabilityResult(GetVulnerabilityAuditApplicationDependencyVulnerabilityResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetVulnerabilityAuditApplicationDependencyVulnerabilityResult(
            cvss_v2greater_than_or_equal=self.cvss_v2greater_than_or_equal,
            cvss_v3greater_than_or_equal=self.cvss_v3greater_than_or_equal,
            depth=self.depth,
            gav=self.gav,
            id=self.id,
            items=self.items,
            root_node_id=self.root_node_id,
            sort_by=self.sort_by,
            vulnerability_audit_id=self.vulnerability_audit_id,
            vulnerability_id=self.vulnerability_id)


def get_vulnerability_audit_application_dependency_vulnerability(cvss_v2greater_than_or_equal: Optional[float] = None,
                                                                 cvss_v3greater_than_or_equal: Optional[float] = None,
                                                                 depth: Optional[int] = None,
                                                                 gav: Optional[str] = None,
                                                                 root_node_id: Optional[str] = None,
                                                                 sort_by: Optional[str] = None,
                                                                 vulnerability_audit_id: Optional[str] = None,
                                                                 vulnerability_id: Optional[str] = None,
                                                                 opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetVulnerabilityAuditApplicationDependencyVulnerabilityResult:
    """
    This data source provides details about a specific Vulnerability Audit Application Dependency Vulnerability resource in Oracle Cloud Infrastructure ADM service.

    Returns a list of Application Dependencies with their associated vulnerabilities.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_vulnerability_audit_application_dependency_vulnerability = oci.Adm.get_vulnerability_audit_application_dependency_vulnerability(vulnerability_audit_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        cvss_v2greater_than_or_equal=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        cvss_v3greater_than_or_equal=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        depth=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        gav=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        root_node_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        vulnerability_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param float cvss_v2greater_than_or_equal: A filter that returns only Vulnerability Audits that have a Common Vulnerability Scoring System Version 2 (CVSS V2) greater or equal than the specified value.
    :param float cvss_v3greater_than_or_equal: A filter that returns only Vulnerability Audits that have a Common Vulnerability Scoring System Version 3 (CVSS V3) greater or equal than the specified value.
    :param int depth: A filter to limit depth of the application dependencies tree traversal. Additionally query parameters such as "cvssV2GreaterThanOrEqual", "cvssV3GreaterThanOrEqual", "gav" and "vulnerabilityId" can't be used in conjunction with this latter.
    :param str gav: A filter to return only resources that match the entire GAV (Group Artifact Version) identifier given.
    :param str root_node_id: A filter to override the top level root identifier with the new given value. The application dependency tree will only be traversed from the given node. Query parameters "cvssV2GreaterThanOrEqual", "cvssV3GreaterThanOrEqual", "gav" and "vulnerabilityId" cannot be used in conjunction with this parameter.
    :param str vulnerability_audit_id: Unique Vulnerability Audit identifier path parameter.
    :param str vulnerability_id: A filter to return only Vulnerability Audits that match the specified id.
    """
    __args__ = dict()
    __args__['cvssV2greaterThanOrEqual'] = cvss_v2greater_than_or_equal
    __args__['cvssV3greaterThanOrEqual'] = cvss_v3greater_than_or_equal
    __args__['depth'] = depth
    __args__['gav'] = gav
    __args__['rootNodeId'] = root_node_id
    __args__['sortBy'] = sort_by
    __args__['vulnerabilityAuditId'] = vulnerability_audit_id
    __args__['vulnerabilityId'] = vulnerability_id
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('oci:Adm/getVulnerabilityAuditApplicationDependencyVulnerability:getVulnerabilityAuditApplicationDependencyVulnerability', __args__, opts=opts, typ=GetVulnerabilityAuditApplicationDependencyVulnerabilityResult).value

    return AwaitableGetVulnerabilityAuditApplicationDependencyVulnerabilityResult(
        cvss_v2greater_than_or_equal=__ret__.cvss_v2greater_than_or_equal,
        cvss_v3greater_than_or_equal=__ret__.cvss_v3greater_than_or_equal,
        depth=__ret__.depth,
        gav=__ret__.gav,
        id=__ret__.id,
        items=__ret__.items,
        root_node_id=__ret__.root_node_id,
        sort_by=__ret__.sort_by,
        vulnerability_audit_id=__ret__.vulnerability_audit_id,
        vulnerability_id=__ret__.vulnerability_id)


@_utilities.lift_output_func(get_vulnerability_audit_application_dependency_vulnerability)
def get_vulnerability_audit_application_dependency_vulnerability_output(cvss_v2greater_than_or_equal: Optional[pulumi.Input[Optional[float]]] = None,
                                                                        cvss_v3greater_than_or_equal: Optional[pulumi.Input[Optional[float]]] = None,
                                                                        depth: Optional[pulumi.Input[Optional[int]]] = None,
                                                                        gav: Optional[pulumi.Input[Optional[str]]] = None,
                                                                        root_node_id: Optional[pulumi.Input[Optional[str]]] = None,
                                                                        sort_by: Optional[pulumi.Input[Optional[str]]] = None,
                                                                        vulnerability_audit_id: Optional[pulumi.Input[str]] = None,
                                                                        vulnerability_id: Optional[pulumi.Input[Optional[str]]] = None,
                                                                        opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetVulnerabilityAuditApplicationDependencyVulnerabilityResult]:
    """
    This data source provides details about a specific Vulnerability Audit Application Dependency Vulnerability resource in Oracle Cloud Infrastructure ADM service.

    Returns a list of Application Dependencies with their associated vulnerabilities.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_oci as oci

    test_vulnerability_audit_application_dependency_vulnerability = oci.Adm.get_vulnerability_audit_application_dependency_vulnerability(vulnerability_audit_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        cvss_v2greater_than_or_equal=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        cvss_v3greater_than_or_equal=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        depth=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        gav=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        root_node_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),
        vulnerability_id=%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
    ```


    :param float cvss_v2greater_than_or_equal: A filter that returns only Vulnerability Audits that have a Common Vulnerability Scoring System Version 2 (CVSS V2) greater or equal than the specified value.
    :param float cvss_v3greater_than_or_equal: A filter that returns only Vulnerability Audits that have a Common Vulnerability Scoring System Version 3 (CVSS V3) greater or equal than the specified value.
    :param int depth: A filter to limit depth of the application dependencies tree traversal. Additionally query parameters such as "cvssV2GreaterThanOrEqual", "cvssV3GreaterThanOrEqual", "gav" and "vulnerabilityId" can't be used in conjunction with this latter.
    :param str gav: A filter to return only resources that match the entire GAV (Group Artifact Version) identifier given.
    :param str root_node_id: A filter to override the top level root identifier with the new given value. The application dependency tree will only be traversed from the given node. Query parameters "cvssV2GreaterThanOrEqual", "cvssV3GreaterThanOrEqual", "gav" and "vulnerabilityId" cannot be used in conjunction with this parameter.
    :param str vulnerability_audit_id: Unique Vulnerability Audit identifier path parameter.
    :param str vulnerability_id: A filter to return only Vulnerability Audits that match the specified id.
    """
    ...
