

| # | Database Collection | Description |
| 1 | friend_friend_requests | • id: uuid • recipient_profile_id: ObjectId • requester_profile_id: ObjectId • status: String "PENDING"|"ACCEPTED"|"DECLINED" • message: String • feedback: String • created_at: Date • created_by: ObjectId • modified_at: Date • modified_by: ObjectId |
| 2 | friend_friends | • id: uuid • profile_id: ObjectId • friend_profile_id: ObjectId • created_at: Date • created_by: ObjectId • modified_at: Date • modified_by: ObjectId • deleted_at: Date • deleted_by: ObjectId |

| # | Path | Description | Method | Headers | Request | Response |
| 1 | profile/internal/v1/{userId}/friend-requests | View pending friend requests | GET | • x-server-key | N/A | { items: [ { id: String, recipientProfileId: ObjectId, requesterProfileId: ObjectId, status: String "PENDING"|"ACCEPTED"|"DECLINED", message: String, feedback: String, createdAt: Date, createdBy: ObjectId, modifiedAt: Date, modifiedBy: ObjectId } ] paging: { cursors: { before: String, after: String } }} |
| 2 | profile/internal/v1/{userId}/friend-requests | Send personalized friend request | POST | • x-server-key | { recipientProfileId: String, message?: String, } | { id: String, recipientProfileId: ObjectId, requesterProfileId: ObjectId, status: "PENDING", message: String, feedback: String, createdAt: Date, createdBy: ObjectId, modifiedAt: Date, modifiedBy: ObjectId} |
| 3 | profile/internal/v1/{userId}/friend-requests/{requestId}/accept | Accept friend request | PUT | • x-server-key | N/A | SuccessResponseDTO |
| 4 | profile/internal/v1/{userId}/friend-requests/{requestId}/decline | Decline friend request | PUT | • x-server-key | { feedback?: String } | SuccessResponseDTO |
| 5 | profile/internal/v1/{userId}/friends | View all friends | GET | • x-server-key | N/A | { items: [ { id: String, profileId: ObjectId friendProfileId: ObjectId createdAt: Date, createdBy: ObjectId, modifiedAt: Date, modifiedBy: ObjectId, deletedAt: Date, deletedBy: ObjectId } ] paging: { cursors: { before: String, after: String } }} |
| 6 | profile/internal/v1/{userId}/friends/{friendProfileId} | Remove a friend | DELETE | • x-server-key | N/A | SuccessResponseDTO |
| 7 | profile/cms/v1/{userId}/friend-requests | View all friend requests | GET | • x-access-token | N/A | { items: [ { id: String, recipientProfileId: ObjectId, requesterProfileId: ObjectId, status: String "PENDING"|"ACCEPTED"|"DECLINED", message: String, feedback: String, createdAt: Date, createdBy: ObjectId, modifiedAt: Date, modifiedBy: ObjectId } ] paging: { cursors: { before: String, after: String } }} |
| 8 | profile/cms/v1/{userId}/friends | View all friends | GET | • x-access-token | N/A | { items: [ { id: String, profileId: ObjectId friendProfileId: ObjectId createdAt: Date, createdBy: ObjectId, modifiedAt: Date, modifiedBy: ObjectId, deletedAt: Date, deletedBy: ObjectId } ] paging: { cursors: { before: String, after: String } }} |



Trong văn hóa châu Á, đặc biệt là ở Việt Nam, chúng ta thường nghe câu "Có công mài sắt, có ngày nên kim". Điều này hoàn toàn đúng với việc học lập trình. Việc code mỗi ngày, dù chỉ một chút, cũng như giọt nước mưa kiên trì rơi xuống, từng giọt một sẽ tạo nên đại dương mênh mông của kiến thức và kinh nghiệm.
Beiryu
Contributor

To improve your sleep quality, try eating a few hours before bedtime, taking a shower, burning an organic oil lamp, practicing a nightly yogic chant, and reminding yourself that you're not just your body. These tips can help eliminate negative thoughts from your bedtime routine and improve your overall well-being.
Beiryu
Contributor