Skip to content

🔒 GetSecurityAdvisories

Fetches all known security advisories on Packagist (grouped by package name).

When to use

🔒 When building a PSIRT / vulnerability intelligence database and periodically pulling the full set of known advisories; 🛡️ loading the full advisory set once at startup as a local cache, then keeping it fresh with the incremental endpoint; 📋 generating organization-level dependency security reports.

Signature

go
func (c *ComposerClient) GetSecurityAdvisories() (*domain.AdvisoriesResponse, error)

Parameters

This method takes no parameters.

Return value

ValueTypeDescription
Result*domain.AdvisoriesResponseAdvisories is a map[package name][]*Advisory, including CVE, affected versions, links, etc.
ErrorerrorReturned on HTTP failure, non-200 status, or JSON parse failure

Corresponding endpoint: GET https://packagist.org/api/security-advisories/?updatedSince=0.

Example

go
package main

import (
	"fmt"
	"log"
	"time"

	"github.com/scagogogo/composer-skills/pkg/client"
)

func main() {
	c := client.NewComposerClient(30 * time.Second)

	resp, err := c.GetSecurityAdvisories()
	if err != nil {
		log.Fatal(err)
	}
	for pkg, advisories := range resp.Advisories {
		fmt.Printf("Package %s has %d advisories\n", pkg, len(advisories))
		for _, a := range advisories {
			fmt.Printf("  - %s: %s (CVE=%s)\n", a.AdvisoryID, a.Title, a.Cve)
		}
	}
}

Advanced

Endpoint change

The old /advisories.json endpoint has been deprecated by Packagist (returns 404). This method uses /api/security-advisories/ instead and passes updatedSince=0 to retrieve all advisories — this endpoint requires at least one query parameter, otherwise it returns 400.

Released under the MIT License