We break down how to turn a query string into part of the API contract: why parameters like
/api/v1/tasks?done=true&limit=20 control how the list is returned rather than identify a resource; how to design a stable parameter dictionary (
done,
q,
tag,
sort,
order,
limit,
offset); why a
*bool is useful for an optional flag; and how to lock down defaults and constraints to avoid implicit sorting and overload.