Design a tagging system and REST APIs
AtlassianSoftware Engineer · OnsiteLast updated
This question evaluates a candidate's ability in RESTful API design, data modeling, concurrency control, idempotency, pagination, and indexing/search strategies for a multi-tenant tagging system. It is commonly asked in the system design category to assess architectural decision-making and both conceptual understanding and practical application of endpoints, schema, and edge-case handling.
Design a tagging system (similar to tagging pages/issues) with a strong focus on REST API design.
Functional requirements:
- Create a tag.
- Rename a tag.
- Delete a tag.
- Attach/detach one or more tags to/from an entity (e.g.,
page,issue, etc.). - List tags for an entity.
- Search entities by one or more tags (AND/OR semantics).
Non-functional requirements:
- Tags should be unique by name within a tenant/workspace.
- Handle concurrency and idempotency for attach/detach.
- Pagination for list/search endpoints.
Deliverables:
- Propose REST endpoints (request/response examples).
- Data model / DB schema.
- Indexing and query approach for tag search.
- Edge cases (deleting a tag that is attached, renaming collisions, bulk operations).
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.