thread-master/apps/backend/internal/handler/routes.go

1013 lines
24 KiB
Go
Raw Normal View History

2026-07-10 12:54:45 +00:00
// Code generated by goctl. DO NOT EDIT.
// goctl 1.7.6
package handler
import (
"net/http"
admin "apps/backend/internal/handler/admin"
auth "apps/backend/internal/handler/auth"
2026-07-13 01:15:30 +00:00
compose "apps/backend/internal/handler/compose"
extension "apps/backend/internal/handler/extension"
inspire "apps/backend/internal/handler/inspire"
2026-07-13 03:18:08 +00:00
invite "apps/backend/internal/handler/invite"
2026-07-13 01:15:30 +00:00
jobs "apps/backend/internal/handler/jobs"
2026-07-10 12:54:45 +00:00
media "apps/backend/internal/handler/media"
2026-07-13 01:15:30 +00:00
mentions "apps/backend/internal/handler/mentions"
notifications "apps/backend/internal/handler/notifications"
outbox "apps/backend/internal/handler/outbox"
ownposts "apps/backend/internal/handler/ownposts"
personas "apps/backend/internal/handler/personas"
2026-07-10 12:54:45 +00:00
ping "apps/backend/internal/handler/ping"
2026-07-13 01:15:30 +00:00
plays "apps/backend/internal/handler/plays"
proxy "apps/backend/internal/handler/proxy"
research "apps/backend/internal/handler/research"
scout "apps/backend/internal/handler/scout"
2026-07-10 12:54:45 +00:00
settings "apps/backend/internal/handler/settings"
2026-07-13 01:15:30 +00:00
threads "apps/backend/internal/handler/threads"
usage "apps/backend/internal/handler/usage"
2026-07-10 12:54:45 +00:00
"apps/backend/internal/svc"
"github.com/zeromicro/go-zero/rest"
)
func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT, serverCtx.AdminAuth},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/members",
Handler: admin.ListMembersHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/members",
Handler: admin.CreateMemberHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/members/:uid",
Handler: admin.GetMemberHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/members/:uid/email-verified",
Handler: admin.SetEmailVerifiedHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/members/:uid/identities",
Handler: admin.ListMemberIdentitiesHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/members/:uid/reset-password",
Handler: admin.AdminResetPasswordHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/members/:uid/roles",
Handler: admin.SetRolesHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/members/:uid/status",
Handler: admin.SetStatusHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/members/:uid/suspend",
Handler: admin.SetSuspendedHandler(serverCtx),
},
}...,
),
rest.WithPrefix("/api/v1/admin"),
)
server.AddRoutes(
[]rest.Route{
{
Method: http.MethodPost,
Path: "/login",
Handler: auth.LoginHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/logout",
Handler: auth.LogoutHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/oauth/:provider/callback",
Handler: auth.OAuthCallbackHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/oauth/:provider/start",
Handler: auth.OAuthStartHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/password/request-reset",
Handler: auth.RequestPasswordResetHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/password/reset",
Handler: auth.ResetPasswordHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/refresh",
Handler: auth.RefreshHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/register",
Handler: auth.RegisterHandler(serverCtx),
},
},
rest.WithPrefix("/api/v1/auth"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/bind",
Handler: auth.BindAccountHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/email/send-code",
Handler: auth.SendEmailCodeHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/email/verify",
Handler: auth.VerifyEmailHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/identities",
Handler: auth.ListIdentitiesHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/logout-all",
Handler: auth.LogoutAllHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/me",
Handler: auth.MeHandler(serverCtx),
},
{
Method: http.MethodPatch,
Path: "/profile",
Handler: auth.UpdateProfileHandler(serverCtx),
},
{
Method: http.MethodPut,
Path: "/profile",
Handler: auth.UpdateProfilePutHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/unbind",
Handler: auth.UnbindAccountHandler(serverCtx),
},
}...,
),
rest.WithPrefix("/api/v1/auth"),
)
2026-07-13 01:15:30 +00:00
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/analyze-viral",
Handler: compose.ComposeAnalyzeViralHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/mimic",
Handler: compose.ComposeMimicHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/persona-preview",
Handler: compose.ComposePersonaPreviewHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/publish-single",
Handler: compose.ComposePublishSingleHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/compose"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/download",
Handler: extension.DownloadExtensionZipHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/extension"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/chat",
Handler: inspire.InspireChatHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/elements",
Handler: inspire.ListInspireElementsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/elements",
Handler: inspire.SaveInspireElementHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/elements/:id",
Handler: inspire.RemoveInspireElementHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/prompt-preview",
Handler: inspire.InspirePromptPreviewHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/session",
Handler: inspire.GetInspireSessionHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/session/clear",
Handler: inspire.ClearInspireSessionHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/sessions",
Handler: inspire.ListInspireSessionsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/sessions",
Handler: inspire.CreateInspireSessionHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/sessions/:id",
Handler: inspire.GetInspireSessionByIdHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/sessions/:id",
Handler: inspire.DeleteInspireSessionHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/sessions/:id/activate",
Handler: inspire.ActivateInspireSessionHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/trends",
Handler: inspire.ListTrendsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/trends/refresh",
Handler: inspire.RefreshTrendsHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/inspire"),
)
2026-07-13 03:18:08 +00:00
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/apply",
Handler: invite.ApplyInviteCodeHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/me",
Handler: invite.GetMyInviteNetworkHandler(serverCtx),
},
}...,
),
rest.WithPrefix("/api/v1/invite"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT, serverCtx.AdminAuth},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/move",
Handler: invite.MoveInviteMemberHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/parent-candidates",
Handler: invite.ListInviteParentCandidatesHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/tree",
Handler: invite.GetInviteTreeHandler(serverCtx),
},
}...,
),
rest.WithPrefix("/api/v1/invite"),
)
2026-07-13 01:15:30 +00:00
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: jobs.ListJobsHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/:id",
Handler: jobs.GetJobHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/:id",
Handler: jobs.DeleteJobHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/jobs"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT, serverCtx.AdminAuth},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/demo",
Handler: jobs.StartDemoJobHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/jobs"),
)
2026-07-10 12:54:45 +00:00
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
2026-07-13 08:59:13 +00:00
Path: "/upload",
Handler: media.UploadHandler(serverCtx),
2026-07-10 12:54:45 +00:00
},
}...,
),
rest.WithPrefix("/api/v1/media"),
)
2026-07-13 01:15:30 +00:00
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
2026-07-13 08:59:13 +00:00
Path: "/generate-image",
Handler: media.GenerateImageHandler(serverCtx),
2026-07-13 01:15:30 +00:00
},
}...,
),
2026-07-13 08:59:13 +00:00
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
2026-07-13 01:15:30 +00:00
rest.WithPrefix("/api/v1/media"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: mentions.ListMentionsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/generate-reply",
Handler: mentions.MentionGenerateReplyHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/mark-replied",
Handler: mentions.MentionMarkRepliedHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/skip",
Handler: mentions.MentionSkipHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/sync",
Handler: mentions.SyncMentionsHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/mentions"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: notifications.ListNotificationsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/read",
Handler: notifications.MarkNotificationReadHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/read-all",
Handler: notifications.MarkAllNotificationsReadHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/unread-count",
Handler: notifications.UnreadNotificationCountHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/notifications"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: outbox.ListOutboxHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/:id",
Handler: outbox.GetOutboxHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/:id",
Handler: outbox.RemoveOutboxHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/steps/:stepId/retry",
Handler: outbox.RetryOutboxStepHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/outbox"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: ownposts.ListOwnPostsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/analyze",
Handler: ownposts.OwnPostAnalyzeHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/generate-reply",
Handler: ownposts.OwnPostGenerateReplyHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/last-synced-at",
Handler: ownposts.OwnPostsLastSyncedHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/load-replies",
Handler: ownposts.OwnPostLoadRepliesHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/send-reply",
Handler: ownposts.OwnPostSendReplyHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/sync",
Handler: ownposts.SyncOwnPostsHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/own-posts"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: personas.ListPersonasHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/",
Handler: personas.SavePersonaHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/:id",
Handler: personas.GetPersonaHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/:id",
Handler: personas.RemovePersonaHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/analyze-account",
Handler: personas.AnalyzePersonaAccountHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/analyze-text",
Handler: personas.AnalyzePersonaTextHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/active",
Handler: personas.GetActivePersonaHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/active",
Handler: personas.SetActivePersonaHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/personas"),
)
2026-07-10 12:54:45 +00:00
server.AddRoutes(
[]rest.Route{
{
Method: http.MethodGet,
Path: "/health",
Handler: ping.HealthHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/ping",
Handler: ping.PingHandler(serverCtx),
},
},
rest.WithPrefix("/api/v1"),
)
2026-07-13 01:15:30 +00:00
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: plays.ListPlaysHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/",
Handler: plays.SavePlayHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/:id",
Handler: plays.GetPlayHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/:id",
Handler: plays.RemovePlayHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/generate-script",
Handler: plays.GeneratePlayScriptHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/submit",
Handler: plays.SubmitPlayHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/by-external",
Handler: plays.ListPlaysByExternalHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/by-post",
Handler: plays.ListPlaysByPostHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/generate-step",
Handler: plays.GeneratePlayStepHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/resolve-external",
Handler: plays.ResolveExternalLinkHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/plays"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/ai/complete",
Handler: proxy.AICompleteHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/search",
Handler: proxy.ExaSearchHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/proxy"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/search",
Handler: research.ResearchSearchHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/research"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/brands",
Handler: scout.ListBrandsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/brands",
Handler: scout.SaveBrandHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/brands-active",
Handler: scout.GetActiveBrandHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/brands-active",
Handler: scout.SetActiveBrandHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/brands/:id",
Handler: scout.GetBrandHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/brands/:id",
Handler: scout.RemoveBrandHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/brief",
Handler: scout.PrepareBriefHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/crawler-session",
Handler: scout.SetCrawlerSessionHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/crawler-session",
Handler: scout.ClearCrawlerSessionHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/homework",
Handler: scout.ListHomeworkHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/homework",
Handler: scout.SaveHomeworkHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/homework/:themeKey",
Handler: scout.GetHomeworkHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/homework/:themeKey",
Handler: scout.RemoveHomeworkHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/posts",
Handler: scout.ListScoutPostsHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/posts/:id",
Handler: scout.RemoveScoutPostHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/posts/:id/draft",
Handler: scout.DraftOutreachHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/posts/:id/mark-published",
Handler: scout.MarkPublishedHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/posts/:id/send",
Handler: scout.SendOutreachHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/posts/:id/skip",
Handler: scout.SkipOutreachHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/products",
Handler: scout.ListProductsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/products",
Handler: scout.SaveProductHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/products/:id",
Handler: scout.GetProductHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/products/:id",
Handler: scout.RemoveProductHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/products/all",
Handler: scout.ListAllProductsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/products/import",
Handler: scout.ImportProductHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/scan",
Handler: scout.RunScanHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/themes/:themeKey",
Handler: scout.RemoveScoutThemeHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/scout"),
)
2026-07-10 12:54:45 +00:00
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/ai",
Handler: settings.GetAiHandler(serverCtx),
},
{
Method: http.MethodPut,
Path: "/ai",
Handler: settings.SaveAiHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/models",
Handler: settings.ListModelsHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/placement",
Handler: settings.GetPlacementHandler(serverCtx),
},
{
Method: http.MethodPut,
Path: "/placement",
Handler: settings.SavePlacementHandler(serverCtx),
},
2026-07-13 01:15:30 +00:00
{
Method: http.MethodGet,
Path: "/threads",
Handler: settings.GetThreadsHandler(serverCtx),
},
2026-07-10 12:54:45 +00:00
}...,
),
rest.WithPrefix("/api/v1/settings"),
)
2026-07-13 01:15:30 +00:00
server.AddRoutes(
[]rest.Route{
{
Method: http.MethodGet,
Path: "/oauth/callback",
Handler: threads.ThreadsOAuthCallbackHandler(serverCtx),
},
},
rest.WithPrefix("/api/v1/threads-accounts"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/",
Handler: threads.ListThreadsAccountsHandler(serverCtx),
},
{
Method: http.MethodDelete,
Path: "/:id",
Handler: threads.DisconnectThreadsAccountHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/refresh",
Handler: threads.RefreshThreadsAccountHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/:id/session/import",
Handler: threads.ImportThreadsAccountSessionHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/oauth/start",
Handler: threads.ThreadsOAuthStartHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/threads-accounts"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT},
[]rest.Route{
{
Method: http.MethodGet,
Path: "/events",
Handler: usage.ListUsageEventsHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/prefs",
Handler: usage.GetUsagePrefsHandler(serverCtx),
},
{
Method: http.MethodPost,
Path: "/purchase",
Handler: usage.PurchasePlanHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/purchases",
Handler: usage.ListMyPurchasesHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/summary",
Handler: usage.GetUsageSummaryHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/usage"),
)
server.AddRoutes(
rest.WithMiddlewares(
[]rest.Middleware{serverCtx.AuthJWT, serverCtx.AdminAuth},
[]rest.Route{
{
Method: http.MethodPost,
Path: "/prefs",
Handler: usage.SetUsagePrefsHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/tenant-summary",
Handler: usage.GetTenantUsageSummaryHandler(serverCtx),
},
}...,
),
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
rest.WithPrefix("/api/v1/usage"),
)
2026-07-10 12:54:45 +00:00
}