---
title: "Update an existing data source."
method: PUT
path: "/datasources/uid/{uid}"
tags: ["datasources"]
---

# Update an existing data source.

`PUT /datasources/uid/{uid}`

Similar to creating a data source, `password` and `basicAuthPassword` should be defined under
secureJsonData in order to be stored securely as an encrypted blob in the database. Then, the
encrypted fields are listed under secureJsonFields section in the response.

If you are running Grafana Enterprise and have Fine-grained access control enabled
you need to have a permission with action: `datasources:write` and scopes: `datasources:*`, `datasources:uid:*` and `datasources:uid:1` (single data source).

## Path parameters

- `uid` string, required

## Request body

- UpdateDataSourceCommand — Also acts as api DTO
  - `access` string
  - `basicAuth` boolean
  - `basicAuthUser` string
  - `database` string
  - `isDefault` boolean
  - `jsonData` Json
  - `name` string
  - `secureJsonData` object
  - `type` string
  - `uid` string
  - `url` string
  - `user` string
  - `version` integer
  - `withCredentials` boolean

## Response `200`

(empty)

- object
  - `datasource` DataSource, required
    - `access` string
    - `accessControl` Metadata — Metadata contains user accesses for a given resource Ex: map[string]bool{"create":true, "delete": true}
    - `basicAuth` boolean
    - `basicAuthUser` string
    - `database` string
    - `id` integer
    - `isDefault` boolean
    - `jsonData` Json
    - `name` string
    - `orgId` integer
    - `readOnly` boolean
    - `secureJsonFields` object
    - `type` string
    - `typeLogoUrl` string
    - `uid` string
    - `url` string
    - `user` string
    - `version` integer
    - `withCredentials` boolean
  - `id` integer, required — ID Identifier of the new data source.
  - `message` string, required — Message Message of the deleted dashboard.
  - `name` string, required — Name of the new data source.

## Other responses

- `401` — UnauthorizedError is returned when the request is not authenticated.
- `403` — ForbiddenError is returned if the user/token has insufficient permissions to access the requested resource.
- `500` — InternalServerError is a general error indicating something went wrong internally.

---

[API](https://skmtc.net/nforgeio/apis/grafana-http-api.md) · [All operations](https://skmtc.net/nforgeio/apis/grafana-http-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nforgeio/grafana-http-api/revisions/3cb6c3f42dc7/schema)
