The contract
APIs & Communication
An API is a product with users — and its contract outlives every implementation behind it. This track covers how to design APIs (REST, gRPC, GraphQL), make REST robust with hypermedia and idempotency, secure and manage them at the edge, and evolve them without breaking the clients you can’t see.
Mark a topic “learned” on its page and watch the bars fill.
Skill map
Learned nodes light up — the glowing one is your next step. Click any node to jump in.
API Design & Styles
Designing the contract — REST, RPC/gRPC and GraphQL, resource modeling, versioning, and what makes an API a good product.
It is never 'REST versus gRPC' — choose the most appropriate format for each producer/consumer exchange based on coupling, traffic, and payload.
✦ Complete · ⏱ 5 min 2 · Beginner Designing Good APIs: API-as-a-ProductDesign from the consumer's perspective, adopt a standard early, and treat the API as a long-lived product — because the API is the contract.
✦ Complete · ⏱ 4 min 3 · Intermediate API Versioning and EvolutionPlan for change with semantic versioning, additive backward-compatible changes, and automated diff tooling — so consumers track only the major version.
✦ Complete · ⏱ 4 minREST & Web APIs
The web done right — Richardson maturity, hypermedia and HATEOAS, idempotency, caching, pagination, and practical REST cookbook recipes.
REST's constraints and the four levels of the Richardson Maturity Model — and why Level 2 is the practical sweet spot for most HTTP APIs.
✦ Complete · ⏱ 4 min 5 · Intermediate Hypermedia and HATEOASEmbedding links and forms in responses lets clients discover what to do next at runtime — the engine of application state, and the key to evolvable services.
✦ Complete · ⏱ 4 min 6 · Intermediate Idempotency and SafetyThe network is unreliable, so design writes to be safely repeatable — prefer idempotent PUT with conditional headers, and make the payload itself idempotent too.
✦ Complete · ⏱ 4 min 7 · Intermediate Caching and Conditional RequestsUse HTTP caching directives and ETags to make remote data feel fast and writes safe — providers set Cache-Control tuned to volatility, consumers qualify with freshness rules.
✦ Complete · ⏱ 5 min 8 · Intermediate Pagination and FilteringDesign collections to evolve: wrap arrays in an object, paginate with an opaque next link, filter with a standard expression language, and never smuggle SQL in a query parameter.
✦ Complete · ⏱ 5 minManagement, Security & Evolution
Operating an API platform — gateways and service mesh, authentication (OAuth2/OIDC), rate limiting, threat modeling, and evolving without breaking clients.
The single entry point for north–south traffic — a control-plane/data-plane reverse proxy that reduces coupling, simplifies consumption, and protects and meters your APIs.
✦ Complete · ⏱ 5 min 10 · Advanced Service MeshA pattern for managing all east–west service-to-service traffic — routing, reliability, observability, and mTLS — via sidecar proxies coordinated by a separate control plane.
✦ Complete · ⏱ 5 min 11 · Advanced API Security: Threat Modeling, OAuth2 and OIDCStart security left: threat-model with STRIDE and the OWASP API Top 10, then authenticate and authorize with OAuth2 access tokens and OIDC identity — enforced on every endpoint.
✦ Complete · ⏱ 5 min 12 · Intermediate Rate Limiting and QuotasProtect APIs from overuse and abuse: rate limiting rejects on per-request properties, load shedding rejects on system state — using fixed/sliding window or token/leaky bucket algorithms.
✦ Complete · ⏱ 4 minMessaging & Async Communication
Beyond request/response — messaging styles and patterns, choreography, idempotent consumers, and choosing the right interaction pattern.
Beyond synchronous request/response: be message-centric, use shared vocabularies, and coordinate work via orchestration, choreography, or hypermedia workflow.
✦ Complete · ⏱ 5 min 14 · Advanced Choreography and Async CommunicationCoordinate independent services without a central conductor: stateless choreography, shared correlation IDs, progress resources, and fallbacks for the failures distributed systems guarantee.
✦ Complete · ⏱ 4 min🔌 Design the contract for change you can’t coordinate
You rarely control every client of an API, so you can’t change it in lockstep. Treat the contract as the hard part: model resources and messages carefully, add fields rather than repurpose them, version deliberately, and prefer additive, tolerant readers. The implementation is replaceable; the contract is forever.