octocrab 0.53.0

A modern, extensible GitHub API client.
Documentation
use super::super::*;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SbomGenerateReportResponse {
    pub sbom_url: Url,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct SbomCreationInfo {
    pub created: DateTime<Utc>,
    pub creators: Vec<String>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct SbomPackageExternalRef {
    #[serde(rename = "referenceCategory")]
    pub reference_category: String,
    #[serde(rename = "referenceLocator")]
    pub reference_locator: String,
    #[serde(rename = "referenceType")]
    pub reference_type: String,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct SbomPackage {
    #[serde(rename = "SPDXID")]
    pub spdxid: String,
    pub name: String,
    #[serde(rename = "versionInfo")]
    pub version_info: String,
    #[serde(rename = "downloadLocation")]
    pub download_location: String,
    #[serde(rename = "filesAnalyzed")]
    pub files_analyzed: bool,
    #[serde(rename = "licenseConcluded", skip_serializing_if = "Option::is_none")]
    pub license_concluded: Option<String>,
    #[serde(rename = "licenseDeclared", skip_serializing_if = "Option::is_none")]
    pub license_declared: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub supplier: Option<String>,
    #[serde(rename = "copyrightText", skip_serializing_if = "Option::is_none")]
    pub copyright_text: Option<String>,
    #[serde(rename = "externalRefs", skip_serializing_if = "Option::is_none")]
    pub external_refs: Option<Vec<SbomPackageExternalRef>>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct SbomRelationship {
    #[serde(rename = "relationshipType")]
    pub relationship_type: String,
    #[serde(rename = "spdxElementId")]
    pub spdx_element_id: String,
    #[serde(rename = "relatedSpdxElement")]
    pub related_spdx_element: String,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct SbomDependencyGraph {
    #[serde(rename = "SPDXID")]
    pub spdxid: String,
    #[serde(rename = "spdxVersion")]
    pub spdx_version: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub comment: Option<String>,
    #[serde(rename = "creationInfo")]
    pub creation_info: SbomCreationInfo,
    pub name: String,
    #[serde(rename = "dataLicense")]
    pub data_license: String,
    #[serde(rename = "documentNamespace")]
    pub document_namespace: String,
    pub packages: Vec<SbomPackage>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub relationships: Option<Vec<SbomRelationship>>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum SbomFetchResponse {
    NotFound,
    NotReady,
    Ready { graph: Box<SbomDependencyGraph> },
    Broken,
}