diff --git a/apidoc.json b/apidoc.json index 597c8bf..60bb836 100644 --- a/apidoc.json +++ b/apidoc.json @@ -3,5 +3,5 @@ "version": "1.0.0", "description": "Open Accounting API documentation", "title": "Open Accounting API documentation", - "url" : "https://openaccounting.io/api" + "url" : "https://api.openaccounting.io" } \ No newline at end of file diff --git a/config.json.sample b/config.json.sample index 1402ca7..447d45c 100644 --- a/config.json.sample +++ b/config.json.sample @@ -1,6 +1,7 @@ { "WebUrl": "https://domain.com", "Port": 8080, + "ApiPrefix": "/api", "KeyFile": "", "CertFile": "", "Database": "openaccounting", diff --git a/core/api/api.go b/core/api/api.go index 7ab8a8b..8e57123 100644 --- a/core/api/api.go +++ b/core/api/api.go @@ -34,7 +34,7 @@ import ( * */ -func Init() (*rest.Api, error) { +func Init(prefix string) (*rest.Api, error) { rest.ErrorFieldName = "error" app := rest.NewApi() @@ -74,7 +74,7 @@ func Init() (*rest.Api, error) { app.Use(auth) app.Use(version) - router, err := GetRouter(auth) + router, err := GetRouter(auth, prefix) if err != nil { return nil, err } diff --git a/core/api/routes.go b/core/api/routes.go index 075d9eb..3c11164 100644 --- a/core/api/routes.go +++ b/core/api/routes.go @@ -5,44 +5,44 @@ import ( "github.com/openaccounting/oa-server/core/ws" ) -func GetRouter(auth *AuthMiddleware) (rest.App, error) { +func GetRouter(auth *AuthMiddleware, prefix string) (rest.App, error) { return rest.MakeRouter( - rest.Get("/api/user", auth.RequireAuth(GetUser)), - rest.Put("/api/user", PutUser), - rest.Post("/api/user/verify", VerifyUser), - rest.Post("/api/user/reset-password", ResetPassword), - rest.Post("/api/users", PostUser), - rest.Post("/api/orgs", auth.RequireAuth(PostOrg)), - rest.Get("/api/orgs", auth.RequireAuth(GetOrgs)), - rest.Get("/api/orgs/:orgId", auth.RequireAuth(GetOrg)), - rest.Put("/api/orgs/:orgId", auth.RequireAuth(PutOrg)), - rest.Get("/api/orgs/:orgId/ledgers", auth.RequireAuth(GetOrgAccounts)), - rest.Post("/api/orgs/:orgId/ledgers", auth.RequireAuth(PostAccount)), - rest.Put("/api/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(PutAccount)), - rest.Delete("/api/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(DeleteAccount)), - rest.Get("/api/orgs/:orgId/ledgers/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)), - rest.Get("/api/orgs/:orgId/accounts", auth.RequireAuth(GetOrgAccounts)), - rest.Post("/api/orgs/:orgId/accounts", auth.RequireAuth(PostAccount)), - rest.Put("/api/orgs/:orgId/accounts/:accountId", auth.RequireAuth(PutAccount)), - rest.Delete("/api/orgs/:orgId/accounts/:accountId", auth.RequireAuth(DeleteAccount)), - rest.Get("/api/orgs/:orgId/accounts/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)), - rest.Get("/api/orgs/:orgId/transactions", auth.RequireAuth(GetTransactionsByOrg)), - rest.Post("/api/orgs/:orgId/transactions", auth.RequireAuth(PostTransaction)), - rest.Put("/api/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(PutTransaction)), - rest.Delete("/api/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(DeleteTransaction)), - rest.Get("/api/orgs/:orgId/prices", auth.RequireAuth(GetPrices)), - rest.Post("/api/orgs/:orgId/prices", auth.RequireAuth(PostPrice)), - rest.Delete("/api/orgs/:orgId/prices/:priceId", auth.RequireAuth(DeletePrice)), - rest.Get("/ws", ws.Handler), - rest.Post("/api/sessions", auth.RequireAuth(PostSession)), - rest.Delete("/api/sessions/:sessionId", auth.RequireAuth(DeleteSession)), - rest.Get("/api/apikeys", auth.RequireAuth(GetApiKeys)), - rest.Post("/api/apikeys", auth.RequireAuth(PostApiKey)), - rest.Put("/api/apikeys/:apiKeyId", auth.RequireAuth(PutApiKey)), - rest.Delete("/api/apikeys/:apiKeyId", auth.RequireAuth(DeleteApiKey)), - rest.Get("/api/orgs/:orgId/invites", auth.RequireAuth(GetInvites)), - rest.Post("/api/orgs/:orgId/invites", auth.RequireAuth(PostInvite)), - rest.Put("/api/orgs/:orgId/invites/:inviteId", auth.RequireAuth(PutInvite)), - rest.Delete("/api/orgs/:orgId/invites/:inviteId", auth.RequireAuth(DeleteInvite)), + rest.Get(prefix + "/user", auth.RequireAuth(GetUser)), + rest.Put(prefix + "/user", PutUser), + rest.Post(prefix + "/user/verify", VerifyUser), + rest.Post(prefix + "/user/reset-password", ResetPassword), + rest.Post(prefix + "/users", PostUser), + rest.Post(prefix + "/orgs", auth.RequireAuth(PostOrg)), + rest.Get(prefix + "/orgs", auth.RequireAuth(GetOrgs)), + rest.Get(prefix + "/orgs/:orgId", auth.RequireAuth(GetOrg)), + rest.Put(prefix + "/orgs/:orgId", auth.RequireAuth(PutOrg)), + rest.Get(prefix + "/orgs/:orgId/ledgers", auth.RequireAuth(GetOrgAccounts)), + rest.Post(prefix + "/orgs/:orgId/ledgers", auth.RequireAuth(PostAccount)), + rest.Put(prefix + "/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(PutAccount)), + rest.Delete(prefix + "/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(DeleteAccount)), + rest.Get(prefix + "/orgs/:orgId/ledgers/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)), + rest.Get(prefix + "/orgs/:orgId/accounts", auth.RequireAuth(GetOrgAccounts)), + rest.Post(prefix + "/orgs/:orgId/accounts", auth.RequireAuth(PostAccount)), + rest.Put(prefix + "/orgs/:orgId/accounts/:accountId", auth.RequireAuth(PutAccount)), + rest.Delete(prefix + "/orgs/:orgId/accounts/:accountId", auth.RequireAuth(DeleteAccount)), + rest.Get(prefix + "/orgs/:orgId/accounts/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)), + rest.Get(prefix + "/orgs/:orgId/transactions", auth.RequireAuth(GetTransactionsByOrg)), + rest.Post(prefix + "/orgs/:orgId/transactions", auth.RequireAuth(PostTransaction)), + rest.Put(prefix + "/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(PutTransaction)), + rest.Delete(prefix + "/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(DeleteTransaction)), + rest.Get(prefix + "/orgs/:orgId/prices", auth.RequireAuth(GetPrices)), + rest.Post(prefix + "/orgs/:orgId/prices", auth.RequireAuth(PostPrice)), + rest.Delete(prefix + "/orgs/:orgId/prices/:priceId", auth.RequireAuth(DeletePrice)), + rest.Get(prefix + "/ws", ws.Handler), + rest.Post(prefix + "/sessions", auth.RequireAuth(PostSession)), + rest.Delete(prefix + "/sessions/:sessionId", auth.RequireAuth(DeleteSession)), + rest.Get(prefix + "keys", auth.RequireAuth(GetApiKeys)), + rest.Post(prefix + "keys", auth.RequireAuth(PostApiKey)), + rest.Put(prefix + "keys/:apiKeyId", auth.RequireAuth(PutApiKey)), + rest.Delete(prefix + "keys/:apiKeyId", auth.RequireAuth(DeleteApiKey)), + rest.Get(prefix + "/orgs/:orgId/invites", auth.RequireAuth(GetInvites)), + rest.Post(prefix + "/orgs/:orgId/invites", auth.RequireAuth(PostInvite)), + rest.Put(prefix + "/orgs/:orgId/invites/:inviteId", auth.RequireAuth(PutInvite)), + rest.Delete(prefix + "/orgs/:orgId/invites/:inviteId", auth.RequireAuth(DeleteInvite)), ) } diff --git a/core/model/types/config.go b/core/model/types/config.go index 793ae52..92b1ef0 100644 --- a/core/model/types/config.go +++ b/core/model/types/config.go @@ -3,6 +3,7 @@ package types type Config struct { WebUrl string Port int + ApiPrefix string KeyFile string CertFile string Database string diff --git a/core/server.go b/core/server.go index 1f1ae41..817bac9 100644 --- a/core/server.go +++ b/core/server.go @@ -40,7 +40,7 @@ func main() { model.NewModel(db, bc, config) auth.NewAuthService(db, bc) - app, err := api.Init() + app, err := api.Init(config.ApiPrefix) if err != nil { log.Fatal(err)