hoppr-cyclonedx-models 0.6.1__py3-none-any.whl → 0.6.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of hoppr-cyclonedx-models might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  """
2
2
  --------------------------------------------------------------------------------
3
- SPDX-FileCopyrightText: Copyright © 2025 Lockheed Martin <open.source@lmco.com>
3
+ SPDX-FileCopyrightText: Copyright © 2024 Lockheed Martin <open.source@lmco.com>
4
4
  SPDX-FileName: hoppr_cyclonedx_models/cyclonedx_1_5.py
5
5
  SPDX-FileType: SOURCE
6
6
  SPDX-License-Identifier: MIT
@@ -25,15 +25,15 @@ THE SOFTWARE.
25
25
  --------------------------------------------------------------------------------
26
26
  This file was generated by datamodel-codegen:
27
27
  filename: bom-1.5.schema.json
28
- timestamp: 2025-09-17T19:02:47+00:00
29
- version: 0.25.7
28
+ timestamp: 2024-07-15T17:53:40+00:00
29
+ version: 0.21.5
30
30
  """
31
31
 
32
32
  from __future__ import annotations
33
33
 
34
34
  from datetime import datetime
35
35
  from enum import Enum
36
- from typing import List, Optional, Union
36
+ from typing import Any, List, Optional, Union
37
37
 
38
38
  from pydantic import AnyUrl, EmailStr, Extra, Field
39
39
  from typing_extensions import Annotated, Literal
@@ -103,11 +103,7 @@ class Phase(Enum):
103
103
  return next((member for member in cls if member.name in {str(value), str(value).upper()}), None)
104
104
 
105
105
 
106
- class Lifecycles(CycloneDXBaseModel):
107
- """
108
- The product lifecycle(s) that this BOM represents.
109
- """
110
-
106
+ class Lifecycle(CycloneDXBaseModel):
111
107
  class Config:
112
108
  extra = Extra.forbid
113
109
 
@@ -141,11 +137,7 @@ class Lifecycles(CycloneDXBaseModel):
141
137
  ]
142
138
 
143
139
 
144
- class Lifecycles1(CycloneDXBaseModel):
145
- """
146
- The product lifecycle(s) that this BOM represents.
147
- """
148
-
140
+ class Lifecycle1(CycloneDXBaseModel):
149
141
  class Config:
150
142
  extra = Extra.forbid
151
143
 
@@ -324,33 +316,78 @@ class LicenseType(Enum):
324
316
  return next((member for member in cls if member.name in {str(value), str(value).upper()}), None)
325
317
 
326
318
 
327
- class LicenseChoice21(CycloneDXBaseModel):
319
+ class Licensing(CycloneDXBaseModel):
320
+ """
321
+ Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and other important metadata
322
+ """
323
+
328
324
  class Config:
329
325
  extra = Extra.forbid
330
326
 
331
- expression: Annotated[
332
- str,
327
+ altIds: Annotated[
328
+ Optional[List[str]],
333
329
  Field(
334
- examples=["Apache-2.0 AND (MIT OR GPL-2.0-only)", "GPL-3.0-only WITH Classpath-exception-2.0"],
335
- title="SPDX License Expression",
330
+ description="License identifiers that may be used to manage licenses and their lifecycle",
331
+ title="Alternate License Identifiers",
336
332
  ),
337
- ]
338
- bom_ref: Annotated[
333
+ ] = None
334
+ purchaseOrder: Annotated[
339
335
  Optional[str],
340
336
  Field(
341
- alias="bom-ref",
342
337
  description=(
343
- "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref"
344
- " MUST be unique within the BOM."
338
+ "The purchase order identifier the purchaser sent to a supplier or vendor to authorize a purchase"
345
339
  ),
346
- min_length=1,
347
- title="BOM Reference",
340
+ title="Purchase Order",
341
+ ),
342
+ ] = None
343
+ licenseTypes: Annotated[
344
+ Optional[List[LicenseType]],
345
+ Field(
346
+ description=(
347
+ "The type of license(s) that was granted to the licensee\n\n* __academic__ = A license that grants use"
348
+ " of software solely for the purpose of education or research.\n* __appliance__ = A license covering"
349
+ " use of software embedded in a specific piece of hardware.\n* __client-access__ = A Client Access"
350
+ " License (CAL) allows client computers to access services provided by server software.\n*"
351
+ " __concurrent-user__ = A Concurrent User license (aka floating license) limits the number of licenses"
352
+ " for a software application and licenses are shared among a larger number of users.\n* __core-points__"
353
+ " = A license where the core of a computer's processor is assigned a specific number of points.\n*"
354
+ " __custom-metric__ = A license for which consumption is measured by non-standard metrics.\n*"
355
+ " __device__ = A license that covers a defined number of installations on computers and other types of"
356
+ " devices.\n* __evaluation__ = A license that grants permission to install and use software for trial"
357
+ " purposes.\n* __named-user__ = A license that grants access to the software to one or more pre-defined"
358
+ " users.\n* __node-locked__ = A license that grants access to the software on one or more pre-defined"
359
+ " computers or devices.\n* __oem__ = An Original Equipment Manufacturer license that is delivered with"
360
+ " hardware, cannot be transferred to other hardware, and is valid for the life of the hardware.\n*"
361
+ " __perpetual__ = A license where the software is sold on a one-time basis and the licensee can use a"
362
+ " copy of the software indefinitely.\n* __processor-points__ = A license where each installation"
363
+ " consumes points per processor.\n* __subscription__ = A license where the licensee pays a fee to use"
364
+ " the software or service.\n* __user__ = A license that grants access to the software or service by a"
365
+ " specified number of users.\n* __other__ = Another license type.\n"
366
+ ),
367
+ title="License Type",
368
+ ),
369
+ ] = None
370
+ lastRenewal: Annotated[
371
+ Optional[datetime],
372
+ Field(
373
+ description=(
374
+ "The timestamp indicating when the license was last renewed. For new purchases, this is often the"
375
+ " purchase or acquisition date. For non-perpetual licenses or subscriptions, this is the timestamp of"
376
+ " when the license was last renewed."
377
+ ),
378
+ title="Last Renewal",
379
+ ),
380
+ ] = None
381
+ expiration: Annotated[
382
+ Optional[datetime],
383
+ Field(
384
+ description="The timestamp indicating when the current license expires (if applicable).", title="Expiration"
348
385
  ),
349
386
  ] = None
350
387
 
351
388
 
352
389
  LicenseChoice2 = Annotated[
353
- List[LicenseChoice21],
390
+ List[Any],
354
391
  Field(
355
392
  description="A tuple of exactly one SPDX License Expression.",
356
393
  max_items=1,
@@ -589,12 +626,11 @@ class Dependency(CycloneDXBaseModel):
589
626
  ),
590
627
  ]
591
628
  dependsOn: Annotated[
592
- Optional[List[str]],
629
+ Optional[List[RefLinkType]],
593
630
  Field(
594
631
  description=(
595
632
  "The bom-ref identifiers of the components or services that are dependencies of this dependency object."
596
633
  ),
597
- min_length=1,
598
634
  title="Depends On",
599
635
  ),
600
636
  ] = None
@@ -954,6 +990,19 @@ class Advisory(CycloneDXBaseModel):
954
990
  url: Annotated[str, Field(description="Location where the advisory can be obtained.", title="URL")]
955
991
 
956
992
 
993
+ Cwe = Annotated[
994
+ int,
995
+ Field(
996
+ description=(
997
+ "Integer representation of a Common Weaknesses Enumerations (CWE). For example 399 (of"
998
+ " https://cwe.mitre.org/data/definitions/399.html)"
999
+ ),
1000
+ ge=1,
1001
+ title="CWE",
1002
+ ),
1003
+ ]
1004
+
1005
+
957
1006
  class Severity(Enum):
958
1007
  """
959
1008
  Textual representation of the severity of the vulnerability adopted by the analysis method. If the analysis method uses values other than what is provided, the user is expected to translate appropriately.
@@ -1185,6 +1234,19 @@ class Analysis(CycloneDXBaseModel):
1185
1234
  ] = None
1186
1235
 
1187
1236
 
1237
+ class Affect(CycloneDXBaseModel):
1238
+ class Config:
1239
+ extra = Extra.forbid
1240
+
1241
+ ref: Annotated[
1242
+ Union[RefLinkType, BomLinkElementType],
1243
+ Field(description="References a component or service by the objects bom-ref", title="Reference"),
1244
+ ]
1245
+ versions: Annotated[
1246
+ Optional[List], Field(description="Zero or more individual versions or range of versions.", title="Versions")
1247
+ ] = None
1248
+
1249
+
1188
1250
  class AffectedStatus(Enum):
1189
1251
  """
1190
1252
  The vulnerability status of a given version or range of versions of a product. The statuses 'affected' and 'unaffected' indicate that the version is affected or unaffected by the vulnerability. The status 'unknown' indicates that it is unknown or unspecified whether the given version is affected. There can be many reasons for an 'unknown' status, including that an investigation has not been undertaken or that a vendor has not disclosed the status.
@@ -1202,6 +1264,24 @@ class AffectedStatus(Enum):
1202
1264
  return next((member for member in cls if member.name in {str(value), str(value).upper()}), None)
1203
1265
 
1204
1266
 
1267
+ Version = Annotated[
1268
+ str, Field(description="A single version of a component or service.", max_length=1024, min_length=1)
1269
+ ]
1270
+
1271
+
1272
+ Range = Annotated[
1273
+ str,
1274
+ Field(
1275
+ description=(
1276
+ "A version range specified in Package URL Version Range syntax (vers) which is defined at"
1277
+ " https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst"
1278
+ ),
1279
+ max_length=1024,
1280
+ min_length=1,
1281
+ ),
1282
+ ]
1283
+
1284
+
1205
1285
  class Type4(Enum):
1206
1286
  """
1207
1287
  Learning types describing the learning problem or hybrid learning problem.
@@ -1238,7 +1318,7 @@ class Approach(CycloneDXBaseModel):
1238
1318
  ] = None
1239
1319
 
1240
1320
 
1241
- class Datasets(CycloneDXBaseModel):
1321
+ class Dataset(CycloneDXBaseModel):
1242
1322
  class Config:
1243
1323
  extra = Extra.forbid
1244
1324
 
@@ -1575,7 +1655,7 @@ class Parameter(CycloneDXBaseModel):
1575
1655
  dataType: Annotated[Optional[str], Field(description="The data type of the parameter.", title="Data type")] = None
1576
1656
 
1577
1657
 
1578
- class Algorithm(Enum):
1658
+ class AlgorithmEnum(Enum):
1579
1659
  """
1580
1660
  Signature algorithm. The currently recognized JWA [RFC7518] and RFC8037 [RFC8037] asymmetric key algorithms. Note: Unlike RFC8037 [RFC8037] JSF requires explicit Ed* algorithm names instead of "EdDSA".
1581
1661
  """
@@ -1705,565 +1785,165 @@ class Hash(CycloneDXBaseModel):
1705
1785
  ]
1706
1786
 
1707
1787
 
1708
- class Licensor(CycloneDXBaseModel):
1709
- """
1710
- The individual or organization that grants a license to another individual or organization
1711
- """
1712
-
1788
+ class License(CycloneDXBaseModel):
1713
1789
  class Config:
1714
1790
  extra = Extra.forbid
1715
1791
 
1716
- organization: Annotated[
1717
- OrganizationalEntity,
1718
- Field(description="The organization that granted the license", title="Licensor (Organization)"),
1719
- ]
1720
- individual: Annotated[
1721
- Optional[OrganizationalContact],
1792
+ bom_ref: Annotated[
1793
+ Optional[str],
1722
1794
  Field(
1723
- description="The individual, not associated with an organization, that granted the license",
1724
- title="Licensor (Individual)",
1795
+ alias="bom-ref",
1796
+ description=(
1797
+ "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref"
1798
+ " MUST be unique within the BOM."
1799
+ ),
1800
+ min_length=1,
1801
+ title="BOM Reference",
1725
1802
  ),
1726
1803
  ] = None
1727
-
1728
-
1729
- class Licensor1(CycloneDXBaseModel):
1730
- """
1731
- The individual or organization that grants a license to another individual or organization
1732
- """
1733
-
1734
- class Config:
1735
- extra = Extra.forbid
1736
-
1737
- organization: Annotated[
1738
- Optional[OrganizationalEntity],
1739
- Field(description="The organization that granted the license", title="Licensor (Organization)"),
1804
+ id: Annotated[
1805
+ Optional[spdx.LicenseID],
1806
+ Field(description="A valid SPDX license ID", examples=["Apache-2.0"], title="License ID (SPDX)"),
1740
1807
  ] = None
1741
- individual: Annotated[
1742
- OrganizationalContact,
1808
+ name: Annotated[
1809
+ Optional[str],
1743
1810
  Field(
1744
- description="The individual, not associated with an organization, that granted the license",
1745
- title="Licensor (Individual)",
1811
+ description="If SPDX does not define the license used, this field may be used to provide the license name",
1812
+ examples=["Acme Software License"],
1813
+ title="License Name",
1746
1814
  ),
1747
- ]
1748
-
1749
-
1750
- class Licensee(CycloneDXBaseModel):
1751
- """
1752
- The individual or organization for which a license was granted to
1753
- """
1754
-
1755
- class Config:
1756
- extra = Extra.forbid
1757
-
1758
- organization: Annotated[
1759
- OrganizationalEntity,
1760
- Field(description="The organization that was granted the license", title="Licensee (Organization)"),
1761
- ]
1762
- individual: Annotated[
1763
- Optional[OrganizationalContact],
1815
+ ] = None
1816
+ text: Annotated[
1817
+ Optional[Attachment],
1818
+ Field(description="An optional way to include the textual content of a license.", title="License text"),
1819
+ ] = None
1820
+ url: Annotated[
1821
+ Optional[str],
1764
1822
  Field(
1765
- description="The individual, not associated with an organization, that was granted the license",
1766
- title="Licensee (Individual)",
1823
+ description=(
1824
+ "The URL to the license file. If specified, a 'license' externalReference should also be specified for"
1825
+ " completeness"
1826
+ ),
1827
+ examples=["https://www.apache.org/licenses/LICENSE-2.0.txt"],
1828
+ title="License URL",
1829
+ ),
1830
+ ] = None
1831
+ licensing: Annotated[
1832
+ Optional[Licensing],
1833
+ Field(
1834
+ description=(
1835
+ "Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and"
1836
+ " other important metadata"
1837
+ ),
1838
+ title="Licensing information",
1839
+ ),
1840
+ ] = None
1841
+ properties: Annotated[
1842
+ Optional[List[Property]],
1843
+ Field(
1844
+ description=(
1845
+ "Provides the ability to document properties in a name-value store. This provides flexibility to"
1846
+ " include data not officially supported in the standard without having to use additional namespaces or"
1847
+ " create extensions. Unlike key-value stores, properties support duplicate names, each potentially"
1848
+ " having different values. Property names of interest to the general public are encouraged to be"
1849
+ " registered in the [CycloneDX Property"
1850
+ " Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL."
1851
+ ),
1852
+ title="Properties",
1767
1853
  ),
1768
1854
  ] = None
1769
1855
 
1770
1856
 
1771
- class Licensee1(CycloneDXBaseModel):
1772
- """
1773
- The individual or organization for which a license was granted to
1774
- """
1775
-
1857
+ class LicenseChoice1(CycloneDXBaseModel):
1776
1858
  class Config:
1777
1859
  extra = Extra.forbid
1778
1860
 
1779
- organization: Annotated[
1780
- Optional[OrganizationalEntity],
1781
- Field(description="The organization that was granted the license", title="Licensee (Organization)"),
1782
- ] = None
1783
- individual: Annotated[
1784
- OrganizationalContact,
1785
- Field(
1786
- description="The individual, not associated with an organization, that was granted the license",
1787
- title="Licensee (Individual)",
1788
- ),
1789
- ]
1861
+ license: License
1790
1862
 
1791
1863
 
1792
- class Purchaser(CycloneDXBaseModel):
1864
+ class Commit(CycloneDXBaseModel):
1793
1865
  """
1794
- The individual or organization that purchased the license
1866
+ Specifies an individual commit
1795
1867
  """
1796
1868
 
1797
1869
  class Config:
1798
1870
  extra = Extra.forbid
1799
1871
 
1800
- organization: Annotated[
1801
- OrganizationalEntity,
1802
- Field(description="The organization that purchased the license", title="Purchaser (Organization)"),
1803
- ]
1804
- individual: Annotated[
1805
- Optional[OrganizationalContact],
1872
+ uid: Annotated[
1873
+ Optional[str],
1874
+ Field(
1875
+ description=(
1876
+ "A unique identifier of the commit. This may be version control specific. For example, Subversion uses"
1877
+ " revision numbers whereas git uses commit hashes."
1878
+ ),
1879
+ title="UID",
1880
+ ),
1881
+ ] = None
1882
+ url: Annotated[
1883
+ Optional[str],
1806
1884
  Field(
1807
- description="The individual, not associated with an organization, that purchased the license",
1808
- title="Purchaser (Individual)",
1885
+ description="The URL to the commit. This URL will typically point to a commit in a version control system.",
1886
+ title="URL",
1809
1887
  ),
1810
1888
  ] = None
1889
+ author: Annotated[
1890
+ Optional[IdentifiableAction],
1891
+ Field(description="The author who created the changes in the commit", title="Author"),
1892
+ ] = None
1893
+ committer: Annotated[
1894
+ Optional[IdentifiableAction],
1895
+ Field(description="The person who committed or pushed the commit", title="Committer"),
1896
+ ] = None
1897
+ message: Annotated[
1898
+ Optional[str], Field(description="The text description of the contents of the commit", title="Message")
1899
+ ] = None
1811
1900
 
1812
1901
 
1813
- class Purchaser1(CycloneDXBaseModel):
1902
+ class Patch(CycloneDXBaseModel):
1814
1903
  """
1815
- The individual or organization that purchased the license
1904
+ Specifies an individual patch
1816
1905
  """
1817
1906
 
1818
1907
  class Config:
1819
1908
  extra = Extra.forbid
1820
1909
 
1821
- organization: Annotated[
1822
- Optional[OrganizationalEntity],
1823
- Field(description="The organization that purchased the license", title="Purchaser (Organization)"),
1824
- ] = None
1825
- individual: Annotated[
1826
- OrganizationalContact,
1910
+ type: Annotated[
1911
+ Type1,
1827
1912
  Field(
1828
- description="The individual, not associated with an organization, that purchased the license",
1829
- title="Purchaser (Individual)",
1913
+ description=(
1914
+ "Specifies the purpose for the patch including the resolution of defects, security issues, or new"
1915
+ " behavior or functionality.\n\n* __unofficial__ = A patch which is not developed by the creators or"
1916
+ " maintainers of the software being patched. Refer to"
1917
+ " [https://en.wikipedia.org/wiki/Unofficial_patch](https://en.wikipedia.org/wiki/Unofficial_patch)\n*"
1918
+ " __monkey__ = A patch which dynamically modifies runtime behavior. Refer to"
1919
+ " [https://en.wikipedia.org/wiki/Monkey_patch](https://en.wikipedia.org/wiki/Monkey_patch)\n*"
1920
+ " __backport__ = A patch which takes code from a newer version of software and applies it to older"
1921
+ " versions of the same software. Refer to"
1922
+ " [https://en.wikipedia.org/wiki/Backporting](https://en.wikipedia.org/wiki/Backporting)\n*"
1923
+ " __cherry-pick__ = A patch created by selectively applying commits from other versions or branches of"
1924
+ " the same software."
1925
+ ),
1926
+ title="Type",
1830
1927
  ),
1831
1928
  ]
1929
+ diff: Annotated[
1930
+ Optional[Diff],
1931
+ Field(
1932
+ description=(
1933
+ "The patch file (or diff) that show changes. Refer to"
1934
+ " [https://en.wikipedia.org/wiki/Diff](https://en.wikipedia.org/wiki/Diff)"
1935
+ ),
1936
+ title="Diff",
1937
+ ),
1938
+ ] = None
1939
+ resolves: Annotated[
1940
+ Optional[List[Issue]], Field(description="A collection of issues the patch resolves", title="Resolves")
1941
+ ] = None
1832
1942
 
1833
1943
 
1834
- class Licensing(CycloneDXBaseModel):
1944
+ class ExternalReference(CycloneDXBaseModel):
1835
1945
  """
1836
- Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and other important metadata
1837
- """
1838
-
1839
- class Config:
1840
- extra = Extra.forbid
1841
-
1842
- altIds: Annotated[
1843
- Optional[List[str]],
1844
- Field(
1845
- description="License identifiers that may be used to manage licenses and their lifecycle",
1846
- title="Alternate License Identifiers",
1847
- ),
1848
- ] = None
1849
- licensor: Annotated[
1850
- Optional[Union[Licensor, Licensor1]],
1851
- Field(
1852
- description="The individual or organization that grants a license to another individual or organization",
1853
- title="Licensor",
1854
- ),
1855
- ] = None
1856
- licensee: Annotated[
1857
- Optional[Union[Licensee, Licensee1]],
1858
- Field(description="The individual or organization for which a license was granted to", title="Licensee"),
1859
- ] = None
1860
- purchaser: Annotated[
1861
- Optional[Union[Purchaser, Purchaser1]],
1862
- Field(description="The individual or organization that purchased the license", title="Purchaser"),
1863
- ] = None
1864
- purchaseOrder: Annotated[
1865
- Optional[str],
1866
- Field(
1867
- description=(
1868
- "The purchase order identifier the purchaser sent to a supplier or vendor to authorize a purchase"
1869
- ),
1870
- title="Purchase Order",
1871
- ),
1872
- ] = None
1873
- licenseTypes: Annotated[
1874
- Optional[List[LicenseType]],
1875
- Field(
1876
- description=(
1877
- "The type of license(s) that was granted to the licensee\n\n* __academic__ = A license that grants use"
1878
- " of software solely for the purpose of education or research.\n* __appliance__ = A license covering"
1879
- " use of software embedded in a specific piece of hardware.\n* __client-access__ = A Client Access"
1880
- " License (CAL) allows client computers to access services provided by server software.\n*"
1881
- " __concurrent-user__ = A Concurrent User license (aka floating license) limits the number of licenses"
1882
- " for a software application and licenses are shared among a larger number of users.\n* __core-points__"
1883
- " = A license where the core of a computer's processor is assigned a specific number of points.\n*"
1884
- " __custom-metric__ = A license for which consumption is measured by non-standard metrics.\n*"
1885
- " __device__ = A license that covers a defined number of installations on computers and other types of"
1886
- " devices.\n* __evaluation__ = A license that grants permission to install and use software for trial"
1887
- " purposes.\n* __named-user__ = A license that grants access to the software to one or more pre-defined"
1888
- " users.\n* __node-locked__ = A license that grants access to the software on one or more pre-defined"
1889
- " computers or devices.\n* __oem__ = An Original Equipment Manufacturer license that is delivered with"
1890
- " hardware, cannot be transferred to other hardware, and is valid for the life of the hardware.\n*"
1891
- " __perpetual__ = A license where the software is sold on a one-time basis and the licensee can use a"
1892
- " copy of the software indefinitely.\n* __processor-points__ = A license where each installation"
1893
- " consumes points per processor.\n* __subscription__ = A license where the licensee pays a fee to use"
1894
- " the software or service.\n* __user__ = A license that grants access to the software or service by a"
1895
- " specified number of users.\n* __other__ = Another license type.\n"
1896
- ),
1897
- title="License Type",
1898
- ),
1899
- ] = None
1900
- lastRenewal: Annotated[
1901
- Optional[datetime],
1902
- Field(
1903
- description=(
1904
- "The timestamp indicating when the license was last renewed. For new purchases, this is often the"
1905
- " purchase or acquisition date. For non-perpetual licenses or subscriptions, this is the timestamp of"
1906
- " when the license was last renewed."
1907
- ),
1908
- title="Last Renewal",
1909
- ),
1910
- ] = None
1911
- expiration: Annotated[
1912
- Optional[datetime],
1913
- Field(
1914
- description="The timestamp indicating when the current license expires (if applicable).", title="Expiration"
1915
- ),
1916
- ] = None
1917
-
1918
-
1919
- class License1(CycloneDXBaseModel):
1920
- class Config:
1921
- extra = Extra.forbid
1922
-
1923
- bom_ref: Annotated[
1924
- Optional[str],
1925
- Field(
1926
- alias="bom-ref",
1927
- description=(
1928
- "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref"
1929
- " MUST be unique within the BOM."
1930
- ),
1931
- min_length=1,
1932
- title="BOM Reference",
1933
- ),
1934
- ] = None
1935
- id: Annotated[
1936
- spdx.LicenseID, Field(description="A valid SPDX license ID", examples=["Apache-2.0"], title="License ID (SPDX)")
1937
- ]
1938
- name: Annotated[
1939
- Optional[str],
1940
- Field(
1941
- description="If SPDX does not define the license used, this field may be used to provide the license name",
1942
- examples=["Acme Software License"],
1943
- title="License Name",
1944
- ),
1945
- ] = None
1946
- text: Annotated[
1947
- Optional[Attachment],
1948
- Field(description="An optional way to include the textual content of a license.", title="License text"),
1949
- ] = None
1950
- url: Annotated[
1951
- Optional[str],
1952
- Field(
1953
- description=(
1954
- "The URL to the license file. If specified, a 'license' externalReference should also be specified for"
1955
- " completeness"
1956
- ),
1957
- examples=["https://www.apache.org/licenses/LICENSE-2.0.txt"],
1958
- title="License URL",
1959
- ),
1960
- ] = None
1961
- licensing: Annotated[
1962
- Optional[Licensing],
1963
- Field(
1964
- description=(
1965
- "Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and"
1966
- " other important metadata"
1967
- ),
1968
- title="Licensing information",
1969
- ),
1970
- ] = None
1971
- properties: Annotated[
1972
- Optional[List[Property]],
1973
- Field(
1974
- description=(
1975
- "Provides the ability to document properties in a name-value store. This provides flexibility to"
1976
- " include data not officially supported in the standard without having to use additional namespaces or"
1977
- " create extensions. Unlike key-value stores, properties support duplicate names, each potentially"
1978
- " having different values. Property names of interest to the general public are encouraged to be"
1979
- " registered in the [CycloneDX Property"
1980
- " Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL."
1981
- ),
1982
- title="Properties",
1983
- ),
1984
- ] = None
1985
-
1986
-
1987
- class Licensor2(Licensor):
1988
- """
1989
- The individual or organization that grants a license to another individual or organization
1990
- """
1991
-
1992
-
1993
- class Licensor3(Licensor1):
1994
- """
1995
- The individual or organization that grants a license to another individual or organization
1996
- """
1997
-
1998
-
1999
- class Licensee2(Licensee):
2000
- """
2001
- The individual or organization for which a license was granted to
2002
- """
2003
-
2004
-
2005
- class Licensee3(Licensee1):
2006
- """
2007
- The individual or organization for which a license was granted to
2008
- """
2009
-
2010
-
2011
- class Purchaser2(Purchaser):
2012
- """
2013
- The individual or organization that purchased the license
2014
- """
2015
-
2016
-
2017
- class Purchaser3(Purchaser1):
2018
- """
2019
- The individual or organization that purchased the license
2020
- """
2021
-
2022
-
2023
- class Licensing1(CycloneDXBaseModel):
2024
- """
2025
- Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and other important metadata
2026
- """
2027
-
2028
- class Config:
2029
- extra = Extra.forbid
2030
-
2031
- altIds: Annotated[
2032
- Optional[List[str]],
2033
- Field(
2034
- description="License identifiers that may be used to manage licenses and their lifecycle",
2035
- title="Alternate License Identifiers",
2036
- ),
2037
- ] = None
2038
- licensor: Annotated[
2039
- Optional[Union[Licensor2, Licensor3]],
2040
- Field(
2041
- description="The individual or organization that grants a license to another individual or organization",
2042
- title="Licensor",
2043
- ),
2044
- ] = None
2045
- licensee: Annotated[
2046
- Optional[Union[Licensee2, Licensee3]],
2047
- Field(description="The individual or organization for which a license was granted to", title="Licensee"),
2048
- ] = None
2049
- purchaser: Annotated[
2050
- Optional[Union[Purchaser2, Purchaser3]],
2051
- Field(description="The individual or organization that purchased the license", title="Purchaser"),
2052
- ] = None
2053
- purchaseOrder: Annotated[
2054
- Optional[str],
2055
- Field(
2056
- description=(
2057
- "The purchase order identifier the purchaser sent to a supplier or vendor to authorize a purchase"
2058
- ),
2059
- title="Purchase Order",
2060
- ),
2061
- ] = None
2062
- licenseTypes: Annotated[
2063
- Optional[List[LicenseType]],
2064
- Field(
2065
- description=(
2066
- "The type of license(s) that was granted to the licensee\n\n* __academic__ = A license that grants use"
2067
- " of software solely for the purpose of education or research.\n* __appliance__ = A license covering"
2068
- " use of software embedded in a specific piece of hardware.\n* __client-access__ = A Client Access"
2069
- " License (CAL) allows client computers to access services provided by server software.\n*"
2070
- " __concurrent-user__ = A Concurrent User license (aka floating license) limits the number of licenses"
2071
- " for a software application and licenses are shared among a larger number of users.\n* __core-points__"
2072
- " = A license where the core of a computer's processor is assigned a specific number of points.\n*"
2073
- " __custom-metric__ = A license for which consumption is measured by non-standard metrics.\n*"
2074
- " __device__ = A license that covers a defined number of installations on computers and other types of"
2075
- " devices.\n* __evaluation__ = A license that grants permission to install and use software for trial"
2076
- " purposes.\n* __named-user__ = A license that grants access to the software to one or more pre-defined"
2077
- " users.\n* __node-locked__ = A license that grants access to the software on one or more pre-defined"
2078
- " computers or devices.\n* __oem__ = An Original Equipment Manufacturer license that is delivered with"
2079
- " hardware, cannot be transferred to other hardware, and is valid for the life of the hardware.\n*"
2080
- " __perpetual__ = A license where the software is sold on a one-time basis and the licensee can use a"
2081
- " copy of the software indefinitely.\n* __processor-points__ = A license where each installation"
2082
- " consumes points per processor.\n* __subscription__ = A license where the licensee pays a fee to use"
2083
- " the software or service.\n* __user__ = A license that grants access to the software or service by a"
2084
- " specified number of users.\n* __other__ = Another license type.\n"
2085
- ),
2086
- title="License Type",
2087
- ),
2088
- ] = None
2089
- lastRenewal: Annotated[
2090
- Optional[datetime],
2091
- Field(
2092
- description=(
2093
- "The timestamp indicating when the license was last renewed. For new purchases, this is often the"
2094
- " purchase or acquisition date. For non-perpetual licenses or subscriptions, this is the timestamp of"
2095
- " when the license was last renewed."
2096
- ),
2097
- title="Last Renewal",
2098
- ),
2099
- ] = None
2100
- expiration: Annotated[
2101
- Optional[datetime],
2102
- Field(
2103
- description="The timestamp indicating when the current license expires (if applicable).", title="Expiration"
2104
- ),
2105
- ] = None
2106
-
2107
-
2108
- class License2(CycloneDXBaseModel):
2109
- class Config:
2110
- extra = Extra.forbid
2111
-
2112
- bom_ref: Annotated[
2113
- Optional[str],
2114
- Field(
2115
- alias="bom-ref",
2116
- description=(
2117
- "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref"
2118
- " MUST be unique within the BOM."
2119
- ),
2120
- min_length=1,
2121
- title="BOM Reference",
2122
- ),
2123
- ] = None
2124
- id: Annotated[
2125
- Optional[spdx.LicenseID],
2126
- Field(description="A valid SPDX license ID", examples=["Apache-2.0"], title="License ID (SPDX)"),
2127
- ] = None
2128
- name: Annotated[
2129
- str,
2130
- Field(
2131
- description="If SPDX does not define the license used, this field may be used to provide the license name",
2132
- examples=["Acme Software License"],
2133
- title="License Name",
2134
- ),
2135
- ]
2136
- text: Annotated[
2137
- Optional[Attachment],
2138
- Field(description="An optional way to include the textual content of a license.", title="License text"),
2139
- ] = None
2140
- url: Annotated[
2141
- Optional[str],
2142
- Field(
2143
- description=(
2144
- "The URL to the license file. If specified, a 'license' externalReference should also be specified for"
2145
- " completeness"
2146
- ),
2147
- examples=["https://www.apache.org/licenses/LICENSE-2.0.txt"],
2148
- title="License URL",
2149
- ),
2150
- ] = None
2151
- licensing: Annotated[
2152
- Optional[Licensing1],
2153
- Field(
2154
- description=(
2155
- "Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and"
2156
- " other important metadata"
2157
- ),
2158
- title="Licensing information",
2159
- ),
2160
- ] = None
2161
- properties: Annotated[
2162
- Optional[List[Property]],
2163
- Field(
2164
- description=(
2165
- "Provides the ability to document properties in a name-value store. This provides flexibility to"
2166
- " include data not officially supported in the standard without having to use additional namespaces or"
2167
- " create extensions. Unlike key-value stores, properties support duplicate names, each potentially"
2168
- " having different values. Property names of interest to the general public are encouraged to be"
2169
- " registered in the [CycloneDX Property"
2170
- " Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL."
2171
- ),
2172
- title="Properties",
2173
- ),
2174
- ] = None
2175
-
2176
-
2177
- class LicenseChoice1(CycloneDXBaseModel):
2178
- class Config:
2179
- extra = Extra.forbid
2180
-
2181
- license: Annotated[Union[License1, License2], Field(title="License Object")]
2182
-
2183
-
2184
- class Commit(CycloneDXBaseModel):
2185
- """
2186
- Specifies an individual commit
2187
- """
2188
-
2189
- class Config:
2190
- extra = Extra.forbid
2191
-
2192
- uid: Annotated[
2193
- Optional[str],
2194
- Field(
2195
- description=(
2196
- "A unique identifier of the commit. This may be version control specific. For example, Subversion uses"
2197
- " revision numbers whereas git uses commit hashes."
2198
- ),
2199
- title="UID",
2200
- ),
2201
- ] = None
2202
- url: Annotated[
2203
- Optional[str],
2204
- Field(
2205
- description="The URL to the commit. This URL will typically point to a commit in a version control system.",
2206
- title="URL",
2207
- ),
2208
- ] = None
2209
- author: Annotated[
2210
- Optional[IdentifiableAction],
2211
- Field(description="The author who created the changes in the commit", title="Author"),
2212
- ] = None
2213
- committer: Annotated[
2214
- Optional[IdentifiableAction],
2215
- Field(description="The person who committed or pushed the commit", title="Committer"),
2216
- ] = None
2217
- message: Annotated[
2218
- Optional[str], Field(description="The text description of the contents of the commit", title="Message")
2219
- ] = None
2220
-
2221
-
2222
- class Patch(CycloneDXBaseModel):
2223
- """
2224
- Specifies an individual patch
2225
- """
2226
-
2227
- class Config:
2228
- extra = Extra.forbid
2229
-
2230
- type: Annotated[
2231
- Type1,
2232
- Field(
2233
- description=(
2234
- "Specifies the purpose for the patch including the resolution of defects, security issues, or new"
2235
- " behavior or functionality.\n\n* __unofficial__ = A patch which is not developed by the creators or"
2236
- " maintainers of the software being patched. Refer to"
2237
- " [https://en.wikipedia.org/wiki/Unofficial_patch](https://en.wikipedia.org/wiki/Unofficial_patch)\n*"
2238
- " __monkey__ = A patch which dynamically modifies runtime behavior. Refer to"
2239
- " [https://en.wikipedia.org/wiki/Monkey_patch](https://en.wikipedia.org/wiki/Monkey_patch)\n*"
2240
- " __backport__ = A patch which takes code from a newer version of software and applies it to older"
2241
- " versions of the same software. Refer to"
2242
- " [https://en.wikipedia.org/wiki/Backporting](https://en.wikipedia.org/wiki/Backporting)\n*"
2243
- " __cherry-pick__ = A patch created by selectively applying commits from other versions or branches of"
2244
- " the same software."
2245
- ),
2246
- title="Type",
2247
- ),
2248
- ]
2249
- diff: Annotated[
2250
- Optional[Diff],
2251
- Field(
2252
- description=(
2253
- "The patch file (or diff) that show changes. Refer to"
2254
- " [https://en.wikipedia.org/wiki/Diff](https://en.wikipedia.org/wiki/Diff)"
2255
- ),
2256
- title="Diff",
2257
- ),
2258
- ] = None
2259
- resolves: Annotated[
2260
- Optional[List[Issue]], Field(description="A collection of issues the patch resolves", title="Resolves")
2261
- ] = None
2262
-
2263
-
2264
- class ExternalReference(CycloneDXBaseModel):
2265
- """
2266
- External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM.
1946
+ External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM.
2267
1947
  """
2268
1948
 
2269
1949
  class Config:
@@ -2414,92 +2094,32 @@ class Rating(CycloneDXBaseModel):
2414
2094
  description="Textual representation of the metric values used to score the vulnerability", title="Vector"
2415
2095
  ),
2416
2096
  ] = None
2417
- justification: Annotated[
2418
- Optional[str],
2419
- Field(description="An optional reason for rating the vulnerability as it was", title="Justification"),
2420
- ] = None
2421
-
2422
-
2423
- class Credits(CycloneDXBaseModel):
2424
- """
2425
- Individuals or organizations credited with the discovery of the vulnerability.
2426
- """
2427
-
2428
- class Config:
2429
- extra = Extra.forbid
2430
-
2431
- organizations: Annotated[
2432
- Optional[List[OrganizationalEntity]],
2433
- Field(description="The organizations credited with vulnerability discovery.", title="Organizations"),
2434
- ] = None
2435
- individuals: Annotated[
2436
- Optional[List[OrganizationalContact]],
2437
- Field(
2438
- description=(
2439
- "The individuals, not associated with organizations, that are credited with vulnerability discovery."
2440
- ),
2441
- title="Individuals",
2442
- ),
2443
- ] = None
2444
-
2445
-
2446
- class Versions(CycloneDXBaseModel):
2447
- class Config:
2448
- extra = Extra.forbid
2449
-
2450
- version: Annotated[
2451
- str, Field(description="A single version of a component or service.", max_length=1024, min_length=1)
2452
- ]
2453
- range: Annotated[
2454
- Optional[str],
2455
- Field(
2456
- description=(
2457
- "A version range specified in Package URL Version Range syntax (vers) which is defined at"
2458
- " https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst"
2459
- ),
2460
- max_length=1024,
2461
- min_length=1,
2462
- ),
2463
- ] = None
2464
- status: Annotated[
2465
- Optional[AffectedStatus], Field(description="The vulnerability status for the version or range of versions.")
2466
- ] = AffectedStatus.affected
2097
+ justification: Annotated[
2098
+ Optional[str],
2099
+ Field(description="An optional reason for rating the vulnerability as it was", title="Justification"),
2100
+ ] = None
2467
2101
 
2468
2102
 
2469
- class Versions1(CycloneDXBaseModel):
2103
+ class Credits(CycloneDXBaseModel):
2104
+ """
2105
+ Individuals or organizations credited with the discovery of the vulnerability.
2106
+ """
2107
+
2470
2108
  class Config:
2471
2109
  extra = Extra.forbid
2472
2110
 
2473
- version: Annotated[
2474
- Optional[str], Field(description="A single version of a component or service.", max_length=1024, min_length=1)
2111
+ organizations: Annotated[
2112
+ Optional[List[OrganizationalEntity]],
2113
+ Field(description="The organizations credited with vulnerability discovery.", title="Organizations"),
2475
2114
  ] = None
2476
- range: Annotated[
2477
- str,
2115
+ individuals: Annotated[
2116
+ Optional[List[OrganizationalContact]],
2478
2117
  Field(
2479
2118
  description=(
2480
- "A version range specified in Package URL Version Range syntax (vers) which is defined at"
2481
- " https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst"
2119
+ "The individuals, not associated with organizations, that are credited with vulnerability discovery."
2482
2120
  ),
2483
- max_length=1024,
2484
- min_length=1,
2121
+ title="Individuals",
2485
2122
  ),
2486
- ]
2487
- status: Annotated[
2488
- Optional[AffectedStatus], Field(description="The vulnerability status for the version or range of versions.")
2489
- ] = AffectedStatus.affected
2490
-
2491
-
2492
- class Affect(CycloneDXBaseModel):
2493
- class Config:
2494
- extra = Extra.forbid
2495
-
2496
- ref: Annotated[
2497
- Union[RefLinkType, BomLinkElementType],
2498
- Field(description="References a component or service by the objects bom-ref", title="Reference"),
2499
- ]
2500
- versions: Annotated[
2501
- Optional[List[Union[Versions, Versions1]]],
2502
- Field(description="Zero or more individual versions or range of versions.", title="Versions"),
2503
2123
  ] = None
2504
2124
 
2505
2125
 
@@ -2553,20 +2173,12 @@ class Considerations(CycloneDXBaseModel):
2553
2173
  ] = None
2554
2174
 
2555
2175
 
2556
- class DataGovernanceResponsibleParty1(CycloneDXBaseModel):
2557
- class Config:
2558
- extra = Extra.forbid
2559
-
2560
- organization: Annotated[OrganizationalEntity, Field(title="Organization")]
2561
- contact: Annotated[Optional[OrganizationalContact], Field(title="Individual")] = None
2562
-
2563
-
2564
- class DataGovernanceResponsibleParty2(CycloneDXBaseModel):
2176
+ class DataGovernanceResponsibleParty(CycloneDXBaseModel):
2565
2177
  class Config:
2566
2178
  extra = Extra.forbid
2567
2179
 
2568
2180
  organization: Annotated[Optional[OrganizationalEntity], Field(title="Organization")] = None
2569
- contact: Annotated[OrganizationalContact, Field(title="Individual")]
2181
+ contact: Annotated[Optional[OrganizationalContact], Field(title="Individual")] = None
2570
2182
 
2571
2183
 
2572
2184
  class GraphicsCollection(CycloneDXBaseModel):
@@ -2598,25 +2210,7 @@ class Step(CycloneDXBaseModel):
2598
2210
  properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
2599
2211
 
2600
2212
 
2601
- class ResourceReferenceChoice1(CycloneDXBaseModel):
2602
- """
2603
- A reference to a locally defined resource (e.g., a bom-ref) or an externally accessible resource.
2604
- """
2605
-
2606
- class Config:
2607
- extra = Extra.forbid
2608
-
2609
- ref: Annotated[
2610
- Union[RefLinkType, BomLinkElementType],
2611
- Field(description="References an object by its bom-ref attribute", title="BOM Reference"),
2612
- ]
2613
- externalReference: Annotated[
2614
- Optional[ExternalReference],
2615
- Field(description="Reference to an externally accessible resource.", title="External reference"),
2616
- ] = None
2617
-
2618
-
2619
- class ResourceReferenceChoice2(CycloneDXBaseModel):
2213
+ class ResourceReferenceChoice(CycloneDXBaseModel):
2620
2214
  """
2621
2215
  A reference to a locally defined resource (e.g., a bom-ref) or an externally accessible resource.
2622
2216
  """
@@ -2629,16 +2223,16 @@ class ResourceReferenceChoice2(CycloneDXBaseModel):
2629
2223
  Field(description="References an object by its bom-ref attribute", title="BOM Reference"),
2630
2224
  ] = None
2631
2225
  externalReference: Annotated[
2632
- ExternalReference,
2226
+ Optional[ExternalReference],
2633
2227
  Field(description="Reference to an externally accessible resource.", title="External reference"),
2634
- ]
2228
+ ] = None
2635
2229
 
2636
2230
 
2637
2231
  class Signer(CycloneDXBaseModel):
2638
2232
  class Config:
2639
2233
  extra = Extra.forbid
2640
2234
 
2641
- algorithm: Union[Algorithm, AnyUrl]
2235
+ algorithm: Union[AlgorithmEnum, AnyUrl]
2642
2236
  keyId: Annotated[
2643
2237
  Optional[str],
2644
2238
  Field(description="Optional. Application specific string identifying the signature key.", title="Key ID"),
@@ -2735,21 +2329,21 @@ class DataGovernance(CycloneDXBaseModel):
2735
2329
  extra = Extra.forbid
2736
2330
 
2737
2331
  custodians: Annotated[
2738
- Optional[List[Union[DataGovernanceResponsibleParty1, DataGovernanceResponsibleParty2]]],
2332
+ Optional[List[DataGovernanceResponsibleParty]],
2739
2333
  Field(
2740
2334
  description="Data custodians are responsible for the safe custody, transport, and storage of data.",
2741
2335
  title="Data Custodians",
2742
2336
  ),
2743
2337
  ] = None
2744
2338
  stewards: Annotated[
2745
- Optional[List[Union[DataGovernanceResponsibleParty1, DataGovernanceResponsibleParty2]]],
2339
+ Optional[List[DataGovernanceResponsibleParty]],
2746
2340
  Field(
2747
2341
  description="Data stewards are responsible for data content, context, and associated business rules.",
2748
2342
  title="Data Stewards",
2749
2343
  ),
2750
2344
  ] = None
2751
2345
  owners: Annotated[
2752
- Optional[List[Union[DataGovernanceResponsibleParty1, DataGovernanceResponsibleParty2]]],
2346
+ Optional[List[DataGovernanceResponsibleParty]],
2753
2347
  Field(description="Data owners are concerned with risk and appropriate access to data.", title="Data Owners"),
2754
2348
  ] = None
2755
2349
 
@@ -2796,7 +2390,7 @@ class Workspace(CycloneDXBaseModel):
2796
2390
  Optional[str], Field(description="A description of the resource instance.", title="Description")
2797
2391
  ] = None
2798
2392
  resourceReferences: Annotated[
2799
- Optional[List[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]]],
2393
+ Optional[List[ResourceReferenceChoice]],
2800
2394
  Field(
2801
2395
  description="References to component or service resources that are used to realize the resource instance.",
2802
2396
  title="Resource references",
@@ -2832,233 +2426,50 @@ class Workspace(CycloneDXBaseModel):
2832
2426
  Optional[str],
2833
2427
  Field(
2834
2428
  description="Identifies the reference to the request for a specific volume type and parameters.",
2835
- examples=["a kubernetes Persistent Volume Claim (PVC) name"],
2836
- title="Volume request",
2837
- ),
2838
- ] = None
2839
- volume: Annotated[
2840
- Optional[Volume],
2841
- Field(
2842
- description="Information about the actual volume instance allocated to the workspace.",
2843
- examples=["see https://kubernetes.io/docs/concepts/storage/persistent-volumes/"],
2844
- title="Volume",
2845
- ),
2846
- ] = None
2847
- properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
2848
-
2849
-
2850
- class Event(CycloneDXBaseModel):
2851
- """
2852
- Represents something that happened that may trigger a response.
2853
- """
2854
-
2855
- class Config:
2856
- extra = Extra.forbid
2857
-
2858
- uid: Annotated[
2859
- Optional[str], Field(description="The unique identifier of the event.", title="Unique Identifier (UID)")
2860
- ] = None
2861
- description: Annotated[Optional[str], Field(description="A description of the event.", title="Description")] = None
2862
- timeReceived: Annotated[
2863
- Optional[datetime],
2864
- Field(description="The date and time (timestamp) when the event was received.", title="Time Received"),
2865
- ] = None
2866
- data: Annotated[Optional[Attachment], Field(description="Encoding of the raw event data.", title="Data")] = None
2867
- source: Annotated[
2868
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2869
- Field(description="References the component or service that was the source of the event", title="Source"),
2870
- ] = None
2871
- target: Annotated[
2872
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2873
- Field(description="References the component or service that was the target of the event", title="Target"),
2874
- ] = None
2875
- properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
2876
-
2877
-
2878
- class InputType1(CycloneDXBaseModel):
2879
- """
2880
- Type that represents various input data types and formats.
2881
- """
2882
-
2883
- class Config:
2884
- extra = Extra.forbid
2885
-
2886
- source: Annotated[
2887
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2888
- Field(
2889
- description=(
2890
- "A references to the component or service that provided the input to the task (e.g., reference to a"
2891
- " service with data flow value of `inbound`)"
2892
- ),
2893
- examples=["source code repository", "database"],
2894
- title="Source",
2895
- ),
2896
- ] = None
2897
- target: Annotated[
2898
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2899
- Field(
2900
- description=(
2901
- "A reference to the component or service that received or stored the input if not the task itself"
2902
- " (e.g., a local, named storage workspace)"
2903
- ),
2904
- examples=["workspace", "directory"],
2905
- title="Target",
2906
- ),
2907
- ] = None
2908
- resource: Annotated[
2909
- Union[ResourceReferenceChoice1, ResourceReferenceChoice2],
2910
- Field(
2911
- description=(
2912
- "A reference to an independent resource provided as an input to a task by the workflow runtime."
2913
- ),
2914
- examples=[
2915
- "reference to a configuration file in a repository (i.e., a bom-ref)",
2916
- "reference to a scanning service used in a task (i.e., a bom-ref)",
2917
- ],
2918
- title="Resource",
2919
- ),
2920
- ]
2921
- parameters: Annotated[
2922
- Optional[List[Parameter]],
2923
- Field(
2924
- description="Inputs that have the form of parameters with names and values.",
2925
- title="Parameters",
2926
- ),
2927
- ] = None
2928
- environmentVars: Annotated[
2929
- Optional[List[Union[Property, str]]],
2930
- Field(
2931
- description="Inputs that have the form of parameters with names and values.",
2932
- title="Environment variables",
2933
- ),
2934
- ] = None
2935
- data: Annotated[Optional[Attachment], Field(description="Inputs that have the form of data.", title="Data")] = None
2936
- properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
2937
-
2938
-
2939
- class InputType2(CycloneDXBaseModel):
2940
- """
2941
- Type that represents various input data types and formats.
2942
- """
2943
-
2944
- class Config:
2945
- extra = Extra.forbid
2946
-
2947
- source: Annotated[
2948
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2949
- Field(
2950
- description=(
2951
- "A references to the component or service that provided the input to the task (e.g., reference to a"
2952
- " service with data flow value of `inbound`)"
2953
- ),
2954
- examples=["source code repository", "database"],
2955
- title="Source",
2956
- ),
2957
- ] = None
2958
- target: Annotated[
2959
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2960
- Field(
2961
- description=(
2962
- "A reference to the component or service that received or stored the input if not the task itself"
2963
- " (e.g., a local, named storage workspace)"
2964
- ),
2965
- examples=["workspace", "directory"],
2966
- title="Target",
2967
- ),
2968
- ] = None
2969
- resource: Annotated[
2970
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2971
- Field(
2972
- description=(
2973
- "A reference to an independent resource provided as an input to a task by the workflow runtime."
2974
- ),
2975
- examples=[
2976
- "reference to a configuration file in a repository (i.e., a bom-ref)",
2977
- "reference to a scanning service used in a task (i.e., a bom-ref)",
2978
- ],
2979
- title="Resource",
2980
- ),
2981
- ] = None
2982
- parameters: Annotated[
2983
- List[Parameter],
2984
- Field(
2985
- description="Inputs that have the form of parameters with names and values.",
2986
- title="Parameters",
2987
- ),
2988
- ]
2989
- environmentVars: Annotated[
2990
- Optional[List[Union[Property, str]]],
2991
- Field(
2992
- description="Inputs that have the form of parameters with names and values.",
2993
- title="Environment variables",
2994
- ),
2995
- ] = None
2996
- data: Annotated[Optional[Attachment], Field(description="Inputs that have the form of data.", title="Data")] = None
2997
- properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
2998
-
2999
-
3000
- class InputType3(CycloneDXBaseModel):
3001
- """
3002
- Type that represents various input data types and formats.
3003
- """
3004
-
3005
- class Config:
3006
- extra = Extra.forbid
3007
-
3008
- source: Annotated[
3009
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3010
- Field(
3011
- description=(
3012
- "A references to the component or service that provided the input to the task (e.g., reference to a"
3013
- " service with data flow value of `inbound`)"
3014
- ),
3015
- examples=["source code repository", "database"],
3016
- title="Source",
3017
- ),
3018
- ] = None
3019
- target: Annotated[
3020
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3021
- Field(
3022
- description=(
3023
- "A reference to the component or service that received or stored the input if not the task itself"
3024
- " (e.g., a local, named storage workspace)"
3025
- ),
3026
- examples=["workspace", "directory"],
3027
- title="Target",
3028
- ),
3029
- ] = None
3030
- resource: Annotated[
3031
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3032
- Field(
3033
- description=(
3034
- "A reference to an independent resource provided as an input to a task by the workflow runtime."
3035
- ),
3036
- examples=[
3037
- "reference to a configuration file in a repository (i.e., a bom-ref)",
3038
- "reference to a scanning service used in a task (i.e., a bom-ref)",
3039
- ],
3040
- title="Resource",
3041
- ),
3042
- ] = None
3043
- parameters: Annotated[
3044
- Optional[List[Parameter]],
3045
- Field(
3046
- description="Inputs that have the form of parameters with names and values.",
3047
- title="Parameters",
2429
+ examples=["a kubernetes Persistent Volume Claim (PVC) name"],
2430
+ title="Volume request",
3048
2431
  ),
3049
2432
  ] = None
3050
- environmentVars: Annotated[
3051
- List[Union[Property, str]],
2433
+ volume: Annotated[
2434
+ Optional[Volume],
3052
2435
  Field(
3053
- description="Inputs that have the form of parameters with names and values.",
3054
- title="Environment variables",
2436
+ description="Information about the actual volume instance allocated to the workspace.",
2437
+ examples=["see https://kubernetes.io/docs/concepts/storage/persistent-volumes/"],
2438
+ title="Volume",
3055
2439
  ),
3056
- ]
3057
- data: Annotated[Optional[Attachment], Field(description="Inputs that have the form of data.", title="Data")] = None
2440
+ ] = None
2441
+ properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
2442
+
2443
+
2444
+ class Event(CycloneDXBaseModel):
2445
+ """
2446
+ Represents something that happened that may trigger a response.
2447
+ """
2448
+
2449
+ class Config:
2450
+ extra = Extra.forbid
2451
+
2452
+ uid: Annotated[
2453
+ Optional[str], Field(description="The unique identifier of the event.", title="Unique Identifier (UID)")
2454
+ ] = None
2455
+ description: Annotated[Optional[str], Field(description="A description of the event.", title="Description")] = None
2456
+ timeReceived: Annotated[
2457
+ Optional[datetime],
2458
+ Field(description="The date and time (timestamp) when the event was received.", title="Time Received"),
2459
+ ] = None
2460
+ data: Annotated[Optional[Attachment], Field(description="Encoding of the raw event data.", title="Data")] = None
2461
+ source: Annotated[
2462
+ Optional[ResourceReferenceChoice],
2463
+ Field(description="References the component or service that was the source of the event", title="Source"),
2464
+ ] = None
2465
+ target: Annotated[
2466
+ Optional[ResourceReferenceChoice],
2467
+ Field(description="References the component or service that was the target of the event", title="Target"),
2468
+ ] = None
3058
2469
  properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
3059
2470
 
3060
2471
 
3061
- class InputType4(CycloneDXBaseModel):
2472
+ class InputType(CycloneDXBaseModel):
3062
2473
  """
3063
2474
  Type that represents various input data types and formats.
3064
2475
  """
@@ -3067,7 +2478,7 @@ class InputType4(CycloneDXBaseModel):
3067
2478
  extra = Extra.forbid
3068
2479
 
3069
2480
  source: Annotated[
3070
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2481
+ Optional[ResourceReferenceChoice],
3071
2482
  Field(
3072
2483
  description=(
3073
2484
  "A references to the component or service that provided the input to the task (e.g., reference to a"
@@ -3078,7 +2489,7 @@ class InputType4(CycloneDXBaseModel):
3078
2489
  ),
3079
2490
  ] = None
3080
2491
  target: Annotated[
3081
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2492
+ Optional[ResourceReferenceChoice],
3082
2493
  Field(
3083
2494
  description=(
3084
2495
  "A reference to the component or service that received or stored the input if not the task itself"
@@ -3089,7 +2500,7 @@ class InputType4(CycloneDXBaseModel):
3089
2500
  ),
3090
2501
  ] = None
3091
2502
  resource: Annotated[
3092
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2503
+ Optional[ResourceReferenceChoice],
3093
2504
  Field(
3094
2505
  description=(
3095
2506
  "A reference to an independent resource provided as an input to a task by the workflow runtime."
@@ -3115,66 +2526,24 @@ class InputType4(CycloneDXBaseModel):
3115
2526
  title="Environment variables",
3116
2527
  ),
3117
2528
  ] = None
3118
- data: Annotated[Attachment, Field(description="Inputs that have the form of data.", title="Data")]
3119
- properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
3120
-
3121
-
3122
- class OutputType1(CycloneDXBaseModel):
3123
- class Config:
3124
- extra = Extra.forbid
3125
-
3126
- type: Annotated[Optional[Type7], Field(description="Describes the type of data output.", title="Type")] = None
3127
- source: Annotated[
3128
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3129
- Field(
3130
- description="Component or service that generated or provided the output from the task (e.g., a build tool)",
3131
- title="Source",
3132
- ),
3133
- ] = None
3134
- target: Annotated[
3135
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3136
- Field(
3137
- description=(
3138
- "Component or service that received the output from the task (e.g., reference to an artifactory service"
3139
- " with data flow value of `outbound`)"
3140
- ),
3141
- examples=["a log file described as an `externalReference` within its target domain."],
3142
- title="Target",
3143
- ),
3144
- ] = None
3145
- resource: Annotated[
3146
- Union[ResourceReferenceChoice1, ResourceReferenceChoice2],
3147
- Field(
3148
- description="A reference to an independent resource generated as output by the task.",
3149
- examples=["configuration file", "source code", "scanning service"],
3150
- title="Resource",
3151
- ),
3152
- ]
3153
- data: Annotated[Optional[Attachment], Field(description="Outputs that have the form of data.", title="Data")] = None
3154
- environmentVars: Annotated[
3155
- Optional[List[Union[Property, str]]],
3156
- Field(
3157
- description="Outputs that have the form of environment variables.",
3158
- title="Environment variables",
3159
- ),
3160
- ] = None
2529
+ data: Annotated[Optional[Attachment], Field(description="Inputs that have the form of data.", title="Data")] = None
3161
2530
  properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
3162
2531
 
3163
2532
 
3164
- class OutputType2(CycloneDXBaseModel):
2533
+ class OutputType(CycloneDXBaseModel):
3165
2534
  class Config:
3166
2535
  extra = Extra.forbid
3167
2536
 
3168
2537
  type: Annotated[Optional[Type7], Field(description="Describes the type of data output.", title="Type")] = None
3169
2538
  source: Annotated[
3170
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2539
+ Optional[ResourceReferenceChoice],
3171
2540
  Field(
3172
2541
  description="Component or service that generated or provided the output from the task (e.g., a build tool)",
3173
2542
  title="Source",
3174
2543
  ),
3175
2544
  ] = None
3176
2545
  target: Annotated[
3177
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2546
+ Optional[ResourceReferenceChoice],
3178
2547
  Field(
3179
2548
  description=(
3180
2549
  "Component or service that received the output from the task (e.g., reference to an artifactory service"
@@ -3185,7 +2554,7 @@ class OutputType2(CycloneDXBaseModel):
3185
2554
  ),
3186
2555
  ] = None
3187
2556
  resource: Annotated[
3188
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
2557
+ Optional[ResourceReferenceChoice],
3189
2558
  Field(
3190
2559
  description="A reference to an independent resource generated as output by the task.",
3191
2560
  examples=["configuration file", "source code", "scanning service"],
@@ -3193,48 +2562,6 @@ class OutputType2(CycloneDXBaseModel):
3193
2562
  ),
3194
2563
  ] = None
3195
2564
  data: Annotated[Optional[Attachment], Field(description="Outputs that have the form of data.", title="Data")] = None
3196
- environmentVars: Annotated[
3197
- List[Union[Property, str]],
3198
- Field(
3199
- description="Outputs that have the form of environment variables.",
3200
- title="Environment variables",
3201
- ),
3202
- ]
3203
- properties: Annotated[Optional[List[Property]], Field(title="Properties")] = None
3204
-
3205
-
3206
- class OutputType3(CycloneDXBaseModel):
3207
- class Config:
3208
- extra = Extra.forbid
3209
-
3210
- type: Annotated[Optional[Type7], Field(description="Describes the type of data output.", title="Type")] = None
3211
- source: Annotated[
3212
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3213
- Field(
3214
- description="Component or service that generated or provided the output from the task (e.g., a build tool)",
3215
- title="Source",
3216
- ),
3217
- ] = None
3218
- target: Annotated[
3219
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3220
- Field(
3221
- description=(
3222
- "Component or service that received the output from the task (e.g., reference to an artifactory service"
3223
- " with data flow value of `outbound`)"
3224
- ),
3225
- examples=["a log file described as an `externalReference` within its target domain."],
3226
- title="Target",
3227
- ),
3228
- ] = None
3229
- resource: Annotated[
3230
- Optional[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]],
3231
- Field(
3232
- description="A reference to an independent resource generated as output by the task.",
3233
- examples=["configuration file", "source code", "scanning service"],
3234
- title="Resource",
3235
- ),
3236
- ] = None
3237
- data: Annotated[Attachment, Field(description="Outputs that have the form of data.", title="Data")]
3238
2565
  environmentVars: Annotated[
3239
2566
  Optional[List[Union[Property, str]]],
3240
2567
  Field(
@@ -3411,7 +2738,7 @@ class Trigger(CycloneDXBaseModel):
3411
2738
  Optional[str], Field(description="A description of the resource instance.", title="Description")
3412
2739
  ] = None
3413
2740
  resourceReferences: Annotated[
3414
- Optional[List[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]]],
2741
+ Optional[List[ResourceReferenceChoice]],
3415
2742
  Field(
3416
2743
  description="References to component or service resources that are used to realize the resource instance.",
3417
2744
  title="Resource references",
@@ -3430,7 +2757,7 @@ class Trigger(CycloneDXBaseModel):
3430
2757
  Field(description="The date and time (timestamp) when the trigger was activated.", title="Time activated"),
3431
2758
  ] = None
3432
2759
  inputs: Annotated[
3433
- Optional[List[Union[InputType1, InputType2, InputType3, InputType4]]],
2760
+ Optional[List[InputType]],
3434
2761
  Field(
3435
2762
  description="Represents resources and data brought into a task at runtime by executor or task commands",
3436
2763
  examples=["a `configuration` file which was declared as a local `component` or `externalReference`"],
@@ -3438,7 +2765,7 @@ class Trigger(CycloneDXBaseModel):
3438
2765
  ),
3439
2766
  ] = None
3440
2767
  outputs: Annotated[
3441
- Optional[List[Union[OutputType1, OutputType2, OutputType3]]],
2768
+ Optional[List[OutputType]],
3442
2769
  Field(
3443
2770
  description="Represents resources and data output from a task at runtime by executor or task commands",
3444
2771
  examples=["a log file or metrics data produced by the task"],
@@ -3685,6 +3012,52 @@ class Compositions(CycloneDXBaseModel):
3685
3012
  ] = None
3686
3013
 
3687
3014
 
3015
+ class Annotations(CycloneDXBaseModel):
3016
+ """
3017
+ A comment, note, explanation, or similar textual content which provides additional context to the object(s) being annotated.
3018
+ """
3019
+
3020
+ class Config:
3021
+ extra = Extra.forbid
3022
+
3023
+ bom_ref: Annotated[
3024
+ Optional[str],
3025
+ Field(
3026
+ alias="bom-ref",
3027
+ description=(
3028
+ "An optional identifier which can be used to reference the annotation elsewhere in the BOM. Every"
3029
+ " bom-ref MUST be unique within the BOM."
3030
+ ),
3031
+ min_length=1,
3032
+ title="BOM Reference",
3033
+ ),
3034
+ ] = None
3035
+ subjects: Annotated[
3036
+ List[Union[RefLinkType, BomLinkElementType]],
3037
+ Field(
3038
+ description=(
3039
+ "The object in the BOM identified by its bom-ref. This is often a component or service, but may be any"
3040
+ " object type supporting bom-refs."
3041
+ ),
3042
+ title="BOM References",
3043
+ ),
3044
+ ]
3045
+ timestamp: Annotated[
3046
+ datetime, Field(description="The date and time (timestamp) when the annotation was created.", title="Timestamp")
3047
+ ]
3048
+ text: Annotated[str, Field(description="The textual content of the annotation.", title="Text")]
3049
+ signature: Annotated[
3050
+ Optional[Union[Signature1, Signature2, Signer]],
3051
+ Field(
3052
+ description=(
3053
+ "Enveloped signature in [JSON Signature Format"
3054
+ " (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
3055
+ ),
3056
+ title="Signature",
3057
+ ),
3058
+ ] = None
3059
+
3060
+
3688
3061
  class ModelParameters(CycloneDXBaseModel):
3689
3062
  """
3690
3063
  Hyper-parameters for construction of the model.
@@ -3725,7 +3098,7 @@ class ModelParameters(CycloneDXBaseModel):
3725
3098
  ),
3726
3099
  ] = None
3727
3100
  datasets: Annotated[
3728
- Optional[List[Union[ComponentData, Datasets]]],
3101
+ Optional[List[Union[ComponentData, Dataset]]],
3729
3102
  Field(description="The datasets used to train and evaluate the model.", title="Datasets"),
3730
3103
  ] = None
3731
3104
  inputs: Annotated[
@@ -3823,7 +3196,7 @@ class Task(CycloneDXBaseModel):
3823
3196
  Optional[str], Field(description="A description of the resource instance.", title="Description")
3824
3197
  ] = None
3825
3198
  resourceReferences: Annotated[
3826
- Optional[List[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]]],
3199
+ Optional[List[ResourceReferenceChoice]],
3827
3200
  Field(
3828
3201
  description="References to component or service resources that are used to realize the resource instance.",
3829
3202
  title="Resource references",
@@ -3846,7 +3219,7 @@ class Task(CycloneDXBaseModel):
3846
3219
  ),
3847
3220
  ] = None
3848
3221
  inputs: Annotated[
3849
- Optional[List[Union[InputType1, InputType2, InputType3, InputType4]]],
3222
+ Optional[List[InputType]],
3850
3223
  Field(
3851
3224
  description="Represents resources and data brought into a task at runtime by executor or task commands",
3852
3225
  examples=["a `configuration` file which was declared as a local `component` or `externalReference`"],
@@ -3854,7 +3227,7 @@ class Task(CycloneDXBaseModel):
3854
3227
  ),
3855
3228
  ] = None
3856
3229
  outputs: Annotated[
3857
- Optional[List[Union[OutputType1, OutputType2, OutputType3]]],
3230
+ Optional[List[OutputType]],
3858
3231
  Field(
3859
3232
  description="Represents resources and data output from a task at runtime by executor or task commands",
3860
3233
  examples=["a log file or metrics data produced by the task"],
@@ -3917,7 +3290,7 @@ class Workflow(CycloneDXBaseModel):
3917
3290
  Optional[str], Field(description="A description of the resource instance.", title="Description")
3918
3291
  ] = None
3919
3292
  resourceReferences: Annotated[
3920
- Optional[List[Union[ResourceReferenceChoice1, ResourceReferenceChoice2]]],
3293
+ Optional[List[ResourceReferenceChoice]],
3921
3294
  Field(
3922
3295
  description="References to component or service resources that are used to realize the resource instance.",
3923
3296
  title="Resource references",
@@ -3954,7 +3327,7 @@ class Workflow(CycloneDXBaseModel):
3954
3327
  ),
3955
3328
  ] = None
3956
3329
  inputs: Annotated[
3957
- Optional[List[Union[InputType1, InputType2, InputType3, InputType4]]],
3330
+ Optional[List[InputType]],
3958
3331
  Field(
3959
3332
  description="Represents resources and data brought into a task at runtime by executor or task commands",
3960
3333
  examples=["a `configuration` file which was declared as a local `component` or `externalReference`"],
@@ -3962,7 +3335,7 @@ class Workflow(CycloneDXBaseModel):
3962
3335
  ),
3963
3336
  ] = None
3964
3337
  outputs: Annotated[
3965
- Optional[List[Union[OutputType1, OutputType2, OutputType3]]],
3338
+ Optional[List[OutputType]],
3966
3339
  Field(
3967
3340
  description="Represents resources and data output from a task at runtime by executor or task commands",
3968
3341
  examples=["a log file or metrics data produced by the task"],
@@ -4148,7 +3521,7 @@ class CyclonedxSoftwareBillOfMaterialsStandard(CycloneDXBaseModel):
4148
3521
  ] = None
4149
3522
 
4150
3523
 
4151
- class Tools(CycloneDXBaseModel):
3524
+ class ToolModel(CycloneDXBaseModel):
4152
3525
  """
4153
3526
  The tool(s) used in the creation of the BOM.
4154
3527
  """
@@ -4184,9 +3557,9 @@ class Metadata(CycloneDXBaseModel):
4184
3557
  Field(description="The date and time (timestamp) when the BOM was created.", title="Timestamp"),
4185
3558
  ] = None
4186
3559
  lifecycles: Annotated[
4187
- Optional[List[Union[Lifecycles, Lifecycles1]]], Field(description="", title="Lifecycles")
3560
+ Optional[List[Union[Lifecycle, Lifecycle1]]], Field(description="", title="Lifecycles")
4188
3561
  ] = None
4189
- tools: Optional[Union[Tools, List[Tool]]] = None
3562
+ tools: Optional[Union[ToolModel, List[Tool]]] = None
4190
3563
  authors: Annotated[
4191
3564
  Optional[List[OrganizationalContact]],
4192
3565
  Field(
@@ -4609,7 +3982,7 @@ class Component(CycloneDXBaseModel):
4609
3982
  ] = None
4610
3983
 
4611
3984
 
4612
- class Tools1(CycloneDXBaseModel):
3985
+ class Tool1(CycloneDXBaseModel):
4613
3986
  """
4614
3987
  The tool(s) used to identify, confirm, or score the vulnerability.
4615
3988
  """
@@ -4683,14 +4056,13 @@ class Vulnerability(CycloneDXBaseModel):
4683
4056
  Optional[List[Rating]], Field(description="List of vulnerability ratings", title="Ratings")
4684
4057
  ] = None
4685
4058
  cwes: Annotated[
4686
- Optional[List[int]],
4059
+ Optional[List[Cwe]],
4687
4060
  Field(
4688
4061
  description=(
4689
4062
  "List of Common Weaknesses Enumerations (CWEs) codes that describes this vulnerability. For example 399"
4690
4063
  " (of https://cwe.mitre.org/data/definitions/399.html)"
4691
4064
  ),
4692
4065
  examples=[399],
4693
- ge=1,
4694
4066
  title="CWEs",
4695
4067
  ),
4696
4068
  ] = None
@@ -4769,7 +4141,7 @@ class Vulnerability(CycloneDXBaseModel):
4769
4141
  title="Credits",
4770
4142
  ),
4771
4143
  ] = None
4772
- tools: Optional[Union[Tools1, List[Tool]]] = None
4144
+ tools: Optional[Union[Tool1, List[Tool]]] = None
4773
4145
  analysis: Annotated[
4774
4146
  Optional[Analysis],
4775
4147
  Field(
@@ -4799,135 +4171,6 @@ class Vulnerability(CycloneDXBaseModel):
4799
4171
  ] = None
4800
4172
 
4801
4173
 
4802
- class Annotator(CycloneDXBaseModel):
4803
- """
4804
- The organization, person, component, or service which created the textual content of the annotation.
4805
- """
4806
-
4807
- class Config:
4808
- extra = Extra.forbid
4809
-
4810
- organization: Annotated[OrganizationalEntity, Field(description="The organization that created the annotation")]
4811
- individual: Annotated[
4812
- Optional[OrganizationalContact], Field(description="The person that created the annotation")
4813
- ] = None
4814
- component: Annotated[
4815
- Optional[Component], Field(description="The tool or component that created the annotation")
4816
- ] = None
4817
- service: Annotated[Optional[Service], Field(description="The service that created the annotation")] = None
4818
-
4819
-
4820
- class Annotator1(CycloneDXBaseModel):
4821
- """
4822
- The organization, person, component, or service which created the textual content of the annotation.
4823
- """
4824
-
4825
- class Config:
4826
- extra = Extra.forbid
4827
-
4828
- organization: Annotated[
4829
- Optional[OrganizationalEntity], Field(description="The organization that created the annotation")
4830
- ] = None
4831
- individual: Annotated[OrganizationalContact, Field(description="The person that created the annotation")]
4832
- component: Annotated[
4833
- Optional[Component], Field(description="The tool or component that created the annotation")
4834
- ] = None
4835
- service: Annotated[Optional[Service], Field(description="The service that created the annotation")] = None
4836
-
4837
-
4838
- class Annotator2(CycloneDXBaseModel):
4839
- """
4840
- The organization, person, component, or service which created the textual content of the annotation.
4841
- """
4842
-
4843
- class Config:
4844
- extra = Extra.forbid
4845
-
4846
- organization: Annotated[
4847
- Optional[OrganizationalEntity], Field(description="The organization that created the annotation")
4848
- ] = None
4849
- individual: Annotated[
4850
- Optional[OrganizationalContact], Field(description="The person that created the annotation")
4851
- ] = None
4852
- component: Annotated[Component, Field(description="The tool or component that created the annotation")]
4853
- service: Annotated[Optional[Service], Field(description="The service that created the annotation")] = None
4854
-
4855
-
4856
- class Annotator3(CycloneDXBaseModel):
4857
- """
4858
- The organization, person, component, or service which created the textual content of the annotation.
4859
- """
4860
-
4861
- class Config:
4862
- extra = Extra.forbid
4863
-
4864
- organization: Annotated[
4865
- Optional[OrganizationalEntity], Field(description="The organization that created the annotation")
4866
- ] = None
4867
- individual: Annotated[
4868
- Optional[OrganizationalContact], Field(description="The person that created the annotation")
4869
- ] = None
4870
- component: Annotated[
4871
- Optional[Component], Field(description="The tool or component that created the annotation")
4872
- ] = None
4873
- service: Annotated[Service, Field(description="The service that created the annotation")]
4874
-
4875
-
4876
- class Annotations(CycloneDXBaseModel):
4877
- """
4878
- A comment, note, explanation, or similar textual content which provides additional context to the object(s) being annotated.
4879
- """
4880
-
4881
- class Config:
4882
- extra = Extra.forbid
4883
-
4884
- bom_ref: Annotated[
4885
- Optional[str],
4886
- Field(
4887
- alias="bom-ref",
4888
- description=(
4889
- "An optional identifier which can be used to reference the annotation elsewhere in the BOM. Every"
4890
- " bom-ref MUST be unique within the BOM."
4891
- ),
4892
- min_length=1,
4893
- title="BOM Reference",
4894
- ),
4895
- ] = None
4896
- subjects: Annotated[
4897
- List[Union[RefLinkType, BomLinkElementType]],
4898
- Field(
4899
- description=(
4900
- "The object in the BOM identified by its bom-ref. This is often a component or service, but may be any"
4901
- " object type supporting bom-refs."
4902
- ),
4903
- title="BOM References",
4904
- ),
4905
- ]
4906
- annotator: Annotated[
4907
- Union[Annotator, Annotator1, Annotator2, Annotator3],
4908
- Field(
4909
- description=(
4910
- "The organization, person, component, or service which created the textual content of the annotation."
4911
- ),
4912
- title="Annotator",
4913
- ),
4914
- ]
4915
- timestamp: Annotated[
4916
- datetime, Field(description="The date and time (timestamp) when the annotation was created.", title="Timestamp")
4917
- ]
4918
- text: Annotated[str, Field(description="The textual content of the annotation.", title="Text")]
4919
- signature: Annotated[
4920
- Optional[Union[Signature1, Signature2, Signer]],
4921
- Field(
4922
- description=(
4923
- "Enveloped signature in [JSON Signature Format"
4924
- " (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
4925
- ),
4926
- title="Signature",
4927
- ),
4928
- ] = None
4929
-
4930
-
4931
4174
  class Formula(CycloneDXBaseModel):
4932
4175
  """
4933
4176
  Describes workflows and resources that captures rules and other aspects of how the associated BOM component or service was formed.
@@ -4981,6 +4224,6 @@ class Formula(CycloneDXBaseModel):
4981
4224
 
4982
4225
  Service.update_forward_refs()
4983
4226
  CyclonedxSoftwareBillOfMaterialsStandard.update_forward_refs()
4984
- Tools.update_forward_refs()
4227
+ ToolModel.update_forward_refs()
4985
4228
  Metadata.update_forward_refs()
4986
4229
  Pedigree.update_forward_refs()