use super::*;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct CodeScanningAlert {
pub number: u64,
pub created_at: chrono::DateTime<chrono::Utc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
pub url: Url,
pub html_url: Url,
pub state: CodeScanningState,
#[serde(skip_serializing_if = "Option::is_none")]
pub fixed_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dismissed_by: Option<SimpleUser>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dismissed_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dismissed_reason: Option<DismissedReason>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dismissed_comment: Option<String>,
pub rule: Rule,
pub tool: Tool,
pub most_recent_instance: MostRecentInstance,
pub instances_url: Url,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub repository: Option<Repository>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dismissal_approved_by: Option<SimpleUser>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assignees: Option<Vec<SimpleUser>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "snake_case")]
pub enum CodeScanningState {
Open,
Dismissed,
Fixed,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "snake_case")]
pub enum DismissedReason {
#[serde(rename = "false positive")]
FalsePositive,
#[serde(rename = "won't fix")]
WonTFix,
#[serde(rename = "used in tests")]
UsedInTests,
#[serde(rename = "mitigated")]
Mitigated,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "snake_case")]
pub enum Severity {
None,
Note,
Warning,
Error,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "snake_case")]
pub enum SecuritySeverityLevel {
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Rule {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub severity: Option<Severity>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub full_description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub security_severity_level: Option<SecuritySeverityLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub help: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub help_uri: Option<Url>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Tool {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub guid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "snake_case")]
pub enum Classifications {
Source,
Generated,
Test,
Library,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct MostRecentInstance {
#[serde(rename = "ref")]
pub ref_field: String,
pub analysis_key: String,
pub environment: String,
pub category: String,
pub state: Option<CodeScanningState>,
pub commit_sha: String,
pub message: Message,
pub location: Location,
pub classifications: Vec<Classifications>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Environment {
#[serde(rename = "build-mode", skip_serializing_if = "Option::is_none")]
pub build_mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runner: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Message {
pub text: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Location {
pub path: String,
pub start_line: i64,
pub end_line: i64,
pub start_column: i64,
pub end_column: i64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AlertInstance {
#[serde(rename = "ref")]
pub ref_field: String,
pub analysis_key: String,
pub environment: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<CodeScanningState>,
pub commit_sha: String,
pub message: Message,
pub location: Location,
#[serde(skip_serializing_if = "Option::is_none")]
pub html_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub classifications: Option<Vec<Classifications>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Analysis {
#[serde(rename = "ref")]
pub ref_field: String,
pub commit_sha: String,
pub analysis_key: String,
pub environment: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
pub error: String,
pub created_at: chrono::DateTime<chrono::Utc>,
pub results_count: u64,
pub rules_count: u64,
pub id: u64,
pub url: Url,
pub sarif_id: String,
pub tool: Tool,
pub deletable: bool,
pub warning: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct DeleteAnalysisResponse {
pub next_analysis_url: Option<Url>,
pub confirm_delete_url: Option<Url>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct CodeqlDatabase {
pub id: u64,
pub name: String,
pub language: String,
pub uploader: SimpleUser,
pub content_type: String,
pub size: u64,
pub created_at: chrono::DateTime<chrono::Utc>,
pub updated_at: chrono::DateTime<chrono::Utc>,
pub url: Url,
#[serde(skip_serializing_if = "Option::is_none")]
pub commit_oid: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct DefaultSetup {
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub languages: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runner_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runner_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query_suite: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub threat_model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub schedule: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateDefaultSetup {
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runner_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runner_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query_suite: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub threat_model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub languages: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct UpdateDefaultSetupResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub run_id: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub run_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UploadSarif {
pub commit_sha: String,
#[serde(rename = "ref")]
pub ref_field: String,
pub sarif: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub checkout_uri: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub started_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub validate: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct SarifReceipt {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<Url>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct SarifAnalysis {
pub processing_status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub analyses_url: Option<Url>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AiScanSetting {
pub pr_scan: String,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct UpdateAiScan {
#[serde(skip_serializing_if = "Option::is_none")]
pub pr_scan: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Autofix {
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub started_at: Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CommitAutofix {
#[serde(skip_serializing_if = "Option::is_none")]
pub target_ref: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AutofixCommitResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub target_ref: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sha: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CreateVariantAnalysis {
pub language: String,
pub query_pack: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub repositories: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub repository_lists: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub repository_owners: Option<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct VariantAnalysisRepository {
pub id: RepositoryId,
pub name: String,
pub full_name: String,
pub private: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct VariantAnalysisScannedRepo {
pub repository: VariantAnalysisRepository,
pub analysis_status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub result_count: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub artifact_size_in_bytes: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_message: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct VariantAnalysisSkippedRepoGroup {
pub repository_count: u64,
pub repositories: Vec<VariantAnalysisRepository>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct VariantAnalysisNotFoundRepoGroup {
pub repository_count: u64,
pub repository_full_names: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct VariantAnalysisSkippedRepositories {
pub access_mismatch_repos: VariantAnalysisSkippedRepoGroup,
pub not_found_repos: VariantAnalysisNotFoundRepoGroup,
pub no_codeql_db_repos: VariantAnalysisSkippedRepoGroup,
pub over_limit_repos: VariantAnalysisSkippedRepoGroup,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct VariantAnalysis {
pub id: u64,
pub controller_repo: Repository,
pub actor: SimpleUser,
pub query_language: String,
pub query_pack_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option<chrono::DateTime<chrono::Utc>>,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub actions_workflow_run_id: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scanned_repositories: Option<Vec<VariantAnalysisScannedRepo>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub skipped_repositories: Option<VariantAnalysisSkippedRepositories>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct VariantAnalysisRepoTask {
pub repository: Repository,
pub analysis_status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub artifact_size_in_bytes: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub result_count: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub database_commit_sha: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source_location_prefix: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub artifact_url: Option<String>,
}