mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			680 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			680 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| ---
 | ||
| aliases:
 | ||
|   - ../../http_api/reporting/
 | ||
| canonical: /docs/grafana/latest/developers/http_api/reporting/
 | ||
| description: Grafana Enterprise APIs
 | ||
| keywords:
 | ||
|   - grafana
 | ||
|   - enterprise
 | ||
|   - api
 | ||
|   - reporting
 | ||
| labels:
 | ||
|   products:
 | ||
|     - enterprise
 | ||
|     - oss
 | ||
| title: Reporting API
 | ||
| ---
 | ||
| 
 | ||
| # Reporting API
 | ||
| 
 | ||
| This API allows you to interact programmatically with the [Reporting]({{< relref "/docs/grafana/latest/dashboards/create-reports" >}}) feature.
 | ||
| 
 | ||
| > The Reporting API is not stabilized yet, it is still in active development and may change without prior notice.
 | ||
| 
 | ||
| > Reporting is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "/docs/grafana/latest/introduction/grafana-enterprise" >}}).
 | ||
| 
 | ||
| > If you are running Grafana Enterprise, for some endpoints you'll need to have specific permissions. Refer to [Role-based access control permissions]({{< relref "/docs/grafana/latest/administration/roles-and-permissions/access-control/custom-role-actions-scopes" >}}) for more information.
 | ||
| 
 | ||
| ## List all reports
 | ||
| 
 | ||
| `GET /api/reports`
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< relref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action       | Scope                       |
 | ||
| | ------------ | --------------------------- |
 | ||
| | reports:read | reports:\*<br>reports:id:\* |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| ```http
 | ||
| GET /api/reports HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| ```
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 1840
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **500** – Unexpected error or server misconfiguration. Refer to server logs for more details.
 | ||
| 
 | ||
| ## Get a report
 | ||
| 
 | ||
| `GET /api/reports/:id`
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< relref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action       | Scope                                                      |
 | ||
| | ------------ | ---------------------------------------------------------- |
 | ||
| | reports:read | reports:\*<br>reports:id:\*<br>reports:id:1(single report) |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| ```http
 | ||
| GET /api/reports/2 HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| ```
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 940
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **400** – Bad request (invalid report ID).
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **403** – Forbidden (access denied to a report or a dashboard used in the report).
 | ||
| - **404** – Not found (such report does not exist).
 | ||
| - **500** – Unexpected error or server misconfiguration. Refer to server logs for more details.
 | ||
| 
 | ||
| ## Create a report
 | ||
| 
 | ||
| `POST /api/reports`
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action         | Scope |
 | ||
| | -------------- | ----- |
 | ||
| | reports:create | n/a   |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| ```http
 | ||
| POST /api/reports HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| #### Config JSON Body Schema
 | ||
| 
 | ||
| | Field name         | Data type | Description                                                                                                                                                                                                                                                                                                                                                                                                                                       |
 | ||
| | ------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
 | ||
| | name               | string    | Name of the report that is used as an email subject.                                                                                                                                                                                                                                                                                                                                                                                              |
 | ||
| | recipients         | string    | Comma-separated list of emails to which to send the report to.                                                                                                                                                                                                                                                                                                                                                                                    |
 | ||
| | replyTo            | string    | Comma-separated list of emails used in a reply-to field of the report email.                                                                                                                                                                                                                                                                                                                                                                      |
 | ||
| | message            | string    | Text message used for the body of the report email.                                                                                                                                                                                                                                                                                                                                                                                               |
 | ||
| | startDate          | string    | Report distribution starts from this date.                                                                                                                                                                                                                                                                                                                                                                                                        |
 | ||
| | endDate            | string    | Report distribution ends on this date.                                                                                                                                                                                                                                                                                                                                                                                                            |
 | ||
| | frequency          | string    | Specifies how often the report should be sent. Can be `once`, `hourly`, `daily`, `weekly`, `monthly`, `last` or `custom`.<br/><br/>`last` - schedules the report for the last day of month.<br/><br/>`custom` - schedules the report to be sent on a custom interval.<br/>It requires `intervalFrequency` and `intervalAmount` to be specified: for example, every 2 weeks, where 2 is an `intervalAmount` and `weeks` is an `intervalFrequency`. |
 | ||
| | intervalFrequency  | string    | The type of the `custom` interval: `hours`, `days`, `weeks`, `months`.                                                                                                                                                                                                                                                                                                                                                                            |
 | ||
| | intervalAmount     | number    | `custom` interval amount.                                                                                                                                                                                                                                                                                                                                                                                                                         |
 | ||
| | workdaysOnly       | string    | Send the report only on Monday-Friday. Applicable to `hourly` and `daily` types of schedule.                                                                                                                                                                                                                                                                                                                                                      |
 | ||
| | timeZone           | string    | Time zone used to schedule report execution.                                                                                                                                                                                                                                                                                                                                                                                                      |
 | ||
| | orientation        | string    | Can be `portrait` or `landscape`.                                                                                                                                                                                                                                                                                                                                                                                                                 |
 | ||
| | layout             | string    | Can be `grid` or `simple`.                                                                                                                                                                                                                                                                                                                                                                                                                        |
 | ||
| | enableDashboardUrl | bool      | Adds a dashboard url to the bottom of the report email.                                                                                                                                                                                                                                                                                                                                                                                           |
 | ||
| | formats            | []string  | Specified what kind of attachment to generate for the report - `csv`, `pdf`, `image`.<br/>`pdf` is the default one.<br/>`csv` attaches a CSV file for each table panel.<br/>`image` embeds an image of a dashboard into the email's body.                                                                                                                                                                                                         |
 | ||
| | dashboards         | []object  | Dashboards to generate a report for.<br/> See "Report Dashboard Schema" section below.                                                                                                                                                                                                                                                                                                                                                            |
 | ||
| 
 | ||
| #### Report Dashboard Schema
 | ||
| 
 | ||
| | Field name                     | Data type | Description                                                                                                                                                   |
 | ||
| | ------------------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
 | ||
| | dashboard.uid                  | string    | Dashboard [UID](../dashboard#identifier-id-vs-unique-identifier-uid).                                                                                         |
 | ||
| | timeRange.from                 | string    | Dashboard time range from.                                                                                                                                    |
 | ||
| | timeRange.to                   | string    | Dashboard time range to.                                                                                                                                      |
 | ||
| | reportVariables.<variableName> | string    | Key-value pairs containing the template variables for this report, in JSON format. If empty, the template variables from the report's dashboard will be used. |
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 35
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **400** – Bad request (invalid json, missing or invalid fields values, etc.).
 | ||
| - **403** - Forbidden (access denied to a report or a dashboard used in the report).
 | ||
| - **500** - Unexpected error or server misconfiguration. Refer to server logs for more details
 | ||
| 
 | ||
| ## Update a report
 | ||
| 
 | ||
| `PUT /api/reports/:id`
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action        | Scope                                                     |
 | ||
| | ------------- | --------------------------------------------------------- |
 | ||
| | reports:write | reports:\*</br>reports:id:\*</br>reports:1(single report) |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| See [JSON body schema]({{< ref "#config-json-body-schema" >}}) for fields description.
 | ||
| 
 | ||
| ```http
 | ||
| GET /api/reports HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 28
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **400** – Bad request (invalid json, missing or invalid fields values, etc.).
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **403** – Forbidden (access denied to a report or a dashboard used in the report).
 | ||
| - **404** – Not found (such report does not exist).
 | ||
| - **500** – Unexpected error or server misconfiguration. Refer to server logs for more details.
 | ||
| 
 | ||
| ## Delete a report
 | ||
| 
 | ||
| `DELETE /api/reports/:id`
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action         | Scope                                                     |
 | ||
| | -------------- | --------------------------------------------------------- |
 | ||
| | reports:delete | reports:\*</br>reports:id:\*</br>reports:1(single report) |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| ```http
 | ||
| GET /api/reports/6 HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| ```
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 39
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **400** – Bad request (invalid report ID).
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **404** - Not found (report with this ID does not exist).
 | ||
| - **500** - Unexpected error or server misconfiguration. Refer to server logs for more details
 | ||
| 
 | ||
| ## Send a report
 | ||
| 
 | ||
| `POST /api/reports/email`
 | ||
| 
 | ||
| Generate and send a report. This API waits for the report to be generated before returning. We recommend that you set the client's timeout to at least 60 seconds.
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action       | Scope |
 | ||
| | ------------ | ----- |
 | ||
| | reports:send | n/a   |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| ```http
 | ||
| POST /api/reports/email HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| #### JSON Body Schema
 | ||
| 
 | ||
| | Field name          | Data type | Description                                                                                                                                            |
 | ||
| | ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
 | ||
| | id                  | string    | ID of the report to send. It is the same as in the URL when editing a report, not to be confused with the ID of the dashboard. Required.               |
 | ||
| | emails              | string    | Comma-separated list of emails to which to send the report to. Overrides the emails from the report. Required if `useEmailsFromReport` is not present. |
 | ||
| | useEmailsFromReport | boolean   | Send the report to the emails specified in the report. Required if `emails` is not present.                                                            |
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 29
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – Report was sent.
 | ||
| - **400** – Bad request (invalid json, missing content-type, missing or invalid fields, etc.).
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **403** - Forbidden (access denied to a report or a dashboard used in the report).
 | ||
| - **404** - Report not found.
 | ||
| - **500** - Unexpected error or server misconfiguration. Refer to server logs for more details.
 | ||
| 
 | ||
| ## Get reports branding settings
 | ||
| 
 | ||
| `GET /api/reports/settings`
 | ||
| 
 | ||
| Returns reports branding settings that are global and used across all the reports.
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action                | Scope |
 | ||
| | --------------------- | ----- |
 | ||
| | reports.settings:read | n/a   |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| ```http
 | ||
| GET /api/reports/settings HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| ```
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 181
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **500** - Unexpected error or server misconfiguration. Refer to server logs for more detail
 | ||
| 
 | ||
| ## Save reports branding settings
 | ||
| 
 | ||
| `POST /api/reports/settings`
 | ||
| 
 | ||
| Creates settings if they don't exist, otherwise updates them. These settings are global and used across all the reports.
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action                 | Scope |
 | ||
| | ---------------------- | ----- |
 | ||
| | reports.settings:write | n/a   |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| ```http
 | ||
| POST /api/reports/settings HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| #### JSON Body Schema
 | ||
| 
 | ||
| | Field name               | Data type | Description                                                                                                                                                                                                                                                                            |
 | ||
| | ------------------------ | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
 | ||
| | branding.reportLogoUrl   | string    | URL of an image used as a logo on every page of the report.                                                                                                                                                                                                                            |
 | ||
| | branding.emailLogoUrl    | string    | URL of an image used as a logo in the email.                                                                                                                                                                                                                                           |
 | ||
| | branding.emailFooterMode | string    | Can be `sent-by` or `none`.<br/>`sent-by` adds a "Sent by `branding.emailFooterText`" footer link to the email. Requires specifying values in the `branding.emailFooterText` and `branding.emailFooterLink` fields.<br/>`none` suppresses adding a "Sent by" footer link to the email. |
 | ||
| | branding.emailFooterText | string    | Text of a URL added to the email "Sent by" footer.                                                                                                                                                                                                                                     |
 | ||
| | branding.emailFooterLink | string    | URL address value added to the email "Sent by" footer.                                                                                                                                                                                                                                 |
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 35
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **400** – Bad request (invalid json, missing or invalid fields values, etc.).
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **500** - Unexpected error or server misconfiguration. Refer to server logs for more detail
 | ||
| 
 | ||
| ## Send a test email
 | ||
| 
 | ||
| `POST /api/reports/test-email`
 | ||
| 
 | ||
| Sends a test email with a report without persisting it in the database.
 | ||
| 
 | ||
| #### Required permissions
 | ||
| 
 | ||
| See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation.
 | ||
| 
 | ||
| | Action       | Scope |
 | ||
| | ------------ | ----- |
 | ||
| | reports:send | n/a   |
 | ||
| 
 | ||
| ### Example request
 | ||
| 
 | ||
| See [JSON body schema]({{< ref "#config-json-body-schema" >}}) for fields description.
 | ||
| 
 | ||
| ```http
 | ||
| POST /api/reports/test-email HTTP/1.1
 | ||
| Accept: application/json
 | ||
| Content-Type: application/json
 | ||
| Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Example response
 | ||
| 
 | ||
| ```http
 | ||
| HTTP/1.1 200 OK
 | ||
| Content-Type: application/json
 | ||
| Content-Length: 29
 | ||
| 
 | ||
| ```
 | ||
| 
 | ||
| ### Status Codes
 | ||
| 
 | ||
| - **200** – OK
 | ||
| - **400** – Bad request (invalid json, missing or invalid fields values, etc.).
 | ||
| - **401** - Authentication failed, refer to [Authentication API]({{< relref "/docs/grafana/latest/developers/http_api/auth" >}}).
 | ||
| - **403** - Forbidden (access denied to a report or a dashboard used in the report).
 | ||
| - **500** - Unexpected error or server misconfiguration. Refer to server logs for more details
 |