diff --git a/pkg/api/api.go b/pkg/api/api.go index ec256bb5c52..a893ffd72e1 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -147,6 +147,11 @@ func Register(r *macaron.Macaron) { r.Put("/quotas/:target", bind(m.UpdateOrgQuotaCmd{}), wrap(UpdateOrgQuota)) }, reqGrafanaAdmin) + // orgs (admin routes) + r.Group("/orgs/name/:name", func() { + r.Get("/", wrap(GetOrgByName)) + }, reqGrafanaAdmin) + // auth api keys r.Group("/auth/keys", func() { r.Get("/", wrap(GetApiKeys)) diff --git a/pkg/api/org.go b/pkg/api/org.go index 6ed4a7c4a14..a64c6134eba 100644 --- a/pkg/api/org.go +++ b/pkg/api/org.go @@ -20,6 +20,33 @@ func GetOrgById(c *middleware.Context) Response { return getOrgHelper(c.ParamsInt64(":orgId")) } +// Get /api/orgs/:name +func GetOrgByName(c *middleware.Context) Response { + query := m.GetOrgByNameQuery{Name: c.Params(":name")} + if err := bus.Dispatch(&query); err != nil { + if err == m.ErrOrgNotFound { + return ApiError(404, "Organization not found", err) + } + + return ApiError(500, "Failed to get organization", err) + } + org := query.Result + result := m.OrgDetailsDTO{ + Id: org.Id, + Name: org.Name, + Address: m.Address{ + Address1: org.Address1, + Address2: org.Address2, + City: org.City, + ZipCode: org.ZipCode, + State: org.State, + Country: org.Country, + }, + } + + return Json(200, &result) +} + func getOrgHelper(orgId int64) Response { query := m.GetOrgByIdQuery{Id: orgId}