Documentation ¶
Index ¶
- Constants
- Variables
- type AcceptRiskRule
- type AcceptRiskRuleBaseFields
- type AgentGroup
- type AgentScan
- type Analysis
- type AnalysisFilter
- type AnalysisQuery
- type AnalysisResponseContainer
- type Asset
- type AuditFile
- type AuditVariable
- type BaseInfo
- type Client
- func (c *Client) AddPostgresDBCredential(credName, username, password, description, dbName, port string) (*Credential, error)
- func (c *Client) AddSSHCertificateCredential(publicKey, privateKey string, sshCertCred SSHCertificateCredentialUpload) (*Credential, error)
- func (c *Client) Analyze(a *Analysis, resultsContainer interface{}) (*AnalysisResponseContainer, error)
- func (c *Client) CreateAcceptRiskRule(a *AcceptRiskRule) (*AcceptRiskRule, error)
- func (c *Client) CreateAgentScan(s *AgentScan) (*AgentScan, error)
- func (c *Client) CreateAsset(a *Asset) (*Asset, error)
- func (c *Client) CreateAuditFile(a *AuditFile) (*AuditFile, error)
- func (c *Client) CreateOrganization(org *Organization) (*Organization, error)
- func (c *Client) CreateRecastRiskRule(a *RecastRiskRule) (*RecastRiskRule, error)
- func (c *Client) CreateRepository(r *Repository) (*Repository, error)
- func (c *Client) CreateRole(role *Role) (*Role, error)
- func (c *Client) CreateScan(s *Scan) (*Scan, error)
- func (c *Client) CreateScanPolicy(s *ScanPolicy) (*ScanPolicy, error)
- func (c *Client) CreateScanPolicyTemplate(s *ScanPolicyTemplate) (*ScanPolicyTemplate, error)
- func (c *Client) CreateScanZone(sz *ScanZone) (*ScanZone, error)
- func (c *Client) DeleteAcceptRiskRule(id string) error
- func (c *Client) DeleteAgentScan(id string) error
- func (c *Client) DeleteAsset(id string) error
- func (c *Client) DeleteAuditFile(id string) error
- func (c *Client) DeleteCredential(id string) error
- func (c *Client) DeleteFile(filename string) error
- func (c *Client) DeleteOrganization(id string) error
- func (c *Client) DeleteRecastRiskRule(id string) error
- func (c *Client) DeleteRepository(id string) error
- func (c *Client) DeleteRole(id string) error
- func (c *Client) DeleteScan(id string) error
- func (c *Client) DeleteScanPolicy(id string) error
- func (c *Client) DeleteScanPolicyTemplate(id string) error
- func (c *Client) DeleteScanResult(id string) error
- func (c *Client) DeleteScanZone(id string) error
- func (c *Client) DownloadScanResult(id string) ([]byte, error)
- func (c *Client) GetAcceptRiskRule(id string) (*AcceptRiskRule, error)
- func (c *Client) GetAgentGroupsForScanner(id string) ([]*AgentGroup, error)
- func (c *Client) GetAgentScan(id string) (*AgentScan, error)
- func (c *Client) GetAllAcceptRiskRules() ([]*AcceptRiskRule, error)
- func (c *Client) GetAllAgentScans() ([]*AgentScan, error)
- func (c *Client) GetAllAssets() ([]*Asset, error)
- func (c *Client) GetAllCredentials() ([]*Credential, error)
- func (c *Client) GetAllFeeds() (Feeds, error)
- func (c *Client) GetAllJobs() ([]*Job, error)
- func (c *Client) GetAllOrganizations() ([]*Organization, error)
- func (c *Client) GetAllRecastRiskRules() ([]*RecastRiskRule, error)
- func (c *Client) GetAllReportDefinitions() ([]*ReportDefinitionBase, error)
- func (c *Client) GetAllReports() ([]*Report, error)
- func (c *Client) GetAllRepositories() ([]*Repository, error)
- func (c *Client) GetAllRoles() ([]*Role, error)
- func (c *Client) GetAllScanPolicies() ([]*ScanPolicy, error)
- func (c *Client) GetAllScanPolicyTemplates() ([]*ScanPolicyTemplate, error)
- func (c *Client) GetAllScanResults() ([]*ScanResult, error)
- func (c *Client) GetAllScanResultsByTime(start, end time.Time) ([]*ScanResult, error)
- func (c *Client) GetAllScanZones() ([]*ScanZone, error)
- func (c *Client) GetAllScanners() ([]*Scanner, error)
- func (c *Client) GetAllScans() ([]*Scan, error)
- func (c *Client) GetAsset(id string) (*Asset, error)
- func (c *Client) GetAuditFile(id string) (*AuditFile, error)
- func (c *Client) GetCredential(id string) (*Credential, error)
- func (c *Client) GetCurrentUser() (*CurrentUser, error)
- func (c *Client) GetFeed(name string) (*Feed, error)
- func (c *Client) GetJob(id string) (*Job, error)
- func (c *Client) GetOrganization(id string) (*Organization, error)
- func (c *Client) GetPlugin(id string) (*Plugin, error)
- func (c *Client) GetPluginsByName(name string) ([]*Plugin, error)
- func (c *Client) GetRecastRiskRule(id string) (*RecastRiskRule, error)
- func (c *Client) GetReport(id string) (*Report, error)
- func (c *Client) GetRepository(id string) (*Repository, error)
- func (c *Client) GetRole(id string) (*Role, error)
- func (c *Client) GetScan(id string) (*Scan, error)
- func (c *Client) GetScanPolicy(id string) (*ScanPolicy, error)
- func (c *Client) GetScanPolicyTemplate(id string) (*ScanPolicyTemplate, error)
- func (c *Client) GetScanResult(id string) (*ScanResult, error)
- func (c *Client) GetScanZone(id string) (*ScanZone, error)
- func (c *Client) ImportScanResult(resultImport *ScanResultImport) error
- func (c *Client) ImportScanResultFile(path string, repositoryID string, classifyMitigatedAge string, ...) error
- func (c *Client) KillJob(id string) error
- func (c *Client) RestyClient() *resty.Client
- func (c *Client) SetAPIKey(access, secret string) *Client
- func (c *Client) SetBasicAuth(username, password string) *Client
- func (c *Client) SetUserAgent(agent string) *Client
- func (c *Client) StartScan(id string) (*ScanStartResult, error)
- func (c *Client) StopScanResult(id string) error
- func (c *Client) UpdateAgentScan(s *AgentScan) (*AgentScan, error)
- func (c *Client) UpdateAsset(a *Asset) (*Asset, error)
- func (c *Client) UpdateAuditFile(a *AuditFile) (*AuditFile, error)
- func (c *Client) UpdateFeed(name string) error
- func (c *Client) UpdateOrganization(org *Organization) (*Organization, error)
- func (c *Client) UpdateRepository(repo *Repository) (*Repository, error)
- func (c *Client) UpdateRole(role *Role) (*Role, error)
- func (c *Client) UpdateSSHCertificateCredential(publicKey, privateKey string, sshCertCred SSHCertificateCredentialUpload) (*Credential, error)
- func (c *Client) UpdateScan(s *Scan) (*Scan, error)
- func (c *Client) UpdateScanPolicy(s *ScanPolicy) (*ScanPolicy, error)
- func (c *Client) UpdateScanZone(sz *ScanZone) (*ScanZone, error)
- func (c *Client) UpdateScanners() (*UpdateScannersStatus, error)
- func (c *Client) UploadFile(path, context string) (*File, error)
- func (c *Client) UploadFileFromReader(reader io.Reader, path, context string) (*File, error)
- func (c *Client) UploadFileFromString(content, path, context string) (*File, error)
- type Credential
- type CurrentUser
- type DBCredentialUpload
- type FakeBool
- type Family
- type Feed
- type Feeds
- type File
- type HTTPError
- type Job
- type NessusSchedule
- type NotFoundError
- type Organization
- type OrganizationRepository
- type Plugin
- type ProbablyString
- type RecastRiskRule
- type RecastRiskRuleBaseFields
- type RepoBaseFields
- type RepoFieldsCommon
- type RepoIPFields
- type RepoOrganization
- type Report
- type ReportDefinitionBase
- type Repository
- type Role
- type SCError
- type SCResponse
- type SSHCertificateCredentialUpload
- type Scan
- type ScanDependentSchedule
- type ScanPolicy
- type ScanPolicyFamilies
- type ScanPolicyTemplate
- type ScanReports
- type ScanResult
- type ScanResultImport
- type ScanSchedule
- type ScanStartResult
- type ScanZone
- type ScanZoneBaseFields
- type ScanZoneScanner
- type Scanner
- type UnixEpochStringTime
- type UpdateScannersStatus
- type UserInfo
- type VulnDetailsResult
- type VulnFamily
- type VulnHosts
- type VulnIPSummaryResult
- type VulnRepository
- type VulnSumDNSNameResult
- type VulnSumIPResult
Constants ¶
const ( RecastSeverityInfo = "0" RecastSeverityLow = "1" RecastSeverityMedium = "2" RecastSeverityHigh = "3" )
const (
DefaultUserAgent = "tenable.sc go client"
)
Variables ¶
var DefaultTimeScope = time.Time{}
Functions ¶
This section is empty.
Types ¶
type AcceptRiskRule ¶
type AcceptRiskRule struct { AcceptRiskRuleBaseFields Repository *BaseInfo // HostValue will be rendered to/from the API-native structure as necessary based on HostType. HostValue string }
AcceptRiskRule represents the Risk Rule structure in https://docs.tenable.com/tenablesc/api/Accept-Risk-Rule.htm
type AcceptRiskRuleBaseFields ¶
type AcceptRiskRuleBaseFields struct { ID string `json:"id,omitempty"` Plugin *BaseInfo `json:"plugin,omitempty"` // HostType may be 'all', 'asset', 'ip', or 'uuid' HostType string `json:"hostType,omitempty"` Port string `json:"port,omitempty"` Protocol string `json:"protocol,omitempty"` Comments string `json:"comments,omitempty"` Expires string `json:"expires,omitempty"` Status string `json:"status,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` }
AcceptRiskRuleBaseFields are the fields renderable directly both to and from the API.
Requests take a list of repositories while all responses only ever return a single repository. HostValue response structure also varies depending on type; the client masks out this conversion to and from the API structures.
type AgentGroup ¶
type AgentGroup struct { BaseInfo NessusManagerID string `json:"nessusManagerID,omitempty"` RemoteID int `json:"remoteID,omitempty"` }
AgentGroup is the fields describing an Agent Group reference in https://docs.tenable.com/tenablesc/api/Agent-Scan.htm ; for input, only the ID is needed.
type AgentScan ¶
type AgentScan struct { BaseInfo Repository BaseInfo `json:"repository,omitempty"` NessusManager BaseInfo `json:"nessusManager,omitempty"` ScanWindow ProbablyString `json:"scanWindow,omitempty"` AgentGroups []AgentGroup `json:"agentGroups,omitempty"` Type string `json:"type,omitempty"` EmailOnLaunch FakeBool `json:"emailOnLaunch,omitempty"` EmailOnFinish FakeBool `json:"emailOnFinish,omitempty"` Schedule *ScanSchedule `json:"schedule,omitempty"` Policy *BaseInfo `json:"policy,omitempty"` }
AgentScan is the fields renderable to and from the API for https://docs.tenable.com/tenablesc/api/Agent-Scan.htm
type Analysis ¶
type Analysis struct { Type string `json:"type,omitempty"` Query AnalysisQuery `json:"query,omitempty"` SourceType string `json:"sourceType,omitempty"` SortField string `json:"sortField,omitempty"` SortDirection string `json:"sortDir,omitempty"` Columns []BaseInfo `json:"columns"` // note: this wants column names, not ids. // StartOffset is for type vuln only StartOffset string `json:"startOffset,omitempty"` // EndOffset is for type vuln only EndOffset string `json:"endOffset,omitempty"` // ScanID is for type vuln , sourcetype individual only ScanID string `json:"scanID,omitempty"` // View is for type vuln , sourcetype individual only View string `json:"view,omitempty"` }
Analysis represents the fields used for requests against https://docs.tenable.com/tenablesc/api/Analysis.htm Note some fields are used only for certain combinations of type and sourcetype.
type AnalysisFilter ¶
type AnalysisFilter struct { FilterName string `json:"filterName"` Operator string `json:"operator"` // Value is sometimes a string, sometimes a number, sometimes a BaseInfo (with ID only generally) Value interface{} `json:"value"` }
AnalysisFilter is the structure used for Analysis query filtering
type AnalysisQuery ¶
type AnalysisQuery struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Context string `json:"context,omitempty"` Type string `json:"type,omitempty"` SourceType string `json:"sourceType,omitempty"` Status string `json:"status,omitempty"` Tool string `json:"tool,omitempty"` Filters []AnalysisFilter `json:"filters,omitempty"` }
AnalysisQuery represents the fields available for filtering queries. Field values are probably best discovered through building queries in browser developer tools and then interrogating the request payloads.
type AnalysisResponseContainer ¶
type AnalysisResponseContainer struct { TotalRecords string `json:"totalRecords,omitempty"` ReturnedRecords int `json:"returnedRecords,omitempty"` StartOffset string `json:"startOffset,omitempty"` EndOffset string `json:"endOffset,omitempty"` MatchingDataElementCount string `json:"matchingDataElementCount,omitempty"` Results json.RawMessage `json:"results,omitempty"` }
AnalysisResponseContainer is the output structure produced by an Analyze query. Results are further unmarshalled before return from call.
type Asset ¶
type Asset struct { BaseInfo Type string `json:"type,omitempty"` Prepare FakeBool `json:"prepare,omitempty"` // DefinedDNSNames is a comma-separated list on the wire; this is translated during marshal/unmarshal. DefinedDNSNames []string `json:"-"` // DefinedIPs is a comma-separated list on the wire; this is translated during marshal/unmarshal. DefinedIPs []string `json:"-"` IPCount ProbablyString `json:"ipCount,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` // Repositories includes a redundant `IPCount` field on the wire; this is dropped during marshal/unmarshal for consistency. Repositories []Repository `json:"-"` }
Asset defines common fields used in requests and responses for assets
per https://docs.tenable.com/tenablesc/api/Asset.htm
Some fields are presented abstracted here and internally reformatted for transport.
type AuditFile ¶
type AuditFile struct { BaseInfo Type string `json:"type,omitempty"` Version string `json:"version,omitempty"` Status string `json:"status,omitempty"` Filename string `json:"filename,omitempty"` OriginalFilename string `json:"originalFilename,omitempty"` Variables []AuditVariable `json:"variables,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` LastRefreshedTime UnixEpochStringTime `json:"lastRefreshedTime,omitempty"` }
AuditFile respresents the request/response structure for https://docs.tenable.com/tenablesc/api/AuditFile.htm
type AuditVariable ¶
type BaseInfo ¶
type BaseInfo struct { ID ProbablyString `json:"id,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` }
BaseInfo is used in the API to refer to related objects;
For input, only the ID is needed; responses will include name and description.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func NewClient ¶
NewClient creates a Tenable.SC client object with defaults applied.
Don't forget to SetAPIKey or SetBasicAuth to ensure you make credentialed queries.
func (*Client) AddPostgresDBCredential ¶
func (c *Client) AddPostgresDBCredential(credName, username, password, description, dbName, port string) (*Credential, error)
AddPostgresDBCredential creates a new postgres db credential
func (*Client) AddSSHCertificateCredential ¶
func (c *Client) AddSSHCertificateCredential(publicKey, privateKey string, sshCertCred SSHCertificateCredentialUpload) (*Credential, error)
AddSSHCertificateCredential does the following: 1. takes a public key and private key as strings and uploads those to tenable.sc 2. for both private and public keys it stores the file name in PublicKey and PrivateKey in SSHCertificateCredentialUpload 3. post the cred to tenable.sc and return the object
func (*Client) Analyze ¶
func (c *Client) Analyze(a *Analysis, resultsContainer interface{}) (*AnalysisResponseContainer, error)
Analyze takes an arbitrary Analysis query, determines the expected container object, and writes to the resultsContainer expecting it to be the correct type. The partially-unmarshalled response is returned as well for metadata purposes.
func (*Client) CreateAcceptRiskRule ¶
func (c *Client) CreateAcceptRiskRule(a *AcceptRiskRule) (*AcceptRiskRule, error)
func (*Client) CreateOrganization ¶
func (c *Client) CreateOrganization(org *Organization) (*Organization, error)
func (*Client) CreateRecastRiskRule ¶
func (c *Client) CreateRecastRiskRule(a *RecastRiskRule) (*RecastRiskRule, error)
func (*Client) CreateRepository ¶
func (c *Client) CreateRepository(r *Repository) (*Repository, error)
func (*Client) CreateScanPolicy ¶
func (c *Client) CreateScanPolicy(s *ScanPolicy) (*ScanPolicy, error)
func (*Client) CreateScanPolicyTemplate ¶
func (c *Client) CreateScanPolicyTemplate(s *ScanPolicyTemplate) (*ScanPolicyTemplate, error)
func (*Client) DeleteAcceptRiskRule ¶
func (*Client) DeleteAgentScan ¶
func (*Client) DeleteAsset ¶
func (*Client) DeleteAuditFile ¶
func (*Client) DeleteCredential ¶
func (*Client) DeleteFile ¶
func (*Client) DeleteOrganization ¶
func (*Client) DeleteRecastRiskRule ¶
func (*Client) DeleteRepository ¶
func (*Client) DeleteRole ¶
func (*Client) DeleteScan ¶
func (*Client) DeleteScanPolicy ¶
func (*Client) DeleteScanPolicyTemplate ¶
func (*Client) DeleteScanResult ¶
func (*Client) DeleteScanZone ¶
func (*Client) GetAcceptRiskRule ¶
func (c *Client) GetAcceptRiskRule(id string) (*AcceptRiskRule, error)
func (*Client) GetAgentGroupsForScanner ¶
func (c *Client) GetAgentGroupsForScanner(id string) ([]*AgentGroup, error)
func (*Client) GetAllAcceptRiskRules ¶
func (c *Client) GetAllAcceptRiskRules() ([]*AcceptRiskRule, error)
func (*Client) GetAllAgentScans ¶
func (*Client) GetAllAssets ¶
func (*Client) GetAllCredentials ¶
func (c *Client) GetAllCredentials() ([]*Credential, error)
func (*Client) GetAllFeeds ¶
func (*Client) GetAllJobs ¶
func (*Client) GetAllOrganizations ¶
func (c *Client) GetAllOrganizations() ([]*Organization, error)
func (*Client) GetAllRecastRiskRules ¶
func (c *Client) GetAllRecastRiskRules() ([]*RecastRiskRule, error)
func (*Client) GetAllReportDefinitions ¶
func (c *Client) GetAllReportDefinitions() ([]*ReportDefinitionBase, error)
func (*Client) GetAllReports ¶
func (*Client) GetAllRepositories ¶
func (c *Client) GetAllRepositories() ([]*Repository, error)
func (*Client) GetAllRoles ¶
func (*Client) GetAllScanPolicies ¶
func (c *Client) GetAllScanPolicies() ([]*ScanPolicy, error)
func (*Client) GetAllScanPolicyTemplates ¶
func (c *Client) GetAllScanPolicyTemplates() ([]*ScanPolicyTemplate, error)
func (*Client) GetAllScanResults ¶
func (c *Client) GetAllScanResults() ([]*ScanResult, error)
func (*Client) GetAllScanResultsByTime ¶
func (c *Client) GetAllScanResultsByTime(start, end time.Time) ([]*ScanResult, error)
func (*Client) GetAllScanZones ¶
func (*Client) GetAllScanners ¶
func (*Client) GetAllScans ¶
func (*Client) GetCredential ¶
func (c *Client) GetCredential(id string) (*Credential, error)
func (*Client) GetCurrentUser ¶
func (c *Client) GetCurrentUser() (*CurrentUser, error)
func (*Client) GetOrganization ¶
func (c *Client) GetOrganization(id string) (*Organization, error)
func (*Client) GetRecastRiskRule ¶
func (c *Client) GetRecastRiskRule(id string) (*RecastRiskRule, error)
func (*Client) GetRepository ¶
func (c *Client) GetRepository(id string) (*Repository, error)
func (*Client) GetScanPolicy ¶
func (c *Client) GetScanPolicy(id string) (*ScanPolicy, error)
func (*Client) GetScanPolicyTemplate ¶
func (c *Client) GetScanPolicyTemplate(id string) (*ScanPolicyTemplate, error)
func (*Client) GetScanResult ¶
func (c *Client) GetScanResult(id string) (*ScanResult, error)
func (*Client) ImportScanResult ¶
func (c *Client) ImportScanResult(resultImport *ScanResultImport) error
func (*Client) ImportScanResultFile ¶
func (c *Client) ImportScanResultFile(path string, repositoryID string, classifyMitigatedAge string, dhcpTracking, scanningVirtualHosts bool) error
ImportScanResultFile composes the UploadFile and ImportScanResult calls necessary to import a scan result to a target repository.
Path is expected to be a path on the local filesystem.
func (*Client) RestyClient ¶
func (c *Client) RestyClient() *resty.Client
RestyClient returns a pointer to the underlying resty.Client instance. This enables access to all the features and options provided by the resty library.
func (*Client) SetBasicAuth ¶
SetBasicAuth adds the deprecated username/password auth to queries with the client.
func (*Client) SetUserAgent ¶
SetUserAgent applies a UserAgent header; if this is not supplied DefaultUserAgent is used.
func (*Client) StopScanResult ¶
StopScanResult Stops the Scan Result associated with {id}. NOTE: This endpoint is not applicable for Agent Sync Results. ref: https://docs.tenable.com/tenablesc/api/Scan-Result.htm#ScanResultRESTReference-/scanResult/{id}/stop
func (*Client) UpdateFeed ¶
func (*Client) UpdateOrganization ¶
func (c *Client) UpdateOrganization(org *Organization) (*Organization, error)
func (*Client) UpdateRepository ¶
func (c *Client) UpdateRepository(repo *Repository) (*Repository, error)
func (*Client) UpdateSSHCertificateCredential ¶
func (c *Client) UpdateSSHCertificateCredential(publicKey, privateKey string, sshCertCred SSHCertificateCredentialUpload) (*Credential, error)
UpdateSSHCertificateCredential does the following: 1. takes a public key and private key as strings and uploads those to tenable.sc 2. for both private and public keys it stores the file name in PublicKey and PrivateKey in SSHCertificateCredentialUpload 3. patches the cred to tenable.sc and return the object
func (*Client) UpdateScanPolicy ¶
func (c *Client) UpdateScanPolicy(s *ScanPolicy) (*ScanPolicy, error)
func (*Client) UpdateScanners ¶
func (c *Client) UpdateScanners() (*UpdateScannersStatus, error)
func (*Client) UploadFileFromReader ¶
type Credential ¶
type Credential struct { BaseInfo Type string `json:"type"` CanUse FakeBool `json:"canUse,omitempty"` CanManage FakeBool `json:"canManage,omitempty"` Tags string `json:"tags,omitempty"` }
Credential is massively pared back from the possible types in https://docs.tenable.com/tenablesc/api/Credential.htm This is not wired to directly manage credentials, only to find and delete them.
type CurrentUser ¶
type CurrentUser struct { BaseInfo Status string `json:"status,omitempty"` Username string `json:"username,omitempty"` AuthType string `json:"authType,omitempty"` OrgName string `json:"orgName,omitempty"` Organization BaseInfo `json:"organization,omitempty"` Role BaseInfo `json:"role,omitempty"` Group BaseInfo `json:"group,omitempty"` }
CurrentUser represents response structure for https://docs.tenable.com/tenablesc/api/Current-User.htm
This is perfect for testing credential validity and user type.
type DBCredentialUpload ¶
type DBCredentialUpload struct { BaseInfo Tags string `json:"tags"` Type string `json:"type"` AuthType string `json:"authType"` Login string `json:"login"` Password string `json:"password"` SID string `json:"sid"` DBType string `json:"dbType"` Port string `json:"port"` }
DBCredentialUpload https://docs.tenable.com/tenablesc/api/Credential.htm#credential_POST
type FakeBool ¶
type FakeBool string
FakeBool helps us wrap the tenable API's stringy booleans so users don't have to think about them quite as much.
func ToFakeBool ¶
type Feed ¶
type Feed struct { UpdateTime ProbablyString Stale FakeBool UpdateRunning FakeBool }
type Feeds ¶
Feeds represents the output structure for https://docs.tenable.com/tenablesc/api/Feed.htm queries. The feed endpoint returns a map of Feed objects with the name as primary key.
type File ¶
type File struct { Filename string `json:"filename,omitempty"` OriginalFilename string `json:"originalFilename,omitempty"` Content string `json:"content,omitempty"` BenchmarkName string `json:"benchmarkName,omitempty"` ProfileName string `json:"profileName,omitempty"` Version string `json:"version,omitempty"` Type string `json:"type,omitempty"` }
File represents the response structure for https://docs.tenable.com/tenablesc/api/File.htm
type Job ¶
type Job struct { BaseInfo AttemptNumber ProbablyString `json:"attemptNumber,omitempty"` DependentJobID ProbablyString `json:"dependentJobID,omitempty"` ErrorCode ProbablyString `json:"errorCode,omitempty"` ImmediateJob FakeBool `json:"immediateJob,omitempty"` Initiator UserInfo `json:"initiator,omitempty"` ObjectID ProbablyString `json:"objectID,omitempty"` Organization BaseInfo `json:"organization,omitempty"` Params string `json:"params,omitempty"` Pid ProbablyString `json:"pid,omitempty"` Priority ProbablyString `json:"priority,omitempty"` StartTime ProbablyString `json:"startTime,omitempty"` Status string `json:"status,omitempty"` TargetedTime ProbablyString `json:"targetedTime,omitempty"` Type string `json:"type,omitempty"` }
Job represents the response structure for https://docs.tenable.com/tenablesc/api/Job.htm
type NessusSchedule ¶
type NotFoundError ¶
type NotFoundError HTTPError
type Organization ¶
type Organization struct { BaseInfo Email string `json:"email,omitempty"` Address string `json:"address,omitempty"` City string `json:"city,omitempty"` State string `json:"state,omitempty"` Phone string `json:"phone,omitempty"` Fax string `json:"fax,omitempty"` ZoneSelection string `json:"zoneSelection,omitempty"` RestrictedIPs string `json:"restrictedIPs,omitempty"` VulnScoreLow string `json:"vulnScoreLow,omitempty"` VulnScoreMedium string `json:"vulnScoreMedium,omitempty"` VulnScoreHigh string `json:"vulnScoreHigh,omitempty"` VulnScoringSystem string `json:"vulnScoringSystem,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` UserCount string `json:"userCount,omitempty"` Repositories []OrganizationRepository `json:"repositories,omitempty"` Zones []BaseInfo `json:"zones,omitempty"` }
Organization represents the request and response structure for https://docs.tenable.com/tenablesc/api/Organization.htm
type OrganizationRepository ¶
type OrganizationRepository struct { RepoBaseFields GroupAssign string `json:"groupAssign,omitempty"` }
type Plugin ¶
type Plugin struct { BaseInfo Family Family `json:"family,omitempty"` CVSSV3BaseScore string `json:"cvssV3BaseScore,omitempty"` CVSSV3TemporalScore string `json:"cvssV3TemporalScore,omitempty"` PluginPubDate ProbablyString `json:"pluginPubDate,omitempty"` PluginModDate ProbablyString `json:"pluginModDate,omitempty"` PatchPubDate ProbablyString `json:"patchPubDate,omitempty"` PatchModDate ProbablyString `json:"patchModDate,omitempty"` VulnPubDate ProbablyString `json:"vulnPubDate,omitempty"` ModifiedTime ProbablyString `json:"modifiedTime,omitempty"` CheckType string `json:"checkType,omitempty"` }
Plugin represents the response structure for https://docs.tenable.com/tenablesc/api/Plugin.htm
type ProbablyString ¶
type ProbablyString string
ProbablyString is used for most ID fields in the API;
the SC API generally returns positive IDs as strings, but -1 and sometimes 0 are returned numerically. Since the API _accepts_ strings in those locations always, we only need to handle the output from calls.
func (*ProbablyString) UnmarshalJSON ¶
func (p *ProbablyString) UnmarshalJSON(data []byte) error
type RecastRiskRule ¶
type RecastRiskRule struct { RecastRiskRuleBaseFields NewSeverity string `json:"newSeverity,omitempty"` Repository BaseInfo HostValue string }
RecastRiskRule represents the Risk Rule structure in https://docs.tenable.com/tenablesc/api/Recast-Risk-Rule.htm
type RecastRiskRuleBaseFields ¶
type RecastRiskRuleBaseFields struct { ID string `json:"id,omitempty"` Organization BaseInfo `json:"organization,omitempty"` User UserInfo `json:"user,omitempty"` Plugin BaseInfo `json:"plugin,omitempty"` // HostType may be 'all', 'asset', 'ip', or 'uuid' HostType string `json:"hostType,omitempty"` Port string `json:"port,omitempty"` Protocol string `json:"protocol,omitempty"` Order string `json:"order,omitempty"` Comments string `json:"comments,omitempty"` Expires string `json:"expires,omitempty"` Status string `json:"status,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` }
RecastRiskRuleBaseFields are the fields renderable directly both to and from the API.
Requests take a list of repositories while all responses only ever return a single repository. HostValue response structure also varies depending on type; the client masks out this conversion to and from the API structures.
type RepoBaseFields ¶
type RepoBaseFields struct { BaseInfo DataFormat string `json:"dataFormat,omitempty"` Type string `json:"type,omitempty"` DownloadFormat string `json:"downloadFormat,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` Running FakeBool `json:"running,omitempty"` Organizations []RepoOrganization `json:"organizations,omitempty"` }
RepoBaseFields includes the Repository fields common to responses from this endpoint and others.
type RepoFieldsCommon ¶
type RepoFieldsCommon struct { ActiveVulnsLifetime string `json:"activeVulnsLifetime,omitempty"` ComplianceVulnsLifetime string `json:"complianceVulnsLifetime,omitempty"` MitigatedVulnsLifetime string `json:"mitigatedVulnsLifetime,omitempty"` TrendingDays string `json:"trendingDays,omitempty"` TrendWithRaw FakeBool `json:"trendWithRaw,omitempty"` }
RepoFieldsCommon includes the fields common to requests and responses in this endpoint for all repository types.
type RepoIPFields ¶
type RepoIPFields struct { IPRange string `json:"ipRange,omitempty"` IPCount string `json:"ipCount,omitempty"` PassiveVulnsLifetime string `json:"passiveVulnsLifetime,omitempty"` LCEVulnsLifetime string `json:"lveVulnsLifetime,omitempty"` LastGenerateNessusTime UnixEpochStringTime `json:"lastGenerateNessusTime,omitempty"` NessusSchedule *NessusSchedule `json:"nessusSchedule,omitempty"` }
RepoIPFields includes the fields only available in IPv4/6 repositories and not Agent-based repositories.
type RepoOrganization ¶
type Report ¶
type Report struct { BaseInfo ReportDefinitionID string `json:"reportDefinitionID"` JobID string `json:"jobID"` Type string `json:"type"` Status string `json:"status"` Running string `json:"running"` ErrorDetails string `json:"errorDetails"` TotalSteps string `json:"totalSteps"` CompletedSteps string `json:"completedSteps"` StartTime UnixEpochStringTime `json:"startTime"` FinishTime UnixEpochStringTime `json:"finishTime"` OwnerGID string `json:"ownerGID"` PubSites []BaseInfo `json:"pubSites"` Creator UserInfo `json:"creator"` Owner UserInfo `json:"owner"` OwnerGroup BaseInfo `json:"ownerGroup"` }
Report represents request/response structure from https://docs.tenable.com/tenablesc/api/Report.htm
type ReportDefinitionBase ¶
type ReportDefinitionBase struct {
BaseInfo
}
ReportDefinitionBase represents the base request/response structure from https://docs.tenable.com/tenablesc/api/Report-Definition.htm
type Repository ¶
type Repository struct { RepoBaseFields RepoFieldsCommon RepoIPFields }
Repository represents the fields for https://docs.tenable.com/tenablesc/api/Repository.htm Each repository type has a significantly different structure that is rendered as needed.
type Role ¶
type Role struct { BaseInfo PermManageGroups FakeBool `json:"permManageGroups,omitempty"` PermManageRoles FakeBool `json:"permManageRoles,omitempty"` PermManageImages FakeBool `json:"permManageImages,omitempty"` PermManageGroupRelationships FakeBool `json:"permManageGroupRelationships,omitempty"` PermManageBlackoutWindows FakeBool `json:"permManageBlackoutWindows,omitempty"` PermManageAttributeSets FakeBool `json:"permManageAttributeSets,omitempty"` PermCreateTickets FakeBool `json:"permCreateTickets,omitempty"` PermCreateAlerts FakeBool `json:"permCreateAlerts,omitempty"` PermCreateAuditFiles FakeBool `json:"permCreateAuditFiles,omitempty"` PermCreateLDAPAssets FakeBool `json:"permCreateLDAPAssets,omitempty"` PermCreatePolicies FakeBool `json:"permCreatePolicies,omitempty"` PermPurgeTickets FakeBool `json:"permPurgeTickets,omitempty"` PermPurgeScanResults FakeBool `json:"permPurgeScanResults,omitempty"` PermPurgeReportResults FakeBool `json:"permPurgeReportResults,omitempty"` PermAgentsScan FakeBool `json:"permAgentsScan,omitempty"` PermUpdateFeeds FakeBool `json:"permUpdateFeeds,omitempty"` PermUploadNessusResults FakeBool `json:"permUploadNessusResults,omitempty"` PermViewOrgLogs FakeBool `json:"permViewOrgLogs,omitempty"` PermManageAcceptRiskRules FakeBool `json:"permManageAcceptRiskRules,omitempty"` PermManageRecastRiskRules FakeBool `json:"permManageRecastRiskRules,omitempty"` // PermScan is treated as bool here, but it expects the API value to be 'full' (true) or 'none' (false). // This quirk is marshelled/unmarshalled correctly internally. PermScan FakeBool `json:"permScan,omitempty"` }
Role represents request/response structure for https://docs.tenable.com/tenablesc/api/Role.htm
type SCResponse ¶
type SSHCertificateCredentialUpload ¶
type SSHCertificateCredentialUpload struct { BaseInfo Tags string `json:"tags"` Type string `json:"type"` Username string `json:"username"` AuthType string `json:"authType"` PublicKey string `json:"publicKey"` PrivateKey string `json:"privateKey"` PrivilegeEscalation string `json:"privilegeEscalation"` }
SSHCertificateCredentialUpload https://docs.tenable.com/tenablesc/api/Credential.htm#credential_POST
type Scan ¶
type Scan struct { BaseInfo Assets []BaseInfo `json:"assets,omitempty"` ClassifyMitigatedAge string `json:"classifyMitigatedAge,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` Creator *UserInfo `json:"creator,omitempty"` Credentials []BaseInfo `json:"credentials,omitempty"` DHCPTracking FakeBool `json:"dhcpTracking,omitempty"` EmailOnFinish FakeBool `json:"emailOnFinish,omitempty"` EmailOnLaunch FakeBool `json:"emailOnLaunch,omitempty"` InactivityTimeout string `json:"inactivityTimeout,omitempty"` IPList string `json:"ipList,omitempty"` MaxScanTime string `json:"maxScanTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` NumDependents ProbablyString `json:"numDependents,omitempty"` Owner *UserInfo `json:"owner,omitempty"` OwnerGroup *BaseInfo `json:"ownerGroup,omitempty"` Plugin *struct { ID ProbablyString `json:"id,omitempty"` } `json:"plugin,omitempty"` PluginID ProbablyString `json:"pluginID,omitempty"` PluginPrefs []string `json:"pluginPrefs,omitempty"` Policy *BaseInfo `json:"policy,omitempty"` Repository *BaseInfo `json:"repository,omitempty"` Reports []ScanReports `json:"reports,omitempty"` RolloverType string `json:"rolloverType,omitempty"` Schedule *ScanSchedule `json:"schedule,omitempty"` ScanningVirtualHosts FakeBool `json:"scanningVirtualHosts,omitempty"` Status string `json:"status,omitempty"` TimeoutAction string `json:"timeoutAction,omitempty"` Type string `json:"type,omitempty"` Zone *BaseInfo `json:"zone,omitempty"` }
Scan represents the request/response structure for https://docs.tenable.com/tenablesc/api/Scan.htm
type ScanDependentSchedule ¶
type ScanPolicy ¶
type ScanPolicy struct { BaseInfo // to update a scan, you must pass an empty context. do not omitempty. Context string `json:"context"` Tags string `json:"tags,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` AuditFiles []BaseInfo `json:"auditFiles,omitempty"` // Somtimes a map and sometimes an array :( Preferences interface{} `json:"preferences,omitempty"` RemovePrefs []string `json:"removePrefs,omitempty"` PolicyTemplate *BaseInfo `json:"policyTemplate,omitempty"` Owner *UserInfo `json:"owner,omitempty"` Creator *UserInfo `json:"creator,omitempty"` Families []ScanPolicyFamilies `json:"families,omitempty"` }
ScanPolicy represents request/response structure from https://docs.tenable.com/tenablesc/api/Scan-Policy.htm
type ScanPolicyFamilies ¶
type ScanPolicyTemplate ¶
type ScanPolicyTemplate struct { BaseInfo Editor string `json:"editor,omitempty"` // DetailedEditor is input-only for unclear reasons. DetailedEditor string `json:"detailedEditor,omitempty"` CreatedTime UnixEpochStringTime `json:"createdTime,omitempty"` ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"` TemplatePubTime UnixEpochStringTime `json:"templatePubTime,omitempty"` TemplateModTime UnixEpochStringTime `json:"templateModTime,omitempty"` TemplateDefModTime UnixEpochStringTime `json:"templateDefModTime,omitempty"` }
ScanPolicyTemplate represents the request/response structure from https://docs.tenable.com/tenablesc/api/Scan-Policy-Templates.htm
type ScanReports ¶
type ScanResult ¶
type ScanResult struct { BaseInfo Status string `json:"status,omitempty"` Initiator UserInfo `json:"initiator,omitempty"` Owner UserInfo `json:"owner,omitempty"` OwnerGroup BaseInfo `json:"ownerGroup,omitempty"` Repository BaseInfo `json:"repository,omitempty"` Scan BaseInfo `json:"scan,omitempty"` ImportStatus string `json:"importStatus,omitempty"` ImportStart ProbablyString `json:"importStart,omitempty"` ImportFinish ProbablyString `json:"importFinish,omitempty"` ImportDuration ProbablyString `json:"importDuration,omitempty"` DownloadFormat string `json:"downloadFormat,omitempty"` DataFormat string `json:"dataFormat,omitempty"` ResultType string `json:"resultType,omitempty"` ResultSource string `json:"resultSource,omitempty"` ErrorDetails string `json:"errorDetails,omitempty"` ImportErrorDetails string `json:"importErrorDetails,omitempty"` TotalIPs ProbablyString `json:"totalIPs,omitempty"` ScannedIPs ProbablyString `json:"scannedIPs,omitempty"` StartTime ProbablyString `json:"startTime,omitempty"` FinishTime ProbablyString `json:"finishTime,omitempty"` ScanDuration ProbablyString `json:"scanDuration,omitempty"` CompletedIPs ProbablyString `json:"completedIPs,omitempty"` CompletedChecks ProbablyString `json:"completedChecks,omitempty"` TotalChecks ProbablyString `json:"totalChecks,omitempty"` AgentScanUUID string `json:"agentScanUUID,omitempty"` AgentScanContainerUUID string `json:"agentScanContainerUUID,omitempty"` Job BaseInfo `json:"job,omitempty"` Details string `json:"details,omitempty"` }
ScanResult represents the request/response structure from https://docs.tenable.com/tenablesc/api/Scan-Result.htm
type ScanResultImport ¶
type ScanResultImport struct { Filename string `json:"filename,omitempty"` Repository BaseInfo `json:"repository,omitempty"` ClassifyMitigatedAge string `json:"classifyMitigatedAge,omitempty"` DHCPTracking FakeBool `json:"dhcpTracking,omitempty"` ScanningVirtualHosts FakeBool `json:"scanningVirtualHosts,omitempty"` RolloverType string `json:"rolloverType,omitempty"` TimeoutAction string `json:"timeoutAction,omitempty"` }
ScanResultImport represents the request/response structure from the import endpoint of https://docs.tenable.com/tenablesc/api/Scan-Result.htm
type ScanSchedule ¶
type ScanSchedule struct { ID ProbablyString `json:"id,omitempty"` DependentID string `json:"dependentID,omitempty"` Type string `json:"type,omitempty"` Start string `json:"start,omitempty"` RepeatRule string `json:"repeatRule,omitempty"` Enabled FakeBool `json:"enabled,omitempty"` ObjectType ProbablyString `json:"objectType,omitempty"` NextRun int `json:"nextRun,omitempty"` Dependent *ScanDependentSchedule `json:"dependent,omitempty"` }
type ScanStartResult ¶
type ScanStartResult struct { ScanID string `json:"scanID"` ScanResult struct { BaseInfo InitiatorID int `json:"initiatorID"` OwnerID string `json:"ownerID"` ScanID string `json:"scanID"` ResultsSyncID int `json:"resultsSyncID"` JobID string `json:"jobID"` RepositoryID string `json:"repositoryID"` Details string `json:"details"` Status string `json:"status"` DownloadFormat string `json:"downloadFormat"` DataFormat string `json:"dataFormat"` ResultType string `json:"resultType"` } `json:"scanResult"` }
type ScanZone ¶
type ScanZone struct { ScanZoneBaseFields // IPList is composed internally as a comma-separated list; we split and join for your convenience. IPList []string `json:"ipList,omitempty"` }
ScanZone represents the request/response fields for https://docs.tenable.com/tenablesc/api/Scan-Zone.htm
type ScanZoneBaseFields ¶
type ScanZoneBaseFields struct { BaseInfo CreatedTime string `json:"createdTime,omitempty"` ModifiedTime string `json:"modifiedTime,omitempty"` Organizations []BaseInfo `json:"organizations,omitempty"` Scanners []ScanZoneScanner `json:"scanners,omitempty"` }
type ScanZoneScanner ¶
type UnixEpochStringTime ¶
type UnixEpochStringTime string
UnixEpochStringTime would ideally be time.Time, but partial-unmarshalling
every single place we use a timestamp to do that conversion would be somewhat excruciating. So this is the compromise.
func (UnixEpochStringTime) ToDateTime ¶
func (s UnixEpochStringTime) ToDateTime() (time.Time, error)
type UpdateScannersStatus ¶
type UserInfo ¶
type UserInfo struct { ID ProbablyString `json:"id,omitempty"` UUID string `json:"uuid,omitempty"` Username string `json:"username,omitempty"` Firstname string `json:"firstname,omitempty"` Lastname string `json:"lastname,omitempty"` }
UserInfo is used inb the API to refer to users.
For input, only the ID is needed; responses will include remaining fields.
type VulnDetailsResult ¶
type VulnDetailsResult struct { AcceptRisk string `json:"acceptRisk"` BaseScore string `json:"baseScore"` BID string `json:"bid"` CheckType string `json:"checkType"` CPE string `json:"cpe"` CVE string `json:"cve"` CVSSV3BaseScore string `json:"cvssV3BaseScore"` CVSSV3TemporalScore string `json:"cvssV3TemporalScore"` CVSSV3Vector string `json:"cvssV3Vector"` CVSSVector string `json:"cvssVector"` Description string `json:"description"` DNSName string `json:"dnsName"` ExploitAvailable string `json:"exploitAvailable"` ExploitEase string `json:"exploitEase"` ExploitFrameworks string `json:"exploitFrameworks"` Family VulnFamily `json:"family"` FirstSeen string `json:"firstSeen"` HasBeenMitigated string `json:"hasBeenMitigated"` HostUniqueness string `json:"hostUniqueness"` IP string `json:"ip"` IPS string `json:"ips"` LastSeen string `json:"lastSeen"` MacAddress string `json:"macAddress"` NetbiosName string `json:"netbiosName"` PatchPubDate string `json:"patchPubDate"` PluginID string `json:"pluginID"` PluginInfo string `json:"pluginInfo"` PluginModDate string `json:"pluginModDate"` PluginName string `json:"pluginName"` PluginPubDate string `json:"pluginPubDate"` PluginText string `json:"pluginText"` Port string `json:"port"` Protocol string `json:"protocol"` RecastRisk string `json:"recastRisk"` Repository VulnRepository `json:"repository"` RiskFactor string `json:"riskFactor"` SeeAlso string `json:"seeAlso"` Severity BaseInfo `json:"severity"` Solution string `json:"solution"` StigSeverity string `json:"stigSeverity"` Synopsis string `json:"synopsis"` TemporalScore string `json:"temporalScore"` UUID string `json:"uuid"` Version string `json:"version"` VPRContext string `json:"vprContext"` VPRScore string `json:"vprScore"` VulnPubDate string `json:"vulnPubDate"` XREF string `json:"xref"` }
VulnDetailsResult contains the structure used by the 'vulndetails' analysis tool
type VulnFamily ¶
type VulnFamily struct { ID string `json:"id"` Name string `json:"name"` Type string `json:"type"` }
VulnFamily information for a vulnerability
type VulnHosts ¶
type VulnHosts struct { IPList string `json:"iplist"` Repository Repository `json:"repository"` UUIDIPsList string `json:"uuidIPsList"` }
VulnHosts lists the hosts affected by the vulnerability
type VulnIPSummaryResult ¶
type VulnIPSummaryResult struct { Name string `json:"name"` Family VulnFamily `json:"family"` Hosts VulnHosts `json:"hosts"` PluginDescription string `json:"pluginDescription"` PluginID string `json:"pluginID"` RepositoryID string `json:"repositoryID"` Severity BaseInfo `json:"severity"` Total string `json:"total"` }
VulnIPSummaryResult contains the structure used by the 'vulnipsummary' analysis tool
type VulnRepository ¶
type VulnRepository struct { DataFormat string `json:"dataFormat"` Description string `json:"description"` ID string `json:"id"` Name string `json:"name"` }
VulnRepository includes information about the respository that the vulnerability came from
type VulnSumDNSNameResult ¶
type VulnSumDNSNameResult struct { DNSName string `json:"dnsName"` Repository VulnRepository `json:"repository"` Score string `json:"score"` SeverityCritical string `json:"severityCritical"` SeverityHigh string `json:"severityHigh"` SeverityInfo string `json:"severityInfo"` SeverityMedium string `json:"severityMedium"` SeverityLow string `json:"severityLow"` Total string `json:"total"` }
VulnSumDNSNameResult contains the structure used by the 'sumdnsname' analysis tool
type VulnSumIPResult ¶
type VulnSumIPResult struct { BiosGUID string `json:"biosGUID"` DNSName string `json:"dnsName"` IP string `json:"ip"` LastAuthRun string `json:"lastAuthRun"` LastUnauthRun string `json:"lastUnauthRun"` MacAddress string `json:"macAddress"` McafeeGUID string `json:"mcafeeGUID"` NetBiosName string `json:"netbiosName"` OSCPE string `json:"osCPE"` PluginSet string `json:"pluginSet"` PolicyName string `json:"policyName"` Repository VulnRepository `json:"repository"` Score string `json:"score"` SeverityCritical string `json:"severityCritical"` SeverityHigh string `json:"severityHigh"` SeverityInfo string `json:"severityInfo"` SeverityMedium string `json:"severityMedium"` SeverityLow string `json:"severityLow"` Total string `json:"total"` TPMID string `json:"tpmID"` Uniqueness string `json:"uniqueness"` UUID string `json:"uuid"` }
VulnSumIPResult contains the structure used by the 'sumip' analysis tool.
Source Files ¶
- acceptriskrule.go
- agentscan.go
- analysis.go
- asset.go
- audit_file.go
- base.go
- client.go
- credential.go
- currentuser.go
- errors.go
- feed.go
- file.go
- job.go
- organization.go
- plugin.go
- recastriskrule.go
- report.go
- report_definition.go
- repository.go
- role.go
- scan.go
- scanner.go
- scanpolicy.go
- scanpolicytemplate.go
- scanresult.go
- scanresultimport.go
- scanzone.go