Go - changespec-go

Requires Go 1.21 or later. Embeds the canonical schema.json at compile time via //go:embed. Strict Ed25519 via ed25519consensus. Source: github.com/changespec/changespec-go

Install
go get github.com/changespec/changespec-go@latest
Validate a ChangeSpec event
package main

import (
    "fmt"
    "log"
    "github.com/changespec/changespec-go/changespec"
)

func main() {
    raw := []byte(`{
        "specversion": "1.0",
        "id":          "cs_01HXYZ1234ABCD",
        "vendor_id":   "acme",
        "category":    "api_breaking",
        "severity":    "high",
        "title":       "confirm() now requires return_url parameter",
        "summary":     "The Payments API confirm() method now requires return_url.",
        "published_at": "2026-04-10T14:00:00Z",
        "source_type": "publisher_verified"
    }`)

    event, err := changespec.Parse(raw)
    if err != nil {
        log.Fatalf("invalid event: %v", err)
    }

    fmt.Printf("vendor: %s  category: %s  severity: %s\n",
        event.VendorID, event.Category, event.Severity)
}

TypeScript - changespec-ts

Requires Node.js 18 or later. Zod-based schema validation. Extension field handling guards against prototype pollution. Source: github.com/changespec/changespec-ts

Install
npm install changespec
Validate a ChangeSpec event
import { parseEvent } from "changespec";

const raw = {
  specversion:  "1.0",
  id:           "cs_01HXYZ1234ABCD",
  vendor_id:    "acme",
  category:     "api_breaking",
  severity:     "high",
  title:        "confirm() now requires return_url parameter",
  summary:      "The Payments API confirm() method now requires return_url.",
  published_at: "2026-04-10T14:00:00Z",
  source_type:  "publisher_verified",
};

const result = parseEvent(raw);

if (!result.success) {
  console.error("validation errors:", result.error.issues);
  process.exit(1);
}

const event = result.data;
console.log(`vendor: ${event.vendor_id}  severity: ${event.severity}`);

Python - changespec-py

Requires Python 3.11 or later. Pydantic v2 model. Strict field validation with Annotated constraints. Source: github.com/changespec/changespec-py

Install
pip install changespec
Validate a ChangeSpec event
from changespec import parse_event, ChangeSpecValidationError

raw = {
    "specversion":  "1.0",
    "id":           "cs_01HXYZ1234ABCD",
    "vendor_id":    "acme",
    "category":     "api_breaking",
    "severity":     "high",
    "title":        "confirm() now requires return_url parameter",
    "summary":      "The Payments API confirm() method now requires return_url.",
    "published_at": "2026-04-10T14:00:00Z",
    "source_type":  "publisher_verified",
}

try:
    event = parse_event(raw)
    print(f"vendor: {event.vendor_id}  severity: {event.severity}")
except ChangeSpecValidationError as exc:
    print(f"validation error: {exc}")
    raise

Certified third-party implementations

Third-party implementations that have passed the conformance test suite at a defined level.

No third-party implementations have been certified yet. The certification program opens with the May 2026 launch.

Certification levels

Each level is a strict superset of all lower levels.

Level Name What it proves Self-service
Level 1 Syntactic Correctly accepts all valid events and rejects all invalid events according to the JSON Schema. Yes
Level 2 Semantic Correctly handles boundary conditions, edge cases, and semantic requirements beyond basic field presence. Yes
Level 3 Secure Handles adversarial inputs safely. No panics, crashes, hangs, or unbounded memory use on malicious input. Yes
Level 4 Full Producer A vendor's published events meet all MUST requirements for producers. Requires a sample of 20+ real events. No - requires review

Self-certification process (Levels 1-3)

  1. Clone the conformance suite: github.com/changespec/spec/tree/main/conformance
  2. Run the conformance runner for your language against the test vector directories.
  3. Confirm 0 failures.
  4. Ensure the test run is reproducible in a public CI system.
  5. Open a pull request or GitHub Discussion to submit your self-certification report.
  6. Add the appropriate badge to your implementation's README.

Submit your implementation

To have your implementation listed here: