ToolAssay

Compare one logical record declared in two or three of Avro, protobuf and GraphQ

Compare one logical record declared in two or three of Avro, protobuf and GraphQL, and report where the representations disagree. Names are matched with case and underscores set aside, since snake_case and camelCase across these formats is convention rather than disagreement. Reports a field present in one format and not another, a type class mismatch, disagreeing optionality or repeatedness, and enum symbol sets that differ.

Answeringour last check, 2026-10-04
1 of 1checks answered this week
3226 msmedian answer time
$0.25listed price per call
$0.25price it asked us

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/cross-format-record-crosscheck

CategoryEverything else
Provider hostapi.zfinia.com
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-04 valid payment request 402$0.25 3226 ms

Example input (from the provider)

{
  "body": {
    "avro": {
      "fields": [
        {
          "name": "order_id",
          "type": "string"
        },
        {
          "name": "total_cents",
          "type": "long"
        },
        {
          "name": "status",
          "type": {
            "name": "Status",
            "symbols": [
              "OPEN",
              "CLOSED"
            ],
            "type": "enum"
          }
        },
        {
          "default": null,
          "name": "note",
          "type": [
            "null",
            "string"
          ]
        }
      ],
      "name": "Order",
      "namespace": "shop.v1",
      "type": "record"
    },
    "graphql": "type Query {\n  order(id: ID!): Order\n  orders(first: Int = 20): [Order!]!\n}\n\ntype Mutation {\n  createOrder(input: OrderInput!): Order!\n}\n\nenum Status { OPEN CLOSED }\n\ninput OrderInput {\n  status: Status\n  note: String\n}\n\ntype Order {\n  id: ID!\n  status: Status!\n  totalCents: Int!\n  note: String\n}\n",
    "protobuf": "syntax = \"proto3\";\npackage shop.v1;\n\nenum Status {\n  STATUS_UNSPECIFIED = 0;\n  OPEN = 1;\n  CLOSED = 2;\n}\n\nmessage Order {\n  string order_id = 1;\n  int64 total_cents = 2;\n  Status status = 3;\n  repeated string tags = 4;\n  string note = 5;\n}\n",
    "record_name": "Order"
  },
  "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": {
            "avro": {
              "type": [
                "object",
                "string"
              ]
            },
            "graphql": {
              "maxLength": 262144,
              "type": "string"
            },
            "protobuf": {
              "maxLength": 262144,
              "type": "string"
            },
            "record_name": {
              "maxLength": 256,
              "type": "string"
            }
          },
          "required": [],
          "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"
}

This page as JSON