sondahub

Real APIs to point Sonda at.

Six complete, related, populated APIs and a toolbox of everything else a client has to get right — REST, GraphQL, WebSocket, Server-Sent Events and MQTT over WebSocket. No keys, no accounts, no database: reads are real, and writes are answered exactly as a real server would answer them, then forgotten.

RESTGraphQLWebSocketSSEMQTT over WebSocketOAuth 2 / OIDC

The APIs

Each one is a small world with thousands of related records, ids that never change, and behaviour a real backend has: a transfer checks the funds and answers with both transactions, a ticket refuses an impossible status, a booking gets a seat.

Writes are simulated

sondahub keeps no data — there is no database behind it, only files and code. So a POST, PUT, PATCH or DELETE is validated, run through the real logic, and answered with exactly the status, headers and body a real server would send. Then it is forgotten. Every such answer says so:

HTTP/1.1 201 Created
X-Sondahub-Write: simulated
Location: https://api.sondahub.com/v1/store/products/2001

{
  "id": 2001,
  "sku": "NEW-1",
  …
  "_note": "Simulated write: this is exactly what the server would have answered, but nothing was stored — sondahub keeps no data. A GET will not find it."
}

What that buys you: the request went out right, the answer came back right, the checks ran, the auth worked — which is what testing a client is. What it cannot do: show you the record on the next GET.

Three steps in Sonda

Everything an API here offers can be loaded into Sonda without typing a request by hand.

Import an API

Every API publishes an OpenAPI document. Import → From a URL, paste https://api.sondahub.com/v1/store/openapi.json, and the whole project appears with example bodies.

Send things

Lists with filters, a record by id, a POST that gets validated and priced, a PATCH that moves a status. Wrong bodies come back as 422 with every field named.

Go live

A WebSocket or SSE request on /v1/fleet/ws or /v1/fleet/events streams the world's own activity. The MQTT pane connects to wss://api.sondahub.com/mqtt.

What this is

A playground. The data is generated and stable; the records are related to each other the way real ones are; the servers answer the way real ones do, including when you get it wrong. Nothing here is real, nothing is stored, and the data is yours to download as plain JSON.