chronograf/server/swagger.json

1635 lines
36 KiB
JSON

{
"swagger": "2.0",
"info": {
"title": "Chronograf",
"description": "API endpoints for Chronograf",
"version": "1.1.0"
},
"schemes": [
"http"
],
"basePath": "/chronograf/v1",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/": {
"get": {
"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": {
"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": {
"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": {
"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": {
"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": {
"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",
"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}/proxy": {
"post": {
"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"
}
}
}
}
},
"/users": {
"get": {
"summary": "List of all users on this data source",
"responses": {
"200": {
"description": "An array of users",
"schema": {
"$ref": "#/definitions/Users"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"summary": "Create new user for this data source",
"parameters": [
{
"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"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/users/{user_id}": {
"get": {
"parameters": [
{
"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.\n",
"responses": {
"200": {
"description": "Information relating to the user",
"schema": {
"$ref": "#/definitions/User"
}
},
"404": {
"description": "Unknown user",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"patch": {
"summary": "Update user configuration",
"parameters": [
{
"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.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"parameters": [
{
"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 store",
"responses": {
"204": {
"description": "User has been removed"
},
"404": {
"description": "Unknown user id",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/users/{user_id}/explorations": {
"get": {
"parameters": [
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "All Data Explorations returned only for this user.",
"required": true
}
],
"responses": {
"200": {
"description": "Data Explorations saved sessions for user are returned.",
"schema": {
"$ref": "#/definitions/Explorations"
}
},
"404": {
"description": "User does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"summary": "Create new named exploration for this user",
"parameters": [
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "ID of user to associate this exploration with.",
"required": true
},
{
"name": "exploration",
"in": "body",
"description": "Exploration session to save",
"schema": {
"$ref": "#/definitions/Exploration"
}
}
],
"responses": {
"201": {
"description": "Successfully created new Exploration session",
"headers": {
"Location": {
"type": "string",
"format": "url",
"description": "Location of the newly created exploration resource."
}
},
"schema": {
"$ref": "#/definitions/Exploration"
}
},
"404": {
"description": "User does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/users/{user_id}/explorations/{exploration_id}": {
"get": {
"parameters": [
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "ID of user to associate this exploration with.",
"required": true
},
{
"name": "exploration_id",
"in": "path",
"type": "string",
"description": "ID of the specific exploration.",
"required": true
}
],
"summary": "Returns the specified data exploration session",
"description": "A data exploration session specifies query information.\n",
"responses": {
"200": {
"description": "Information relating to the exploration",
"schema": {
"$ref": "#/definitions/Exploration"
}
},
"404": {
"description": "User or exploration does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"patch": {
"summary": "Update exploration configuration",
"parameters": [
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "ID of user",
"required": true
},
{
"name": "exploration_id",
"in": "path",
"type": "string",
"description": "ID of the specific exploration.",
"required": true
},
{
"name": "exploration",
"in": "body",
"description": "Update the exploration information to this.",
"required": true,
"schema": {
"$ref": "#/definitions/Exploration"
}
}
],
"responses": {
"200": {
"description": "Exploration's configuration was changed",
"schema": {
"$ref": "#/definitions/Exploration"
}
},
"404": {
"description": "Data source id, user, or exploration does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "A processing or an unexpected error.",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"delete": {
"parameters": [
{
"name": "user_id",
"in": "path",
"type": "string",
"description": "ID of user to associate this exploration with.",
"required": true
},
{
"name": "exploration_id",
"in": "path",
"type": "string",
"description": "ID of the specific exploration.",
"required": true
}
],
"summary": "This specific exporer session will be removed.",
"responses": {
"204": {
"description": "Exploration session has been removed"
},
"404": {
"description": "Data source id, user, or exploration does not exist.",
"schema": {
"$ref": "#/definitions/Error"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
}
},
"/sources/{id}/kapacitors": {
"get": {
"parameters": [
{
"name": "id",
"in": "path",
"type": "string",
"description": "ID of the source",
"required": true
}
],
"summary": "Configured kapacitors",
"responses": {
"200": {
"description": "An array of kapacitors",
"schema": {
"$ref": "#/definitions/Kapacitors"
}
},
"default": {
"description": "Unexpected internal service error",
"schema": {
"$ref": "#/definitions/Error"
}
}
}
},
"post": {
"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": {
"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": "These kapacitors are used for monitoring and alerting.",
"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": {
"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": {
"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": "This specific kapacitor will be removed.",
"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}/proxy": {
"get": {
"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": {
"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": {
"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": {
"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": {
"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": {
"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": {
"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": {
"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": {
"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": {
"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"
}
}
}
}
}
},
"definitions": {
"Kapacitors": {
"type": "object",
"required": [
"kapacitors"
],
"properties": {
"kapacitors": {
"type": "array",
"items": {
"$ref": "#/definitions/Kapacitor"
}
}
}
},
"Kapacitor": {
"type": "object",
"required": [
"name",
"url"
],
"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 in cleartext!"
},
"url": {
"type": "string",
"format": "url",
"description": "URL for the kapacitor backend (e.g. http://localhost:9092)"
},
"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"
}
}
}
}
},
"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"
},
"Sources": {
"type": "object",
"required": [
"sources"
],
"properties": {
"sources": {
"type": "array",
"items": {
"$ref": "#/definitions/Source"
}
}
}
},
"Source": {
"type": "object",
"required": [
"name",
"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",
"enum": [
"influx",
"influx-enterprise"
]
},
"username": {
"type": "string",
"description": "Username for authentication to data source"
},
"password": {
"type": "string",
"description": "Password in cleartext!"
},
"url": {
"type": "string",
"format": "url",
"description": "URL for the time series data source backend (e.g. http://localhost:8086)"
},
"default": {
"type": "boolean",
"description": "Indicates whether this source is the default 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 source",
"format": "url"
},
"kapacitors": {
"type": "string",
"description": "URL location of the kapacitors endpoint for this source",
"format": "url"
}
}
}
}
},
"Proxy": {
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string"
},
"db": {
"type": "string"
},
"rp": {
"type": "string"
},
"format": {
"type": "string",
"enum": [
"raw"
],
"default": "raw"
}
}
},
"ProxyResponse": {
"type": "object",
"properties": {
"results": {
"description": "results from influx",
"type": "object"
}
}
},
"Explorations": {
"type": "object",
"required": [
"explorations"
],
"properties": {
"explorations": {
"type": "array",
"items": {
"$ref": "#/definitions/Exploration"
}
}
}
},
"Exploration": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "Latest time the exploration was updated."
},
"name": {
"type": "string",
"description": "Exploration name given by user."
},
"data": {
"type": "object",
"description": "Serialization of the exploration query configuration."
},
"link": {
"$ref": "#/definitions/Link"
}
}
},
"Users": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/definitions/User"
}
}
}
},
"User": {
"type": "object",
"required": [
"username"
],
"properties": {
"username": {
"type": "string",
"maxLength": 64
},
"link": {
"$ref": "#/definitions/Link"
}
}
},
"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"
}
}
},
"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"
}
}
},
"Cell": {
"type": "object",
"required": [
"x",
"y",
"w",
"h"
],
"properties": {
"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"
},
"queries": {
"description": "Time-series data queries for Cell.",
"type": "array",
"items": {
"$ref": "#/definitions/Proxy"
}
}
}
},
"Routes": {
"type": "object",
"properties": {
"users": {
"description": "Location of the users 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"
}
}
},
"Links": {
"type": "object",
"properties": {
"links": {
"type": "array",
"items": {
"$ref": "#/definitions/Link"
}
}
}
},
"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"
}
}
}
}
}