Refactor user management API documentation and routing structure
- Updated README to reflect changes in user management APIs, renaming balance management to credits management and updating endpoints accordingly. - Enhanced team management section with detailed CRUD operations and member management, including invitation handling. - Refactored user.go to align with new API structure, replacing balance with credits and invite management with referral management, while adding invitation response handling.
This commit is contained in:
parent
3f5e0caef8
commit
88efa1bc99
2 changed files with 108 additions and 47 deletions
|
|
@ -78,16 +78,16 @@ This module provides comprehensive user management APIs including authentication
|
|||
| DELETE | `/user/api-keys/:key_id` | Required | Delete API key |
|
||||
| POST | `/user/api-keys/:key_id/regenerate` | Required | Regenerate API key |
|
||||
|
||||
### Balance & Credits
|
||||
### Credits & Top-up
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ------------------------------- | -------- | -------------------------- |
|
||||
| GET | `/user/balance` | Required | Get user balance info |
|
||||
| GET | `/user/balance/history` | Required | Get balance change history |
|
||||
| GET | `/user/balance/topup` | Required | Get topup records |
|
||||
| POST | `/user/balance/topup` | Required | Create topup order |
|
||||
| GET | `/user/balance/topup/:order_id` | Required | Get topup order status |
|
||||
| POST | `/user/balance/topup/card-code` | Required | Redeem card code |
|
||||
| GET | `/user/credits` | Required | Get user credits info |
|
||||
| GET | `/user/credits/history` | Required | Get credits change history |
|
||||
| GET | `/user/credits/topup` | Required | Get topup records |
|
||||
| POST | `/user/credits/topup` | Required | Create topup order |
|
||||
| GET | `/user/credits/topup/:order_id` | Required | Get topup order status |
|
||||
| POST | `/user/credits/topup/card-code` | Required | Redeem card code |
|
||||
|
||||
### Subscription Management
|
||||
|
||||
|
|
@ -105,33 +105,61 @@ This module provides comprehensive user management APIs including authentication
|
|||
|
||||
### Billing & Invoices
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ----------------------- | -------- | --------------------------- |
|
||||
| PUT | `/user/billing/history` | Required | Update user billing history |
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ------------------------ | -------- | ------------------------ |
|
||||
| GET | `/user/billing/history` | Required | Get user billing history |
|
||||
| GET | `/user/billing/invoices` | Required | Get user invoices list |
|
||||
|
||||
### Referral & Invitations
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | -------------------------- | -------- | --------------------------- |
|
||||
| GET | `/user/invite/code` | Required | Get user invite code |
|
||||
| GET | `/user/invite/statistics` | Required | Get user invite statistics |
|
||||
| GET | `/user/invite/history` | Required | Get user invite history |
|
||||
| GET | `/user/invite/commissions` | Required | Get user invite commissions |
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ---------------------------- | -------- | ----------------------------- |
|
||||
| GET | `/user/referral/code` | Required | Get user referral code |
|
||||
| GET | `/user/referral/statistics` | Required | Get user referral statistics |
|
||||
| GET | `/user/referral/history` | Required | Get user referral history |
|
||||
| GET | `/user/referral/commissions` | Required | Get user referral commissions |
|
||||
|
||||
### Team Management
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ----------------------------------------- | -------- | ---------------------------- |
|
||||
| GET | `/user/teams` | Required | Get user teams |
|
||||
| POST | `/user/teams` | Required | Create user team |
|
||||
| GET | `/user/teams/:team_id` | Required | Get user team details |
|
||||
| PUT | `/user/teams/:team_id` | Required | Update user team |
|
||||
| DELETE | `/user/teams/:team_id` | Required | Delete user team |
|
||||
| GET | `/user/teams/:team_id/members` | Required | Get user team members |
|
||||
| GET | `/user/teams/:team_id/members/:member_id` | Required | Get user team member details |
|
||||
| POST | `/user/teams/:team_id/members/:type` | Required | Create user team member |
|
||||
| PUT | `/user/teams/:team_id/members/:member_id` | Required | Update user team member |
|
||||
| DELETE | `/user/teams/:team_id/members/:member_id` | Required | Remove user team member |
|
||||
#### Team CRUD
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ---------------------- | -------- | --------------------- |
|
||||
| GET | `/user/teams` | Required | Get user teams |
|
||||
| POST | `/user/teams` | Required | Create user team |
|
||||
| GET | `/user/teams/:team_id` | Required | Get user team details |
|
||||
| PUT | `/user/teams/:team_id` | Required | Update user team |
|
||||
| DELETE | `/user/teams/:team_id` | Required | Delete user team |
|
||||
|
||||
#### Member Management
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ----------------------------------------- | -------- | --------------------------------- |
|
||||
| GET | `/user/teams/:team_id/members` | Required | Get user team members |
|
||||
| GET | `/user/teams/:team_id/members/:member_id` | Required | Get user team member details |
|
||||
| POST | `/user/teams/:team_id/members/direct` | Required | Add member directly (bots/system) |
|
||||
| PUT | `/user/teams/:team_id/members/:member_id` | Required | Update user team member |
|
||||
| DELETE | `/user/teams/:team_id/members/:member_id` | Required | Remove user team member |
|
||||
|
||||
#### Team Invitations
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | -------------------------------------------------------- | -------- | ---------------------- |
|
||||
| POST | `/user/teams/:team_id/invitations` | Required | Send team invitation |
|
||||
| GET | `/user/teams/:team_id/invitations` | Required | Get team invitations |
|
||||
| GET | `/user/teams/:team_id/invitations/:invitation_id` | Required | Get invitation details |
|
||||
| PUT | `/user/teams/:team_id/invitations/:invitation_id/resend` | Required | Resend invitation |
|
||||
| DELETE | `/user/teams/:team_id/invitations/:invitation_id` | Required | Cancel invitation |
|
||||
|
||||
### Invitation Response (Cross-module)
|
||||
|
||||
_Universal invitation response endpoints that handle invitations from any module (teams, organizations, etc.)_
|
||||
|
||||
| Method | Endpoint | Auth | Description |
|
||||
| ------ | ---------------------------------- | -------- | ---------------------------- |
|
||||
| GET | `/user/invitations/:token` | Public | Get invitation info by token |
|
||||
| POST | `/user/invitations/:token/accept` | Required | Accept invitation |
|
||||
| POST | `/user/invitations/:token/decline` | Public | Decline invitation |
|
||||
|
||||
### User Preferences
|
||||
|
||||
|
|
@ -170,3 +198,17 @@ This module provides comprehensive user management APIs including authentication
|
|||
- Rate limiting may apply to sensitive operations (password reset, verification codes)
|
||||
- This module is designed to eventually replace the `signin` module
|
||||
- OAuth callbacks support both GET (Google, GitHub) and POST (Apple, WeChat) methods
|
||||
|
||||
## Architecture
|
||||
|
||||
### Modular Design
|
||||
|
||||
- **Team Management**: Handles team CRUD, member management, and invitation sending
|
||||
- **Invitation Response**: Universal cross-module invitation handling (accept/decline)
|
||||
- **Dual Member Addition**: Supports both direct addition (bots/system) and invitation flow (users)
|
||||
|
||||
### Invitation Flow
|
||||
|
||||
1. **Send Invitation**: `POST /user/teams/:team_id/invitations`
|
||||
2. **Manage Invitations**: View, resend, or cancel via team-specific endpoints
|
||||
3. **Respond to Invitation**: Universal endpoints handle acceptance/decline regardless of source module
|
||||
|
|
|
|||
|
|
@ -22,13 +22,14 @@ func Attach(group *gin.RouterGroup, oauth types.OAuth) {
|
|||
attachAccount(group, oauth) // Account settings
|
||||
attachThirdParty(group, oauth) // Third party login
|
||||
attachMFA(group, oauth) // MFA settings
|
||||
attachBalance(group, oauth) // User balance management
|
||||
attachCredits(group, oauth) // User credits management
|
||||
attachSubscription(group, oauth) // User subscription management
|
||||
attachAPIKeys(group, oauth) // User API keys management
|
||||
attachUsage(group, oauth) // User usage management
|
||||
attachBilling(group, oauth) // User billing management
|
||||
attachInvite(group, oauth) // User invite management
|
||||
attachReferral(group, oauth) // User referral management
|
||||
attachTeam(group, oauth) // User team management
|
||||
attachInvitations(group, oauth) // Invitation response management
|
||||
attachPrivacy(group, oauth) // User privacy management
|
||||
|
||||
// User Management
|
||||
|
|
@ -39,6 +40,8 @@ func Attach(group *gin.RouterGroup, oauth types.OAuth) {
|
|||
func attachTeam(group *gin.RouterGroup, oauth types.OAuth) {
|
||||
team := group.Group("/teams")
|
||||
team.Use(oauth.Guard)
|
||||
|
||||
// Team CRUD
|
||||
team.GET("/", placeholder) // Get user teams
|
||||
team.GET("/:team_id", placeholder) // Get user team details
|
||||
team.POST("/", placeholder) // Create user team
|
||||
|
|
@ -48,9 +51,24 @@ func attachTeam(group *gin.RouterGroup, oauth types.OAuth) {
|
|||
// Member Management
|
||||
team.GET("/:team_id/members", placeholder) // Get user team members
|
||||
team.GET("/:team_id/members/:member_id", placeholder) // Get user team member details
|
||||
team.POST("/:team_id/members/:type", placeholder) // Create user team member
|
||||
team.POST("/:team_id/members/direct", placeholder) // Add member directly (for bots/system)
|
||||
team.PUT("/:team_id/members/:member_id", placeholder) // Update user team member
|
||||
team.DELETE("/:team_id/members/:member_id", placeholder) // Remove user team member
|
||||
|
||||
// Member Invitation Management
|
||||
team.POST("/:team_id/invitations", placeholder) // Send team invitation
|
||||
team.GET("/:team_id/invitations", placeholder) // Get team invitations
|
||||
team.GET("/:team_id/invitations/:invitation_id", placeholder) // Get invitation details
|
||||
team.PUT("/:team_id/invitations/:invitation_id/resend", placeholder) // Resend invitation
|
||||
team.DELETE("/:team_id/invitations/:invitation_id", placeholder) // Cancel invitation
|
||||
}
|
||||
|
||||
// Invitation Response Management (Cross-module invitation handling)
|
||||
func attachInvitations(group *gin.RouterGroup, oauth types.OAuth) {
|
||||
// Public endpoints for invitation recipients
|
||||
group.GET("/invitations/:token", placeholder) // Get invitation info by token (public)
|
||||
group.POST("/invitations/:token/accept", oauth.Guard, placeholder) // Accept invitation (requires login)
|
||||
group.POST("/invitations/:token/decline", placeholder) // Decline invitation (public)
|
||||
}
|
||||
|
||||
// User Privacy
|
||||
|
|
@ -76,30 +94,31 @@ func attachPreferences(group *gin.RouterGroup, oauth types.OAuth) {
|
|||
func attachBilling(group *gin.RouterGroup, oauth types.OAuth) {
|
||||
billing := group.Group("/billing")
|
||||
billing.Use(oauth.Guard)
|
||||
billing.PUT("/history", placeholder) // Update user billing history
|
||||
billing.GET("/history", placeholder) // Get user billing history
|
||||
billing.GET("/invoices", placeholder) // Get user invoices list
|
||||
}
|
||||
|
||||
// Invite Management
|
||||
func attachInvite(group *gin.RouterGroup, oauth types.OAuth) {
|
||||
invite := group.Group("/invite")
|
||||
invite.Use(oauth.Guard)
|
||||
// Referral Management
|
||||
func attachReferral(group *gin.RouterGroup, oauth types.OAuth) {
|
||||
referral := group.Group("/referral")
|
||||
referral.Use(oauth.Guard)
|
||||
|
||||
invite.GET("/code", placeholder) // Get user invite code
|
||||
invite.GET("/statistics", placeholder) // Get user invite statistics
|
||||
invite.GET("/history", placeholder) // Get user invite history
|
||||
invite.GET("/commissions", placeholder) // Get user invite commissions
|
||||
referral.GET("/code", placeholder) // Get user referral code
|
||||
referral.GET("/statistics", placeholder) // Get user referral statistics
|
||||
referral.GET("/history", placeholder) // Get user referral history
|
||||
referral.GET("/commissions", placeholder) // Get user referral commissions
|
||||
}
|
||||
|
||||
// User Balance Management
|
||||
func attachBalance(group *gin.RouterGroup, oauth types.OAuth) {
|
||||
balance := group.Group("/balance")
|
||||
balance.Use(oauth.Guard)
|
||||
// User Credits Management
|
||||
func attachCredits(group *gin.RouterGroup, oauth types.OAuth) {
|
||||
credits := group.Group("/credits")
|
||||
credits.Use(oauth.Guard)
|
||||
|
||||
balance.GET("/", placeholder) // Get user balance info
|
||||
balance.GET("/history", placeholder) // Get balance change history
|
||||
credits.GET("/", placeholder) // Get user credits info
|
||||
credits.GET("/history", placeholder) // Get credits change history
|
||||
|
||||
// Top-up Management
|
||||
topup := balance.Group("/topup")
|
||||
topup := credits.Group("/topup")
|
||||
topup.GET("/", placeholder) // Get topup records
|
||||
topup.POST("/", placeholder) // Create topup order
|
||||
topup.GET("/:order_id", placeholder) // Get topup order status
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue