188 lines
6.9 KiB
Plaintext
188 lines
6.9 KiB
Plaintext
syntax = "v1"
|
|
|
|
type (
|
|
MemberMeData {
|
|
TenantID string `json:"tenant_id"`
|
|
UID string `json:"uid"`
|
|
Email string `json:"email"`
|
|
EmailVerified bool `json:"email_verified"`
|
|
DisplayName string `json:"display_name,omitempty"`
|
|
Avatar string `json:"avatar,omitempty"`
|
|
Phone string `json:"phone,omitempty"`
|
|
Language string `json:"language,omitempty"`
|
|
Currency string `json:"currency,omitempty"`
|
|
Status string `json:"status"`
|
|
Origin string `json:"origin"`
|
|
Roles []string `json:"roles,omitempty"`
|
|
BusinessEmail string `json:"business_email,omitempty"`
|
|
BusinessEmailVerified bool `json:"business_email_verified"`
|
|
BusinessPhone string `json:"business_phone,omitempty"`
|
|
BusinessPhoneVerified bool `json:"business_phone_verified"`
|
|
CreateAt int64 `json:"create_at"`
|
|
UpdateAt int64 `json:"update_at"`
|
|
}
|
|
|
|
UpdateMemberMeReq {
|
|
DisplayName string `json:"display_name,optional"`
|
|
Avatar string `json:"avatar,optional"`
|
|
Language string `json:"language,optional"`
|
|
Currency string `json:"currency,optional"`
|
|
Phone string `json:"phone,optional"`
|
|
}
|
|
|
|
ListMembersReq {
|
|
Page int64 `form:"page,optional"`
|
|
PageSize int64 `form:"pageSize,optional"`
|
|
}
|
|
|
|
ListMembersData {
|
|
Pagination PaginationData `json:"pagination"`
|
|
List []MemberMeData `json:"list"`
|
|
}
|
|
|
|
MemberPath {
|
|
UID string `path:"uid" validate:"required"`
|
|
}
|
|
|
|
UpdateMemberRolesReq {
|
|
UID string `path:"uid" validate:"required"`
|
|
Roles []string `json:"roles" validate:"required"`
|
|
}
|
|
|
|
UpdateMemberPasswordReq {
|
|
UID string `path:"uid" validate:"required"`
|
|
Password string `json:"password" validate:"required,min=8,max=128"`
|
|
}
|
|
|
|
UpdateMemberProfileReq {
|
|
UID string `path:"uid" validate:"required"`
|
|
DisplayName *string `json:"display_name,optional"`
|
|
Avatar *string `json:"avatar,optional"`
|
|
Language *string `json:"language,optional"`
|
|
Currency *string `json:"currency,optional"`
|
|
Phone *string `json:"phone,optional"`
|
|
Status *string `json:"status,optional"`
|
|
BusinessEmail *string `json:"business_email,optional"`
|
|
BusinessEmailVerified *bool `json:"business_email_verified,optional"`
|
|
BusinessPhone *string `json:"business_phone,optional"`
|
|
BusinessPhoneVerified *bool `json:"business_phone_verified,optional"`
|
|
EmailVerified *bool `json:"email_verified,optional"`
|
|
}
|
|
|
|
UploadAvatarData {
|
|
Avatar string `json:"avatar"`
|
|
}
|
|
|
|
MemberPlacementSettingsData {
|
|
WebSearchProvider string `json:"web_search_provider"` // brave | exa
|
|
BraveAPIKey string `json:"brave_api_key,omitempty"`
|
|
BraveAPIKeyConfigured bool `json:"brave_api_key_configured"`
|
|
ExaAPIKey string `json:"exa_api_key,omitempty"`
|
|
ExaAPIKeyConfigured bool `json:"exa_api_key_configured"`
|
|
BraveCountry string `json:"brave_country"`
|
|
BraveSearchLang string `json:"brave_search_lang"`
|
|
ExaUserLocation string `json:"exa_user_location"`
|
|
ExpandStrategy string `json:"expand_strategy"` // brave | llm | hybrid
|
|
DevModeEnabled bool `json:"dev_mode_enabled"`
|
|
}
|
|
|
|
MemberAiSettingsData {
|
|
Provider string `json:"provider"`
|
|
Model string `json:"model"`
|
|
ResearchProvider string `json:"research_provider,omitempty"`
|
|
ResearchModel string `json:"research_model,omitempty"`
|
|
ApiKeys map[string]string `json:"api_keys,omitempty"`
|
|
ApiKeysConfigured map[string]interface{} `json:"api_keys_configured"`
|
|
}
|
|
|
|
UpdateMemberAiSettingsReq {
|
|
Provider *string `json:"provider,optional"`
|
|
Model *string `json:"model,optional"`
|
|
ResearchProvider *string `json:"research_provider,optional"`
|
|
ResearchModel *string `json:"research_model,optional"`
|
|
ApiKeys map[string]string `json:"api_keys,optional"`
|
|
}
|
|
|
|
MemberAiProviderModelsReq {
|
|
Provider string `path:"provider" validate:"required,oneof=opencode-go xai"`
|
|
ApiKey string `json:"api_key,optional"`
|
|
}
|
|
|
|
MemberAiProviderModelsData {
|
|
ID string `json:"id"`
|
|
Label string `json:"label"`
|
|
Models []string `json:"models"`
|
|
Streams bool `json:"streams"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|
|
|
|
UpdateMemberPlacementSettingsReq {
|
|
WebSearchProvider *string `json:"web_search_provider,optional"`
|
|
BraveAPIKey *string `json:"brave_api_key,optional"`
|
|
ExaAPIKey *string `json:"exa_api_key,optional"`
|
|
BraveCountry *string `json:"brave_country,optional"`
|
|
BraveSearchLang *string `json:"brave_search_lang,optional"`
|
|
ExaUserLocation *string `json:"exa_user_location,optional"`
|
|
ExpandStrategy *string `json:"expand_strategy,optional"`
|
|
DevModeEnabled *bool `json:"dev_mode_enabled,optional"`
|
|
}
|
|
|
|
MemberCapabilitiesData {
|
|
DiscoverReady bool `json:"discover_ready"`
|
|
AiReady bool `json:"ai_ready"`
|
|
PublishReady bool `json:"publish_ready"`
|
|
DiscoverHint string `json:"discover_hint,omitempty"`
|
|
AiHint string `json:"ai_hint,omitempty"`
|
|
PublishHint string `json:"publish_hint,omitempty"`
|
|
ActiveThreadsAccountId string `json:"active_threads_account_id,omitempty"`
|
|
}
|
|
)
|
|
|
|
@server(
|
|
group: member
|
|
prefix: /api/v1/members
|
|
middleware: AuthJWT
|
|
tags: "Member"
|
|
summary: "Current member profile endpoints. Requires Bearer JWT or dev headers."
|
|
)
|
|
service gateway {
|
|
@handler listMembers
|
|
get / (ListMembersReq) returns (ListMembersData)
|
|
|
|
@handler getMemberMe
|
|
get /me returns (MemberMeData)
|
|
|
|
@handler updateMemberMe
|
|
patch /me (UpdateMemberMeReq) returns (MemberMeData)
|
|
|
|
@handler uploadMemberAvatar
|
|
post /me/avatar returns (UploadAvatarData)
|
|
|
|
@handler getMemberPlacementSettings
|
|
get /me/placement-settings returns (MemberPlacementSettingsData)
|
|
|
|
@handler updateMemberPlacementSettings
|
|
patch /me/placement-settings (UpdateMemberPlacementSettingsReq) returns (MemberPlacementSettingsData)
|
|
|
|
@handler getMemberAiSettings
|
|
get /me/ai-settings returns (MemberAiSettingsData)
|
|
|
|
@handler updateMemberAiSettings
|
|
put /me/ai-settings (UpdateMemberAiSettingsReq) returns (MemberAiSettingsData)
|
|
|
|
@handler listMemberAiProviderModels
|
|
post /me/ai-settings/providers/:provider/models (MemberAiProviderModelsReq) returns (MemberAiProviderModelsData)
|
|
|
|
@handler getMemberCapabilities
|
|
get /me/capabilities returns (MemberCapabilitiesData)
|
|
|
|
@handler updateMemberRoles
|
|
patch /:uid/roles (UpdateMemberRolesReq) returns (MemberMeData)
|
|
|
|
@handler updateMemberPassword
|
|
patch /:uid/password (UpdateMemberPasswordReq) returns (MemberMeData)
|
|
|
|
@handler updateMemberProfile
|
|
patch /:uid/profile (UpdateMemberProfileReq) returns (MemberMeData)
|
|
}
|