Find out what an API change breaks for one named client, rather than for everyon
Find out what an API change breaks for one named client, rather than for everyone. You declare the operations it calls and, optionally, the response fields it reads and the parameters it sends. Changes outside that usage are counted and set aside. A breaking change on an operation this client never calls is somebody else’s problem, and blocking a migration on it is the mistake this product exists to prevent.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://api.zfinia.com/x402/v1/openapi-client-breakage-report
| Category | Commerce and shopping |
|---|---|
| Provider host | api.zfinia.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"after": {
"components": {
"schemas": {
"Order": {
"properties": {
"id": {
"type": "string"
},
"status": {
"enum": [
"open",
"shipped",
"disputed"
],
"type": "string"
},
"tenant_id": {
"type": "string"
},
"total": {
"type": "number"
}
},
"required": [
"id",
"total",
"tenant_id"
],
"type": "object"
}
},
"securitySchemes": {
"apiKey": {
"in": "query",
"name": "api_key",
"type": "apiKey"
}
}
},
"info": {
"title": "Orders API",
"version": "2.0.0"
},
"openapi": "3.1.0",
"paths": {
"/orders": {
"get": {
"operationId": "listOrdersV2",
"parameters": [
{
"in": "query",
"name": "tenant",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/Order"
},
"type": "array"
}
}
},
"description": "A page of orders"
}
},
"summary": "List orders"
},
"parameters": [
{
"in": "query",
"name": "page",
"schema": {
"minimum": 1,
"type": "integer"
}
}
],
"post": {
"operationId": "createOrder",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
},
"description": "Created"
}
},
"summary": "Create an order"
}
},
"/orders/{id}": {
"get": {
"deprecated": true,
"operationId": "getOrder",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
},
"description": "The order"
},
"404": {
"description": "Not found"
}
},
"summary": "Fetch one order"
}
}
},
"security": [
{
"apiKey": []
}
]
},
"before": {
"components": {
"schemas": {
"Order": {
"properties": {
"id": {
"type": "string"
},
"legacy_ref": {
"type": "string"
},
"status": {
"enum": [
"open",
"shipped"
],
"type": "string"
},
"total": {
"type": "number"
}
},
"required": [
"id",
"total"
],
"type": "object"
}
},
"securitySchemes": {
"apiKey": {
"in": "header",
"name": "X-Api-Key",
"type": "apiKey"
}
}
},
"info": {
"title": "Orders API",
"version": "1.4.0"
},
"openapi": "3.1.0",
"paths": {
"/legacy/export": {
"get": {
"operationId": "legacyExport",
"responses": {
"200": {
"description": "A CSV export"
}
},
"summary": "Legacy export"
}
},
"/orders": {
"get": {
"operationId": "listOrders",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/Order"
},
"type": "array"
}
}
},
"description": "A page of orders"
},
"429": {
"description": "Rate limited"
}
},
"summary": "List orders"
},
"parameters": [
{
"in": "query",
"name": "page",
"schema": {
"minimum": 1,
"type": "integer"
}
}
],
"post": {
"operationId": "createOrder",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
}
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
},
"description": "Created"
}
},
"summary": "Create an order"
}
},
"/orders/{id}": {
"get": {
"operationId": "getOrder",
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
},
"description": "The order"
},
"404": {
"description": "Not found"
}
},
"summary": "Fetch one order"
}
}
},
"security": [
{
"apiKey": []
}
]
},
"client": {
"name": "billing-reconciler",
"operations": [
{
"method": "GET",
"path": "/orders",
"reads_fields": [
"/0/id",
"/0/total"
]
},
{
"method": "GET",
"path": "/orders/{id}",
"reads_fields": [
"/id",
"/total"
]
}
]
}
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"after": {
"type": "object"
},
"before": {
"type": "object"
},
"client": {
"additionalProperties": false,
"properties": {
"name": {
"maxLength": 64,
"type": "string"
},
"operations": {
"items": {
"additionalProperties": false,
"properties": {
"method": {
"maxLength": 10,
"type": "string"
},
"path": {
"maxLength": 2048,
"type": "string"
},
"reads_fields": {
"items": {
"maxLength": 512,
"type": "string"
},
"maxItems": 200,
"minItems": 1,
"type": "array"
},
"sends_fields": {
"items": {
"maxLength": 512,
"type": "string"
},
"maxItems": 200,
"minItems": 1,
"type": "array"
}
},
"required": [
"method",
"path"
],
"type": "object"
},
"maxItems": 200,
"minItems": 1,
"type": "array"
}
},
"required": [
"operations"
],
"type": "object"
}
},
"required": [
"before",
"after",
"client"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}