1.8 KiB
1.8 KiB
Capability: API (OpenAPI-backed)
Purpose
Describe the core HTTP API behavior and constraints. The OpenAPI 3.1 contract lives in spec/openapi.yaml.
Requirements
Requirement: Health check
The system SHALL expose a health endpoint for availability checks.
Scenario: Health endpoint returns OK
- WHEN a client calls
GET /health - THEN the server returns
200
Requirement: Authentication
The system SHALL support email+password registration and login.
Scenario: Register then login
- WHEN a user registers with a valid email and password
- THEN the server returns a JWT token
- WHEN the user logs in with the same credentials
- THEN the server returns a JWT token
Requirement: Public bookmarks visibility
The system SHALL allow anonymous users to view public bookmarks.
Scenario: List public bookmarks without auth
- WHEN a client calls
GET /bookmarks/publicwithout a token - THEN the server returns
200and a list of bookmarks
Requirement: Private bookmarks visibility
The system SHALL restrict private bookmark data to authenticated users.
Scenario: List my bookmarks requires auth
- WHEN a client calls
GET /bookmarkswithout a token - THEN the server returns an auth error
- WHEN a client calls
GET /bookmarkswith a valid token - THEN the server returns
200and the user's bookmarks
Requirement: Sync (LWW)
The system SHALL support last-write-wins (LWW) synchronization for folders and bookmarks.
Scenario: Push local changes then pull
- WHEN an authenticated client calls
POST /sync/pushwith folders/bookmarks - THEN the server stores the items using LWW semantics
- WHEN the client calls
GET /sync/pull - THEN the server returns folders/bookmarks and
serverTime