1*ba677afaSXin Li// Package spdx contains the struct definition for an SPDX Document 2*ba677afaSXin Li// and its constituent parts. 3*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 4*ba677afaSXin Lipackage v2_3 5*ba677afaSXin Li 6*ba677afaSXin Liimport "github.com/spdx/tools-golang/spdx/common" 7*ba677afaSXin Li 8*ba677afaSXin Li// ExternalDocumentRef is a reference to an external SPDX document 9*ba677afaSXin Li// as defined in section 6.6 for version 2.3 of the spec. 10*ba677afaSXin Litype ExternalDocumentRef struct { 11*ba677afaSXin Li // DocumentRefID is the ID string defined in the start of the 12*ba677afaSXin Li // reference. It should _not_ contain the "DocumentRef-" part 13*ba677afaSXin Li // of the mandatory ID string. 14*ba677afaSXin Li DocumentRefID string `json:"externalDocumentId"` 15*ba677afaSXin Li 16*ba677afaSXin Li // URI is the URI defined for the external document 17*ba677afaSXin Li URI string `json:"spdxDocument"` 18*ba677afaSXin Li 19*ba677afaSXin Li // Checksum is the actual hash data 20*ba677afaSXin Li Checksum common.Checksum `json:"checksum"` 21*ba677afaSXin Li} 22*ba677afaSXin Li 23*ba677afaSXin Li// Document is an SPDX Document for version 2.3 of the spec. 24*ba677afaSXin Li// See https://spdx.github.io/spdx-spec/v2.3/document-creation-information 25*ba677afaSXin Litype Document struct { 26*ba677afaSXin Li // 6.1: SPDX Version; should be in the format "SPDX-2.3" 27*ba677afaSXin Li // Cardinality: mandatory, one 28*ba677afaSXin Li SPDXVersion string `json:"spdxVersion"` 29*ba677afaSXin Li 30*ba677afaSXin Li // 6.2: Data License; should be "CC0-1.0" 31*ba677afaSXin Li // Cardinality: mandatory, one 32*ba677afaSXin Li DataLicense string `json:"dataLicense"` 33*ba677afaSXin Li 34*ba677afaSXin Li // 6.3: SPDX Identifier; should be "DOCUMENT" to represent 35*ba677afaSXin Li // mandatory identifier of SPDXRef-DOCUMENT 36*ba677afaSXin Li // Cardinality: mandatory, one 37*ba677afaSXin Li SPDXIdentifier common.ElementID `json:"SPDXID"` 38*ba677afaSXin Li 39*ba677afaSXin Li // 6.4: Document Name 40*ba677afaSXin Li // Cardinality: mandatory, one 41*ba677afaSXin Li DocumentName string `json:"name"` 42*ba677afaSXin Li 43*ba677afaSXin Li // 6.5: Document Namespace 44*ba677afaSXin Li // Cardinality: mandatory, one 45*ba677afaSXin Li DocumentNamespace string `json:"documentNamespace"` 46*ba677afaSXin Li 47*ba677afaSXin Li // 6.6: External Document References 48*ba677afaSXin Li // Cardinality: optional, one or many 49*ba677afaSXin Li ExternalDocumentReferences []ExternalDocumentRef `json:"externalDocumentRefs,omitempty"` 50*ba677afaSXin Li 51*ba677afaSXin Li // 6.11: Document Comment 52*ba677afaSXin Li // Cardinality: optional, one 53*ba677afaSXin Li DocumentComment string `json:"comment,omitempty"` 54*ba677afaSXin Li 55*ba677afaSXin Li CreationInfo *CreationInfo `json:"creationInfo"` 56*ba677afaSXin Li Packages []*Package `json:"packages,omitempty"` 57*ba677afaSXin Li Files []*File `json:"files,omitempty"` 58*ba677afaSXin Li OtherLicenses []*OtherLicense `json:"hasExtractedLicensingInfos,omitempty"` 59*ba677afaSXin Li Relationships []*Relationship `json:"relationships,omitempty"` 60*ba677afaSXin Li Annotations []*Annotation `json:"annotations,omitempty"` 61*ba677afaSXin Li Snippets []Snippet `json:"snippets,omitempty"` 62*ba677afaSXin Li 63*ba677afaSXin Li // DEPRECATED in version 2.0 of spec 64*ba677afaSXin Li Reviews []*Review `json:"-" yaml:"-"` 65*ba677afaSXin Li} 66