1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Lipackage v2_3 4*ba677afaSXin Li 5*ba677afaSXin Liimport "github.com/spdx/tools-golang/spdx/common" 6*ba677afaSXin Li 7*ba677afaSXin Li// File is a File section of an SPDX Document for version 2.3 of the spec. 8*ba677afaSXin Litype File struct { 9*ba677afaSXin Li // 8.1: File Name 10*ba677afaSXin Li // Cardinality: mandatory, one 11*ba677afaSXin Li FileName string `json:"fileName"` 12*ba677afaSXin Li 13*ba677afaSXin Li // 8.2: File SPDX Identifier: "SPDXRef-[idstring]" 14*ba677afaSXin Li // Cardinality: mandatory, one 15*ba677afaSXin Li FileSPDXIdentifier common.ElementID `json:"SPDXID"` 16*ba677afaSXin Li 17*ba677afaSXin Li // 8.3: File Types 18*ba677afaSXin Li // Cardinality: optional, multiple 19*ba677afaSXin Li FileTypes []string `json:"fileTypes,omitempty"` 20*ba677afaSXin Li 21*ba677afaSXin Li // 8.4: File Checksum: may have keys for SHA1, SHA256, MD5, SHA3-256, SHA3-384, SHA3-512, BLAKE2b-256, BLAKE2b-384, BLAKE2b-512, BLAKE3, ADLER32 22*ba677afaSXin Li // Cardinality: mandatory, one SHA1, others may be optionally provided 23*ba677afaSXin Li Checksums []common.Checksum `json:"checksums"` 24*ba677afaSXin Li 25*ba677afaSXin Li // 8.5: Concluded License: SPDX License Expression, "NONE" or "NOASSERTION" 26*ba677afaSXin Li // Cardinality: optional, one 27*ba677afaSXin Li LicenseConcluded string `json:"licenseConcluded,omitempty"` 28*ba677afaSXin Li 29*ba677afaSXin Li // 8.6: License Information in File: SPDX License Expression, "NONE" or "NOASSERTION" 30*ba677afaSXin Li // Cardinality: optional, one or many 31*ba677afaSXin Li LicenseInfoInFiles []string `json:"licenseInfoInFiles,omitempty"` 32*ba677afaSXin Li 33*ba677afaSXin Li // 8.7: Comments on License 34*ba677afaSXin Li // Cardinality: optional, one 35*ba677afaSXin Li LicenseComments string `json:"licenseComments,omitempty"` 36*ba677afaSXin Li 37*ba677afaSXin Li // 8.8: Copyright Text: copyright notice(s) text, "NONE" or "NOASSERTION" 38*ba677afaSXin Li // Cardinality: mandatory, one 39*ba677afaSXin Li FileCopyrightText string `json:"copyrightText"` 40*ba677afaSXin Li 41*ba677afaSXin Li // DEPRECATED in version 2.1 of spec 42*ba677afaSXin Li // 8.9-8.11: Artifact of Project variables (defined below) 43*ba677afaSXin Li // Cardinality: optional, one or many 44*ba677afaSXin Li ArtifactOfProjects []*ArtifactOfProject `json:"artifactOfs,omitempty"` 45*ba677afaSXin Li 46*ba677afaSXin Li // 8.12: File Comment 47*ba677afaSXin Li // Cardinality: optional, one 48*ba677afaSXin Li FileComment string `json:"comment,omitempty"` 49*ba677afaSXin Li 50*ba677afaSXin Li // 8.13: File Notice 51*ba677afaSXin Li // Cardinality: optional, one 52*ba677afaSXin Li FileNotice string `json:"noticeText,omitempty"` 53*ba677afaSXin Li 54*ba677afaSXin Li // 8.14: File Contributor 55*ba677afaSXin Li // Cardinality: optional, one or many 56*ba677afaSXin Li FileContributors []string `json:"fileContributors,omitempty"` 57*ba677afaSXin Li 58*ba677afaSXin Li // 8.15: File Attribution Text 59*ba677afaSXin Li // Cardinality: optional, one or many 60*ba677afaSXin Li FileAttributionTexts []string `json:"attributionTexts,omitempty"` 61*ba677afaSXin Li 62*ba677afaSXin Li // DEPRECATED in version 2.0 of spec 63*ba677afaSXin Li // 8.16: File Dependencies 64*ba677afaSXin Li // Cardinality: optional, one or many 65*ba677afaSXin Li FileDependencies []string `json:"fileDependencies,omitempty"` 66*ba677afaSXin Li 67*ba677afaSXin Li // Snippets contained in this File 68*ba677afaSXin Li // Note that Snippets could be defined in a different Document! However, 69*ba677afaSXin Li // the only ones that _THIS_ document can contain are this ones that are 70*ba677afaSXin Li // defined here -- so this should just be an ElementID. 71*ba677afaSXin Li Snippets map[common.ElementID]*Snippet `json:"-" yaml:"-"` 72*ba677afaSXin Li 73*ba677afaSXin Li Annotations []Annotation `json:"annotations,omitempty"` 74*ba677afaSXin Li} 75*ba677afaSXin Li 76*ba677afaSXin Li// ArtifactOfProject is a DEPRECATED collection of data regarding 77*ba677afaSXin Li// a Package, as defined in sections 8.9-8.11 in version 2.3 of the spec. 78*ba677afaSXin Li// NOTE: the JSON schema does not define the structure of this object: 79*ba677afaSXin Li// https://github.com/spdx/spdx-spec/blob/development/v2.3.1/schemas/spdx-schema.json#L480 80*ba677afaSXin Litype ArtifactOfProject struct { 81*ba677afaSXin Li 82*ba677afaSXin Li // DEPRECATED in version 2.1 of spec 83*ba677afaSXin Li // 8.9: Artifact of Project Name 84*ba677afaSXin Li // Cardinality: conditional, required if present, one per AOP 85*ba677afaSXin Li Name string `json:"name"` 86*ba677afaSXin Li 87*ba677afaSXin Li // DEPRECATED in version 2.1 of spec 88*ba677afaSXin Li // 8.10: Artifact of Project Homepage: URL or "UNKNOWN" 89*ba677afaSXin Li // Cardinality: optional, one per AOP 90*ba677afaSXin Li HomePage string `json:"homePage"` 91*ba677afaSXin Li 92*ba677afaSXin Li // DEPRECATED in version 2.1 of spec 93*ba677afaSXin Li // 8.11: Artifact of Project Uniform Resource Identifier 94*ba677afaSXin Li // Cardinality: optional, one per AOP 95*ba677afaSXin Li URI string `json:"URI"` 96*ba677afaSXin Li} 97