| Operation | HTTP Method | Purpose | Example |
|---|---|---|---|
| Create | POST | Add a new resource | Create a new user |
| Read | GET | Retrieve a resource | Get user information |
| Update | PUT/PATCH | Modify a resource | Update user profile |
| Delete | DELETE | Remove a resource | Delete user account |
| Operation | HTTP Method | Endpoint | Description |
|---|---|---|---|
| Create User | POST | /users | Register a new user account |
| Get User | GET | /users/{id} | Retrieve user information |
| Update User | PUT | /users/{id} | Update user profile |
| Delete User | DELETE | /users/{id} | Delete user account |
| Login | POST | /user/login | Authenticate and get token |
| Logout | POST | /user/logout | Invalidate session token |
/user (singular) instead of /users (plural). This is a common convention for operations that don't operate on a specific resource instance.Resource: User
Operations:
- Create β POST /users
- Read β GET /users/{id}
- Update β PUT /users/{id}
- Delete β DELETE /users/{id}
- Login β POST /user/login (special operation)
- Logout β POST /user/logout (special operation)/users (collection of users)/user (unless it's a special operation)/users/{id} (specific user)/users/getById?id=123 (use query params for filtering, not identification)/users/{id}/orders (orders for a user)/userOrders?userId=123 (less RESTful)/users/{id}/users/{userId} (redundant - we know it's a user ID)POST /users - Create a new user
GET /users/{id} - Get user by ID
PUT /users/{id} - Update user
DELETE /users/{id} - Delete user
POST /user/login - User login
POST /user/logout - User logoutUser Module/
βββ User Management/
β βββ POST /users
β βββ GET /users/{id}
β βββ PUT /users/{id}
β βββ DELETE /users/{id}
βββ Authentication/
βββ POST /user/login
βββ POST /user/logoutid β unique identifier (generated by system)email β for login and communication (must be unique)firstName β user's first namelastName β user's last namecreatedAt β when the account was created (generated by system)phone β phone number (for contact)preferences β user preferences objectnewsletter β whether to receive newsletter (boolean)notifications β whether to receive notifications (boolean)password β for login (never returned in responses, write-only)preferences is a nested object within User (not a separate resource)id and createdAt are read-only (set by system)password is write-only (never returned)| Field | Type | Validation Rules |
|---|---|---|
id | string | Pattern: usr_[A-Za-z0-9]{16}, read-only |
email | string | Valid email format, unique, required |
firstName | string | Required, max 50 characters |
lastName | string | Required, max 50 characters |
phone | string | Optional, E.164 format if provided |
password | string | Required for creation, write-only, min 8 characters |
preferences.newsletter | boolean | Optional, default: false |
preferences.notifications | boolean | Optional, default: true |
createdAt | date-time | Read-only, ISO 8601 format |
POST /users - Create user
GET /users/{id} - Get user
PUT /users/{id} - Update user
DELETE /users/{id} - Delete user
POST /user/login - Login
POST /user/logout - Logout