This document is under active development and has not been finalised.
Skip to content

2.2 Format Specification

CycloneDX JSON

We use CycloneDX as the primary SBOM format. CycloneDX is an OWASP standard and fulfils the CRA requirement for a "commonly used and machine-readable format" (Art. 13(23)).

Why CycloneDX

CriterionCycloneDXSPDX
Primary focusSecurity & complianceLicences & IP
Vulnerability trackingNative (VEX)Via extensions
Tool supportTrivy, Syft, GrypeTrivy, Syft
OWASP standardYesNo (Linux Foundation)
CRA-compliantYesYes
ComplexityLowerHigher

Structure

A CycloneDX SBOM contains the following main elements:

json
{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "serialNumber": "urn:uuid:<unique-id>",
  "version": 1,
  "metadata": {
    "timestamp": "2026-02-08T12:00:00Z",
    "tools": {
      "components": [
        {
          "type": "application",
          "name": "trivy",
          "version": "0.58.0"
        }
      ]
    },
    "component": {
      "type": "application",
      "name": "product-name",
      "version": "1.2.3",
      "supplier": {
        "name": "BAUER GROUP"
      }
    }
  },
  "components": [
    {
      "type": "library",
      "name": "example-package",
      "version": "4.1.0",
      "purl": "pkg:npm/example-package@4.1.0",
      "licenses": [
        {
          "license": {
            "id": "MIT"
          }
        }
      ],
      "hashes": [
        {
          "alg": "SHA-256",
          "content": "abc123..."
        }
      ]
    }
  ],
  "dependencies": [
    {
      "ref": "product-name",
      "dependsOn": ["example-package"]
    }
  ]
}

Required Fields

FieldCRA RelevanceDescription
bomFormatFormat identificationMust be CycloneDX
specVersionStandard conformityAt least 1.5
serialNumberUniquenessUUID for each SBOM instance
metadata.timestampTraceabilityGeneration timestamp
metadata.componentProduct identificationProduct name and version
metadata.component.supplierManufacturer identificationBAUER GROUP
components[].nameComponent identificationPackage/library name
components[].versionVersion trackingExact version
components[].purlUnique referencePackage URL (recommended)

File Naming Convention

sbom-<product>-<version>.cdx.json

Examples:
sbom-api-gateway-v2.1.0.cdx.json
sbom-firmware-esp32-v1.3.2.cdx.json
sbom-web-frontend-v4.0.1.cdx.json

SBOM Versioning

Each new version of a product receives its own SBOM. The SBOM version (version field) is incremented with each regeneration for the same product version (e.g., when correcting the SBOM itself).

SPDX (Secondary Format)

SPDX is supported as a secondary format, primarily for scenarios in which business partners or regulators explicitly request SPDX.

bash
# SPDX generation
trivy image --format spdx-json --output sbom.spdx.json <image>:<tag>

Documentation licensed under CC BY-NC 4.0 · Code licensed under MIT