Reference · 42 terms

Glossary

Every short form used across the series. Inside a lesson, hover or tap any dotted term to see the same entry in place.

API basics

API contractAPI contract
Everything a caller can rely on: URLs, methods, request and response shapes, status codes and error format.Lesson 0 →
resourceResource
A thing the API is about, such as a user or an order, which has its own URL.Lesson 0 →
RESTRepresentational State Transfer
A style of web API built on resources with URLs, standard HTTP methods and status codes, and a stateless server.Lesson 0 →
statelessStateless
Each request carries everything the server needs, so the server keeps no memory of earlier requests.Lesson 0 →

HTTP basics

ETagEntity tag
A short label for one version of a resource, which changes when the resource changes.Lesson 1 →
exponential backoffExponential backoff
Waiting longer after each failed retry (1 s, 2 s, 4 s) with a little random time added so clients do not retry together.Lesson 1 →
idempotencyIdempotency
Doing the same request once or many times leaves the server in the same state, so a retry is safe.Lesson 1 →
optimistic concurrencyOptimistic concurrency
Let people edit freely, and reject a save with 412 if the thing changed since they read it.Lesson 1 →
safe methodSafe HTTP method
A method meant only to read, which must not change server state in a way the client asked for, such as GET.Lesson 1 →

Request and response design

DTOData Transfer Object
A plain object that describes the public shape of a request or response, kept apart from the database row.Lesson 2 →
mass assignmentMass assignment
A bug where the server copies every field a client sent into the database, letting the client set fields like role.Lesson 2 →
minor unitsMinor units
The smallest part of a currency as a whole number, such as cents, so 19.99 EUR is sent as 1999.Lesson 2 →
problem detailsProblem Details for HTTP APIs
The standard JSON error format with type, title, status, detail and instance, sent as application/problem+json.Lesson 2 →
RFC 3339RFC 3339 date and time
A standard text format for dates and times, such as 2026-03-08T14:30:00Z, where the Z means UTC.Lesson 2 →

Pagination

cursor paginationCursor (keyset) pagination
Paging by asking for the rows after the last one you saw, which stays fast and stable on any page.Lesson 3 →
offset paginationOffset pagination
Paging by skipping N rows then taking M, which gets slower on deep pages and can repeat or miss rows when data changes.Lesson 3 →
opaque cursorOpaque cursor
A position string the client sends back unchanged and must not read or build itself.Lesson 3 →
tie-breakerSort tie-breaker
A unique column, usually id, added last in the sort so rows with equal values keep a fixed order.Lesson 3 →

Versioning

breaking changeBreaking change
A change that makes a correct, existing client fail or behave wrongly, such as renaming or removing a field.Lesson 4 →
deprecationDeprecation and sunset
Marking a feature as still working but going away, with a sunset date after which it stops working.Lesson 4 →
expand and contractExpand and contract
Change an API safely in three steps: add the new thing, move clients over, then remove the old thing.Lesson 4 →
tolerant readerTolerant reader
A client that reads only the fields it needs, ignores unknown ones, and has a fallback for unknown enum values.Lesson 4 →

Reliability

exponential backoffExponential backoff with jitter
Waiting longer after each failed try, with some randomness, so many clients do not retry at the same moment.Lesson 5 →
HMACHash-based Message Authentication Code
A way to sign a message with a shared secret so the receiver can check it was not changed and came from the sender.Lesson 5 →
idempotency keyIdempotency key
A unique value the client sends with a POST so the server can recognise a retry and not do the work twice.Lesson 5 →
rate limitRate limit
A cap on how many requests a client may send in a time window, answered with 429 when exceeded.Lesson 5 →
webhookWebhook
A request your server sends to a customer's URL when an event happens, so they do not have to keep asking.Lesson 5 →

API security

API keyAPI key
A long random string that identifies the application calling an API; store only its hash.Lesson 6 →
authenticationAuthentication
Proving who the caller is, for example with a password, an API key or a token.Lesson 6 →
authorizationAuthorization
Deciding what an already identified caller is allowed to do.Lesson 6 →
BOLABroken Object Level Authorization
An API returns an object by id without checking that the caller may access it.Lesson 6 →
JWTJSON Web Token
A signed token with a header, a payload of claims and a signature; the payload is readable by anyone.Lesson 6 →
mass assignmentMass assignment
Copying every field from a request into a record, so a caller can set fields like role that they should not.Lesson 6 →
OAuth 2.0OAuth 2.0
A standard that lets a user give an app limited access to their data in another service without sharing a password.Lesson 6 →
PKCEProof Key for Code Exchange
An addition to the OAuth code flow where the client proves it started the login, so a stolen code is useless.Lesson 6 →
scopeOAuth scope
A named permission on a token, such as orders:read, that limits what the app may do.Lesson 6 →

API docs and contracts

contract testContract test
A test that calls the real API and checks the response against the written contract to catch drift.Lesson 7 →
OpenAPIOpenAPI Specification
A standard file format that describes an HTTP API so tools can make docs, checks, mocks and client code.Lesson 7 →

GraphQL and gRPC

GraphQLGraphQL
A typed query language for APIs where the client asks for exactly the fields it needs, usually through one URL.Lesson 8 →
gRPCgRPC
A framework for calling functions on another service over HTTP/2, usually with Protocol Buffers messages.Lesson 8 →
N+1 problemN+1 problem
One query for a list followed by one more query per item, which can be fixed by batching the lookups.Lesson 8 →
Protocol BuffersProtocol Buffers
A compact binary message format defined in .proto files, where numbered fields are the real contract.Lesson 8 →