# Grafana

Grafana: dashboards, datasources, folders, alerts, annotations, teams. Exposes **54 actions** covering the API surface an agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `grafana_dashboards_list` | List dashboards - GET /dashboards. |
| `grafana_dashboard_get` | Get one dashboard by UID - GET /dashboards/uid/&#123;uid&#125;. |
| `grafana_dashboard_create` | Create a dashboard - POST /dashboards. |
| `grafana_dashboard_update` | Update a dashboard - POST /dashboards/db. |
| `grafana_dashboard_delete` | Delete a dashboard - DELETE /dashboards/uid/&#123;uid&#125;. |
| `grafana_dashboards_search` | Search dashboards - GET /search. |
| `grafana_datasources_list` | List all datasources - GET /datasources. |
| `grafana_datasource_get` | Get one datasource by ID - GET /datasources/&#123;id&#125;. |
| `grafana_datasource_create` | Create a datasource - POST /datasources. |
| `grafana_datasource_update` | Update a datasource - PUT /datasources/&#123;id&#125;. |
| `grafana_datasource_delete` | Delete a datasource - DELETE /datasources/&#123;id&#125;. |
| `grafana_datasource_query` | Query a datasource - POST /datasources/&#123;id&#125;/query. |
| `grafana_folders_list` | List folders - GET /folders. |
| `grafana_folder_get` | Get one folder by ID - GET /folders/&#123;id&#125;. |
| `grafana_folder_create` | Create a folder - POST /folders. |
| `grafana_folder_update` | Update a folder - PUT /folders/&#123;id&#125;. |
| `grafana_folder_delete` | Delete a folder - DELETE /folders/&#123;id&#125;. |
| `grafana_alert_rules_list` | List alert rules - GET /v1/rules. |
| `grafana_alert_rule_get` | Get one alert rule by UID - GET /v1/rules/&#123;uid&#125;. |
| `grafana_alert_rule_create` | Create an alert rule - POST /v1/rules. |
| `grafana_alert_rule_update` | Update an alert rule - PUT /v1/rules/&#123;uid&#125;. |
| `grafana_alert_rule_delete` | Delete an alert rule - DELETE /v1/rules/&#123;uid&#125;. |
| `grafana_contact_points_list` | List contact points (notification channels) - GET /v1/provisioning/contact-points. |
| `grafana_contact_point_get` | Get one contact point by UID - GET /v1/provisioning/contact-points/&#123;uid&#125;. |
| `grafana_contact_point_create` | Create a contact point - POST /v1/provisioning/contact-points. |
| `grafana_contact_point_update` | Update a contact point - PUT /v1/provisioning/contact-points/&#123;uid&#125;. |
| `grafana_contact_point_delete` | Delete a contact point - DELETE /v1/provisioning/contact-points/&#123;uid&#125;. |
| `grafana_annotations_list` | List annotations - GET /annotations. |
| `grafana_annotation_get` | Get one annotation by ID - GET /annotations/&#123;id&#125;. |
| `grafana_annotation_create` | Create an annotation - POST /annotations. |
| `grafana_annotation_delete` | Delete an annotation - DELETE /annotations/&#123;id&#125;. |
| `grafana_users_list` | List users - GET /users. |
| `grafana_user_get` | Get one user by ID - GET /users/&#123;id&#125;. |
| `grafana_user_create` | Create a user - POST /users. |
| `grafana_user_update` | Update a user - PUT /users/&#123;id&#125;. |
| `grafana_user_delete` | Delete a user - DELETE /users/&#123;id&#125;. |
| `grafana_orgs_list` | List organizations - GET /orgs. |
| `grafana_org_get` | Get one organization by ID - GET /orgs/&#123;id&#125;. |
| `grafana_org_create` | Create an organization - POST /orgs. |
| `grafana_org_update` | Update an organization - PUT /orgs/&#123;id&#125;. |
| `grafana_org_delete` | Delete an organization - DELETE /orgs/&#123;id&#125;. |
| `grafana_teams_list` | List teams - GET /teams. |
| `grafana_team_get` | Get one team by ID - GET /teams/&#123;id&#125;. |
| `grafana_team_create` | Create a team - POST /teams. |
| `grafana_team_update` | Update a team - PUT /teams/&#123;id&#125;. |
| `grafana_team_delete` | Delete a team - DELETE /teams/&#123;id&#125;. |
| `grafana_service_accounts_list` | List service accounts - GET /serviceaccounts. |
| `grafana_service_account_get` | Get one service account by ID - GET /serviceaccounts/&#123;id&#125;. |
| `grafana_service_account_create` | Create a service account - POST /serviceaccounts. |
| `grafana_service_account_update` | Update a service account - PATCH /serviceaccounts/&#123;id&#125;. |
| `grafana_service_account_delete` | Delete a service account - DELETE /serviceaccounts/&#123;id&#125;. |
| `grafana_api_keys_list` | List API keys - GET /auth/keys. |
| `grafana_api_key_create` | Create an API key - POST /auth/keys. |
| `grafana_api_key_delete` | Delete an API key - DELETE /auth/keys/&#123;id&#125;. |

## How to get credentials

This connector uses an **API key / token**. Create one in the provider
dashboard, then paste it into FlyMyAI:

- **`GRAFANA_URL`** - Your Grafana base URL, e.g. https://yourorg.grafana.net .
- **`GRAFANA_API_TOKEN`** - Grafana - Administration - Service accounts - Add token.

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| `GRAFANA_URL` | Your Grafana base URL, e.g. https://yourorg.grafana.net . |
| `GRAFANA_API_TOKEN` | Grafana - Administration - Service accounts - Add token. |

## Troubleshooting

- **`401 Unauthorized` / `403 Forbidden`** - the token is wrong, expired, or missing a required scope; regenerate it.
- **`429 Too Many Requests`** - provider rate limit; retry after a short backoff.
- **Unexpected `4xx` on writes** - double-check required fields; the agent confirms before write actions.

## Links

- [Grafana API documentation](https://grafana.com/docs/grafana/latest/developers/http_api/)
