diff --git a/vulnerability.go b/vulnerability.go index d35033e..3d6708a 100644 --- a/vulnerability.go +++ b/vulnerability.go @@ -61,6 +61,20 @@ type CWE struct { Name string `json:"name"` } +const ( + SourceTypeNvd = "NVD" + SourceTypeNpm = "NPM" + SourceTypeGithub = "GITHUB" + SourceTypeVulndb = "VULNDB" + SourceTypeOssindex = "OSSINDEX" + SourceTypeRetirejs = "RETIREJS" + SourceTypeInternal = "INTERNAL" + SourceTypeOsv = "OSV" + SourceTypeSnyk = "SNYK" +) + +type SourceType string + type VulnerabilityService struct { client *Client } @@ -75,6 +89,16 @@ func (vs VulnerabilityService) Get(ctx context.Context, vulnUUID uuid.UUID) (v V return } +func (vs VulnerabilityService) GetBySource(ctx context.Context, source SourceType, vulnID string) (v Vulnerability, err error) { + req, err := vs.client.newRequest(ctx, http.MethodGet, fmt.Sprintf("/api/v1/vulnerability/source/%s/vuln/%s", source, vulnID)) + if err != nil { + return + } + + _, err = vs.client.doRequest(req, &v) + return +} + func (vs VulnerabilityService) GetAllForComponent(ctx context.Context, componentUUID uuid.UUID, suppressed bool, po PageOptions) (p Page[Vulnerability], err error) { params := map[string]string{ "suppressed": strconv.FormatBool(suppressed),