Skip to content

purlbatch fails for valid Go PURLs but versionbatch works#299

Description

@roi-orca

Hi deps.dev team 馃憢

I鈥檝e run into an inconsistency between the purlbatch endpoint and the versionbatch endpoint.


Problem

When querying a valid Go module version via purlbatch, I get nothing.

Failing request (purlbatch):

curl -X POST 'https://api.deps.dev/v3alpha/purlbatch' \
  -H 'Content-Type: application/json' \
  -d '{
    "requests": [
      {"purl": "pkg:golang/github.com/cyclonedx/cyclonedx-go@v0.9.2"}
    ]
  }'

Response:

{
    "responses": [
        {
            "request": {
                "purl": "pkg:golang/github.com/cyclonedx/cyclonedx-go@v0.9.2"
            }
        }
    ],
    "nextPageToken": ""
}

Expected behavior

The above purlbatch call should return metadata for cyclonedx-go v0.9.2, which exists in deps.dev.


Actual behavior

purlbatch returns nothing, but the same package works with versionbatch.

Working request (versionbatch):

curl -X POST 'https://api.deps.dev/v3alpha/versionbatch' \
  -H 'Content-Type: application/json' \
  -d '{
    "requests":[
      {
        "versionKey":{
          "system":"GO",
          "name":"github.com/CycloneDX/cyclonedx-go",
          "version":"v0.9.2"
        }
      }
    ]
  }'

Response:

{
    "responses": [
        {
            "request": {
                "versionKey": {
                    "system": "GO",
                    "name": "github.com/CycloneDX/cyclonedx-go",
                    "version": "v0.9.2"
                }
            },
            "version": {
                "versionKey": {
                    "system": "GO",
                    "name": "github.com/CycloneDX/cyclonedx-go",
                    "version": "v0.9.2"
                },
                "purl": "pkg:golang/github.com/cyclonedx/cyclonedx-go@v0.9.2",
                "publishedAt": "2024-12-13T14:41:43Z",
                "isDefault": true,
                "isDeprecated": false,
                "licenses": [
                    "Apache-2.0"
                ],
                "licenseDetails": [
                    {
                        "license": "Apache-2.0",
                        "spdx": "Apache-2.0"
                    }
                ],
                "advisoryKeys": [],
                "links": [
                    {
                        "label": "SOURCE_REPO",
                        "url": "https://github.com/CycloneDX/cyclonedx-go"
                    }
                ],
                "slsaProvenances": [],
                "attestations": [],
                "registries": [],
                "relatedProjects": [
                    {
                        "projectKey": {
                            "id": "github.com/cyclonedx/cyclonedx-go"
                        },
                        "relationProvenance": "GO_ORIGIN",
                        "relationType": "SOURCE_REPO"
                    }
                ],
                "upstreamIdentifiers": [
                    {
                        "packageName": "github.com/CycloneDX/cyclonedx-go",
                        "versionString": "v0.9.2",
                        "source": "GO_MODULE_PROXY"
                    }
                ]
            }
        }
    ],
    "nextPageToken": ""
}

Observations

  • The package does exist in BigQuery with PURL:

    pkg:golang/github.com/cyclonedx/cyclonedx-go@v0.9.2
    
  • versionbatch resolves correctly with canonical module name (github.com/CycloneDX/cyclonedx-go).

  • purlbatch seems to mishandle Go PURLs which is the same purl returned in the version batch api.


Impact

  • It鈥檚 currently impossible to reliably fetch certain Go packages via PURL (purlbatch)

Workaround

  • Use versionbatch with system=GO and the canonical module path.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions