HTTP / API / Schema Description Languages Family Index
type: language-family-index family: api-description languages_catalogued: 28 tags: [language-reference, family-index, api, idl, schema, openapi, graphql, grpc, contract-first]
HTTP / API / Schema Description Languages — Family Index
- Type: Tier 3 family index
- Family: HTTP / API / Schema Description
- Languages catalogued: 28
- Last updated: 2026-05-09
Family overview
API description languages exist because two services that have never met still need to agree on the exact shape of the bytes they exchange. The space splits along two axes: contract-first vs code-first (do humans write the schema and generate the code, or do they write the code and generate the schema?), and protocol (REST → OpenAPI / RAML / API Blueprint, gRPC → Protobuf, GraphQL → SDL, async/event-driven → AsyncAPI, RPC-style binary → Thrift / Cap’n Proto / FlatBuffers / Avro, SOAP → WSDL, linked data → JSON-LD). The 2010s were a contract-first vs code-first holy war; the 2020s are a quiet reconciliation. TypeSpec (Microsoft, formerly Cadl) and Smithy (AWS) both pitch the same idea: write one source-of-truth model and emit OpenAPI, JSON Schema, Protobuf, GraphQL, client SDKs, and server stubs from it. Microsoft uses TypeSpec internally for Azure SDKs; AWS uses Smithy for the entire AWS SDK family. This is the dominant trajectory.
The other big 2020s story is the JSON Schema explosion. JSON Schema started as a validation vocabulary, then OpenAPI 3.1 finally aligned its body schema to JSON Schema 2020-12 (a long-running mismatch that plagued tooling), so the same schema document now validates request bodies, generates types, drives contract tests (Pact), and decorates linked data (JSON-LD). Draft 2020-12 is still the latest stable as of May 2026; a “next” draft is in active editing in the IETF JSON Schema WG but has not stabilized. AsyncAPI 3.0 (released late 2023) embraced this fully — its message payloads are JSON Schema by default — and has become the de facto description format for Kafka / NATS / MQTT / WebSocket APIs.
The protocol fan-out is real but shrinking at the edges. gRPC + Protobuf 3 quietly became ubiquitous inside microservice meshes; Connect-RPC (from Buf) and gRPC-Web solved the “how do I call gRPC from a browser” problem two different ways. Meanwhile RAML and API Blueprint are effectively dead — RAML’s last spec is from 2017 and Mulesoft (now Salesforce) has shifted focus, while API Blueprint’s reference parser was last seriously updated years ago. WSDL and WADL survive only inside enterprises that still ship SOAP. The Cap’n Proto / FlatBuffers / Avro tier has settled into specific niches (low-latency RPC, mobile/games, big-data pipelines respectively) and isn’t really competing with Protobuf for general microservice traffic.
In our deep library
None catalogued in the deep library — these are IDLs and schema languages, not general-purpose programming languages. Cross-reference config-and-dsl (where adjacent schema-shaped DSLs like Cue/KCL sit and partly overlap with API contract validation), query (GraphQL’s query side lives there; the SDL side is here), build-devops (some gateway DSLs sit there), and notation-spec for Mermaid’s broader role.
Tier 3 family table
| Language | First appeared | Owner / origin | Protocol | Status (2026) | URL |
|---|---|---|---|---|---|
| OpenAPI 3.1 | 2021 | OpenAPI Initiative (Linux Foundation) | REST / HTTP | Dominant; latest stable; uses JSON Schema 2020-12 | https://spec.openapis.org/oas/v3.1.0 |
| OpenAPI 3.0 | 2017 | OpenAPI Initiative | REST / HTTP | Legacy but very widely deployed; many tools still 3.0-only | https://spec.openapis.org/oas/v3.0.3 |
| Swagger 2.0 | 2014 | SmartBear (donated to OAI) | REST / HTTP | Legacy predecessor; surprisingly persistent in older enterprise stacks | https://swagger.io/specification/v2/ |
| AsyncAPI 3.0 | 2023 | AsyncAPI Initiative (Linux Foundation) | Kafka, MQTT, AMQP, NATS, WebSocket, SSE | Active, dominant for event-driven APIs | https://www.asyncapi.com/docs/reference/specification/v3.0.0 |
| GraphQL SDL | 2015 (public) / 2018 (foundation) | GraphQL Foundation (Linux Foundation) | GraphQL over HTTP/WS | Stable, widely used; October 2021 spec edition is current | https://spec.graphql.org/ |
| Protobuf 3 (gRPC IDL) | 2016 (proto3) | gRPC, generic binary RPC | Dominant inside microservice meshes; proto3 + Editions | https://protobuf.dev/programming-guides/proto3/ | |
| Apache Thrift IDL | 2007 (Apache) / 2007 (open-sourced from Facebook) | Apache (originally Facebook) | Thrift RPC, binary | Mature, declining; still used at Meta, Evernote, some Hadoop-era stacks | https://thrift.apache.org/docs/idl |
| Apache Avro IDL | 2009 | Apache (originated at Hadoop) | Kafka payloads, Hadoop, big-data | Active in data engineering (Confluent Schema Registry default) | https://avro.apache.org/docs/current/idl-language/ |
| Smithy | 2020 (open-sourced from AWS) | AWS | Protocol-agnostic; emits OpenAPI, JSON Schema, more | Active, growing; backbone of AWS SDK generation | https://smithy.io/2.0/ |
| TypeSpec | 2022 (renamed from Cadl) | Microsoft | Protocol-agnostic; emits OpenAPI, JSON Schema, Protobuf | Active, fastest-growing; backbone of Azure SDK generation | https://typespec.io/ |
| JSON Schema (Draft 2020-12) | 2020 | IETF JSON Schema WG | JSON validation, embedded in OpenAPI/AsyncAPI | Latest stable; “next” draft in progress in 2026 | https://json-schema.org/specification |
| JSON-LD 1.1 | 2020 | W3C | Linked data over JSON | Stable; used in schema.org, ActivityPub, Solid, verifiable credentials | https://www.w3.org/TR/json-ld11/ |
| RAML 1.0 | 2016 (1.0) / 2014 (0.8) | RAML Workgroup (Mulesoft / Salesforce) | REST / HTTP | Effectively dormant; last major spec 2016 | https://raml.org/ |
| API Blueprint | 2013 | Apiary (acquired by Oracle) | REST / HTTP | Effectively dormant; reference parser stagnant | https://apiblueprint.org/ |
| WSDL 2.0 | 2007 | W3C | SOAP, occasionally REST | Legacy; survives in enterprise SOAP stacks | https://www.w3.org/TR/wsdl20/ |
| WADL | 2009 | W3C member submission | REST / HTTP | Effectively dead; never gained traction | https://www.w3.org/Submission/wadl/ |
| HAR (HTTP Archive) | 2012 | W3C Web Performance WG | HTTP traffic capture format | Universal browser/devtools format; not a description language but adjacent | https://w3c.github.io/web-performance/specs/HAR/Overview.html |
| Cap’n Proto schema | 2013 | Sandstorm.io / Kenton Varda (ex-Google) | Cap’n Proto RPC, zero-copy serialization | Active niche; used in Cloudflare Workers internals | https://capnproto.org/language.html |
| FlatBuffers schema | 2014 | Zero-copy binary; games, mobile | Active in games, mobile, ML model formats | https://flatbuffers.dev/ | |
| MessagePack | 2008 | Sadayuki Furuhashi | Binary JSON drop-in; schema is optional/MsgPack-IDL | Active; widely embedded; not strictly a description language | https://msgpack.org/ |
| Pact | 2013 | DiUS / Pact Foundation | Consumer-driven contract testing | Active, dominant in contract-test space | https://docs.pact.io/ |
| HTTP Message Signatures (RFC 9421) | 2024 | IETF | HTTP request/response signing | Active; replaces draft-cavage-http-signatures | https://www.rfc-editor.org/rfc/rfc9421.html |
| Mermaid (sequence/API subset) | 2014 | Mermaid project (Knut Sveidqvist) | API-flow diagrams | Active, ubiquitous in markdown ecosystems | https://mermaid.js.org/syntax/sequenceDiagram.html |
| Gateway DSLs (Kong, KrakenD, Tyk, AWS API Gateway, Apigee) | various 2014–2018 | various | API gateway config | Active sub-cluster; usually YAML/JSON over a vendor schema | https://docs.konghq.com/ |
| gRPC-Web | 2018 | Google / gRPC team | Browser-callable gRPC over HTTP/1.1 | Active; reuses Protobuf schemas | https://github.com/grpc/grpc-web |
| Buf (Protobuf governance) | 2020 | Buf Technologies | Protobuf linting, breaking-change detection, registry | Active; ecosystem tooling, not a new language | https://buf.build/docs |
| Connect-RPC schema | 2022 | Buf Technologies | Browser/server RPC over HTTP/1.1, /2, gRPC-compatible | Active, growing; Protobuf-based | https://connectrpc.com/docs/ |
| OpenRPC | 2019 | OpenRPC project (ConsenSys-incubated) | JSON-RPC 2.0 description | Niche but stable; standard for Ethereum JSON-RPC and similar | https://open-rpc.org/ |
Notable threads
- OpenAPI 3.1 + JSON Schema 2020-12 unification (finally). From OpenAPI’s birth through 3.0, the body-schema dialect was almost JSON Schema but with subtle, painful divergences (
nullable,examplevsexamples, missing keywords). 3.1 (2021) finally adopted JSON Schema 2020-12 as a strict superset, ending years of duplicated tooling. As of 2026, ecosystem migration is mostly complete but a long tail of 3.0-only generators remains. - TypeSpec and Smithy as the modern “design-once, generate everything” play. Both Microsoft (TypeSpec) and AWS (Smithy) bet that the right answer is neither contract-first nor code-first but a third artifact — a typed model that emits OpenAPI, JSON Schema, Protobuf, GraphQL, and SDKs in N languages. TypeSpec is now the source of truth for new Azure SDKs; Smithy is the source for AWS SDKs. If a third major cloud adopts one, the war is essentially over.
- gRPC’s quiet ubiquity. gRPC + Protobuf 3 became the default for service-to-service traffic inside microservice meshes (Linkerd, Istio, Consul, Cilium) without ever winning a public spec war. Buf’s tooling (lint, breaking-change detection, BSR registry) plus Connect-RPC (a gRPC-compatible protocol that works in browsers without a proxy) cleaned up the two historical pain points: governance and browser-reachability.
- AsyncAPI catching up to REST/gRPC. AsyncAPI 3.0 (late 2023) finally untangled the bidirectional message confusion of 2.x and embraced JSON Schema natively. It’s now the credible default for describing Kafka, NATS, MQTT, and WebSocket APIs — the event-driven equivalent of OpenAPI.
- The death of RAML and API Blueprint. Both were better-designed than Swagger 2.0 in many ways, but neither had a single deep-pocketed steward willing to fund tooling year over year. Mulesoft (RAML) was acquired by Salesforce and shifted focus; Apiary (API Blueprint) was acquired by Oracle and quietly de-prioritized. OpenAPI won by being the survivor with the largest tooling ecosystem, not by being the best designed.
- JSON Schema’s tooling gap. Validation libraries exist in every language, often multiple per language, and are excellent. Codegen from JSON Schema is patchy: the schema is too permissive (anyOf/oneOf/allOf, conditional subschemas, tuple-with-rest arrays) for clean type emission. This is partly why OpenAPI/Smithy/TypeSpec layer on top of JSON Schema rather than expecting people to use it bare.
- Connect-RPC vs gRPC-Web for browser-callable RPC. gRPC-Web requires a proxy (Envoy or similar) to translate HTTP/2 framing. Connect-RPC was designed from the start to speak plain HTTP/1.1 and HTTP/2 without a proxy, while remaining wire-compatible with gRPC servers. Both reuse Protobuf schemas. Connect is gaining ground, especially among teams that want zero-proxy browser RPC.
Citations
- OpenAPI Initiative — https://www.openapis.org/
- OpenAPI 3.1.0 spec — https://spec.openapis.org/oas/v3.1.0
- AsyncAPI 3.0 spec — https://www.asyncapi.com/docs/reference/specification/v3.0.0
- GraphQL spec (October 2021) — https://spec.graphql.org/
- Protobuf docs — https://protobuf.dev/
- gRPC docs — https://grpc.io/docs/
- gRPC-Web — https://github.com/grpc/grpc-web
- Smithy 2.0 — https://smithy.io/2.0/
- TypeSpec — https://typespec.io/
- JSON Schema (2020-12) — https://json-schema.org/specification
- JSON-LD 1.1 — https://www.w3.org/TR/json-ld11/
- Apache Thrift — https://thrift.apache.org/
- Apache Avro — https://avro.apache.org/
- Cap’n Proto — https://capnproto.org/
- FlatBuffers — https://flatbuffers.dev/
- MessagePack — https://msgpack.org/
- Pact — https://docs.pact.io/
- RFC 9421 (HTTP Message Signatures) — https://www.rfc-editor.org/rfc/rfc9421.html
- HAR spec — https://w3c.github.io/web-performance/specs/HAR/Overview.html
- WSDL 2.0 — https://www.w3.org/TR/wsdl20/
- WADL submission — https://www.w3.org/Submission/wadl/
- RAML — https://raml.org/
- API Blueprint — https://apiblueprint.org/
- Buf — https://buf.build/docs
- Connect-RPC — https://connectrpc.com/docs/
- OpenRPC — https://open-rpc.org/
- Mermaid sequence diagrams — https://mermaid.js.org/syntax/sequenceDiagram.html
- Kong gateway docs — https://docs.konghq.com/
- KrakenD — https://www.krakend.io/docs/
- Tyk — https://tyk.io/docs/
- AWS API Gateway — https://docs.aws.amazon.com/apigateway/
- Apigee — https://cloud.google.com/apigee/docs