Files
commerce/api/organization/organization.go
zeekay 1943f1c093 Hanzo Commerce
Multi-tenant commerce and billing: orders, subscriptions, invoices, plans,
usage metering and a credit ledger. One Go binary. MIT OR Apache-2.0.

Claude-Session: https://claude.ai/code/session_01SAtaDFm8VDiWrhYHNNtxMw
2026-09-23 21:52:16 -07:00

52 lines
2.2 KiB
Go

package organization
import (
"net/http"
"github.com/zap-proto/zip"
"github.com/hanzoai/commerce/api/organization/analytics"
"github.com/hanzoai/commerce/api/organization/integrations"
"github.com/hanzoai/commerce/api/organization/wallet"
"github.com/hanzoai/commerce/middleware"
"github.com/hanzoai/commerce/models/organization"
"github.com/hanzoai/commerce/util/permission"
"github.com/hanzoai/commerce/util/rest"
. "github.com/hanzoai/commerce/api/organization/newroutes"
)
func Route(router *zip.Group, args ...zip.Handler) {
adminRequired := middleware.TokenRequired(permission.Admin)
publishedRequired := middleware.TokenRequired(permission.Admin, permission.Published)
namespaced := middleware.Namespace()
// Fix this stuff so its secure
api := rest.New(organization.Organization{})
api.DefaultNamespace = true
// Older stuff
api.Prefix = "/c/"
api.GET("/:organizationid/analytics", adminRequired, namespaced, analytics.Get)
api.POST("/:organizationid/analytics", adminRequired, namespaced, analytics.Set)
api.PUT("/:organizationid/analytics", adminRequired, namespaced, analytics.Set)
api.PATCH("/:organizationid/analytics", adminRequired, namespaced, analytics.Update)
api.GET("/:organizationid/integrations", adminRequired, namespaced, integrations.Get)
api.POST("/:organizationid/integrations", adminRequired, namespaced, integrations.Upsert)
api.PUT("/:organizationid/integrations", adminRequired, namespaced, integrations.Upsert)
api.PATCH("/:organizationid/integrations", adminRequired, namespaced, integrations.Upsert)
api.DELETE("/:organizationid/integrations/:integrationid", adminRequired, namespaced, integrations.Delete)
api.GET("/:organizationid/wallet", adminRequired, namespaced, wallet.Get)
api.GET("/:organizationid/wallet/account/:name", adminRequired, namespaced, wallet.GetAccount)
api.POST("/:organizationid/wallet/account", adminRequired, namespaced, wallet.CreateAccount)
api.POST("/:organizationid/wallet/send", adminRequired, namespaced, wallet.Send)
api.Route(router, args...)
// Newer stuff
api2 := router.Group("organization")
api2.Raw(http.MethodGet, "/publicwithdrawableaccounts", publishedRequired, GetWithdrawableAccounts)
}