mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			330 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			JSON
		
	
	
	
			
		
		
	
	
			330 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			JSON
		
	
	
	
| {
 | |
|   "$id": "https://grafana.com/plugin-metadata",
 | |
|   "$schema": "http://json-schema.org/draft-07/schema",
 | |
|   "type": "object",
 | |
|   "title": "plugin.json",
 | |
|   "description": "The plugin.json file is required for all plugins. When Grafana starts, it scans the plugin folders and mounts every folder that contains a plugin.json file unless the folder contains a subfolder named dist. In that case, Grafana mounts the dist folder instead.",
 | |
|   "required": ["type", "name", "id", "info", "dependencies"],
 | |
|   "additionalProperties": false,
 | |
|   "properties": {
 | |
|     "id": {
 | |
|       "type": "string",
 | |
|       "description": "Unique name of the plugin. If the plugin is published on grafana.com, then the plugin id has to follow the naming conventions.",
 | |
|       "pattern": "^[0-9a-z]+\\-([0-9a-z]+\\-)?(app|panel|datasource)$"
 | |
|     },
 | |
|     "type": {
 | |
|       "type": "string",
 | |
|       "description": "Plugin type. Possible values are `app`, `datasource`, and `panel`.",
 | |
|       "enum": ["app", "datasource", "panel"]
 | |
|     },
 | |
|     "name": {
 | |
|       "type": "string",
 | |
|       "description": "Human-readable name of the plugin that is shown to the user in the UI."
 | |
|     },
 | |
|     "category": {
 | |
|       "type": "string",
 | |
|       "description": "Plugin category used on the Add data source page. Possible values are: `tsdb`, `logging`, `cloud`, `tracing`, and `sql`.",
 | |
|       "enum": ["tsdb", "logging", "cloud", "tracing", "sql"]
 | |
|     },
 | |
|     "annotations": {
 | |
|       "type": "boolean",
 | |
|       "description": "For data source plugins. If the plugin supports annotation queries."
 | |
|     },
 | |
|     "alerting": {
 | |
|       "type": "boolean",
 | |
|       "description": "For data source plugins. If the plugin supports alerting."
 | |
|     },
 | |
|     "backend": {
 | |
|       "type": "boolean",
 | |
|       "description": "If the plugin has a backend component."
 | |
|     },
 | |
|     "executable": {
 | |
|       "type": "string",
 | |
|       "description": "The first part of the file name of the backend component executable. There can be multiple executables built for different operating system and architecture. Grafana will check for executables named `<executable>_<$GOOS>_<lower case $GOARCH><.exe for Windows>`, e.g. `plugin_linux_amd64`. Combination of $GOOS and $GOARCH can be found here: https://golang.org/doc/install/source#environment."
 | |
|     },
 | |
|     "includes": {
 | |
|       "type": "array",
 | |
|       "items": {
 | |
|         "type": "object",
 | |
|         "additionalItems": false,
 | |
|         "properties": {
 | |
|           "type": {
 | |
|             "type": "string"
 | |
|           },
 | |
|           "name": {
 | |
|             "type": "string"
 | |
|           },
 | |
|           "component": {
 | |
|             "type": "string"
 | |
|           },
 | |
|           "role": {
 | |
|             "type": "string"
 | |
|           },
 | |
|           "addToNav": {
 | |
|             "type": "boolean"
 | |
|           },
 | |
|           "defaultNav": {
 | |
|             "type": "boolean"
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     "logs": {
 | |
|       "type": "boolean",
 | |
|       "description": "For data source plugins. If the plugin supports logs."
 | |
|     },
 | |
|     "partials": {
 | |
|       "type": "object",
 | |
|       "additionalItems": false,
 | |
|       "properties": {
 | |
|         "config": {
 | |
|           "type": "string"
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     "metrics": {
 | |
|       "type": "boolean",
 | |
|       "description": "For data source plugins. If the plugin supports metric queries. Used in the Explore feature."
 | |
|     },
 | |
|     "mixed": {
 | |
|       "type": "boolean",
 | |
|       "description": "Not to be used by external plugins. Special property for the built-in mixed plugin."
 | |
|     },
 | |
|     "module": {
 | |
|       "type": "string"
 | |
|     },
 | |
|     "sort": {
 | |
|       "type": "number",
 | |
|       "description": "Internal property for sorting. Cannot be used as will be overwritten by Grafana."
 | |
|     },
 | |
|     "staticRoot": {
 | |
|       "type": "string"
 | |
|     },
 | |
|     "streaming": {
 | |
|       "type": "boolean",
 | |
|       "description": "For data source plugins. If the plugin supports streaming."
 | |
|     },
 | |
|     "tables": {
 | |
|       "type": "boolean"
 | |
|     },
 | |
|     "tracing": {
 | |
|       "type": "boolean",
 | |
|       "description": "For data source plugins. If the plugin supports tracing."
 | |
|     },
 | |
|     "hiddenQueries": {
 | |
|       "type": "boolean"
 | |
|     },
 | |
|     "dependencies": {
 | |
|       "type": "object",
 | |
|       "description": "Plugin dependencies.",
 | |
|       "required": ["grafanaDependency"],
 | |
|       "additionalProperties": false,
 | |
|       "properties": {
 | |
|         "grafanaVersion": {
 | |
|           "type": "string",
 | |
|           "description": "(Deprecated) Required Grafana version for this plugin, e.g. `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or v7.x.x.",
 | |
|           "pattern": "^([0-9]+)(\\.[0-9x]+)?(\\.[0-9x])?$"
 | |
|         },
 | |
|         "grafanaDependency": {
 | |
|           "type": "string",
 | |
|           "description": "Required Grafana version for this plugin, e.g. `>=7.0.0` to denote plugin requires Grafana 7.0.0 or later",
 | |
|           "pattern": "^(>=|<|>|<=)?([0-9]+)(\\.[0-9]+)?(\\.[0-9])?$"
 | |
|         },
 | |
|         "plugins": {
 | |
|           "type": "array",
 | |
|           "description": "An array of required plugins on which this plugin depends.",
 | |
|           "items": {
 | |
|             "type": "string"
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     "info": {
 | |
|       "type": "object",
 | |
|       "description": "Metadata for the plugin. Some fields are used on the plugins page in Grafana and others on grafana.com if the plugin is published.",
 | |
|       "required": ["logos", "version", "updated"],
 | |
|       "additionalProperties": false,
 | |
|       "properties": {
 | |
|         "author": {
 | |
|           "type": "object",
 | |
|           "description": "Information about the plugin author.",
 | |
|           "additionalProperties": false,
 | |
|           "properties": {
 | |
|             "name": {
 | |
|               "type": "string",
 | |
|               "description": "Author's name."
 | |
|             },
 | |
|             "email": {
 | |
|               "type": "string",
 | |
|               "description": "Author's name.",
 | |
|               "format": "email"
 | |
|             },
 | |
|             "url": {
 | |
|               "type": "string",
 | |
|               "description": "Link to author's website.",
 | |
|               "format": "uri"
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         "description": {
 | |
|           "type": "string",
 | |
|           "description": "Description of plugin. Used on the plugins page in Grafana and for search on grafana.com."
 | |
|         },
 | |
|         "keywords": {
 | |
|           "type": "array",
 | |
|           "description": "Array of plugin keywords. Used for search on grafana.com.",
 | |
|           "items": {
 | |
|             "type": "string"
 | |
|           }
 | |
|         },
 | |
|         "links": {
 | |
|           "type": "array",
 | |
|           "description": "An array of link objects to be displayed on this plugin's project page in the form `{name: 'foo', url: 'http://example.com'}`",
 | |
|           "items": {
 | |
|             "type": "object",
 | |
|             "additionalProperties": false,
 | |
|             "properties": {
 | |
|               "name": {
 | |
|                 "type": "string"
 | |
|               },
 | |
|               "url": {
 | |
|                 "type": "string",
 | |
|                 "format": "uri"
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         "logos": {
 | |
|           "type": "object",
 | |
|           "description": "SVG images that are used as plugin icons.",
 | |
|           "required": ["small", "large"],
 | |
|           "additionalProperties": false,
 | |
|           "properties": {
 | |
|             "small": {
 | |
|               "type": "string",
 | |
|               "description": "Link to the \"small\" version of the plugin logo, which must be an SVG image. \"Large\" and \"small\" logos can be the same image."
 | |
|             },
 | |
|             "large": {
 | |
|               "type": "string",
 | |
|               "description": "Link to the \"large\" version of the plugin logo, which must be an SVG image. \"Large\" and \"small\" logos can be the same image."
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         "screenshots": {
 | |
|           "type": "array",
 | |
|           "description": "An array of screenshot objects in the form `{name: 'bar', path: 'img/screenshot.png'}`",
 | |
|           "items": {
 | |
|             "type": "object",
 | |
|             "additionalProperties": false,
 | |
|             "properties": {
 | |
|               "name": {
 | |
|                 "type": "string"
 | |
|               },
 | |
|               "path": {
 | |
|                 "type": "string"
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         "updated": {
 | |
|           "type": "string",
 | |
|           "description": "Date when this plugin was built.",
 | |
|           "pattern": "^(\\d{4}-\\d{2}-\\d{2}|\\%TODAY\\%)$"
 | |
|         },
 | |
|         "version": {
 | |
|           "type": "string",
 | |
|           "description": "Project version of this commit, e.g. `6.7.x`.",
 | |
|           "pattern": "^([0-9x]+\\.[0-9x]+\\.*[0-9x]*$|\\%VERSION\\%)"
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     "queryOptions": {
 | |
|       "type": "object",
 | |
|       "description": "For data source plugins. There is a query options section in the plugin's query editor and these options can be turned on if needed.",
 | |
|       "additionalProperties": false,
 | |
|       "properties": {
 | |
|         "maxDataPoints": {
 | |
|           "type": "boolean",
 | |
|           "description": "For data source plugins. If the `max data points` option should be shown in the query options section in the query editor."
 | |
|         },
 | |
|         "minInterval": {
 | |
|           "type": "boolean",
 | |
|           "description": "For data source plugins. If the `min interval` option should be shown in the query options section in the query editor."
 | |
|         },
 | |
|         "cacheTimeout": {
 | |
|           "type": "boolean",
 | |
|           "description": "For data source plugins. If the `cache timeout` option should be shown in the query options section in the query editor."
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     "routes": {
 | |
|       "type": "array",
 | |
|       "description": "For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Authentication for data source plugins](https://grafana.com/docs/grafana/latest/developers/plugins/authentication/).",
 | |
|       "items": {
 | |
|         "type": "object",
 | |
|         "description": "For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Authentication for data source plugins](https://grafana.com/docs/grafana/latest/developers/plugins/authentication/).",
 | |
|         "additionalProperties": false,
 | |
|         "properties": {
 | |
|           "path": {
 | |
|             "type": "string",
 | |
|             "description": "For data source plugins. The route path that is replaced by the route URL field when proxying the call."
 | |
|           },
 | |
|           "method": {
 | |
|             "type": "string",
 | |
|             "description": "For data source plugins. Route method matches the HTTP verb like GET or POST."
 | |
|           },
 | |
|           "url": {
 | |
|             "type": "string",
 | |
|             "description": "For data source plugins. Route URL is where the request is proxied to."
 | |
|           },
 | |
|           "reqSignedIn": {
 | |
|             "type": "boolean"
 | |
|           },
 | |
|           "reqRole": {
 | |
|             "type": "string"
 | |
|           },
 | |
|           "headers": {
 | |
|             "type": "array",
 | |
|             "description": "For data source plugins. Route headers adds HTTP headers to the proxied request."
 | |
|           },
 | |
|           "tokenAuth": {
 | |
|             "type": "object",
 | |
|             "description": "For data source plugins. Token authentication section used with an OAuth API.",
 | |
|             "additionalProperties": false,
 | |
|             "properties": {
 | |
|               "url": {
 | |
|                 "type": "string",
 | |
|                 "description": "For data source plugins. URL to fetch the authentication token.",
 | |
|                 "format": "uri"
 | |
|               },
 | |
|               "params": {
 | |
|                 "type": "object",
 | |
|                 "description": "For data source plugins. Parameters for the token authentication request.",
 | |
|                 "additionalProperties": false,
 | |
|                 "properties": {
 | |
|                   "grant_type": {
 | |
|                     "type": "string",
 | |
|                     "description": "For data source plugins. OAuth grant type."
 | |
|                   },
 | |
|                   "client_id": {
 | |
|                     "type": "string",
 | |
|                     "description": "For data source plugins. OAuth client id."
 | |
|                   },
 | |
|                   "client_secret": {
 | |
|                     "type": "string",
 | |
|                     "description": "For data source plugins. OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob."
 | |
|                   },
 | |
|                   "resource": {
 | |
|                     "type": "string",
 | |
|                     "description": "For data source plugins. OAuth resource."
 | |
|                   }
 | |
|                 }
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 |