2020-05-14 04:21:31 -05:00
{
2020-05-14 07:05:08 -05:00
"$id" : "https://grafana.com/plugin-metadata" ,
2020-05-14 04:21:31 -05:00
"$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" : {
2020-08-19 14:27:44 -05:00
"$schema" : {
2020-08-20 16:37:49 -05:00
"type" : "string" ,
"description" : "Schema definition for the plugin.json file"
2020-08-19 14:27:44 -05:00
} ,
2020-05-14 04:21:31 -05:00
"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." ,
2020-08-05 10:37:51 -05:00
"pattern" : "^[0-9a-z]+\\-([0-9a-z]+\\-)?(app|panel|datasource)$"
2020-05-14 04:21:31 -05:00
} ,
"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" ,
2020-08-19 14:27:44 -05:00
"description" : "Plugin category used on the Add data source page. Possible values are: `tsdb`, `logging`, `cloud`, `tracing`, `sql`, `enterprise` and `other`." ,
"enum" : [ "tsdb" , "logging" , "cloud" , "tracing" , "sql" , "enterprise" , "other" ]
2020-05-14 04:21:31 -05:00
} ,
"annotations" : {
"type" : "boolean" ,
2020-05-14 07:05:08 -05:00
"description" : "For data source plugins. If the plugin supports annotation queries."
2020-05-14 04:21:31 -05:00
} ,
"alerting" : {
"type" : "boolean" ,
2020-05-14 07:05:08 -05:00
"description" : "For data source plugins. If the plugin supports alerting."
2020-05-14 04:21:31 -05:00
} ,
"backend" : {
"type" : "boolean" ,
2020-05-14 07:05:08 -05:00
"description" : "If the plugin has a backend component."
2020-05-14 04:21:31 -05:00
} ,
"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."
} ,
2020-09-17 06:19:40 -05:00
"preload" : {
"type" : "boolean" ,
"description" : "Initialize plugin on startup. By default, the plugin initializes on first use."
} ,
"state" : {
"type" : "string" ,
"description" : "Marks a plugin as a pre-release." ,
"enum" : [ "alpha" , "beta" ]
} ,
2020-05-14 04:21:31 -05:00
"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" ,
2020-05-14 07:05:08 -05:00
"description" : "For data source plugins. If the plugin supports logs."
2020-05-14 04:21:31 -05:00
} ,
2020-08-17 04:31:25 -05:00
"skipDataQuery" : {
"type" : "boolean" ,
"description" : "For panel plugins. Hides the query editor."
} ,
2020-05-14 04:21:31 -05:00
"partials" : {
"type" : "object" ,
"additionalItems" : false ,
"properties" : {
"config" : {
"type" : "string"
}
}
} ,
"metrics" : {
"type" : "boolean" ,
2020-05-14 07:05:08 -05:00
"description" : "For data source plugins. If the plugin supports metric queries. Used in the Explore feature."
2020-05-14 04:21:31 -05:00
} ,
"mixed" : {
"type" : "boolean" ,
"description" : "Not to be used by external plugins. Special property for the built-in mixed plugin."
} ,
"module" : {
2020-09-17 06:19:40 -05:00
"type" : "string" ,
"description" : ""
2020-05-14 04:21:31 -05:00
} ,
"sort" : {
"type" : "number" ,
"description" : "Internal property for sorting. Cannot be used as will be overwritten by Grafana."
} ,
"staticRoot" : {
"type" : "string"
} ,
"streaming" : {
"type" : "boolean" ,
2020-05-14 07:05:08 -05:00
"description" : "For data source plugins. If the plugin supports streaming."
2020-05-14 04:21:31 -05:00
} ,
"tables" : {
2020-05-14 07:05:08 -05:00
"type" : "boolean"
2020-05-14 04:21:31 -05:00
} ,
"tracing" : {
"type" : "boolean" ,
2020-05-14 07:05:08 -05:00
"description" : "For data source plugins. If the plugin supports tracing."
2020-05-14 04:21:31 -05:00
} ,
"hiddenQueries" : {
"type" : "boolean"
} ,
"dependencies" : {
"type" : "object" ,
"description" : "Plugin dependencies." ,
2020-08-05 10:37:51 -05:00
"required" : [ "grafanaDependency" ] ,
2020-05-14 04:21:31 -05:00
"additionalProperties" : false ,
"properties" : {
"grafanaVersion" : {
"type" : "string" ,
2020-08-05 10:37:51 -05:00
"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" ,
2020-08-17 04:59:43 -05:00
"description" : "Required Grafana version for this plugin. Validated using https://github.com/npm/node-semver." ,
"pattern" : "^(<=|>=|<|>|=|~|\\^)?([0-9]+)(\\.[0-9x\\*]+)(\\.[0-9x\\*])?(\\s(<=|>=|<|=>)?([0-9]+)(\\.[0-9x]+)(\\.[0-9x]))?$"
2020-05-14 04:21:31 -05:00
} ,
"plugins" : {
"type" : "array" ,
"description" : "An array of required plugins on which this plugin depends." ,
"items" : {
2020-05-14 07:05:08 -05:00
"type" : "string"
2020-05-14 04:21:31 -05:00
}
}
}
} ,
"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." ,
2020-08-19 14:27:44 -05:00
"required" : [ "logos" , "version" , "updated" , "keywords" ] ,
2020-05-14 04:21:31 -05:00
"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." ,
2020-08-19 14:27:44 -05:00
"minItems" : 1 ,
2020-05-14 04:21:31 -05:00
"items" : {
2020-05-14 07:05:08 -05:00
"type" : "string"
2020-05-14 04:21:31 -05:00
}
} ,
"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" ,
2020-05-14 07:05:08 -05:00
"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."
2020-05-14 04:21:31 -05:00
} ,
"large" : {
"type" : "string" ,
2020-05-14 07:05:08 -05:00
"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."
2020-05-14 04:21:31 -05:00
}
}
} ,
"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" ,
2020-08-05 10:37:51 -05:00
"description" : "For data source plugins. Route URL is where the request is proxied to."
2020-05-14 04:21:31 -05:00
} ,
"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."
}
}
}
}
}
}
}
}
}
}