influxdb/server/swagger.json

4232 lines
119 KiB
JSON

{
"swagger": "2.0",
"info": {
"title": "Chronograf",
"description": "API endpoints for Chronograf",
"version": "1.4.1.3"
},
"schemes": ["http"],
"basePath": "/chronograf/v1",
"consumes": ["application/json"],
"produces": ["application/json"],
"paths": {
"/": {
"get": {
"tags": ["routes"],
"summary": "Lists all the endpoints",
"description": "List of the endpoints.",
"responses": {
"200": {
"description": "Returns the links to the top level endpoints.",
"schema": {
"$ref": "#/definitions/Routes"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources": {
"get": {
"tags": ["sources"],
"summary": "Configured data sources",
"description": "These data sources store time series data.",
"responses": {
"200": {
"description": "An array of data sources",
"schema": {
"$ref": "#/definitions/Sources"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["sources"],
"summary": "Create new data source",
"parameters": [
{
"name": "source",
"in": "body",
"description": "Configuration options for data source",
"schema": {
"$ref": "#/definitions/Source"
}
}
],
"responses": {
"201": {
"description": "Successfully create data source",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description":
"Location of the newly created data source resource."
}
},
"schema": {
"$ref": "#/definitions/Source"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}": {
"get": {
"tags": ["sources"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
}
],
"summary": "Configured data sources",
"description": "These data sources store time series data.",
"responses": {
"200": {
"description":
"Data source used to supply time series information.",
"schema": {
"$ref": "#/definitions/Source"
}
},
"404": {
"description": "Unknown source id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"patch": {
"tags": ["sources"],
"summary": "Update data source configuration",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of a data source",
"required": true
},
{
"name": "config",
"in": "body",
"description": "data source configuration",
"schema": {
"$ref": "#/definitions/Source"
},
"required": true
}
],
"responses": {
"200": {
"description": "Data source's configuration was changed",
"schema": {
"$ref": "#/definitions/Source"
}
},
"404": {
"description":
"Happens when trying to access a non-existent data source.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["sources"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
}
],
"summary":
"This specific data source will be removed from the data store. All associated kapacitor resources and kapacitor rules resources are also removed.",
"responses": {
"204": {
"description": "data source has been removed"
},
"404": {
"description": "Unknown data source id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/queries": {
"post": {
"tags": ["sources", "queries"],
"description": "Used to analyze queries for structure`",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "queries",
"in": "body",
"description": "Query Parameters",
"schema": {
"$ref": "#/definitions/Queries"
},
"required": true
}
],
"responses": {
"200": {
"description": "Result of the analysis of the query.",
"schema": {
"$ref": "#/definitions/QueriesResponse"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/proxy": {
"post": {
"tags": ["sources", "proxy"],
"description":
"Query the backend time series data source and return the response according to `format`",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "query",
"in": "body",
"description": "Query Parameters",
"schema": {
"$ref": "#/definitions/Proxy"
},
"required": true
}
],
"responses": {
"200": {
"description":
"Result of the query from the backend time series data source.",
"schema": {
"$ref": "#/definitions/ProxyResponse"
}
},
"400": {
"description":
"Any query that results in a data source error (syntax error, etc) will cause this response. The error message will be passed back in the body",
"schema": {
"$ref": "#/definitions/Error"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"408": {
"description": "Timeout trying to query data source.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/write": {
"post": {
"tags": ["sources", "write"],
"description": "Write points to the backend time series data source",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "query",
"in": "body",
"description": "Write Parameters",
"schema": {
"type": "string",
"format": "byte"
},
"required": true
},
{
"name": "db",
"in": "query",
"description": "Sets the target database for the write.",
"type": "string",
"required": true
},
{
"name": "rp",
"in": "query",
"description":
"Sets the target retention policy for the write. InfluxDB writes to the DEFAULT retention policy if you do not specify a retention policy.",
"type": "string"
},
{
"name": "precision",
"in": "query",
"description":
"Sets the precision for the supplied Unix time values. InfluxDB assumes that timestamps are in nanoseconds if you do not specify precision.",
"type": "string",
"enum": ["ns", "u", "ms", "s", "m", "h"]
},
{
"name": "consistency",
"in": "query",
"description":
"Sets the write consistency for the point. InfluxDB assumes that the write consistency is one if you do not specify consistency. See the InfluxEnterprise documentation for detailed descriptions of each consistency option.",
"type": "string",
"enum": ["any", "one", "quorum", "all"]
}
],
"responses": {
"204": {
"description": "Points written successfuly to database."
},
"400": {
"description":
"Any query that results in a data source error (syntax error, etc) will cause this response. The error message will be passed back in the body",
"schema": {
"$ref": "#/definitions/Error"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"408": {
"description": "Timeout trying to query data source.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/permissions": {
"get": {
"tags": ["sources", "users"],
"summary": "Retrieve possible permissions for this data source",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
}
],
"responses": {
"200": {
"description": "Listing of all possible permissions",
"schema": {
"$ref": "#/definitions/AllPermissions"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/users": {
"get": {
"tags": ["sources", "users"],
"summary": "Retrieve all data sources users",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
}
],
"responses": {
"200": {
"description": "Listing of all users",
"schema": {
"$ref": "#/definitions/Users"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["sources", "users"],
"summary": "Create new user for this data source",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "user",
"in": "body",
"description": "Configuration options for new user",
"schema": {
"$ref": "#/definitions/User"
}
}
],
"responses": {
"201": {
"description": "Successfully created new user",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description": "Location of the newly created user resource."
}
},
"schema": {
"$ref": "#/definitions/User"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/users/{user_id}": {
"get": {
"tags": ["sources", "users"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "ID of the specific user",
"required": true
}
],
"summary": "Returns information about a specific user",
"description": "Specific User within a data source",
"responses": {
"200": {
"description": "Information relating to the user",
"schema": {
"$ref": "#/definitions/User"
}
},
"404": {
"description": "Unknown user or unknown source",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"patch": {
"tags": ["sources", "users"],
"summary": "Update user configuration",
"description":
"Update one parameter at a time (one of password, permissions or roles)",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "ID of the specific user",
"required": true
},
{
"name": "config",
"in": "body",
"description": "user configuration",
"schema": {
"$ref": "#/definitions/User"
},
"required": true
}
],
"responses": {
"200": {
"description": "Users's configuration was changed",
"schema": {
"$ref": "#/definitions/User"
}
},
"404": {
"description":
"Happens when trying to access a non-existent user or source.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["sources", "users"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "ID of the specific user",
"required": true
}
],
"summary": "This specific user will be removed from the data source",
"responses": {
"204": {
"description": "User has been removed"
},
"404": {
"description": "Unknown user id or data source",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/roles": {
"get": {
"tags": ["sources", "users", "roles"],
"summary":
"Retrieve all data sources roles. Available only in Influx Enterprise",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
}
],
"responses": {
"200": {
"description": "Listing of all roles",
"schema": {
"$ref": "#/definitions/Roles"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["sources", "users", "roles"],
"summary": "Create new role for this data source",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "roleuser",
"in": "body",
"description": "Configuration options for new role",
"schema": {
"$ref": "#/definitions/Role"
}
}
],
"responses": {
"201": {
"description": "Successfully created new role",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description": "Location of the newly created role resource."
}
},
"schema": {
"$ref": "#/definitions/Role"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/roles/{role_id}": {
"get": {
"tags": ["sources", "users", "roles"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "role_id",
"in": "path",
"type": "string",
"description": "ID of the specific role",
"required": true
}
],
"summary": "Returns information about a specific role",
"description": "Specific role within a data source",
"responses": {
"200": {
"description": "Information relating to the role",
"schema": {
"$ref": "#/definitions/Role"
}
},
"404": {
"description": "Unknown role or unknown source",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"patch": {
"tags": ["sources", "users", "roles"],
"summary": "Update role configuration",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "role_id",
"in": "path",
"type": "string",
"description": "ID of the specific role",
"required": true
},
{
"name": "config",
"in": "body",
"description": "role configuration",
"schema": {
"$ref": "#/definitions/Role"
},
"required": true
}
],
"responses": {
"200": {
"description": "Roles's configuration was changed",
"schema": {
"$ref": "#/definitions/Role"
}
},
"404": {
"description":
"Happens when trying to access a non-existent role or source.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["sources", "users", "roles"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "role_id",
"in": "path",
"type": "string",
"description": "ID of the specific role",
"required": true
}
],
"summary": "This specific role will be removed from the data source",
"responses": {
"204": {
"description": "Role has been removed"
},
"404": {
"description": "Unknown role id or data source",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/dbs/": {
"get": {
"tags": ["databases"],
"summary": "Retrieve all databases for a source",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
}
],
"responses": {
"200": {
"description": "Listing of all databases for a source",
"schema": {
"$ref": "#/definitions/Databases"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["databases"],
"summary": "Create new database for a source",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "database",
"in": "body",
"description": "Configuration options for a database",
"schema": {
"$ref": "#/definitions/Database"
},
"required": true
}
],
"responses": {
"201": {
"description": "Database successfully created.",
"schema": {
"$ref": "#/definitions/Database"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/dbs/{db_id}": {
"delete": {
"tags": ["databases"],
"summary": "Delete database for a source",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "db_id",
"in": "path",
"type": "string",
"description": "ID of the database",
"required": true
}
],
"responses": {
"204": {
"description": "Database has been deleted"
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/dbs/{db_id}/rps": {
"get": {
"tags": ["retention policies"],
"summary": "Retrieve all retention policies for a database",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "db_id",
"in": "path",
"type": "string",
"description": "ID of the database",
"required": true
}
],
"responses": {
"200": {
"description": "Listing of all retention policies for a database",
"schema": {
"$ref": "#/definitions/RetentionPolicies"
}
},
"404": {
"description": "Specified retention policy does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["retention policies"],
"summary": "Create new retention policy for a database",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "db_id",
"in": "path",
"type": "string",
"description": "ID of the database",
"required": true
},
{
"name": "rp",
"in": "body",
"description": "Configuration options for the retention policy",
"schema": {
"$ref": "#/definitions/RetentionPolicy"
},
"required": true
}
],
"responses": {
"201": {
"description": "Retention Policy successfully created.",
"schema": {
"$ref": "#/definitions/RetentionPolicy"
}
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/dbs/{db_id}/rps/{rp_id}": {
"patch": {
"tags": ["retention policies"],
"summary": "Alter retention policy for a database",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "db_id",
"in": "path",
"type": "string",
"description": "ID of the database",
"required": true
},
{
"name": "rp_id",
"in": "path",
"type": "string",
"description": "ID of the retention policy",
"required": true
},
{
"name": "rp",
"in": "body",
"description": "Configuration options for the retention policy",
"schema": {
"$ref": "#/definitions/RetentionPolicy"
},
"required": true
}
],
"responses": {
"200": {
"description": "Retention Policy was altered",
"schema": {
"$ref": "#/definitions/RetentionPolicy"
}
},
"404": {
"description": "Database or source does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["retention policies"],
"summary": "Delete retention policy for a database",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the data source",
"required": true
},
{
"name": "db_id",
"in": "path",
"type": "string",
"description": "ID of the database",
"required": true
},
{
"name": "rp_id",
"in": "path",
"type": "string",
"description": "ID of the retention policy",
"required": true
}
],
"responses": {
"204": {
"description": "Retention Policy has been deleted"
},
"404": {
"description": "Data source id does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/kapacitors": {
"get": {
"tags": ["sources", "kapacitors"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
}
],
"summary": "Retrieve list of configured kapacitors",
"responses": {
"200": {
"description": "An array of kapacitors",
"schema": {
"$ref": "#/definitions/Kapacitors"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["sources", "kapacitors"],
"summary": "Create new kapacitor backend",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapacitor",
"in": "body",
"description": "Configuration options for kapacitor",
"schema": {
"$ref": "#/definitions/Kapacitor"
}
}
],
"responses": {
"201": {
"description": "Successfully created kapacitor source",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description":
"Location of the newly created kapacitor resource."
}
},
"schema": {
"$ref": "#/definitions/Kapacitor"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/kapacitors/{kapa_id}": {
"get": {
"tags": ["sources", "kapacitors"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor",
"required": true
}
],
"summary": "Configured kapacitors",
"description": "Retrieve information on a single kapacitor instance",
"responses": {
"200": {
"description": "Kapacitor connection information",
"schema": {
"$ref": "#/definitions/Kapacitor"
}
},
"404": {
"description": "Unknown data source or kapacitor id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"patch": {
"tags": ["sources", "kapacitors"],
"summary": "Update kapacitor configuration",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of a kapacitor backend",
"required": true
},
{
"name": "config",
"in": "body",
"description": "kapacitor configuration",
"schema": {
"$ref": "#/definitions/Kapacitor"
},
"required": true
}
],
"responses": {
"200": {
"description": "Kapacitor's configuration was changed",
"schema": {
"$ref": "#/definitions/Kapacitor"
}
},
"404": {
"description":
"Happens when trying to access a non-existent data source or kapacitor.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["sources", "kapacitors"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor",
"required": true
}
],
"summary": "Remove Kapacitor backend",
"description":
"This specific kapacitor will be removed. All associated rule resources will also be removed from the store.",
"responses": {
"204": {
"description": "kapacitor has been removed."
},
"404": {
"description": "Unknown Data source or Kapacitor id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/kapacitors/{kapa_id}/rules": {
"get": {
"tags": ["sources", "kapacitors", "rules"],
"description": "Get all defined alert rules.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor backend.",
"required": true
}
],
"responses": {
"200": {
"description":
"All alert rules for this specific kapacitor are returned",
"schema": {
"$ref": "#/definitions/Rules"
}
},
"404": {
"description": "Data source or Kapacitor ID does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["sources", "kapacitors", "rules"],
"description": "Create kapacitor alert rule",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor backend.",
"required": true
},
{
"name": "rule",
"in": "body",
"description": "Rule to generate alert rule",
"schema": {
"$ref": "#/definitions/Rule"
},
"required": true
}
],
"responses": {
"201": {
"description": "Successfully created new kapacitor alert rule",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description":
"Location of the newly created kapacitor rule resource."
}
},
"schema": {
"$ref": "#/definitions/Rule"
}
},
"404": {
"description": "Source ID or Kapacitor ID does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"422": {
"description":
"Source ID , Kapacitor ID or alert are unprocessable",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description":
"Internal server error; generally a problem creating alert in kapacitor",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/kapacitors/{kapa_id}/rules/{rule_id}": {
"get": {
"tags": ["sources", "kapacitors", "rules"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor",
"required": true
},
{
"name": "rule_id",
"in": "path",
"type": "string",
"description": "ID of the rule",
"required": true
}
],
"summary": "Specific kapacitor alert rule",
"description": "Alerting rule for kapacitor",
"responses": {
"200": {
"description": "Alert exists and has a specific TICKscript",
"schema": {
"$ref": "#/definitions/Rule"
}
},
"404": {
"description": "Unknown data source, kapacitor id, or rule id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"put": {
"tags": ["sources", "kapacitors", "rules"],
"summary": "Update rule alert rule configuration",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of a kapacitor backend",
"required": true
},
{
"name": "rule_id",
"in": "path",
"type": "string",
"description": "ID of a rule",
"required": true
},
{
"name": "rule",
"in": "body",
"description": "Rule update",
"schema": {
"$ref": "#/definitions/Rule"
},
"required": true
}
],
"responses": {
"200": {
"description": "Alert configuration was changed",
"schema": {
"$ref": "#/definitions/Rule"
}
},
"404": {
"description":
"Happens when trying to access a non-existent data source, kapacitor, or rule.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["sources", "kapacitors", "rules"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor",
"required": true
},
{
"name": "rule_id",
"in": "path",
"type": "string",
"description": "ID of the rule",
"required": true
}
],
"summary": "This specific alert rule will be removed.",
"responses": {
"204": {
"description": "Alert rule has been removed."
},
"404": {
"description": "Unknown Data source, Kapacitor id, or alert rule",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/kapacitors/{kapa_id}/proxy": {
"get": {
"tags": ["sources", "kapacitors", "proxy"],
"description":
"GET to `path` of kapacitor. The response and status code from kapacitor is directly returned.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor backend.",
"required": true
},
{
"name": "path",
"in": "query",
"type": "string",
"description":
"The kapacitor API path to use in the proxy redirect",
"required": true
}
],
"responses": {
"204": {
"description": "Kapacitor returned no content"
},
"404": {
"description": "Data source or Kapacitor ID does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Response directly from kapacitor",
"schema": {
"$ref": "#/definitions/KapacitorProxyResponse"
}
}
}
},
"delete": {
"tags": ["sources", "kapacitors", "proxy"],
"description":
"DELETE to `path` of kapacitor. The response and status code from kapacitor is directly returned.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor backend.",
"required": true
},
{
"name": "path",
"in": "query",
"type": "string",
"description":
"The kapacitor API path to use in the proxy redirect",
"required": true
}
],
"responses": {
"204": {
"description": "Kapacitor returned no content"
},
"404": {
"description": "Data source or Kapacitor ID does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Response directly from kapacitor",
"schema": {
"$ref": "#/definitions/KapacitorProxyResponse"
}
}
}
},
"patch": {
"tags": ["sources", "kapacitors", "proxy"],
"description":
"PATCH body directly to configured kapacitor. The response and status code from kapacitor is directly returned.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor backend.",
"required": true
},
{
"name": "path",
"in": "query",
"type": "string",
"description":
"The kapacitor API path to use in the proxy redirect",
"required": true
},
{
"name": "query",
"in": "body",
"description": "Kapacitor body",
"schema": {
"$ref": "#/definitions/KapacitorProxy"
},
"required": true
}
],
"responses": {
"204": {
"description": "Kapacitor returned no content"
},
"404": {
"description": "Data source or Kapacitor ID does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Response directly from kapacitor",
"schema": {
"$ref": "#/definitions/KapacitorProxyResponse"
}
}
}
},
"post": {
"tags": ["sources", "kapacitors", "proxy"],
"description":
"POST body directly to configured kapacitor. The response and status code from kapacitor is directly returned.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
},
{
"name": "kapa_id",
"in": "path",
"type": "string",
"description": "ID of the kapacitor backend.",
"required": true
},
{
"name": "path",
"in": "query",
"type": "string",
"description":
"The kapacitor API path to use in the proxy redirect",
"required": true
},
{
"name": "query",
"in": "body",
"description": "Kapacitor body",
"schema": {
"$ref": "#/definitions/KapacitorProxy"
},
"required": true
}
],
"responses": {
"204": {
"description": "Kapacitor returned no content"
},
"404": {
"description": "Kapacitor ID does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Response directly from kapacitor",
"schema": {
"$ref": "#/definitions/KapacitorProxyResponse"
}
}
}
}
},
"/mappings": {
"get": {
"tags": ["layouts", "mappings"],
"summary": "Mappings between app names and measurements",
"description":
"Mappings provide a means to alias measurement names found within a telegraf database and application layouts found within Chronograf\n",
"responses": {
"200": {
"description": "An array of mappings",
"schema": {
"$ref": "#/definitions/Mappings"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/layouts": {
"get": {
"tags": ["layouts"],
"summary": "Pre-configured layouts",
"parameters": [
{
"name": "measurement",
"in": "query",
"description": "Returns layouts with this measurement",
"required": false,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi"
},
{
"name": "app",
"in": "query",
"description": "Returns layouts with this app",
"required": false,
"type": "array",
"items": {
"type": "string"
},
"collectionFormat": "multi"
}
],
"description":
"Layouts are a collection of `Cells` that visualize time-series data.\n",
"responses": {
"200": {
"description": "An array of layouts",
"schema": {
"$ref": "#/definitions/Layouts"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["layouts"],
"summary": "Create new layout",
"parameters": [
{
"name": "layout",
"in": "body",
"description":
"Defines the layout and queries of the cells within the layout.",
"schema": {
"$ref": "#/definitions/Layout"
}
}
],
"responses": {
"201": {
"description": "Successfully created new layout",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description": "Location of the newly created layout"
}
},
"schema": {
"$ref": "#/definitions/Layout"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/layouts/{id}": {
"get": {
"tags": ["layouts"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the layout",
"required": true
}
],
"summary":
"Specific pre-configured layout containing cells and queries.",
"description":
"layouts will hold information about how to layout the page of graphs.\n",
"responses": {
"200": {
"description": "Returns the specified layout containing `cells`.",
"schema": {
"$ref": "#/definitions/Layout"
}
},
"404": {
"description": "Unknown layout id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["layouts"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the layout",
"required": true
}
],
"summary": "This specific layout will be removed from the data store",
"responses": {
"204": {
"description": "Layout has been removed."
},
"404": {
"description": "Unknown layout id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"put": {
"tags": ["layouts"],
"summary": "Replace layout configuration.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of a layout",
"required": true
},
{
"name": "config",
"in": "body",
"description": "layout configuration update parameters",
"schema": {
"$ref": "#/definitions/Layout"
},
"required": true
}
],
"responses": {
"200": {
"description":
"Layout has been replaced and the new layout is returned.",
"schema": {
"$ref": "#/definitions/Layout"
}
},
"404": {
"description":
"Happens when trying to access a non-existent layout.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/dashboards": {
"get": {
"tags": ["dashboards"],
"summary": "List of all dashboards",
"responses": {
"200": {
"description": "An array of dashboards",
"schema": {
"$ref": "#/definitions/Dashboards"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"tags": ["dashboards"],
"summary": "Create new dashboard",
"parameters": [
{
"name": "dashboard",
"in": "body",
"description": "Configuration options for new dashboard",
"schema": {
"$ref": "#/definitions/Dashboard"
}
}
],
"responses": {
"201": {
"description": "Successfully created new dashboard",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description":
"Location of the newly created dashboard resource."
}
},
"schema": {
"$ref": "#/definitions/Dashboard"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/dashboards/{id}": {
"get": {
"tags": ["dashboards"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "ID of the dashboard",
"required": true
}
],
"summary": "Specific dashboard",
"description":
"Dashboards contain visual display information as well as links to queries",
"responses": {
"200": {
"description":
"Returns the specified dashboard with links to queries.",
"schema": {
"$ref": "#/definitions/Dashboard"
}
},
"404": {
"description": "Unknown dashboard id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"tags": ["dashboards"],
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "ID of the layout",
"required": true
}
],
"summary": "Deletes the specified dashboard",
"responses": {
"204": {
"description": "Dashboard has been removed."
},
"404": {
"description": "Unknown dashboard id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"put": {
"tags": ["dashboards"],
"summary": "Replace dashboard information.",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "ID of a dashboard",
"required": true
},
{
"name": "config",
"in": "body",
"description": "dashboard configuration update parameters",
"schema": {
"$ref": "#/definitions/Dashboard"
},
"required": true
}
],
"responses": {
"200": {
"description":
"Dashboard has been replaced and the new dashboard is returned.",
"schema": {
"$ref": "#/definitions/Dashboard"
}
},
"404": {
"description":
"Happens when trying to access a non-existent dashboard.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"patch": {
"tags": ["layouts"],
"summary": "Update dashboard information.",
"description":
"Update either the dashboard name or the dashboard cells",
"parameters": [
{
"name": "id",
"in": "path",
"type": "integer",
"description": "ID of a dashboard",
"required": true
},
{
"name": "config",
"in": "body",
"description":
"dashboard configuration update parameters. Must be either name or cells",
"schema": {
"$ref": "#/definitions/Dashboard"
},
"required": true
}
],
"responses": {
"200": {
"description":
"Dashboard has been updated and the new dashboard is returned.",
"schema": {
"$ref": "#/definitions/Dashboard"
}
},
"404": {
"description":
"Happens when trying to access a non-existent dashboard.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
}
},
"definitions": {
"Databases": {
"type": "object",
"required": ["databases"],
"properties": {
"databases": {
"type": "array",
"items": {
"$ref": "#/definitions/Database"
}
}
}
},
"Database": {
"type": "object",
"required": ["name"],
"example": {
"name": "NOAA_water_database",
"duration": "3d",
"replication": 3,
"shardDuration": "3h",
"retentionPolicies": [
{
"name": "weekly",
"duration": "7d",
"replication": 1,
"shardDuration": "7d",
"default": true,
"links": {
"self":
"/chronograf/v1/ousrces/1/dbs/NOAA_water_database/rps/liquid"
}
}
],
"links": {
"self": "/chronograf/v1/sources/1/dbs/NOAA_water_database",
"rps": "/chronograf/v1/sources/1/dbs/NOAA_water_database/rps"
}
},
"properties": {
"name": {
"type": "string",
"description": "The identifying name of the database"
},
"duration": {
"type": "string",
"description": "the duration of the default retention policy"
},
"replication": {
"type": "integer",
"format": "int32",
"description": "how many copies of the data are stored in the cluster"
},
"shardDuration": {
"type": "string",
"description": "the interval spanned by each shard group"
},
"retentionPolicies": {
"type": "array",
"items": {
"$ref": "#/definitions/RetentionPolicy"
}
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string",
"description": "Self link mapping to this resource",
"format": "url"
},
"rps": {
"type": "string",
"description": "Link to retention policies for this database",
"format": "url"
}
}
}
}
},
"Kapacitors": {
"type": "object",
"required": ["kapacitors"],
"properties": {
"kapacitors": {
"type": "array",
"items": {
"$ref": "#/definitions/Kapacitor"
}
}
}
},
"Kapacitor": {
"type": "object",
"required": ["name", "url"],
"example": {
"id": "4",
"name": "kapa",
"url": "http://localhost:9092",
"active": false,
"insecureSkipVerify": false,
"links": {
"proxy": "/chronograf/v1/sources/4/kapacitors/4/proxy",
"self": "/chronograf/v1/sources/4/kapacitors/4",
"rules": "/chronograf/v1/sources/4/kapacitors/4/rules"
}
},
"properties": {
"id": {
"type": "string",
"description": "Unique identifier representing a kapacitor instance.",
"readOnly": true
},
"name": {
"type": "string",
"description": "User facing name of kapacitor instance."
},
"username": {
"type": "string",
"description": "Username for authentication to kapacitor."
},
"password": {
"type": "string",
"description": "Password is in cleartext."
},
"url": {
"type": "string",
"format": "url",
"description":
"URL for the kapacitor backend (e.g. http://localhost:9092)"
},
"insecureSkipVerify": {
"type": "boolean",
"description":
"True means any certificate presented by the kapacitor is accepted. Typically used for self-signed certs. Probably should only be used for testing."
},
"active": {
"type": "boolean",
"description":
"Indicates whether the kapacitor is the current kapacitor being used for a source"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string",
"description": "Self link mapping to this resource",
"format": "url"
},
"proxy": {
"type": "string",
"description":
"URL location of proxy endpoint for this kapacitor",
"format": "url"
},
"rules": {
"type": "string",
"description":
"URL location of rules endpoint for this kapacitor",
"format": "url"
}
}
}
}
},
"KapacitorProxy": {
"description":
"Entirely used as the body for the request to the kapacitor backend.",
"type": "object"
},
"KapacitorProxyResponse": {
"description": "Entire response from the kapacitor backend.",
"type": "object"
},
"Rules": {
"type": "object",
"required": ["rules"],
"properties": {
"rules": {
"type": "array",
"items": {
"$ref": "#/definitions/Rule"
}
}
}
},
"Query": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "InfluxQL statement to be analyzed",
"example": {
"query":
"select max(usage_system) from telegraf.autogen.cpu group by time(10m)"
}
}
}
},
"QueryResponse": {
"type": "object",
"properties": {
"query": {
"type": "string",
"example": {
"query":
"select max(usage_system) from telegraf.autogen.cpu group by time(10m)"
},
"description": "InfluxQL statement to be analyzed"
},
"queryConfig": {
"$ref": "#/definitions/QueryConfig"
}
}
},
"Queries": {
"type": "object",
"properties": {
"queries": {
"type": "array",
"items": {
"$ref": "#/definitions/Query"
}
}
}
},
"QueriesResponse": {
"type": "object",
"properties": {
"queries": {
"type": "array",
"items": {
"$ref": "#/definitions/QueryResponse"
}
}
}
},
"QueryConfig": {
"type": "object",
"example": {
"id": "ce72917d-1ecb-45ea-a6cb-4c122deb93c7",
"database": "telegraf",
"measurement": "cpu",
"retentionPolicy": "autogen",
"fields": [
{
"value": "max",
"type": "func",
"args": [
{
"value": "usage_system",
"type": "field"
}
]
}
],
"tags": {},
"groupBy": {
"time": "10m",
"tags": []
},
"areTagsAccepted": true,
"range": {
"lower": "15m",
"upper": "now"
}
},
"properties": {
"id": {
"type": "string"
},
"database": {
"type": "string"
},
"measurement": {
"type": "string"
},
"retentionPolicy": {
"type": "string"
},
"areTagsAccepted": {
"type": "boolean"
},
"rawText": {
"type": "string"
},
"tags": {
"type": "object"
},
"groupBy": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["time", "tags"]
},
"fields": {
"type": "array",
"items": {
"$ref": "#/definitions/Field"
}
},
"range": {
"type": "object",
"properties": {
"lower": {
"type": "string"
},
"upper": {
"type": "string"
}
},
"required": ["lower", "upper"]
}
},
"required": [
"database",
"measurement",
"retentionPolicy",
"areTagsAccepted",
"tags",
"groupBy",
"fields"
]
},
"KapacitorNode": {
"type": "object",
"description": "Represents a node in the kapacitor TICKscript graph",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Name of the kapacitor node e.g. slack"
},
"args": {
"type": "array",
"description": "All arguments to the named node",
"items": {
"type": "string"
}
},
"properties": {
"type": "array",
"description": "All properties attached to the kapacitor node",
"items": {
"$ref": "#/definitions/KapacitorProperty"
}
}
}
},
"Field": {
"type": "object",
"required": ["type", "value"],
"description": "Represents a field to be returned from an InfluxQL query",
"properties": {
"value": {
"description":
"value is the value of the field. Meaning of the value is implied by the `type` key",
"type": "string"
},
"type": {
"description":
"type describes the field type. func is a function; field is a field reference",
"type": "string",
"enum": ["func", "field", "integer", "number", "regex", "wildcard"]
},
"alias": {
"description":
"Alias overrides the field name in the returned response. Applies only if type is `func`",
"type": "string"
},
"args": {
"description": "Args are the arguments to the function",
"type": "array",
"items": {
"$ref": "#/definitions/Field"
}
}
}
},
"KapacitorProperty": {
"type": "object",
"description":
"Represents a property attached to a node in the kapacitor TICKscript graph",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description":
"Name of the kapacitor property e.g. channel for a slack ndoe"
},
"args": {
"type": "array",
"description": "All arguments to the named property",
"items": {
"type": "string"
}
}
}
},
"RetentionPolicies": {
"type": "object",
"required": ["retentionPolicies"],
"properties": {
"retentionPolicies": {
"type": "array",
"items": {
"$ref": "#/definitions/RetentionPolicy"
}
}
}
},
"RetentionPolicy": {
"type": "object",
"required": ["name", "duration", "replication"],
"example": {
"name": "weekly",
"duration": "7d",
"replication": 1,
"shardDuration": "7d",
"default": true,
"links": {
"self": "/chronograf/v1/ousrces/1/dbs/NOAA_water_database/rps/liquid"
}
},
"properties": {
"name": {
"type": "string",
"description": "The identifying name of the retention policy"
},
"duration": {
"type": "string",
"description": "the duration of the retention policy"
},
"replication": {
"type": "integer",
"format": "int32",
"description": "how many copies of the data are stored in the cluster"
},
"shardDuration": {
"type": "string",
"description": "the interval spanned by each shard group"
},
"default": {
"type": "boolean",
"description":
"Indicates whether this retention policy should be the default"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string",
"description": "Self link mapping to this resource",
"format": "url"
}
}
}
}
},
"Rule": {
"type": "object",
"example": {
"id": "chronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
"query": {
"id": "ce72917d-1ecb-45ea-a6cb-4c122deb93c7",
"database": "telegraf",
"measurement": "cpu",
"retentionPolicy": "autogen",
"fields": [
{
"value": "max",
"type": "func",
"args": [
{
"value": "usage_system",
"type": "field"
}
]
}
],
"tags": {},
"groupBy": {
"time": "10m",
"tags": []
},
"areTagsAccepted": true
},
"every": "30s",
"alerts": ["alerta"],
"alertNodes": [
{
"name": "alerta",
"args": [],
"properties": []
}
],
"message": "too much spam",
"details": "muh body",
"trigger": "threshold",
"values": {
"operator": "greater than",
"value": "10"
},
"name": "Untitled Rule",
"tickscript":
"var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: TRUE\n\nvar period = 10m\n\nvar every = 30s\n\nvar name = 'Untitled Rule'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = 'too much spam'\n\nvar idTag = 'alertID'\n\nvar levelTag = 'level'\n\nvar messageField = 'message'\n\nvar durationField = 'duration'\n\nvar outputDB = 'chronograf'\n\nvar outputRP = 'autogen'\n\nvar outputMeasurement = 'alerts'\n\nvar triggerType = 'threshold'\n\nvar details = 'muh body'\n\nvar crit = 10\n\nvar data = stream\n |from()\n .database(db)\n .retentionPolicy(rp)\n .measurement(measurement)\n .groupBy(groupBy)\n .where(whereFilter)\n |window()\n .period(period)\n .every(every)\n .align()\n |max('usage_system')\n .as('value')\n\nvar trigger = data\n |alert()\n .crit(lambda: \"value\" > crit)\n .stateChangesOnly()\n .message(message)\n .id(idVar)\n .idTag(idTag)\n .levelTag(levelTag)\n .messageField(messageField)\n .durationField(durationField)\n .details(details)\n .alerta()\n\ntrigger\n |influxDBOut()\n .create()\n .database(outputDB)\n .retentionPolicy(outputRP)\n .measurement(outputMeasurement)\n .tag('alertName', name)\n .tag('triggerType', triggerType)\n\ntrigger\n |httpOut('output')\n",
"type": "stream",
"dbrps": [
{
"db": "telegraf",
"rp": "autogen"
}
],
"status": "disabled",
"executing": false,
"error": "",
"created": "2017-05-05T16:16:03.471138388-05:00",
"modified": "2017-05-23T15:57:42.625909746-05:00",
"last-enabled": "2017-05-05T16:16:25.890210217-05:00",
"links": {
"self":
"/chronograf/v1/sources/5/kapacitors/5/rules/chronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
"kapacitor":
"/chronograf/v1/sources/5/kapacitors/5/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
"output":
"/chronograf/v1/sources/5/kapacitors/5/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38%2Foutput"
}
},
"required": ["query", "every", "trigger"],
"properties": {
"id": {
"type": "string",
"description": "ID for this rule; the ID is shared with kapacitor"
},
"query": {
"$ref": "#/definitions/QueryConfig"
},
"name": {
"type": "string",
"description": "User facing name of the alerting rule"
},
"every": {
"type": "string",
"description":
"Golang duration string specifying how often the alert condition is checked"
},
"alerts": {
"type": "array",
"description":
"Array of alerting services to warn if the alert is triggered",
"items": {
"type": "string",
"enum": [
"alerta",
"post",
"http",
"hipchat",
"opsgenie",
"pagerduty",
"victorops",
"email",
"exec",
"log",
"pushover",
"sensu",
"slack",
"smtp",
"talk",
"telegram",
"tcp"
]
}
},
"alertNodes": {
"type": "array",
"description": "Arguments and properties to add to alert",
"items": {
"$ref": "#/definitions/KapacitorNode"
}
},
"message": {
"type": "string",
"description": "Message to send when alert occurs."
},
"details": {
"type": "string",
"description":
"Template for constructing a detailed HTML message for the alert. (Currently, only used for email/smtp"
},
"trigger": {
"type": "string",
"description":
"Trigger defines the alerting structure; deadman alert if no data are received for the specified time range; relative alert if the data change relative to the data in a different time range; threshold alert if the data cross a boundary",
"enum": ["deadman", "relative", "threshold"]
},
"values": {
"type": "object",
"description": "Alerting logic for trigger type",
"properties": {
"change": {
"description": "Specifies if the change is percent or absolute",
"type": "string",
"enum": ["% change", "change"]
},
"period": {
"description":
"Length of time before deadman is alerted (golang duration)",
"type": "string"
},
"shift": {
"description":
"Amount of time to look into the past to compare to the present (golang duration)",
"type": "string"
},
"operator": {
"description": "Operator for alert comparison",
"type": "string",
"enum": [
"greater than",
"less than",
"equal to or less than",
"equal to or greater",
"equal to",
"not equal to",
"inside range",
"outside range"
]
},
"value": {
"description":
"Value is the boundary value when alert goes critical",
"type": "string"
},
"rangeValue": {
"description": "Optional value for range comparisions",
"type": "string"
}
}
},
"dbrps": {
"type": "array",
"description":
"List of database retention policy pairs the task is allowed to access.",
"items": {
"$ref": "#/definitions/DBRP"
}
},
"tickscript": {
"type": "string",
"description": "TICKscript representing this rule"
},
"status": {
"type": "string",
"description":
"Represents if this rule is enabled or disabled in kapacitor",
"enum": ["enabled", "disabled"]
},
"executing": {
"type": "boolean",
"description": "Whether the task is currently executing.",
"readOnly": true
},
"type": {
"type": "string",
"description":
"Represents the task type where stream is data streamed to kapacitor and batch is queried by kapacitor.",
"enum": ["stream", "batch"]
},
"error": {
"type": "string",
"description":
"Any error encountered when kapacitor executes the task.",
"readOnly": true
},
"created": {
"type": "string",
"description": "Date the task was first created",
"readOnly": true
},
"modified": {
"type": "string",
"description": "Date the task was last modified",
"readOnly": true
},
"last-enabled": {
"type": "string",
"description": "Date the task was last set to status enabled",
"readOnly": true
},
"links": {
"type": "object",
"required": ["self", "kapacitor"],
"properties": {
"self": {
"description": "Self link pointing to this rule resource",
"type": "string",
"format": "uri"
},
"kapacitor": {
"description":
"Link pointing to the kapacitor proxy for this rule including the path query parameter.",
"type": "string",
"format": "uri"
},
"output": {
"description":
"Link pointing to the kapacitor httpOut node of the tickscript; includes the path query argument",
"type": "string",
"format": "uri"
}
}
}
}
},
"DBRP": {
"type": "object",
"description": "Database retention policy pair",
"properties": {
"db": {
"description": "Database name",
"type": "string"
},
"rp": {
"description": "Retention policy",
"type": "string"
}
},
"required": ["db", "rp"]
},
"Sources": {
"type": "array",
"items": {
"$ref": "#/definitions/Source"
}
},
"Source": {
"type": "object",
"example": {
"id": "4",
"name": "Influx 1",
"url": "http://localhost:8086",
"default": false,
"telegraf": "telegraf",
"links": {
"self": "/chronograf/v1/sources/4",
"kapacitors": "/chronograf/v1/sources/4/kapacitors",
"proxy": "/chronograf/v1/sources/4/proxy",
"write": "/chronograf/v1/sources/4/write",
"queries": "/chronograf/v1/sources/4/queries",
"permissions": "/chronograf/v1/sources/4/permissions",
"users": "/chronograf/v1/sources/4/users",
"roles": "/chronograf/v1/sources/4/roles"
}
},
"required": ["url"],
"properties": {
"id": {
"type": "string",
"description":
"Unique identifier representing a specific data source.",
"readOnly": true
},
"name": {
"type": "string",
"description": "User facing name of data source"
},
"type": {
"type": "string",
"description": "Format of the data source",
"readOnly": true,
"enum": ["influx", "influx-enterprise", "influx-relay"]
},
"username": {
"type": "string",
"description": "Username for authentication to data source"
},
"password": {
"type": "string",
"description": "Password is in cleartext."
},
"sharedSecret": {
"type": "string",
"description":
"JWT signing secret for optional Authorization: Bearer to InfluxDB"
},
"url": {
"type": "string",
"format": "url",
"description":
"URL for the time series data source backend (e.g. http://localhost:8086)"
},
"metaUrl": {
"type": "string",
"format": "url",
"description": "URL for the influxdb meta node"
},
"insecureSkipVerify": {
"type": "boolean",
"description":
"True means any certificate presented by the source is accepted. Typically used for self-signed certs. Probably should only be used for testing."
},
"default": {
"type": "boolean",
"description": "Indicates whether this source is the default source"
},
"telegraf": {
"type": "string",
"description":
"Database where telegraf information is stored for this source",
"default": "telegraf"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string",
"description": "Self link mapping to this resource",
"format": "url"
},
"proxy": {
"type": "string",
"description": "URL location of proxy endpoint for this source",
"format": "url"
},
"write": {
"type": "string",
"description": "URL location of write endpoint for this source",
"format": "url"
},
"queries": {
"type": "string",
"description":
"URL location of the queries endpoint for this source",
"format": "url"
},
"kapacitors": {
"type": "string",
"description":
"URL location of the kapacitors endpoint for this source",
"format": "url"
},
"users": {
"type": "string",
"description":
"URL location of the users endpoint for this source",
"format": "url"
},
"permissions": {
"type": "string",
"description":
"URL location of the permissions endpoint for this source",
"format": "url"
},
"roles": {
"type": "string",
"description":
"Optional path to the roles endpoint IFF it is supported on this source",
"format": "url"
}
}
}
}
},
"Proxy": {
"type": "object",
"example": {
"query": "select $myfield from cpu where time > now() - 10m",
"db": "telegraf",
"rp": "autogen",
"tempVars": [
{
"tempVar": "$myfield",
"values": [
{
"type": "fieldKey",
"value": "usage_user"
}
]
}
]
},
"required": ["query"],
"properties": {
"query": {
"type": "string"
},
"db": {
"type": "string"
},
"rp": {
"type": "string"
},
"tempVars": {
"type": "array",
"description":
"Template variables to replace within an InfluxQL query",
"items": {
"$ref": "#/definitions/TemplateVariable"
}
}
}
},
"TemplateVariable": {
"type": "object",
"description":
"Named variable within an InfluxQL query to be replaced with values",
"properties": {
"tempVar": {
"type": "string",
"description": "String to replace within an InfluxQL statement"
},
"values": {
"type": "array",
"description": "Values used to replace tempVar.",
"items": {
"$ref": "#/definitions/TemplateValue"
}
}
}
},
"TemplateValue": {
"type": "object",
"description":
"Value use to replace a template in an InfluxQL query. The type governs the output format",
"properties": {
"value": {
"type": "string",
"description": "Specific value that will be encoded based on type"
},
"type": {
"type": "string",
"enum": ["csv", "tagKey", "tagValue", "fieldKey", "timeStamp"],
"description":
"The type will change the format of the output value. tagKey/fieldKey are double quoted; tagValue are single quoted; csv and timeStamp are not quoted."
}
}
},
"ProxyResponse": {
"type": "object",
"example": {
"results": [
{
"statement_id": 0,
"series": [
{
"name": "cpu",
"columns": [
"time",
"cpu",
"host",
"usage_guest",
"usage_guest_nice",
"usage_idle",
"usage_iowait",
"usage_irq",
"usage_nice",
"usage_softirq",
"usage_steal",
"usage_system",
"usage_user"
],
"values": [
[
1487785510000,
"cpu-total",
"ChristohersMBP2.lan",
0,
0,
76.6916354556804,
0,
0,
0,
0,
0,
4.781523096129837,
18.526841448189764
]
]
}
]
}
]
},
"properties": {
"results": {
"description": "results from influx",
"type": "object"
}
}
},
"Roles": {
"type": "array",
"items": {
"$ref": "#/definitions/Role"
},
"example": {
"roles": [
{
"users": [
{
"name": "admin",
"links": {
"self": "/chronograf/v1/sources/3/users/admin"
}
}
],
"name": "timetravelers",
"permissions": [
{
"scope": "database",
"name": "telegraf",
"allowed": ["ReadData", "WriteData"]
}
],
"links": {
"self": "/chronograf/v1/sources/3/roles/timetravelers"
}
}
]
}
},
"Role": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Unique name of the role",
"maxLength": 254,
"minLength": 1
},
"users": {
"$ref": "#/definitions/Users"
},
"permissions": {
"$ref": "#/definitions/Permissions"
},
"links": {
"type": "object",
"description": "URL relations of this role",
"properties": {
"self": {
"type": "string",
"format": "url",
"description": "URI of resource."
}
}
}
},
"example": {
"users": [
{
"name": "admin",
"links": {
"self": "/chronograf/v1/sources/3/users/admin"
}
}
],
"name": "timetravelers",
"permissions": [
{
"scope": "database",
"name": "telegraf",
"allowed": ["ReadData", "WriteData"]
}
],
"links": {
"self": "/chronograf/v1/sources/3/roles/timetravelers"
}
}
},
"Users": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/definitions/User"
}
}
},
"example": {
"users": [
{
"name": "docbrown",
"permissions": [
{
"scope": "all",
"allowed": [
"ViewAdmin",
"ViewChronograf",
"CreateDatabase",
"CreateUserAndRole",
"DropDatabase",
"DropData",
"ReadData",
"WriteData",
"ManageShard",
"ManageContinuousQuery",
"ManageQuery",
"ManageSubscription",
"Monitor",
"KapacitorAPI"
]
}
],
"roles": [
{
"name": "timetravelers",
"permissions": [
{
"scope": "database",
"name": "telegraf",
"allowed": ["ReadData", "WriteData"]
}
],
"links": {
"self": "/chronograf/v1/sources/3/roles/timetravelers"
}
}
],
"links": {
"self": "/chronograf/v1/sources/3/users/docbrown"
}
}
]
}
},
"User": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Unique name of the user",
"maxLength": 254,
"minLength": 1
},
"password": {
"type": "string"
},
"permissions": {
"$ref": "#/definitions/Permissions"
},
"roles": {
"$ref": "#/definitions/Roles"
},
"links": {
"type": "object",
"description": "URL relations of this user",
"properties": {
"self": {
"type": "string",
"format": "url",
"description": "URI of resource."
}
}
}
},
"example": {
"name": "docbrown",
"permissions": [
{
"scope": "all",
"allowed": [
"ViewAdmin",
"ViewChronograf",
"CreateDatabase",
"CreateUserAndRole",
"DropDatabase",
"DropData",
"ReadData",
"WriteData",
"ManageShard",
"ManageContinuousQuery",
"ManageQuery",
"ManageSubscription",
"Monitor",
"KapacitorAPI"
]
}
],
"roles": [
{
"name": "timetravelers",
"permissions": [
{
"scope": "database",
"name": "telegraf",
"allowed": ["ReadData", "WriteData"]
}
],
"links": {
"self": "/chronograf/v1/sources/3/roles/timetravelers"
}
}
],
"links": {
"self": "/chronograf/v1/sources/3/users/docbrown"
}
}
},
"Permissions": {
"description":
"Permissions represent the entire set of permissions a User or Role may have",
"type": "array",
"items": {
"$ref": "#/definitions/Permission"
}
},
"Permission": {
"description":
"Permission is a specific allowance for User or Role bound to a scope of the data source",
"type": "object",
"required": ["scope", "allowed"],
"properties": {
"scope": {
"type": "string",
"description":
"Describes if the permission is for all databases or restricted to one database",
"enum": ["all", "database"]
},
"name": {
"type": "string",
"description":
"If the scope is database this identifies the name of the database"
},
"allowed": {
"$ref": "#/definitions/Allowances"
}
},
"example": {
"scope": "database",
"name": "telegraf",
"allowed": ["READ", "WRITE"]
}
},
"AllPermissions": {
"description":
"All possible permissions for this particular datasource. Used as a static list",
"type": "object",
"properties": {
"permissions": {
"$ref": "#/definitions/Permissions"
},
"links": {
"type": "object",
"properties": {
"self": {
"description": "Relative link back to the permissions endpoint",
"type": "string",
"format": "uri"
},
"source": {
"description": "Relative link to host with these permissiosn",
"type": "string",
"format": "uri"
}
}
}
}
},
"Allowances": {
"description":
"Allowances defines what actions a user can have on a scoped permission",
"type": "array",
"items": {
"type": "string",
"description":
"OSS InfluxDB is READ and WRITE. Enterprise is all others",
"enum": [
"READ",
"WRITE",
"NoPermissions",
"ViewAdmin",
"ViewChronograf",
"CreateDatabase",
"CreateUserAndRole",
"AddRemoveNode",
"DropDatabase",
"DropData",
"ReadData",
"WriteData",
"Rebalance",
"ManageShard",
"ManageContinuousQuery",
"ManageQuery",
"ManageSubscription",
"Monitor",
"CopyShard",
"KapacitorAPI",
"KapacitorConfigAPI"
]
}
},
"Layouts": {
"required": ["layouts"],
"type": "object",
"properties": {
"layouts": {
"type": "array",
"items": {
"$ref": "#/definitions/Layout"
}
}
}
},
"Layout": {
"type": "object",
"required": ["cells", "app", "measurement"],
"properties": {
"id": {
"type": "string",
"description":
"ID is an opaque string that uniquely identifies this layout."
},
"app": {
"type": "string",
"description": "App is the user facing name of this Layout"
},
"measurement": {
"type": "string",
"description":
"Measurement is the descriptive name of the time series data."
},
"cells": {
"type": "array",
"description": "Cells are the individual visualization elements.",
"items": {
"$ref": "#/definitions/Cell"
}
},
"link": {
"$ref": "#/definitions/Link"
}
},
"example": {
"id": "0e980b97-c162-487b-a815-3f955df62430",
"app": "docker",
"measurement": "docker_container_net",
"autoflow": true,
"cells": [
{
"x": 0,
"y": 0,
"w": 4,
"h": 4,
"i": "4c79cefb-5152-410c-9b88-74f9bff7ef23",
"name": "Docker - Container Network",
"queries": [
{
"query":
"SELECT derivative(mean(\"tx_bytes\"), 10s) AS \"net_tx_bytes\" FROM \"docker_container_net\"",
"groupbys": ["\"container_name\""]
},
{
"query":
"SELECT derivative(mean(\"rx_bytes\"), 10s) AS \"net_rx_bytes\" FROM \"docker_container_net\"",
"groupbys": ["\"container_name\""]
}
],
"type": ""
}
],
"link": {
"href": "/chronograf/v1/layouts/0e980b97-c162-487b-a815-3f955df62430",
"rel": "self"
}
}
},
"Mappings": {
"type": "object",
"required": ["mappings"],
"properties": {
"mappings": {
"type": "array",
"items": {
"$ref": "#/definitions/Mapping"
}
}
}
},
"Mapping": {
"type": "object",
"required": ["measurement", "name"],
"properties": {
"measurement": {
"description": "The measurement where data for this mapping is found",
"type": "string"
},
"name": {
"description":
"The application name which will be assigned to the corresponding measurement",
"type": "string"
}
},
"example": {
"measurement": "riak",
"name": "riak"
}
},
"Cell": {
"type": "object",
"required": ["i", "x", "y", "w", "h"],
"properties": {
"i": {
"description": "Unique ID of Cell",
"type": "string",
"format": "uuid4"
},
"x": {
"description": "X-coordinate of Cell in the Layout",
"type": "integer",
"format": "int32"
},
"y": {
"description": "Y-coordinate of Cell in the Layout",
"type": "integer",
"format": "int32"
},
"w": {
"description": "Width of Cell in the Layout",
"type": "integer",
"format": "int32"
},
"h": {
"description": "Height of Cell in the Layout",
"type": "integer",
"format": "int32"
},
"name": {
"description": "Cell name",
"type": "string"
},
"queries": {
"description": "Time-series data queries for Cell.",
"type": "array",
"items": {
"$ref": "#/definitions/LayoutQuery"
}
},
"type": {
"description": "Cell visualization type",
"type": "string"
}
},
"example": {
"x": 5,
"y": 5,
"w": 4,
"h": 4,
"name": "usage_user",
"queries": [
{
"query":
"SELECT mean(\"usage_user\") AS \"usage_user\" FROM \"cpu\"",
"label": "%"
}
],
"type": "line"
}
},
"LayoutQuery": {
"type": "object",
"required": ["query"],
"properties": {
"label": {
"description": "Optional Y-axis user-facing label for this query",
"type": "string"
},
"range": {
"description": "Optional default range of the Y-axis",
"type": "object",
"required": ["upper", "lower"],
"properties": {
"upper": {
"description": "Upper bound of the display range of the Y-axis",
"type": "integer",
"format": "int64"
},
"lower": {
"description": "Lower bound of the display range of the Y-axis",
"type": "integer",
"format": "int64"
}
}
},
"query": {
"type": "string"
},
"wheres": {
"description": "Defines the condition clauses for influxdb",
"type": "array",
"items": {
"type": "string"
}
},
"groupbys": {
"description": "Defines the group by clauses for influxdb",
"type": "array",
"items": {
"type": "string"
}
}
},
"example": {
"label": "# warnings",
"query":
"SELECT count(\"check_id\") as \"Number Warning\" FROM consul_health_checks",
"wheres": ["\"status\" = 'warning'"],
"groupbys": ["\"service_name\""]
}
},
"DashboardQuery": {
"type": "object",
"required": ["query"],
"properties": {
"label": {
"description": "Optional Y-axis user-facing label for this query",
"type": "string"
},
"range": {
"description": "Optional default range of the Y-axis",
"type": "object",
"required": ["upper", "lower"],
"properties": {
"upper": {
"description": "Upper bound of the display range of the Y-axis",
"type": "integer",
"format": "int64"
},
"lower": {
"description": "Lower bound of the display range of the Y-axis",
"type": "integer",
"format": "int64"
}
}
},
"query": {
"type": "string"
},
"source": {
"type": "string",
"format": "url",
"description": "Optional URI for data source for this query"
},
"queryConfig": {
"$ref": "#/definitions/QueryConfig"
}
},
"example": {
"id": 4,
"cells": [
{
"x": 0,
"y": 0,
"w": 4,
"h": 4,
"name": "",
"queries": [
{
"query":
"SELECT mean(\"usage_user\") AS \"mean_usage_user\" FROM \"cpu\"",
"label": "%",
"queryConfig": {
"database": "",
"measurement": "cpu",
"retentionPolicy": "",
"fields": [
{
"value": "mean",
"type": "func",
"alias": "mean_usage_user",
"args": [
{
"value": "usage_user",
"type": "field"
}
]
}
],
"tags": {},
"groupBy": {
"time": "",
"tags": []
},
"areTagsAccepted": false
}
}
],
"type": "line"
}
],
"name": "dashboard name",
"links": {
"self": "/chronograf/v1/dashboards/4"
}
}
},
"Dashboards": {
"description": "a list of dashboards",
"type": "object",
"properties": {
"dashboards": {
"type": "array",
"items": {
"$ref": "#/definitions/Dashboard"
}
}
}
},
"Dashboard": {
"type": "object",
"properties": {
"id": {
"description": "the unique dashboard id",
"type": "integer",
"format": "int64"
},
"cells": {
"description": "a list of dashboard visualizations",
"type": "array",
"items": {
"description": "cell visualization information",
"type": "object",
"properties": {
"x": {
"description": "X-coordinate of Cell in the Dashboard",
"type": "integer",
"format": "int32"
},
"y": {
"description": "Y-coordinate of Cell in the Dashboard",
"type": "integer",
"format": "int32"
},
"w": {
"description": "Width of Cell in the Dashboard",
"type": "integer",
"format": "int32",
"minimum": 1,
"default": 4
},
"h": {
"description": "Height of Cell in the Dashboard",
"type": "integer",
"format": "int32",
"minimum": 1,
"default": 4
},
"name": {
"description": "Name of Cell in the Dashboard",
"type": "string"
},
"queries": {
"description": "Time-series data queries for Cell.",
"type": "array",
"items": {
"$ref": "#/definitions/DashboardQuery"
}
},
"axes": {
"description": "The viewport for a cell's visualizations",
"type": "object",
"properties": {
"x": {
"$ref": "#/definitions/Axis"
},
"y": {
"$ref": "#/definitions/Axis"
},
"y2": {
"$ref": "#/definitions/Axis"
}
}
},
"type": {
"description": "Cell visualization type",
"type": "string",
"enum": [
"single-stat",
"line",
"line-plus-single-stat",
"line-stacked",
"line-stepplot",
"bar"
],
"default": "line"
},
"colors": {
"description":
"Colors define encoding data into a visualization",
"type": "array",
"items": {
"$ref": "#/definitions/DashboardColor"
}
},
"legend": {
"description":
"Legend define encoding of the data into a cell's legend",
"type": "object",
"properties": {
"type": {
"description": "type is the style of the legend",
"type": "string",
"enum": ["static"]
},
"orientation": {
"description":
"orientation is the location of the legend with respect to the cell graph",
"type": "string",
"enum": ["top", "bottom", "left", "right"]
}
}
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string",
"description": "Self link mapping to this resource",
"format": "url"
}
}
}
}
}
},
"name": {
"description": "the user-facing name of the dashboard",
"type": "string"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string",
"description": "Self link mapping to this resource",
"format": "url"
}
}
}
},
"example": {
"id": 4,
"cells": [
{
"x": 5,
"y": 5,
"w": 4,
"h": 4,
"name": "usage_user",
"queries": [
{
"query":
"SELECT mean(\"usage_user\") AS \"usage_user\" FROM \"cpu\"",
"db": "telegraf",
"label": "%"
}
],
"type": "line"
},
{
"x": 0,
"y": 0,
"w": 4,
"h": 4,
"name": "usage_system",
"queries": [
{
"query":
"SELECT mean(\"usage_system\") AS \"usage_system\" FROM \"cpu\"",
"db": "telegraf",
"label": "%"
}
],
"type": "line"
}
],
"name": "lalalalala",
"links": {
"self": "/chronograf/v1/dashboards/4"
}
}
},
"DashboardColor": {
"type": "object",
"description":
"Color defines an encoding of a data value into color space",
"properties": {
"id": {
"description": "ID is the unique id of the cell color",
"type": "string"
},
"type": {
"description": "Type is how the color is used.",
"type": "string",
"enum": ["min", "max", "threshold"]
},
"hex": {
"description": "Hex is the hex number of the color",
"type": "string",
"maxLength": 7,
"minLength": 7
},
"name": {
"description": "Name is the user-facing name of the hex color",
"type": "string"
},
"value": {
"description": "Value is the data value mapped to this color",
"type": "string"
}
}
},
"Axis": {
"type": "object",
"description": "A description of a particular axis for a visualization",
"properties": {
"bounds": {
"type": "array",
"minItems": 0,
"maxItems": 2,
"description":
"The extents of an axis in the form [lower, upper]. Clients determine whether bounds are to be inclusive or exclusive of their limits",
"items": {
"type": "integer",
"format": "int64"
}
},
"label": {
"description": "label is a description of this Axis",
"type": "string"
},
"prefix": {
"description":
"Prefix represents a label prefix for formatting axis values.",
"type": "string"
},
"suffix": {
"description":
"Suffix represents a label suffix for formatting axis values.",
"type": "string"
},
"base": {
"description":
"Base represents the radix for formatting axis values.",
"type": "string"
},
"scale": {
"description":
"Scale is the axis formatting scale. Supported: \"log\", \"linear\"",
"type": "string"
}
}
},
"Routes": {
"type": "object",
"properties": {
"me": {
"description": "Location of the me endpoint.",
"type": "string",
"format": "url"
},
"layouts": {
"description": "Location of the layouts endpoint",
"type": "string",
"format": "url"
},
"sources": {
"description": "Location of the sources endpoint",
"type": "string",
"format": "url"
},
"mappings": {
"description": "Location of the application mappings endpoint",
"type": "string",
"format": "url"
},
"dashboards": {
"description": "location of the dashboards endpoint",
"type": "string",
"format": "url"
},
"external": {
"description":
"external links provided to client, ex. status feed URL",
"type": "object",
"properties": {
"statusFeed": {
"description":
"link to a JSON Feed for the News Feed on client's Status Page",
"type": "string",
"format": "url"
},
"custom": {
"description":
"a collection of custom links set by the user to be rendered in the client User menu",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "url"
}
}
}
}
}
}
},
"example": {
"layouts": "/chronograf/v1/layouts",
"mappings": "/chronograf/v1/mappings",
"sources": "/chronograf/v1/sources",
"me": "/chronograf/v1/me",
"dashboards": "/chronograf/v1/dashboards",
"external": {
"statusFeed": "http://news.influxdata.com/feed.json",
"custom": [
{
"name": "InfluxData",
"url": "https://www.influxdata.com"
}
]
}
}
},
"Link": {
"type": "object",
"required": ["rel", "href"],
"readOnly": true,
"description": "URI of resource.",
"properties": {
"rel": {
"type": "string"
},
"href": {
"type": "string",
"format": "url"
}
}
},
"Error": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}