The API that is not there yet, and the database that already is.
An Echo answers at echo://name/path instead of a real API — from a data set that remembers what you posted, from a body with placeholders, from a script, or from a flow. A database becomes endpoints at sonda://name/path that any request calls, with every value bound and a switch that makes it read-only for real.
At a glance
Four ways an endpoint answers.
Method, a path with :id or {id}, declared parameters — then what comes back.
From data
Plain REST over a data set: GET lists with an exact-match filter on a field, GET /:id, POST, PUT, PATCH, DELETE. New keys are the next number or a UUID.
With a body
A fixed status, headers and body, with placeholders, modifiers and defaults.
By script
JavaScript, Go or Python reading the request and the data, answering with sonda.answer. Fifty-nine snippets to start from.
By flow
A local webhook: the caller waits while a flow runs — up to ten minutes — and gets what the flow ends with.
Built from
By hand. From a request's saved Example in one click. From a Discover capture, as "name mock". From the demo: a users data set and seven endpoints with a scripted login. By Themis.
Used from
Any request in any project at echo://. "Try it" and "Add a request" build the call from the samples. Programs outside Sonda reach it on the port.
Logged
Starting an Echo on a port is one of the activity triggers an administrator can be mailed about.
Activity and mailA query becomes an endpoint.
No port is opened. Any request calls sonda://name/path and gets the rows, with X-Sonda headers naming the database, the endpoint and the statement.
Endpoints
Method, path and parameters from the body, the query, a header or the path, each typed — string, int, number, bool, objectId, date, json — with required, default and sample. SQL is one statement with bound values. MongoDB: find, findOne, aggregate, count, insert, update, delete, with projection, sort, limit and skip.
Reads-only, enforced
A switch, not a promise. SQL: the statement is scanned and runs in a read-only transaction. MongoDB: write operations refused, and $out and $merge stages refused inside a pipeline. A write against a reads-only database is a 403.
The connection
The string takes variables from the environment and globals, is masked in the window and scrubbed from error messages. Connect, Test in 15 seconds, Close. Nothing of it reaches the team store.