Skip to main content

DevOps & Security

API Contract Enforcer

Validates that code changes do not silently break API contracts, checking schemas, status codes, and backward compatibility with severity-rated breaking-change reports. Useful for microservices teams preventing cross-service regressions. Backend engineers shipping API changes, platform teams owning microservice contracts, SDK maintainers managing versioning, API-first companies with external consumers. A silent breaking change — a renamed field, a dropped nullable, a tightened validation — cascades through consumer services and client apps and surfaces hours later as pager alerts. Contract testing frameworks exist, but they require setup most teams do not invest in until after the first costly incident. A structured enforcer runs against any PR that touches an API surface and flags breaking changes before merge.

Nexus CertifiedClaude CodeCodexOpenClawGoogle Antigravity
apicontractsbreaking-changesmicroservicescompatibility

One-Time Purchase

$19.99

Sample Output
# API Contract Diff — `/v1` surface

**Reference:** tag `v1.3.0`
**Current:** HEAD (branch `feat/refactor-payments-surface`)
**API type:** REST, OpenAPI 3.1
**Stability commitment:** public-versioned (external consumers)

<div data-callout="critical" data-label="Verdict">

**Do not merge as written.** Three breaking changes detected against the `/v1` surface that external consumers depend on. Two are silent (no error response, just changed shape) and would cascade through consumer SDKs within minutes of deploy. The third tightens a validation rule that previously accepted-and-coerced legacy inputs.

</div>

---

## Violations summary

| # | Endpoint | Change | Severity |
|---|---|---|---|
| V-01 | `GET /v1/charges/{id}` | Field rename: `captured_amount` → `amount_captured` | <span data-pill="critical">breaking</span> |
| V-02 | `POST /v1/charges` | Field removed from response: `charge_url` | <span data-pill="critical">breaking</span> |
| V-03 | `POST /v1/refunds` | Request validation tightened: `reason` now required (was optional) | <span data-pill="critical">breaking</span> |
| V-04 | `GET /v1/charges` | New optional query param `expand` added | <span data-pill="positive">additive</span> |
| V-05 | `POST /v1/charges` | Response: new field `risk_score` added | <span data-pill="positive">additive</span> |
| V-06 | `GET /v1/charges/{id}` | Field `status` enum gained value `disputed` | <span data-pill="caution">forward-additive</span> |

---

<div data-callout="critical" data-label="V-01 — silent field rename">

Renaming `captured_amount` → `amount_captured` is a **client-breaking change**. External SDKs and consumer code reading the old field will read `undefined` after deploy, with no error. The Stripe-flavored convention argues for `amount_captured` (matches `amount_refunded`, `amount_received`), but the rename must be **additive** on `/v1`:

1. Add `amount_captured` alongside the existing `captured_amount`.
2. Mark `captured_amount` as deprecated in the OpenAPI doc.
3. Communicate the deprecation window (recommended: 6 months on a public-versioned surface).
4. Remove `captured_amount` only in `/v2` — never in `/v1`.

</div>

<div data-callout="critical" data-label="V-02 — field removed without v-bump">

`charge_url` was returned by `POST /v1/charges` since v0.4.0. Removing it in a non-major version is a breaking change. **Either** restore the field (have it return a deterministic URL or null), **or** bump to `/v2`. Removing fields is the most-cited cause of cross-service outages in this codebase's incident history — do not ship.

</div>

<div data-callout="critical" data-label="V-03 — validation tightened">

`reason` on `POST /v1/refunds` is now declared `required` in the schema. Existing consumer code that omits `reason` (currently treated as `"requested_by_customer"` by default) will see `400 Bad Request` after deploy. If the requirement is genuinely needed, keep the field optional in the schema and apply the default server-side — which is in fact what the current behavior does.

</div>

<div data-stack data-stack-title="Recommended fixes — minimum to merge">
<div data-row data-value="V-01">Re-add `captured_amount` as a deprecated alias of `amount_captured`</div>
<div data-row data-value="V-02">Re-add `charge_url` to the response shape — compute server-side if no longer stored</div>
<div data-row data-value="V-03">Make `reason` optional in the OpenAPI schema; keep the server-side default</div>
<div data-row data-value="docs">Update `docs/api/CHANGELOG.md` with the deprecation timeline for V-01</div>
<div data-row data-value="tests">Add contract tests that assert the old field names are still present in responses</div>
</div>

<div data-callout="info" data-label="Additive changes — safe to ship">

V-04, V-05, and V-06 are backward-compatible. Note that V-06 (new enum value) is **forward-additive** — older consumers may not have a code path for `disputed` and may default to "unknown" handling. Communicate the new enum value in release notes and the changelog, but it does not block merge.

</div>

*This contract check runs against every PR that touches the `/v1` surface. Merging requires zero `breaking` findings, or an approved `v2` migration plan referenced in the PR description.*

This sample illustrates the skill's output format. Names, metrics, and operational details are illustrative unless the artifact explicitly analyzes public information.

View full sample →

All sales final. No refunds on digital products.

Includes support for Claude Code, Codex, OpenClaw, and Google Antigravity in the same license.

Also in Testing & QA

Bundle price: $55. Compare this skill with the full workflow bundle or Pro access.

Best for

Backend teams shipping API changes against consumers they don’t control — partner integrations, mobile apps that haven’t shipped the new version yet, internal services owned by a different team. Most useful for microservices teams who have been bitten before by a silent breaking change cascading through downstream consumers.

Not ideal for

Internal-only APIs with a single consumer co-located in the same repo — the breaking change shows up immediately and the contract enforcement layer is overhead. Also a poor fit very early in product life when the API is meant to be unstable and the contract conversation is premature.

Included in this purchase

  • Claude Code, Codex, OpenClaw, and Google Antigravity skill files.
  • Setup guidance for the right adapter in your workspace.
  • One-time license for the purchased skill version.

Setup

Plan for a short setup in the repository or workspace where the skill will run. Some coding familiarity helps for implementation-heavy outputs.

Claude CodeCodexOpenClawGoogle Antigravity

Related Skills

Incident Response
Outage Response Playbook
Generates structured, role-clear incident response playbooks for specific failure scenarios. Covers detection through resolution and post-mortem — ready to use when an incident actually happens.
Claude CodeCodexOpenClawGoogle Antigravity
outage-responsereliabilityrunbooks

$19.99

One-time license

View Skill
Incident Response
Incident Postmortem Writer
Generates a structured blameless postmortem from incident timelines, alerts, and deploy logs with root cause analysis, impact assessment, and owned action items. Useful for producing first-draft postmortems under operational pressure.
Claude CodeCodexOpenClawGoogle Antigravity
postmortemsincident-responseoperations

$19.99

One-time license

View Skill
Security Scanning
OWASP Top 10 Scanner
Scans code for OWASP Top 10 vulnerability patterns including injection, XSS, IDOR, and insecure deserialization with severity ratings and remediation snippets. Useful for pre-commit security checks and enterprise compliance.
Claude CodeCodexOpenClawGoogle Antigravity
securityowaspvulnerabilities

$19.99

One-time license

View Skill

Future Updates

This purchase includes the current version of the skill. If you want future adapter updates — meaning compatibility and packaging updates as supported platforms evolve — plus new catalog additions included automatically, upgrade to Pro.

Upgrade to Pro