-
Notifications
You must be signed in to change notification settings - Fork 6
/
vulndb.go
164 lines (141 loc) · 4.41 KB
/
vulndb.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/*
Copyright 2021 Adevinta
*/
package api
import (
vulndb "github.com/adevinta/vulnerability-db-api/pkg/model"
)
// FindingsParams represents the group of parameters
// that can be used to customize the call to retrieve
// the list of findings.
type FindingsParams struct {
Team string
Status string
MinScore float64
MaxScore float64
AtDate string
MinDate string
MaxDate string
SortBy string
IssueID string
TargetID string
Identifier string
IdentifierMatch bool
Identifiers string
Labels string
}
// FindingsList represents the response data returned
// from the vulnerability DB for a findings requests.
type FindingsList struct {
Findings []vulndb.FindingExpanded `json:"findings"`
Pagination PaginationInfo `json:"pagination"`
}
// FindingsIssuesList represents the response data returned
// from the vulnerability DB for the issues summary request.
type FindingsIssuesList struct {
Issues []vulndb.IssueSummary `json:"issues"`
Pagination PaginationInfo `json:"pagination"`
}
// FindingsTargetsList represents the response data returned
// from the vulnerability DB for the targets summary request.
type FindingsTargetsList struct {
Targets []vulndb.TargetSummary `json:"targets"`
Pagination PaginationInfo `json:"pagination"`
}
type FindingExpanded struct {
vulndb.FindingExpanded
TicketURL string `json:"url_tracker"`
}
// Finding represents the response data returned from the vulnerability DB for
// the get finding request.
type Finding struct {
Finding FindingExpanded `json:"finding"`
}
// FindingsLabels represents the response data returned from the vulnerability DB
// for the list labels request.
type FindingsLabels struct {
Labels []string `json:"labels"`
}
// UpdateFinding represents the payload submitted to update a finding.
type UpdateFinding struct {
Status *string `json:"status"`
}
// CreateTarget specifies the payload for the vulnerability DB
// create target endpoint.
type CreateTarget struct {
Identifier string `json:"identifier"`
Teams []string `json:"teams"`
}
// TargetsParams represents the group of parameters
// that can be used to customize the call to retrieve
// the list of targets.
type TargetsParams struct {
Team string
Identifier string
IdentifierMatch bool
}
// Target represents the response data returned from the vulnerability DB
// for the create target request.
type Target struct {
Target vulndb.Target `json:"target"`
}
// TargetsList represents the response data returned
// from the vulnerability DB for the targets list request.
type TargetsList struct {
Targets []vulndb.Target `json:"targets"`
Pagination PaginationInfo `json:"pagination"`
}
// StatsParams represents the group of parameters
// that can be used to customize the call to retrieve
// the statistics.
type StatsParams struct {
Team string
Teams string
MinDate string
MaxDate string
AtDate string
MinScore float64
MaxScore float64
Identifiers string
Labels string
}
// GlobalStatsParams represents the group of parameters that can be used to
// customize the call to retrieve the global statistics.
type GlobalStatsParams struct {
Team string
Teams string
MinDate string
MaxDate string
AtDate string
MinScore float64
MaxScore float64
Identifiers string
Labels string
}
// StatsMTTR represents the mean time to remediation stats by issue severity.
type StatsMTTR struct {
MTTR vulndb.StatsMTTRSeverity `json:"mttr"`
}
// StatsExposure represents the exposure time stats by different averages.
type StatsExposure struct {
Exposure vulndb.StatsExposure `json:"exposure"`
}
// StatsCurrentExposure represents the current exposure time stats by different averages.
type StatsCurrentExposure struct {
Exposure vulndb.StatsExposure `json:"current_exposure"`
}
// StatsOpen represents the stats for open issues grouped by severity.
type StatsOpen struct {
OpenIssues vulndb.StatsIssueSeverity `json:"open_issues"`
}
// StatsFixed represents the stats for fixed issues grouped by severity.
type StatsFixed struct {
FixedIssues vulndb.StatsIssueSeverity `json:"fixed_issues"`
}
// StatsAssets represents the stats for assets grouped by severity.
type StatsAssets struct {
Assets vulndb.StatsAssetsSeverity `json:"assets"`
}
type StatsCoverage struct {
Coverage float64 `json:"coverage"`
}