mirror of
https://github.com/hanzoai/commerce.git
synced 2026-10-30 15:08:42 +00:00
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
52 lines
2.2 KiB
Go
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)
|
|
}
|