xref: /aosp_15_r20/external/spdx-tools/spdx/v2_2/document.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
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_2
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.2 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.2 of the spec.
24*ba677afaSXin Li// See https://spdx.github.io/spdx-spec/v2-draft/ (DRAFT)
25*ba677afaSXin Litype Document struct {
26*ba677afaSXin Li	// 6.1: SPDX Version; should be in the format "SPDX-2.2"
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:"-"`
65*ba677afaSXin Li}
66