Katkat

Design a tagging system and REST APIs

AtlassianSoftware Engineer · Onsite

Last 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).