The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/pkg/api
Jo ccbf200c4a
SupportBundles: Add OAuth bundle collectors (#64810)
2 years ago
..
apierrors Chore: Fix status codes for nested folders (#59087) 3 years ago
avatar Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
datasource backend/datasources: move datasources models into the datasources service package (#51267) 3 years ago
dtos Navigation: Fix Home logo always going to `/login` (#62658) 2 years ago
frontendlogging Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
pluginproxy Plugins: Migrate `plugincontext`, `adapters` and `pluginsettings` to pkg/services/pluginsintegration package (#64154) 2 years ago
response Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
routing Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
static API: Extract OpenAPI specification from source code using go-swagger (#40528) 3 years ago
README.md API: Enable serving Swagger UI by default and add docs and guidelines (#63489) 2 years ago
accesscontrol.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
admin.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
admin_encryption.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
admin_provisioning.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
admin_provisioning_test.go RBAC: Rewrite provisioning rbac tests (#61752) 2 years ago
admin_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
admin_users.go Chore: Differentiate the ErrOrgNotFound error messages (#64131) 2 years ago
admin_users_test.go Chore: Differentiate the ErrOrgNotFound error messages (#64131) 2 years ago
alerting.go Chore: rename Id to ID in alert notification models (#62868) 2 years ago
annotations.go Rename Id to ID for annotation models (#62886) 2 years ago
annotations_test.go Rename Id to ID for annotation models (#62886) 2 years ago
api.go Chore: remove comments feature (#64644) 2 years ago
apikey.go API keys: Add last_used_at and docs changes for migration (#64293) 2 years ago
basic_auth.go Macaron: remove custom Request type (#37874) 4 years ago
basic_auth_test.go Macaron: remove custom Request type (#37874) 4 years ago
common_test.go Authn: Anon session service (#63052) 2 years ago
dashboard.go Pubdash: Email sharing handle dashboard deleted (#64247) 2 years ago
dashboard_permission.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
dashboard_permission_test.go Chore: cleanup dashboard service names (#64442) 2 years ago
dashboard_snapshot.go Snapshots: Fix deleting snapshot with non existent dashboard ID (#64345) 2 years ago
dashboard_snapshot_test.go Snapshots: Fix deleting snapshot with non existent dashboard ID (#64345) 2 years ago
dashboard_test.go Pubdash: Email sharing handle dashboard deleted (#64247) 2 years ago
dataproxy.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
datasources.go Plugins: Migrate `plugincontext`, `adapters` and `pluginsettings` to pkg/services/pluginsintegration package (#64154) 2 years ago
datasources_test.go Chore: Remove Result field from datasources (#63048) 2 years ago
fakes.go NavTree: Make it possible to configure where in nav tree plugins live (#55484) 3 years ago
folder.go Chore: Move library elements models to library elements service (#62507) 2 years ago
folder_permission.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
folder_permission_test.go Chore: cleanup dashboard service names (#64442) 2 years ago
folder_test.go Chore: Replace short UID generation with more standard UUIDs (#62731) 2 years ago
frontend_logging.go Chore: Add deprecation warnings for Sentry (#60165) 3 years ago
frontend_logging_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
frontend_metrics.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
frontendsettings.go Navigation: Fix Home logo always going to `/login` (#62658) 2 years ago
frontendsettings_test.go SupportBundles: Add OAuth bundle collectors (#64810) 2 years ago
grafana_com_proxy.go API: don't re-add /api suffix to grafana.com API URL (#62280) 2 years ago
health.go Chore: Remove Store interface and use db.DB instead (#60160) 3 years ago
health_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
http_server.go Chore: remove comments feature (#64644) 2 years ago
http_server_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
index.go Chore: Pass signed `user_hash` to Intercom via Rudderstack (#63921) 2 years ago
login.go AuthN: Login error handling (#64239) 2 years ago
login_oauth.go AuthN: Login error handling (#64239) 2 years ago
login_oauth_test.go SupportBundles: Add OAuth bundle collectors (#64810) 2 years ago
login_test.go Settings: Remove global variables for auth settings (#63795) 2 years ago
metrics.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
metrics_test.go Chore: Change fmt.Errorf to errors.New when there is no formatting required (#58600) 3 years ago
openapi3.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
org.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
org_invite.go Settings: Remove global variables for auth settings (#63795) 2 years ago
org_invite_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
org_test.go RBAC: remove access control mock from org quota tests (#61574) 2 years ago
org_users.go AccessControl: Clear user permission cache for update org user role (#62745) 2 years ago
org_users_test.go Users: Fix org user always getting org id = 1 on auto assign false (#63708) 2 years ago
password.go Settings: Remove global variables for auth settings (#63795) 2 years ago
playlist.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
playlist_play.go Chore: Update oapi-codegen library (#62962) 2 years ago
plugin_dashboards.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
plugin_dashboards_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
plugin_metrics.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
plugin_metrics_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
plugin_proxy.go Plugins: Migrate `plugincontext`, `adapters` and `pluginsettings` to pkg/services/pluginsintegration package (#64154) 2 years ago
plugin_proxy_test.go Plugins: Handle app plugin proxy routes per request (#51835) 3 years ago
plugin_resource.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
plugin_resource_test.go Plugins: Migrate `plugincontext`, `adapters` and `pluginsettings` to pkg/services/pluginsintegration package (#64154) 2 years ago
plugins.go Plugins: Migrate `plugincontext`, `adapters` and `pluginsettings` to pkg/services/pluginsintegration package (#64154) 2 years ago
plugins_test.go Plugins: Migrate `plugincontext`, `adapters` and `pluginsettings` to pkg/services/pluginsintegration package (#64154) 2 years ago
preferences.go Cookies: Provide a mechanism for per user control over cookies (#61566) 2 years ago
preferences_test.go Chore: Remove Result from dashboard models (#61997) 2 years ago
quota.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
quota_test.go Chore: Upgrade golangci-lint to v1.51.2 (#63630) 2 years ago
render.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
search.go Chore: Move search model from models package to search service (#62215) 2 years ago
search_test.go RBAC: Rewrite search and plugin list rbac test (#63483) 2 years ago
short_url.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
short_url_test.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
signup.go Orgs: Remove auto assign globals (#63754) 2 years ago
swagger.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
swagger_responses.go Chore: Move swagger definitions to the handlers (#52643) 3 years ago
swagger_tags.json Chore: Move swagger definitions to the handlers (#52643) 3 years ago
team.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
team_members.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
team_members_test.go Chore: Remove CreateUserForTests() (#64125) 2 years ago
team_test.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
user.go Settings: Remove global variables for auth settings (#63795) 2 years ago
user_test.go Chore: Remove CreateUserForTests() (#64125) 2 years ago
user_token.go Chore: Fix goimports grouping in pkg/api (#62419) 2 years ago
user_token_test.go Chore: Move ReqContext to contexthandler service (#62102) 2 years ago
utils.go Fix: Email and username trimming and invitation validation (#58442) 3 years ago

README.md

OpenAPI specifications

Since version 8.4, HTTP API details are specified using OpenAPI v2. Starting from version 9.1, there is also an OpenAPI v3 specification (generated by the v2 one using this script).

OpenAPI annotations

The OpenAPI v2 specification is generated automatically from the annotated Go code using go-swagger which scans the source code for annotation rules. Refer to this getting started guide for getting familiar with the toolkit.

Developers modifying the HTTP API endpoints need to make sure to add the necessary annotations so that their changes are reflected into the generated specifications.

Example of endpoint annotation

The following route defines a PATCH endpoint under the /serviceaccounts/{serviceAccountId} path with tag service_accounts (used for grouping together several routes) and operation ID updateServiceAccount (used for uniquely identifying routes and associate parameters and response with them).


// swagger:route PATCH /serviceaccounts/{serviceAccountId} service_accounts updateServiceAccount
//
// # Update service account
//
// Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):
// action: `serviceaccounts:write` scope: `serviceaccounts:id:1` (single service account)
//
// Responses:
// 200: updateServiceAccountResponse
// 400: badRequestError
// 401: unauthorisedError
// 403: forbiddenError
// 404: notFoundError
// 500: internalServerError

The go-swagger can discover such annotations by scanning any code imported by pkg/server but by convention we place the endpoint annotations above the endpoint definition.

Example of endpoint parameters

The following struct defines the route parameters for the updateServiceAccount endpoint. The route expects:

  • a path parameter denoting the service account identifier and
  • a body parameter with the new values for the specific service account

// swagger:parameters updateServiceAccount
type UpdateServiceAccountParams struct {
	// in:path
	ServiceAccountId int64 `json:"serviceAccountId"`
	// in:body
	Body serviceaccounts.UpdateServiceAccountForm
}

Example of endpoint response

The following struct defines the response for the updateServiceAccount endpoint in case of a successful 200 response.


// swagger:response updateServiceAccountResponse
type UpdateServiceAccountResponse struct {
	// in:body
	Body struct {
		Message        string                                    `json:"message"`
		ID             int64                                     `json:"id"`
		Name           string                                    `json:"name"`
		ServiceAccount *serviceaccounts.ServiceAccountProfileDTO `json:"serviceaccount"`
	}
}

OpenAPI generation

Developers can re-create the OpenAPI v2 and v3 specifications using the following command:


make clean-api-spec && make openapi3-gen

They can observe its output into the public/api-merged.json and public/openapi3.json files.

Finally, they can browser and try out both the OpenAPI v2 and v3 via the Swagger UI editor (served by the grafana server) by navigating to /swagger-ui and /openapi3 respectivally.