docs/sources/as-code/observability-as-code/git-sync/export-resources.md
{{< admonition type="note" >}}
Git Sync functionalities are constantly evolving. Contact Grafana for support or to report any issues you encounter and help us improve this feature.
{{< /admonition >}}
You can add dashboards to Git Sync using any of the following options:
You can import dashboards directly into your Git Sync provisioned folders using the Grafana UI or the HTTP API.
To access the Import dashboard tool from the Git Sync UI:
Keep in mind the following:
For more information refer to Import dashboards in the Data Visualization documentation.
{{< admonition type="note" >}}
It may take a few minutes for your changes to reflect on your screen. If they don't, refresh the UI manually.
{{< /admonition >}}
You can also save a copy of dashboard directly from the Grafana UI to your provisioned folder.
To do so, follow these steps:
main is not supported.You can also export an existing dashboard from the terminal or from agentic coding tools using the CLI gcx. With gcx you can download the resources you want to sync from Grafana, and then commit and push those files to your provisioned Git repository. Git Sync will then detect the commit, and synchronize with Grafana.
{{< admonition type="note" >}}
For more information refer to the gcx documentation.
{{< /admonition >}}
To add a dashboard with gcx, follow these steps:
Set up the gcx context to point to your instance as documented in Defining contexts.
Pull the resources you want to sync from the instance to your local repository:
gcx resources pull dashboards --path <REPO_PATH>
Commit and push the resources to your Git repository:
git add <DASHBOARDS_PATH>
git commit -m "Add dashboards from Grafana"
git push
Where:
Delete the original unmanaged resources you want to sync from Grafana. This step is required because Git Sync will not adopt a resource while an unmanaged resource with the same UID (metadata.name) still exists in Grafana.
Trigger a new pull to complete the sync. The resources are recreated as provisioned, with their original UIDs, so existing links keep working.
{{< admonition type="note" >}}
Deleting resources implies certain operational caveats. Refer to How to delete existing resources in Grafana for more information.
{{< /admonition >}}
To add an existing dashboard to Git Sync via JSON export, you need to:
metadata.name) still exists in Grafana.{{< admonition type="note" >}}
Deleting resources implies certain operational caveats. Refer to How to delete existing resources in Grafana for more information.
{{< /admonition >}}
To export a dashboard as a JSON file it must follow this CRD structure:
{
'apiVersion': 'dashboard.grafana.app/v1',
'kind': 'Dashboard',
'metadata': { 'name': 'dcf2lve9akj8xsd' },
'spec': { /* Original dashboard JSON goes here */ },
}
The structure includes:
apiVersion: Specifies the API version. Both classic and v2 JSON models are supported. For more information, refer to Dashboard JSON model.kind: Identifies the resource type. For example, dashboard.metadata: Contains the dashboard identifier uid. You can find the identifier in the dashboard's URL or in the exported JSON.spec: Wraps your original dashboard JSON.If you add existing resources using gcx or via JSON import, the resource UID is kept, so you need to manually delete the original resource in Grafana to provision it with Git Sync.
When you delete a resource, keep in mind the following:
After you've saved a dashboard in Git, it'll be synchronized automatically, and you'll be able to work with it as any other provisioned resource. Refer to Work with provisioned dashboards for more information.