Tinplate 42 Edge APIs

Developer Utilities Tier 3 Ready POST /v1/semver-lockfile-judge

Package.json & Dependency Upgrade Risk Judge API — Flag Breaking SemVer Bumps

Diff two package.json files to flag breaking SemVer bumps and risky dependency changes. Compare two package.json manifests or dependency maps to flag major breaking upgrades, 0.x instability, prerelease tags, git/tarball URLs, and supply-chain risks.

Try It Live in Your Browser · No API Key Required

1. Interactive Sandbox & Sample JSON Output

200 OK · Ready

Editable Request JSON (POST /v1/semver-lockfile-judge)

Live 200 OK Response Envelope

{
  "ok": true,
  "data": {
    "verdict": "block",
    "risk_score": 64,
    "breaking_count": 0,
    "summary": {
      "total_changes": 3,
      "major_breaking": 0,
      "zero_ver_breaking": 0,
      "downgrades": 0,
      "unpinned_or_vcs": 1,
      "added": 0,
      "removed": 0,
      "minor_or_patch": 1
    },
    "changes": [
      {
        "package": "hono",
        "section": "dependencies",
        "before_spec": "^4.6.0",
        "after_spec": "^4.7.1",
        "change_type": "minor_upgrade",
        "risk": "low",
        "explanation": "Backward-compatible minor upgrade for hono: ^4.6.0 -> ^4.7.1."
      },
      {
        "package": "left-pad",
        "section": "dependencies",
        "before_spec": null,
        "after_spec": "github:user/repo",
        "change_type": "unpinned_or_vcs",
        "risk": "critical",
        "explanation": "Added left-pad@github:user/repo with unpinned tag, wildcard, or VCS URL."
      },
      {
        "package": "zod",
        "section": "dependencies",
        "before_spec": "^3.23.8",
        "after_spec": "^4.0.0-beta.1",
        "change_type": "prerelease_introduced",
        "risk": "high",
        "explanation": "Switched zod from stable (^3.23.8) to pre-release (^4.0.0-beta.1)."
      }
    ],
    "recommendations": [
      "Pin wildcard (*, latest) and VCS dependencies to exact SemVer ranges or commit SHAs."
    ]
  },
  "meta": {
    "request_id": "req_slj_01",
    "ms": 1
  }
}

2. Quickstart Code Examples

Full TypeScript & Python SDK →
curl -X POST "https://api.tinplate.dev/v1/semver-lockfile-judge" \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
  -d '{"before":{"dependencies":{"zod":"^3.23.8","hono":"^4.6.0"}},"after":{"dependencies":{"zod":"^4.0.0-beta.1","hono":"^4.7.1","left-pad":"github:user/repo"}}}'
import { TinplateClient } from "@tinplate/sdk"; // npm install @tinplate/sdk

const tinplate = new TinplateClient({
  rapidApiKey: process.env.RAPIDAPI_KEY!,
});

const { data, meta } = await tinplate.call("/v1/semver-lockfile-judge", {
  "before": {
    "dependencies": {
      "zod": "^3.23.8",
      "hono": "^4.6.0"
    }
  },
  "after": {
    "dependencies": {
      "zod": "^4.0.0-beta.1",
      "hono": "^4.7.1",
      "left-pad": "github:user/repo"
    }
  }
});
console.log(`[${meta.ms} ms]`, data);
import requests

response = requests.post(
    "https://api.tinplate.dev/v1/semver-lockfile-judge",
    headers={
        "Content-Type": "application/json",
        "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
    },
    json={
  "before": {
    "dependencies": {
      "zod": "^3.23.8",
      "hono": "^4.6.0"
    }
  },
  "after": {
    "dependencies": {
      "zod": "^4.0.0-beta.1",
      "hono": "^4.7.1",
      "left-pad": "github:user/repo"
    }
  }
}
)
print(response.json())
const response = await fetch("https://api.tinplate.dev/v1/semver-lockfile-judge", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
  },
  body: JSON.stringify({
  "before": {
    "dependencies": {
      "zod": "^3.23.8",
      "hono": "^4.6.0"
    }
  },
  "after": {
    "dependencies": {
      "zod": "^4.0.0-beta.1",
      "hono": "^4.7.1",
      "left-pad": "github:user/repo"
    }
  }
}),
});
const result = await response.json();
console.log(result);
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "tinplate_semver_lockfile_judge",
    "arguments": {
      "before": {
        "dependencies": {
          "zod": "^3.23.8",
          "hono": "^4.6.0"
        }
      },
      "after": {
        "dependencies": {
          "zod": "^4.0.0-beta.1",
          "hono": "^4.7.1",
          "left-pad": "github:user/repo"
        }
      }
    }
  }
}
OpenAPI 3.0.3 Schema Contract

Request Parameters & Response Schema Reference

Request Body Parameters (POST /v1/semver-lockfile-judge)

Parameter Type & Constraints Description
beforerequired string | object Field 'before'
afterrequired string | object Field 'after'
include_dev_dependenciesoptional boolean
default: true
Field 'include_dev_dependencies'
fail_on_zero_ver_minoroptional boolean
default: true
Field 'fail_on_zero_ver_minor'

Response data Object Fields (200 OK)

Field Type Description
verdict "allow" | "review" | "block" Field 'verdict'
risk_score integer Field 'risk_score'
breaking_count integer Field 'breaking_count'
summary object Field 'summary'
changes object[] Field 'changes'
recommendations string[] Field 'recommendations'

3. What SemVer & Package Manifest / Lockfile Diff Judge API Detects & Validates

Honest Engineering Boundaries

4. Known Limitations & Test Verification

Release Version: v1.0.7 · Last Verified / Benchmarked: 14 November 2026 · Latency Note: Sub-millisecond figures measure in-Worker V8 compute time (typical client HTTPS network RTT to the nearest Cloudflare PoP is 15–65 ms) · See Full Portfolio Benchmarks & Corpora →

5. Marketplace Plans & Payload Quotas

Plan Monthly Price Included Requests Rate Limit Max Request Payload Best For
BASIC $0.00 / month 500 / month (hard limit) 10 req / min 64 KB Evaluation, local development & CI smoke tests
PRO $9.99 / month 15,000 / month 60 req / min 128 KB Solo developers & production apps
ULTRA $29.99 / month 100,000 / month 300 req / min 256 KB Growing SaaS & multi-agent pipelines
MEGA $79.99 / month 500,000 / month 1,000 req / min 256 KB High-volume enterprise workloads

6. Frequently Asked Questions

Why are 0.x minor bumps flagged as potentially breaking?

Per SemVer 2.0.0 spec clause 4, initial development versions (0.y.z) treat minor bumps (e.g. 0.4.0 -> 0.5.0) as breaking changes.

Does it inspect package.json lifecycle scripts?

Yes, if a diff adds or modifies preinstall, install, or postinstall scripts, it raises a supply-chain review flag.

Can I use it to auto-approve Dependabot or Renovate PRs?

Yes—auto-merge when verdict is 'safe' (patch/minor bumps only, no new scripts or git URLs) and require human review on 'review' or 'high_risk'.

Zero Payload Logging

7. Data Handling, Privacy & Marketplace Proxy Disclosure

Stateless in-memory manifest diffing; zero retention.

Worker Zero-Logging Guarantee: Cloudflare Workers Observability and invocation logging are disabled in configuration (observability.enabled = false, head_sampling_rate = 0, invocation_logs = false). Payloads are processed strictly in volatile V8 memory and never logged or stored by Tinplate.

Marketplace Proxies vs. Direct Bearer Key: Requests sent via RapidAPI or Zyla API Hub pass through those marketplaces' proxy infrastructure (subject to their respective privacy policies). Security-sensitive workloads requiring end-to-end zero-intermediary processing can connect directly to https://api.tinplate.dev using a Direct Bearer Key (Authorization: Bearer <API_KEY>). Read our full Privacy Notice and OpenAPI 3.0.3 JSON Schema.

Related Tinplate APIs

🔀 POST /v1/schema-diff Developer Utilities

OpenAPI & JSON Schema Breaking-Change Diff API

Diff two OpenAPI 3.x or JSON Schemas to catch breaking changes and recommend SemVer bumps.

🔑 POST /v1/secret-scanner Tier 1

Log Redact & Secret Scanner API

Detect and mask leaked API keys, JWTs, and private keys in logs, diffs, and prompts.

🔍 POST /v1/mcp-manifest-linter Tier 1

MCP Server Manifest & Tool Security Linter API

Audit MCP server manifests for hidden tool poisoning, shell risks, and excessive permissions.