chronograf/swagger.yaml

1396 lines
49 KiB
YAML

swagger: '2.0'
info:
title: Chronograf
description: API endpoints for Chronograf
version: "1.1.0"
host: chronograf.influxdata.com
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:
204:
description: Data source's configuration was changed
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'
/sources/{id}/permissions:
get:
summary: Returns the list of possible permissions supported by the backend time series data source.
parameters:
- name: id
in: path
type: string
description: ID of the data source
required: true
responses:
200:
description: An array of permissions
schema:
$ref: '#/definitions/AllPermissions'
404:
description: Data source id does not exist.
schema:
$ref: '#/definitions/Error'
default:
description: Unexpected internal service error
schema:
$ref: '#/definitions/Error'
/sources/{id}/monitored:
get:
summary: Returns a list of all being services being monitored
parameters:
- name: id
in: path
type: string
description: ID of the data source
required: true
responses:
200:
description: An array of permissions
schema:
$ref: '#/definitions/Services'
404:
description: Data source id does not exist.
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 and their permissions.
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:
204:
description: Users's configuration was changed
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.
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: id
in: path
type: string
description: ID of the data source
required: true
- 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: id
in: path
type: string
description: ID of the data source
required: true
- 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}/roles:
get:
parameters:
- name: id
in: path
type: string
description: ID of the data source
required: true
summary: List of all roles on this data source
responses:
200:
description: An array of roles
schema:
$ref: '#/definitions/Roles'
default:
description: Unexpected internal service error
schema:
$ref: '#/definitions/Error'
post:
summary: Create new role for this data source
parameters:
- name: id
in: path
type: string
description: ID of the data source
required: true
- name: role
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'
default:
description: A processing or an unexpected error.
schema:
$ref: '#/definitions/Error'
/sources/{id}/roles/{role_id}:
get:
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 and its associated permissions.
responses:
200:
description: Information relating to the role
schema:
$ref: '#/definitions/Role'
404:
description: Unknown source id
schema:
$ref: '#/definitions/Error'
default:
description: Unexpected internal service error
schema:
$ref: '#/definitions/Error'
patch:
summary: Update role configuration
parameters:
- name: id
in: path
type: string
description: ID of a 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:
204:
description: Role's configuration was changed
404:
description: Happens when trying to access a non-existent role.
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: role_id
in: path
type: string
description: ID of the specific role
required: true
summary: This specific role will be removed from the data store
responses:
204:
description: Role has been removed
404:
description: Unknown role id
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:
204:
description: Kapacitor's configuration was changed
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
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: measurements
in: query
description: Returns layouts with this measurement
required: false
type: array
items:
type: string
collectionFormat: csv
- name: apps
in: query
description: Returns layouts with this app
required: false
type: array
items:
type: string
collectionFormat: csv
description: |
Layouts are a collection of `Cells` that visualize time-series data.
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.
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'
/token:
get:
summary: Authentication token
description: |
Generates a JWT authentication token
responses:
200:
description: A JWT authentication token
schema:
$ref: '#/definitions/Token'
default:
description: Unexpected internal service 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
users:
type: string
description: URL location of users endpoint for this source
format: url
roles:
type: string
description: URL location of the roles endpoint for this source
format: url
proxy:
type: string
description: URL location of proxy endpoint for this source
format: url
permissions:
type: string
description: URL location of the permissions endpoint for this source
format: url
kapacitors:
type: string
description: URL location of the kapacitors endpoint for this source
format: url
monitored:
type: string
description: URL location of the monitored services 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"
Roles:
type: object
properties:
roles:
type: array
items:
$ref: "#/definitions/Role"
Role:
type: object
required:
- permissions
- name
properties:
name:
type: string
maxLength: 64
permissions:
$ref: '#/definitions/Permissions'
users:
$ref: "#/definitions/Users"
link:
$ref: "#/definitions/Link"
Token:
type: object
description: a stringified JWT token.
Users:
type: object
properties:
users:
type: array
items:
$ref: "#/definitions/User"
User:
type: object
required:
- permissions
- username
properties:
username:
type: string
maxLength: 64
permissions:
$ref: '#/definitions/Permissions'
roles:
$ref: '#/definitions/Roles'
link:
$ref: "#/definitions/Link"
Permissions:
type: object
properties:
database:
description: permissions are scoped to a specific database
type: string
permissions:
type: array
items:
$ref: "#/definitions/Permission"
Permission:
type: string
description: Specific access
enum:
- ViewAdmin
- ViewChronograf
- CreateDatabase
- CreateUserAndRole
- AddRemoveNode
- DropDatabase
- DropData
- ReadData
- WriteData
- Rebalance
- ManageShard
AllPermissions:
description: All Possible permission strings
type: array
items:
$ref: "#/definitions/Permission"
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
Services:
type: object
properties:
services:
type: array
items:
$ref: "#/definitions/Service"
Service:
type: object
properties:
'type':
description: Type of service
type: string
enum:
- containers
- kubernetes
- host
tagKey:
description: The key part of the key-value pair that makes up a tag. Used to identify a service type.
type: string
tagValue:
description: The value part of the key-value pair that makes up a tag.
type: string
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