APIs you can read
Versioned, documented, and consistent -- not the artefact of three sprints stacked on top of each other. OpenAPI or schema-first GraphQL, with the docs generated from the source so they don't drift.
Surfaces designed to survive the partner who didn't read the spec.
REST, GraphQL, webhooks, and the third-party integrations that hold a product together. Stripe, HubSpot, the CRM your sales team actually uses, the SFTP feed your distributor still ships you on Tuesdays. Designed, documented, versioned -- and resilient when the other end behaves badly.
The interesting failures in any system live at its edges -- the partner that retries forever, the webhook that arrives twice, the field that mysteriously becomes null on Tuesdays. Integration work is mostly the discipline of expecting that.
Versioned, documented, and consistent -- not the artefact of three sprints stacked on top of each other. OpenAPI or schema-first GraphQL, with the docs generated from the source so they don't drift.
Idempotency keys, exponential back-off, dead-letter queues, signed payloads. Every delivery logged, every failure visible, every duplicate harmless.
Stripe, HubSpot, Salesforce, Shopify, the awkward gateway your distributor insists on. Built behind a clear seam, with the partner API isolated -- so when their docs change in six months, only one file moves.
The hardest part of an API engagement is agreeing on the contract. The hardest part of an integration engagement is figuring out what the partner's contract really is. Both happen before a line is written.
Either you have a spec or we write one. OpenAPI, GraphQL schema, JSON-Schema for webhook payloads -- something that both sides can sign off on before the first endpoint is implemented.
Mock servers spun up from the contract so consumer teams can start integrating in parallel. Real implementation happens behind the same contract -- no surprises at the join.
Structured logs, request IDs, payload capture for the awkward third-party that won't share its outbound logs. Every integration ships with a way to answer 'what did they actually send us?' in under a minute.
Versioning policy, deprecation cadence, partner-facing changelog. Thirty days of post-launch support included -- and a runbook so the on-call engineer isn't paging me at 3 a.m.
A partnership held together by code.
Glue-code with no clear owner.
Send the existing spec, the failing integration, or the screenshot of the partner's documentation. A reply lands inside 24 hours on weekdays.