Engineering

API contracts that outlive the engagement

A good API outlives the people who built it. When we build a service for a client, the measure of the work is not that it runs while we are around — it is that the client's own team can pick it up, understand it, extend it, and, if they choose, never call us again. That is the point of a contract you can read.

The contract is the deliverable

An API is a contract before it is code: these are the endpoints, this is what each accepts, this is what each returns, these are the ways each can fail. When that contract is written down and typed rather than living in the heads of the people who wrote it, the service stops depending on those people being reachable.

We define request and response shapes as schemas at the boundary, so the contract and the validation are the same artifact — the documentation cannot drift from the behaviour because they are generated from one source. An endpoint that says what it does and then does exactly that is the whole of what makes a service handoverable.

No lock-in, on purpose

It is easy, and tempting, to build a service only its authors can maintain — undocumented conventions, clever indirection, a deploy process that lives in one person's shell history. That is lock-in, and whether it is deliberate or merely careless, the client pays for it later. We treat the absence of it as a requirement.

That means standard patterns over private cleverness, a documented way to run and deploy the thing, tests that describe intended behaviour, and no dependency on us that a competent engineer could not replace in an afternoon. We would rather earn the next engagement than trap you into it — a client who can leave and chooses to stay is the only kind worth having.

Tested, so the contract is enforced

A contract nobody checks is a suggestion. The tests that ship with the service are the enforcement — they assert that each endpoint honours its stated shape and its stated failures, so a future change that breaks the contract breaks a test first, in the client's own pipeline, rather than breaking a caller in production.

Docusift pushes its structured output to QuickBooks Online, Xero, Google Sheets, or a plain webhook precisely because a clear outbound contract lets other systems consume it without bespoke glue. If you need a service your team can own after handoff, that is how we build — see custom API development.

Questions

People also ask

    What stops an API build from locking us into your team?

    Standard patterns instead of private cleverness, a documented run-and-deploy process, typed contracts that double as documentation, and tests that describe intended behaviour — so a competent engineer on your side can pick the service up and extend it without us.

    How is the API contract kept from drifting from the code?

    The request and response shapes are defined as schemas at the boundary, so validation and documentation come from one source and cannot diverge. Tests assert each endpoint honours its stated shape and failures, so a breaking change fails a test before it reaches a caller.